diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..9f6c0e81 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 5be615145e27ec092021dca15a8c5156 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 7076d1ac..00000000 --- a/.editorconfig +++ /dev/null @@ -1,24 +0,0 @@ -# http://editorconfig.org - -root = true - -[*] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true -insert_final_newline = true -charset = utf-8 -end_of_line = lf - -[*.bat] -indent_style = tab -end_of_line = crlf - -[LICENSE] -insert_final_newline = false - -[Makefile] -indent_style = tab - -[*.{diff,patch}] -trim_trailing_whitespace = false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 09cfb371..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -FEATURES: - -ENHANCEMENTS: - -BUG FIXES: diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 044f3642..00000000 --- a/.gitignore +++ /dev/null @@ -1,119 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ -.allure/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ - -# IDE / Editor -.idea/ -.vscode/ -~* - -# Debug -*.stackdump -examples/debug -bdd/ -.version - -scripts/gen-apis.sh -report.json diff --git a/docs/_static/.gitkeep b/.nojekyll similarity index 100% rename from docs/_static/.gitkeep rename to .nojekyll diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c90c76d6..00000000 --- a/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Config file for automatic testing at travis-ci.org - -language: python -python: - - 3.7 - - 3.6 - - 3.5 -dist: xenial -sudo: true - -# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors -install: pip install -e .[ci] - -# command to run tests, e.g. python setup.py test -script: - - make lint - - make test-cov -# - make release-check - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 7da80598..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,377 +0,0 @@ -## 0.11.45 (2023-04-24) - -ENHANCEMENTS: -- Remove Region and Zone parameters from SendUVMSMessage API. - -## 0.11.33 (2022-06-15) - -ENHANCEMENTS: - -- Update all APIs of `VPC2.0` (#) - -## 0.11.32 (2022-06-13) - -## 0.11.31 (2022-05-26) - -ENHANCEMENTS: - -- Update all APIs of `UNet` (#) - -## 0.11.30 (2022-04-28) - -ENHANCEMENTS: - -- Update all APIs of `UPhone` (#) - -## 0.11.29 (2022-04-28) - -ENHANCEMENTS: - -- Update all APIs of `UHost` (#219) - -## 0.11.28 (2022-03-30) - -ENHANCEMENTS: - -- Update all APIs of `UVMS` (#212) -- Update all APIs of `UNet` (#210) - -## 0.11.27 (2022-03-25) - -ENHANCEMENTS: - -- Update all APIs of `IAM` (#208) -- Update all APIs of `UPHost` (#207) - -## 0.11.26 (2022-03-01) - -ENHANCEMENTS: - -- Update all APIs of `UBill` (#205) - -## 0.11.25 (2022-01-20) - -ENHANCEMENTS: - -- Update all APIs of `UK8S` (#203) -- Update all APIs of `UFile` (#202) - -## 0.11.24 (2022-01-13) - -ENHANCEMENTS: - -- Update all APIs of `UTSDB` (#200) -- Update all APIs of `UHub` (#199) -- Update all APIs of `UCDN` (#198) - -## 0.11.23 (2021-12-31) - -ENHANCEMENTS: - -- Update all APIs of `UDB` (#194) - -## 0.11.22 (2021-12-30) - -ENHANCEMENTS: - -- Update all APIs of `UBill` (#192) - -## 0.11.21 (2021-12-16) - -ENHANCEMENTS: - -- Update all APIs of `UK8S` (#190) - -## 0.11.20 (2021-12-14) - -BUG FIXES: - -- Fix deprecated class: `collections.Iterable` to `collections.abc.Iterable` at 3.10 - -## 0.11.19 (2021-11-25) - -ENHANCEMENTS: - -- Update all APIs of `TiDB` (#184) - -## 0.11.18 (2021-11-18) - -ENHANCEMENTS: - -- Update all APIs of `UEC` (#182) -- Update all APIs of `UNVS` (#179) - -## 0.11.17 (2021-11-11) - -ENHANCEMENTS: - -- Update all APIs of `UNet` (#177) -- Update all APIs of `UMem` (#176) - -## 0.11.16 (2021-11-04) - -ENHANCEMENTS: - -- Update all APIs of `UDisk` (#174) - -## 0.11.15 (2021-09-06) - -ENHANCEMENTS: - -- Update all APIs of `ISMS` (#172) - -## 0.11.14 (2021-09-03) - -ENHANCEMENTS: - -- Update all APIs of `Cube` (#170) - -## 0.11.13 (2021-08-31) - -ENHANCEMENTS: - -- Update all APIs of `UCDN` (#168) -- Update all APIs of `ISMS` (#166) - -## 0.11.12 (2021-08-30) - -ENHANCEMENTS: - -- Update all APIs of `USMS` (#163) - -## 0.11.11 (2021-08-17) - -ENHANCEMENTS: - -- Update all APIs of `Cube` (#161) - -## 0.11.10 (2021-08-13) - -ENHANCEMENTS: - -- Update all APIs of `PathX` (#) - -## 0.11.9 (2021-08-12) - -ENHANCEMENTS: - -- Update all APIs of `UMem` (#156) -- Update all APIs of `PathX` (#155) - -## 0.11.8 (2021-07-27) - -ENHANCEMENTS: - -- Update all APIs of `UDTS` (#153) - -## 0.11.7 (2021-07-22) - -ENHANCEMENTS: - -- Update all APIs of `UHost` (#151) -- Update all APIs of `USMS` (#150) - -## 0.11.6 (2021-07-08) - -ENHANCEMENTS: - -- Update all APIs of `UCDN` (#147) -- Update all APIs of `UK8S` (#145) - -## 0.11.5 (2021-07-02) - -ENHANCEMENTS: - -- Update all APIs of `UMem` (#143) -- Update all APIs of `UCDN` (#142) - -## 0.11.4 (2021-05-14) - -ENHANCEMENTS: - -- Update all APIs of `UAccount` (#139) -- Update all APIs of `UK8S` (#140) -- Update all APIs of `Cube` (#138) - -## 0.11.3 (2021-05-08) - -ENHANCEMENTS: - -- Update all APIs of `UDDB` (#135) -- Update all APIs of `UDB` (#134) -- Update all APIs of `ULB` (#132) -- Update all APIs of `UMem` (#133) -- Update all APIs of `UFile` (#131) -- Update all APIs of `UBill` (#128) -- Update all APIs of `UEC` (#126) - -## 0.11.2 (2021-04-30) - -ENHANCEMENTS: - -- Update all APIs of `UCDN` (#113) -- Update all APIs of `UBill` (#112) -- Update all APIs of `UDPN` (#112) -- Update all APIs of `UEC` (#110) -- Update all APIs of `USMS` (#109) -- Update all APIs of `VPC2.0` (#108) -- Update all APIs of `IPSecVPN` (#107) -- Update all APIs of `UNet` (#106) - -## 0.11.1 (2021-04-28) - -ENHANCEMENTS: - -- Update all APIs of `UDDB` (#102) -- Update all APIs of `UCDN` (#103) -- Update all APIs of `UFS` (#101) -- Update all APIs of `UDisk` (#99) -- Update all APIs of `PathX` (#100) -- Update all APIs of `UHost` (#98) - -## 0.11.0 (2021-04-22) - -FEATURES: - -- add `URocketMQ ` apis to be consistent with official document(#96 ) -- add `ISMS ` apis to be consistent with official document(#95 ) -- add `UGN ` apis to be consistent with official document(#94 ) - -ENHANCEMENTS: - -- add U-Timestamp-Ms in request header for tracing the e2e latency - -## 0.10.3 (2021-04-14) - -## 0.10.2 (2021-03-03) - -BUG FIXES: - -- Fix `timeout` options for requests transport (#88) - -## 0.10.1 (2021-02-07) - -ENHANCEMENTS: - -- Update all APIs of `VPC` (#82) -- Update all APIs of `UDisk` (#81) -- Update all APIs of `UNet` (#80) -- Update all APIs of `UHost` (#76) - -BUG FIXES: - -- (**BROKEN CHANGE**) Fix `DescribeRouteTable` field `SubnetCount` from `string` to `integer` (#82) -- (**BROKEN CHANGE**) Fix `CloneRouteTable` field `Region` as `Required` (#82) -- (**BROKEN CHANGE**) Fix `UHostDiskSet` field `Encrypted` from `string` to `boolean` (#76) - -## 0.10.0 (2020-11-26) - -FEATURES: - -- Add product `UK8S` -- Add product `Cube` - -## 0.9.4 (2020-09-25) - -ENHANCEMENTS: - -- Update all APIs of `UMem` (#195) - -## 0.9.3 (2020-09-22) - -BUG FIXES: - -- Fix python 2 compatible helpers for nested CJK charset - -## 0.9.2 (2020-07-31) - -ENHANCEMENTS: - -- Improve testing with `requests_mock` -- Add `InvalidResponseException` and `HTTPStatusException` -- Add `request_uuid` to response and exception logging -- Add default exception middileware -- Change documentation url -- Update all APIs of `UCloudStack` - -BUG FIXES: - -- Fix `pytest` version compatible - -## 0.9.1 (2020-06-05) - -ENHANCEMENTS: - -- Add `CreateCertificate` api -- Add `DescribeCertificate` api -- Add `DeleteCertificate` api -- Add `DescribeOPLogs` api -- Update `DescribeVMInstance` api -- Update `CreateVS` api - -## 0.9.0 (2020-05-21) - -FEATURES: - -- Add `ucloudstack` product - -ENHANCEMENTS: - -- Add `deprecated` decorator - -## 0.8.2 (2020-03-12) - -BUG FIXES: - -- Fix `DescribeSubnetResource` - -## 0.8.1 (2020-03-11) - -ENHANCEMENTS: - -- Update `DescribeSubnet` api - -## 0.8.0 (2019-12-03) - -FEATURES: - -- Add `ufs` product (#42) - -## 0.7.0 (2019-11-21) - -FEATURES: - -- Add ssl options of client (#37) - -ENHANCEMENTS: - -- Add testing report use ucloud test framework (#38) - -## 0.6.2 (2019-10-25) - -ENHANCEMENTS: - -- Update fields of `UHost` api -- Add `DescribeIsolationGroup ` of `UHost` -- Add `DescribeUHostInstanceSnapshot` of `UHost` - -BUG FIXES: - -- Fix fields of `BatchDescribeNewUcdnDomain` - -## 0.6.1 (2019-10-25) - -BUG FIXES: - -- fix `UCDN` response fields - -## 0.6.0 (2019-10-23) - -FEATURES: - -- add `UCDN` product - -ENHANCEMENTS: - -- Add toolkit for auto release - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 75b52484..00000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Makefile b/Makefile deleted file mode 100644 index acd2cfa2..00000000 --- a/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -.PHONY: clean-pyc clean-build docs clean - -# Browser Tools -define BROWSER_PYSCRIPT -import os, webbrowser, sys -try: - from urllib import pathname2url -except: - from urllib.request import pathname2url - -webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) -endef -export BROWSER_PYSCRIPT -BROWSER := python -c "$$BROWSER_PYSCRIPT" - -# UCloud Tools Path -UCLOUD_TEMPLATE_PATH=../ucloud-api-model-v2/apisdk/lang/python/templates - -help: - @echo "clean - remove all build, test, coverage and Python artifacts" - @echo "clean-build - remove build artifacts" - @echo "clean-pyc - remove Python file artifacts" - @echo "clean-test - remove test and coverage artifacts" - @echo "lint - check style with flake8" - @echo "test - run tests quickly with the default Python" - @echo "test-all - run tests on every Python version with tox" - @echo "coverage - check code coverage quickly with the default Python" - @echo "docs - generate Sphinx HTML documentation, including API docs" - @echo "release - package and upload a release" - @echo "dist - package" - @echo "install - install the package to the active Python's site-packages" - -# unit test -test: clean - pytest - -test-cov: clean - pytest --cov=ucloud/core tests - -test-cov-html: - pytest --cov=ucloud/core tests --cov-report html - $(BROWSER) htmlcov/index.html - -test-acc: clean - USDKACC=1 pytest --cov=ucloud - -test-all: clean - tox - -lint: - @flake8 --exclude=ucloud/services ucloud --ignore=E501,F401 - -fmt: - @black -l 80 ucloud tests examples - -dev: - @pip install -e .[dev] - -docs: - #sphinx-apidoc -o docs/services ucloud/services - $(MAKE) -C docs clean - $(MAKE) -C docs html - -docs-preview: - $(BROWSER) docs/_build/html/index.html - -clean: clean-build clean-pyc clean-test - -clean-build: - rm -fr build/ - rm -fr dist/ - rm -fr .eggs/ - -clean-pyc: - find . -name '*.pyc' -exec rm -f {} + - find . -name '*.pyo' -exec rm -f {} + - find . -name '*~' -exec rm -f {} + - find . -name '__pycache__' -exec rm -fr {} + - -clean-test: - rm -fr .tox/ - rm -f .coverage - rm -fr htmlcov/ - -version: - @python -c 'from ucloud.version import version; print(version)' - -codegen: - @bash ./scripts/codegen.sh - -release-check: - @python scripts/release.py --dry-run - -release: - @python scripts/release.py diff --git a/VERSION b/VERSION deleted file mode 100644 index 1b800278..00000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.11.34 diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 00000000..f8b10716 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,141 @@ + + + + + + + + Overview: module code — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/core/auth/_cfg.html b/_modules/ucloud/core/auth/_cfg.html new file mode 100644 index 00000000..7b294bbd --- /dev/null +++ b/_modules/ucloud/core/auth/_cfg.html @@ -0,0 +1,178 @@ + + + + + + + + ucloud.core.auth._cfg — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.auth._cfg

+import hashlib
+from collections import OrderedDict
+from ucloud.core.typesystem import schema, fields, encoder
+
+
+class CredentialSchema(schema.Schema):
+    fields = {
+        "public_key": fields.Str(required=True),
+        "private_key": fields.Str(required=True),
+    }
+
+
+def verify_ac(private_key: str, params: dict) -> str:
+    """calculate signature by private_key/public_key
+
+    the keys can be found on `APIKey documentation <https://console.ucloud.cn/uapi/apikey>`__
+
+    >>> verify_ac("my_private_key", {"foo": "bar"})
+    '634edc1bb957c0d65e5ab5494cf3b7784fbc87af'
+
+    >>> verify_ac("my_private_key", {"foo": "bar"})
+    '634edc1bb957c0d65e5ab5494cf3b7784fbc87af'
+
+    :param private_key: private key
+    :param params:
+    :return:
+    """
+    params = OrderedDict(sorted(params.items(), key=lambda item: item[0]))
+
+    simplified = ""
+    for key, value in params.items():
+        simplified += str(key) + encoder.encode_value(value)
+    simplified += private_key
+
+    hash_new = hashlib.sha1()
+    hash_new.update(simplified.encode("utf-8"))
+    hash_value = hash_new.hexdigest()
+    return hash_value
+
+
+
[docs]class Credential: + """credential is the object to store credential information + + the keys can be found on `APIKey documentation <https://console.ucloud.cn/uapi/apikey>`__ + + it can calculate signature for OpenAPI: + + >>> cred = Credential('my_public_key', 'my_private_key') + >>> cred.verify_ac({"foo": "bar"}) + 'd4411ab30953fb0bbcb1e7313081f05e4e91a394' + + :param public_key: + :param private_key: + """ + + PUBLIC_KEY_NAME = "PublicKey" + + def __init__(self, public_key: str, private_key: str, **kwargs): + self.public_key = public_key + self.private_key = private_key + + def verify_ac(self, args: dict) -> str: + args[Credential.PUBLIC_KEY_NAME] = self.public_key + return verify_ac(self.private_key, args) + + @classmethod + def from_dict(cls, d: dict): + parsed = CredentialSchema().dumps(d) + return cls(**parsed) + + def to_dict(self) -> dict: + return {"public_key": self.public_key, "private_key": self.private_key}
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/core/client/_cfg.html b/_modules/ucloud/core/client/_cfg.html new file mode 100644 index 00000000..81a90083 --- /dev/null +++ b/_modules/ucloud/core/client/_cfg.html @@ -0,0 +1,202 @@ + + + + + + + + ucloud.core.client._cfg — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.client._cfg

+import logging
+
+from ucloud.core.typesystem import schema, fields
+
+
+class ConfigSchema(schema.Schema):
+    fields = {
+        "region": fields.Str(),
+        "project_id": fields.Str(),
+        "base_url": fields.Str(default="https://api.ucloud.cn"),
+        "user_agent": fields.Str(),
+        "timeout": fields.Int(default=30),
+        "max_retries": fields.Int(default=3),
+        "log_level": fields.Int(default=logging.INFO),
+        "validate_request": fields.Bool(default=True),
+        "ssl_verify": fields.Bool(default=True),
+        "ssl_cacert": fields.Str(),
+        "ssl_cert": fields.Str(),
+        "ssl_key": fields.Str(),
+    }
+
+
+
[docs]class Config: + """ + Config is the config of ucloud sdk, use for setting up + + :type region: str + :param region: Region is the region of backend service, + See also `Region list Documentation <https://docs.ucloud.cn/api/summary/regionlist>`_ + :type project_id: str + :param project_id: ProjectId is the unique identify of project, used for organize resources, + Most of resources should belong to a project. Sub-Account must have an project id. + See also `Project list Documentation <https://docs.ucloud.cn/api/summary/get_project_list>`_ + :type base_url: str + :param base_url: BaseUrl is the url of backend api + :param user_agent: UserAgent is an attribute for sdk client, used for distinguish who is using sdk. + See also `User Agent <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent>`_ + It will be appended to the end of sdk user-agent. + eg. "MyAPP/0.10.1" -> "Python/3.7.0 Python-SDK/0.1.0 MyAPP/0.10.1" + :type timeout: int + :param timeout: Timeout is timeout for every request. + :type max_retries: int + :param max_retries: MaxRetries is the number of max retry times. + Set MaxRetries more than 0 to enable auto-retry for network and service availability problem + if auto-retry is enabled, it will enable default retry policy using exponential backoff. + :type log_level: int + :param log_level: LogLevel is equal to builtin logging level, + if logLevel not be set, use INFO level as default. + """ + + def __init__( + self, + region: str = None, + project_id: str = None, + base_url: str = "https://api.ucloud.cn", + user_agent: str = None, + timeout: int = 30, + max_retries: int = 3, + log_level: int = logging.INFO, + ssl_verify: bool = True, + ssl_cacert: str = None, + ssl_cert: str = None, + ssl_key: str = None, + **kwargs + ): + self.region = region + self.project_id = project_id + self.base_url = base_url + self.user_agent = user_agent + self.timeout = timeout + self.max_retries = max_retries + self.log_level = log_level + self.ssl_verify = ssl_verify + self.ssl_cacert = ssl_cacert + self.ssl_cert = ssl_cert + self.ssl_key = ssl_key + + @classmethod + def from_dict(cls, d: dict): + parsed = ConfigSchema().dumps(d) + return cls(**parsed) + + def to_dict(self) -> dict: + return { + "region": self.region, + "project_id": self.project_id, + "base_url": self.base_url, + "user_agent": self.user_agent, + "timeout": self.timeout, + "max_retries": self.max_retries, + "log_level": self.log_level, + "ssl_verify": self.ssl_verify, + "ssl_cacert": self.ssl_cacert, + "ssl_cert": self.ssl_cert, + "ssl_key": self.ssl_key, + }
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/core/client/_client.html b/_modules/ucloud/core/client/_client.html new file mode 100644 index 00000000..f9bcd745 --- /dev/null +++ b/_modules/ucloud/core/client/_client.html @@ -0,0 +1,282 @@ + + + + + + + + ucloud.core.client._client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.client._client

+import typing
+import logging
+import sys
+import time
+
+from ucloud import version
+from ucloud.core.client._cfg import Config
+from ucloud.core.transport import (
+    Transport,
+    RequestsTransport,
+    Request,
+    SSLOption,
+    http,
+)
+from ucloud.core.typesystem import encoder
+from ucloud.core.utils import log
+from ucloud.core.utils.middleware import Middleware
+from ucloud.core import auth, exc
+
+
+
[docs]class Client: + def __init__( + self, + config: dict, + transport: typing.Optional[Transport] = None, + middleware: typing.Optional[Middleware] = None, + logger: typing.Optional[logging.Logger] = None, + ): + cfg, cred = self._parse_dict_config(config) + self.config = cfg + self.credential = cred + self.transport = transport or RequestsTransport() + self.logger = logger or log.default_logger + if middleware is None: + middleware = Middleware() + middleware.response(self.logged_response_handler) + middleware.request(self.logged_request_handler) + middleware.exception(self.logged_exception_handler) + self._middleware = middleware + +
[docs] def invoke(self, action: str, args: dict = None, **options) -> dict: + """invoke will invoke the action with arguments data and options + + :param str action: the api action, like `CreateUHostInstance` + :param dict args: arguments of api(action), see doc: `UCloud API Documentation <https://docs.ucloud.cn/api>`__ + :return: + """ + retries = 0 + max_retries = options.get("max_retries") or self.config.max_retries + timeout = options.get("timeout") or self.config.timeout + + while retries <= max_retries: + try: + return self._send( + action, args or {}, max_retries=max_retries, timeout=timeout + ) + except exc.UCloudException as e: + if e.retryable and retries != max_retries: + logging.info( + "Retrying {action}: {args}".format( + action=action, args=args + ) + ) + retries += 1 + continue + raise e
+ + @property + def middleware(self) -> Middleware: + return self._middleware + + def logged_request_handler(self, req): + action = req.get("Action", "") + self.logger.info("[request] {} {}".format(action, req)) + return req + + def logged_response_handler(self, resp, http_resp: http.Response = None): + action = resp.get("Action", "") + request_uuid = http_resp and http_resp.request_uuid + self.logger.info( + "[response] [{}] {} {}".format(request_uuid or "*", action, resp) + ) + return resp + + def logged_exception_handler(self, e: Exception): + if isinstance(e, exc.RetCodeException): + self.logger.warning(e) + else: + self.logger.exception(e) + return e + + @staticmethod + def _parse_dict_config( + config: dict, + ) -> typing.Tuple[Config, auth.Credential]: + return Config.from_dict(config), auth.Credential.from_dict(config) + + def _send(self, action: str, args: dict, max_retries, timeout) -> dict: + args["Action"] = action + + # inject request middleware + for handler in self.middleware.request_handlers: + args = handler(args) + + # send http request + try: + req = self._build_http_request(args) + + resp = self.transport.send( + req, + ssl_option=SSLOption( + self.config.ssl_verify, + self.config.ssl_cacert, + self.config.ssl_cert, + self.config.ssl_key, + ), + timeout=timeout, + max_retries=max_retries, + ) + data = resp.json() + except Exception as e: + for handler in self.middleware.exception_handlers: + handler(e) + raise e + + # inject response middleware + for handler in self.middleware.response_handlers: + data = handler(data, resp) + + # return when successful + if int(data.get("RetCode", -1)) == 0: + return data + + # inject exception middleware + ret_code_exc = exc.RetCodeException( + action=req.data.get("Action", ""), + code=int(data.get("RetCode", 0)), + message=data.get("Message", ""), + request_uuid=resp.request_uuid, + ) + for handler in self.middleware.exception_handlers: + handler(ret_code_exc) + raise ret_code_exc + + def _build_http_request(self, args: dict) -> Request: + config = { + "Region": self.config.region, + "ProjectId": self.config.project_id, + } + payload = {k: v for k, v in config.items() if v is not None} + payload.update({k: v for k, v in args.items() if v is not None}) + payload = encoder.encode(payload) + payload["Signature"] = self.credential.verify_ac(payload) + + return Request( + url=self.config.base_url, + method="post", + data=payload, + headers={ + "User-Agent": self._build_user_agent(), + "Content-Type": "application/x-www-form-urlencoded", + "U-Timestamp-Ms": str(int(round(time.time() * 1000))), + }, + ) + + def _build_user_agent(self) -> str: + python_version = "{v[0]}.{v[1]}.{v[2]}".format(v=sys.version_info) + user_agent = "Python/{python_version} Python-SDK/{sdk_version}".format( + python_version=python_version, sdk_version=version.version + ) + (self.config.user_agent or "") + return user_agent + + def __repr__(self): + return '<{}(region="{}")>'.format( + self.__class__.__name__, self.config.region + )
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/core/transport/_requests.html b/_modules/ucloud/core/transport/_requests.html new file mode 100644 index 00000000..1906828d --- /dev/null +++ b/_modules/ucloud/core/transport/_requests.html @@ -0,0 +1,241 @@ + + + + + + + + ucloud.core.transport._requests — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.transport._requests

+import time
+import typing
+import requests
+from urllib3.util.retry import Retry
+from requests.adapters import HTTPAdapter
+from ucloud.core.transport import http
+from ucloud.core.transport.http import Request, Response, SSLOption
+from ucloud.core.utils.middleware import Middleware
+from ucloud.core import exc
+
+
+
[docs]class RequestsTransport(http.Transport): + """transport is the implementation of http client, use for send a request and return a http response + + :type max_retries: int + :param max_retries: max retries is the max number of transport request when occur http error + :type backoff_factor: float + :param backoff_factor: backoff factor will calculate the backoff delay during retrying, + the backoff delay = {backoff factor} * (2 ^ ({number of total retries} - 1)) + :type status_forcelist: tuple + :param status_forcelist: the status code list that could be retried + """ + + def __init__( + self, + max_retries: int = 3, + backoff_factor: float = 0.3, + status_forcelist: typing.Tuple[int] = (500, 502, 504), + ): + self.max_retries = max_retries + self.backoff_factor = backoff_factor + self.status_forcelist = status_forcelist + + self._adapter = self._load_adapter(max_retries) + self._middleware = Middleware() + +
[docs] def send(self, req: Request, **options: typing.Any) -> http.Response: + """send request and return the response + + :param req: the full http request descriptor + :return: the response of http request + """ + for handler in self.middleware.request_handlers: + req = handler(req) + + try: + resp = self._send(req, **options) + except Exception as e: + for handler in self.middleware.exception_handlers: + handler(e) + raise e + + for handler in self.middleware.response_handlers: + resp = handler(resp) + + return resp
+ + @property + def middleware(self) -> Middleware: + """the middleware object, see :mod: + + :return: the transport middleware + """ + return self._middleware + + def _send(self, req: Request, **options: typing.Any) -> requests.Response: + with requests.Session() as session: + adapter = self._load_adapter(options.get("max_retries")) + session.mount("http://", adapter=adapter) + session.mount("https://", adapter=adapter) + + ssl_option = options.get("ssl_option") + kwargs = self._build_ssl_option(ssl_option) if ssl_option else {} + + req.request_time = time.time() + session_resp = session.request( + method=req.method.upper(), + url=req.url, + json=req.json, + data=req.data, + params=req.params, + headers=req.headers, + timeout=options.get("timeout"), + **kwargs + ) + resp = self.convert_response(session_resp) + resp.request = req + resp.response_time = time.time() + + if resp.status_code >= 400: + raise exc.HTTPStatusException( + resp.status_code, resp.request_uuid + ) + return resp + + @staticmethod + def _build_ssl_option(ssl_option): + kwargs = {"verify": ssl_option.ssl_verify and ssl_option.ssl_cacert} + if not ssl_option.ssl_cert: + return kwargs + + if ssl_option.ssl_key: + kwargs["cert"] = (ssl_option.ssl_cert, ssl_option.ssl_key) + else: + kwargs["cert"] = ssl_option.ssl_cert + return kwargs + + def _load_adapter( + self, max_retries: typing.Optional[int] = None + ) -> HTTPAdapter: + if max_retries is None and self._adapter is not None: + return self._adapter + + max_retries = max_retries or 0 + adapter = HTTPAdapter() + adapter.max_retries = Retry( + total=max_retries, + read=max_retries, + connect=max_retries, + backoff_factor=self.backoff_factor, + status_forcelist=self.status_forcelist, + ) + return adapter + + @staticmethod + def convert_response(r: requests.Response) -> Response: + return Response( + url=r.url, + method=r.request.method, + status_code=r.status_code, + reason=r.reason, + headers=r.headers, + content=r.content, + encoding=r.encoding or r.apparent_encoding, + )
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/core/utils/middleware.html b/_modules/ucloud/core/utils/middleware.html new file mode 100644 index 00000000..cf315358 --- /dev/null +++ b/_modules/ucloud/core/utils/middleware.html @@ -0,0 +1,169 @@ + + + + + + + + ucloud.core.utils.middleware — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.utils.middleware

+
[docs]class Middleware: + """middleware is the object to store request/response handlers + + >>> middleware = Middleware() + + Add a request handler to prepare the request + + >>> @middleware.request + ... def prepare(req): + ... req['Region'] = 'cn-bj2' + ... return req + + Add a response handler to log the response detail + + >>> @middleware.response + ... def logged(resp): + ... print(resp) + ... return resp + + >>> len(middleware.request_handlers), len(middleware.response_handlers) + (1, 1) + """ + + def __init__(self): + self.request_handlers = [] + self.response_handlers = [] + self.exception_handlers = [] + +
[docs] def request(self, handler, index=-1): + """request is the request handler register to add request handler. + + :param handler: request handler function, receive request object + and return a new request + :param int index: the position of request in the handler list, + default is append it to end + :return: + """ + self.request_handlers.insert(index, handler) + return handler
+ +
[docs] def response(self, handler, index=-1): + """response is the response handler register to add response handler. + + :param handler: response handler function, receive response object + and return a new response + :param int index: the position of response in the handler list, + default is append it to end + :return: + """ + self.response_handlers.insert(index, handler) + return handler
+ +
[docs] def exception(self, handler, index=-1): + """exception is the exception handler register to add exception handler. + + :param handler: exception handler function, receive exception object + and raise a new exception or ignore it + :param int index: the position of handler in the handler list, + default is append it to end + :return: + """ + self.exception_handlers.insert(index, handler) + return handler
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/helpers/utils.html b/_modules/ucloud/helpers/utils.html new file mode 100644 index 00000000..99a6c523 --- /dev/null +++ b/_modules/ucloud/helpers/utils.html @@ -0,0 +1,196 @@ + + + + + + + + ucloud.helpers.utils — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.helpers.utils

+import random
+import base64
+import typing
+
+_lowercase = "abcdefghijklmnopqrstuvwxyz"
+_uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+_numbers = "0123456789"
+_specials = "_"
+
+
+
[docs]def gen_password( + n: int, + lower_letters: str = _lowercase, + upper_letters: str = _uppercase, + number_letters: str = _numbers, + special_letters: str = _specials, + min_lower: int = 1, + min_upper: int = 1, + min_number: int = 1, + min_specials: int = 1, +): + """generate password for any resource + + >>> len(gen_password(20)) + 20 + + :param int n: password total length + :param str lower_letters: all lowercase letters + :param str upper_letters: all uppercase letters + :param str number_letters: all number letters + :param str special_letters: all special letters + :param int min_lower: minimal number of lowercase letters + :param int min_upper: minimal number of uppercase letters + :param int min_number: minimal number of number letters + :param int min_specials: minimal number of special letters + :return: + """ + all_letters = "".join( + [lower_letters, upper_letters, number_letters, special_letters] + ) + minimal_total = min_lower + min_upper + min_number + min_specials + if n < minimal_total: + raise ValueError( + ( + "the length of password must be larger than " + "total minimal letters number" + ) + ) + + minimal_letters = "".join( + [ + gen_string(lower_letters, min_lower), + gen_string(upper_letters, min_upper), + gen_string(number_letters, min_number), + gen_string(special_letters, min_specials), + ] + ) + + additional_letters = random.sample(all_letters, n - minimal_total) + results = list(minimal_letters) + additional_letters + random.shuffle(results) + return "".join(results)
+ + +def gen_string(letters: str, length: int): + return "".join([random.choice(letters) for i in range(length)]) + + +def first(arr: typing.List[typing.Any]) -> typing.Any: + if len(arr) == 0: + return None + return arr[0] + + +
[docs]def b64encode(s: str) -> str: + """base64 encode + + :param str s: input string + :return: base64 string + """ + return base64.b64encode(s.encode()).decode()
+ + +
[docs]def b64decode(s: str) -> str: + """base64 decode + + :param str s: base64 string + :return: output string + """ + return base64.b64decode(s.encode()).decode()
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/helpers/wait.html b/_modules/ucloud/helpers/wait.html new file mode 100644 index 00000000..0f91e2d6 --- /dev/null +++ b/_modules/ucloud/helpers/wait.html @@ -0,0 +1,214 @@ + + + + + + + + ucloud.helpers.wait — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.helpers.wait

+import time
+import typing
+import logging
+from ucloud.core import exc
+
+
+MAX_BACKOFF_INTERVAL = 10
+
+logger = logging.getLogger(__name__)
+
+
+class WaitTimeoutException(exc.UCloudException):
+    pass
+
+
+class StateConf:
+    """StateConf is the utilities class to wait the state return by refresh function achieve the specific state,
+    the generally usage is wait the cloud resource, such as uhost, udb ... is
+    ready after created.
+    """
+
+    def __init__(
+        self,
+        pending: typing.List[str],
+        target: typing.List[str],
+        refresh: typing.Callable,
+        timeout: float,
+        startup_delay: float = 0,
+        min_backoff_interval: float = 0.1,
+        max_backoff_interval: float = MAX_BACKOFF_INTERVAL,
+    ):
+        self.pending = pending
+        self.target = target
+        self.refresh = refresh
+        self.timeout = timeout
+        self.startup_delay = startup_delay
+        self.min_backoff_interval = min_backoff_interval
+        self.max_backoff_interval = max_backoff_interval
+
+    def wait(self):
+        start_time = time.time()
+        interval = self.min_backoff_interval
+
+        # delay on start up
+        time.sleep(self.startup_delay)
+
+        # waiting for state changed to target state
+        while time.time() - start_time < self.timeout:
+            state = self.refresh()
+
+            if state in self.pending:
+                time.sleep(interval)
+                interval *= 2
+                if interval > self.max_backoff_interval:
+                    interval = self.max_backoff_interval
+                logger.info(
+                    "waiting state for {self.refresh}, got state {state}".format(
+                        self=self, state=state
+                    )
+                )
+                continue
+
+            if state in self.target:
+                return
+
+        raise WaitTimeoutException(
+            "wait timeout {self.timeout}s for {self.refresh}".format(self=self)
+        )
+
+
+
[docs]def wait_for_state( + pending: typing.List[str], + target: typing.List[str], + refresh: typing.Callable, + timeout: float, + startup_delay: float = 0, + min_backoff_interval: float = 0.1, + max_backoff_interval: float = MAX_BACKOFF_INTERVAL, +): + """wait_for_state is a utilities function to wait the state return by refresh function achieve the specific state, + the generally usage is wait the cloud resource, such as uhost, udb ... is + ready after created. + + >>> wait_for_state( + ... pending=["pending"], + ... target=["running"], + ... refresh=lambda: "running", + ... timeout=0.5, + ... ) + + :param pending: pending is the list of pending state, the state is returned by refresh function + :param target: target is the list of target state, it is usually the terminate state, eg. running and fail + :param refresh: the customized refresh function, expect no arguments and return a state + :param timeout: timeout is the total time to wait state is achieved + :param startup_delay: the time to wait before first refresh function is called + :param min_backoff_interval: the backoff time for first refresh interval + :param max_backoff_interval: the max backoff time for refresh interval + """ + conf = StateConf( + pending=pending, + target=target, + refresh=refresh, + timeout=timeout, + startup_delay=startup_delay, + min_backoff_interval=min_backoff_interval, + max_backoff_interval=max_backoff_interval, + ) + return conf.wait()
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/cube/client.html b/_modules/ucloud/services/cube/client.html new file mode 100644 index 00000000..16f3f239 --- /dev/null +++ b/_modules/ucloud/services/cube/client.html @@ -0,0 +1,687 @@ + + + + + + + + ucloud.services.cube.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.cube.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.cube.schemas import apis
+
+
+
[docs]class CubeClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(CubeClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_cube_deployment( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCubeDeployment - 创建Cube的Deployment + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Deployment** (str) - (Required) base64编码的Deployment的yaml。大小不超过16KB + - **SubnetId** (str) - (Required) 子网Id + - **VPCId** (str) - (Required) VPCId + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Postpay, \\ 后付费;默认为后付费 + - **CpuPlatform** (str) - Cpu平台(V6:Intel、A2:AMD),默认V6。支持的地域(北京2B、北京2E、上海2A、广东、香港 、东京)目前北京2E仅有A2,其余地域仅有V6 + - **KubeConfig** (str) - base64编码的kubeconfig。大小不超过16KB + - **Name** (str) - Deployment名称 + - **Quantity** (int) - 购买时长。默认:值 1。 月付时,此参数传0,代表购买至月末。 + - **Tag** (str) - 业务组。默认:Default(Default即为未分组) + + **Response** + + - **Deployment** (str) - 经过base64编码的Deployment的yaml + - **DeploymentId** (str) - 控制器ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCubeDeploymentRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCubeDeployment", d, **kwargs) + return apis.CreateCubeDeploymentResponseSchema().loads(resp)
+ +
[docs] def create_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCubePod - 创建Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Pod** (str) - (Required) base64编码的Pod的yaml。大小不超过16KB + - **SubnetId** (str) - (Required) 子网Id + - **VPCId** (str) - (Required) VPCId + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Postpay, \\ 后付费;默认为后付费 + - **CouponId** (str) - 代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **CpuPlatform** (str) - Cpu平台(V6:Intel、A2:AMD、Auto),默认Auto。支持的地域(北京2B、北京2E、上海2A、广东、香港 、东京)目前北京2E仅有A2,其余地域仅有V6 + - **Group** (str) - pod所在组 + - **KubeConfig** (str) - base64编码的kubeconfig。大小不超过16KB + - **Name** (str) - pod的名字 + - **Quantity** (int) - 购买时长。默认:值 1。 月付时,此参数传0,代表购买至月末。 + - **Tag** (str) - 业务组。默认:Default(Default即为未分组) + + **Response** + + - **CubeId** (str) - cube的资源Id + - **Pod** (str) - base64编码的yaml + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCubePodRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCubePod", d, **kwargs) + return apis.CreateCubePodResponseSchema().loads(resp)
+ +
[docs] def delete_cube_deployment( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCubeDeployment - 删除Cube的Deployment + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DeploymentId** (str) - (Required) 控制器Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCubeDeploymentRequestSchema().dumps(d) + + resp = self.invoke("DeleteCubeDeployment", d, **kwargs) + return apis.DeleteCubeDeploymentResponseSchema().loads(resp)
+ +
[docs] def delete_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCubePod - 删除Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - cubeid和uid任意一个(必须) + - **ReleaseEIP** (bool) - 删除cube时是否释放绑定的EIP。默认为false。 + - **Uid** (str) - cubeid和uid任意一个(必须) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCubePodRequestSchema().dumps(d) + + resp = self.invoke("DeleteCubePod", d, **kwargs) + return apis.DeleteCubePodResponseSchema().loads(resp)
+ +
[docs] def get_cube_deployment( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeDeployment - 获取Deployment的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DeploymentId** (str) - (Required) Deployment的Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Deployment** (str) - 经过base64编码的Deployment的yaml + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeDeploymentRequestSchema().dumps(d) + + resp = self.invoke("GetCubeDeployment", d, **kwargs) + return apis.GetCubeDeploymentResponseSchema().loads(resp)
+ +
[docs] def get_cube_exec_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeExecToken - 获取登录容器的token + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ContainerName** (str) - (Required) 容器名称 + - **CubeId** (str) - CubeId 和 Uid 中必须填写任意一个。CubeId 是所有 Cube 资源的唯一 ID,如非在 UK8S 通过 Virtual Kubelet 插件创建的 Cube, 则必填 CubeId + - **Uid** (str) - CubeId 和 Uid 中必须填写任意一个。Uid 是在 UK8S 中通过 Virtual Kubelet 插件创建出的 Cube 的唯一标识 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **TerminalUrl** (str) - terminal的登录连接地址,限单点登录,有效时间5min + - **Token** (str) - 有效时间5min + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeExecTokenRequestSchema().dumps(d) + + resp = self.invoke("GetCubeExecToken", d, **kwargs) + return apis.GetCubeExecTokenResponseSchema().loads(resp)
+ +
[docs] def get_cube_extend_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeExtendInfo - 获取Cube的额外信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeIds** (str) - (Required) id列表以逗号(,)分割 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ExtendInfo** (list) - 见 **CubeExtendInfo** 模型定义 + + **Response Model** + + **CubeExtendInfo** + - **CubeId** (str) - Cube的Id + - **Eip** (list) - 见 **EIPSet** 模型定义 + - **Expiration** (int) - 资源有效期 + - **Name** (str) - Cube的名称 + - **Tag** (str) - 业务组名称 + + + **EIPSet** + - **Bandwidth** (int) - EIP带宽值 + - **BandwidthType** (int) - 带宽类型0标准普通带宽,1表示共享带宽 + - **CreateTime** (int) - EIP创建时间 + - **EIPAddr** (list) - 见 **EIPAddr** 模型定义 + - **EIPId** (str) - EIPId + - **PayMode** (str) - 付费模式,带宽付费或者流量付费 + - **Resource** (str) - EIP绑定对象的资源Id + - **Status** (str) - EIP状态,表示使用中或者空闲 + - **Weight** (int) - EIP权重 + + + **EIPAddr** + - **IP** (str) - IP地址 + - **OperatorName** (str) - 线路名称BGP或者internalation + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeExtendInfoRequestSchema().dumps(d) + + resp = self.invoke("GetCubeExtendInfo", d, **kwargs) + return apis.GetCubeExtendInfoResponseSchema().loads(resp)
+ +
[docs] def get_cube_metrics( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeMetrics - 获取Cube实例(Pod,PodX,Deploy等)监控数据时间序列 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BeginTime** (int) - (Required) 开始时间 + - **ContainerName** (str) - (Required) Pod内容器名称 + - **EndTime** (int) - (Required) 结束时间,必须大于开始时间 + - **MetricName** (list) - (Required) 监控指标名称 + - **ResourceId** (str) - (Required) Cube实例资源ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSets** (list) - 见 **MetricDataSet** 模型定义 + - **Message** (str) - 错误信息 + + **Response Model** + + **MetricDataSet** + - **MetricName** (str) - + - **Values** (list) - 见 **ValueSet** 模型定义 + + + **ValueSet** + - **Timestamp** (int) - + - **Value** (float) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeMetricsRequestSchema().dumps(d) + + resp = self.invoke("GetCubeMetrics", d, **kwargs) + return apis.GetCubeMetricsResponseSchema().loads(resp)
+ +
[docs] def get_cube_pod(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetCubePod - 获取Pod的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - CubeId和Uid任意一个 + - **Uid** (str) - CubeId和Uid任意一个 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Pod** (str) - base64编码的pod的yaml + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubePodRequestSchema().dumps(d) + + resp = self.invoke("GetCubePod", d, **kwargs) + return apis.GetCubePodResponseSchema().loads(resp)
+ +
[docs] def get_cube_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubePrice - 获取cube的价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - (Required) 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按秒后付费,默认为月付 + - **Count** (str) - (Required) 购买数量 + - **Cpu** (str) - (Required) CPU 配置,单位为毫核,例如如 1 核则须输入 1000 + - **Mem** (str) - (Required) 内存配置,单位为 Mi,例如 1Gi 须输入 1024 + - **Quantity** (int) - (Required) 购买时长。默认:值 1。按小时购买(Dynamic/Postpay)时无需此参数。 月付时,此参数传0,代表购买至月末。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **OriginalPrice** (int) - 列表价格,单位为分 + - **Price** (int) - 折扣后价格,单位为分 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubePriceRequestSchema().dumps(d) + + resp = self.invoke("GetCubePrice", d, **kwargs) + return apis.GetCubePriceResponseSchema().loads(resp)
+ +
[docs] def get_cube_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeToken - 获取Cube的token,可用于terminal登录、log获取 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ContainerName** (str) - (Required) 容器名称 + - **CubeId** (str) - CubeId 和 Uid 中必须填写任意一个。CubeId 是所有 Cube 资源的唯一 ID,如非在 UK8S 通过 Virtual Kubelet 插件创建的 Cube, 则必填 CubeId + - **Uid** (str) - CubeId 和 Uid 中必须填写任意一个。Uid 是在 UK8S 中通过 Virtual Kubelet 插件创建出的 Cube 的唯一标识 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Token** (str) - 有效时间5min + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeTokenRequestSchema().dumps(d) + + resp = self.invoke("GetCubeToken", d, **kwargs) + return apis.GetCubeTokenResponseSchema().loads(resp)
+ +
[docs] def list_cube_deployment( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListCubeDeployment - 获取Cube的Deployment列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - (Required) 默认20 + - **Offset** (int) - (Required) 默认0 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Deployments** (list) - DeploymentInfo + - **TotalCount** (int) - + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListCubeDeploymentRequestSchema().dumps(d) + + resp = self.invoke("ListCubeDeployment", d, **kwargs) + return apis.ListCubeDeploymentResponseSchema().loads(resp)
+ +
[docs] def list_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListCubePod - 获取Pods列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DeploymentId** (str) - Deployment的Id + - **Group** (str) - 组名称 + - **Limit** (int) - 默认20 + - **Offset** (int) - 默认0 + - **SubnetId** (str) - 子网Id + - **VPCId** (str) - VPC的Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Pods** (list) - Pod列表,每条数据都做了base64编码 + - **TotalCount** (int) - Cube的总数 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListCubePodRequestSchema().dumps(d) + + resp = self.invoke("ListCubePod", d, **kwargs) + return apis.ListCubePodResponseSchema().loads(resp)
+ +
[docs] def modify_cube_extend_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyCubeExtendInfo - 修改Cube额外信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - (Required) cube的id + - **Name** (str) - 修改的名字,规则(^[a-zA-Z0-9-_.\u4e00-\u9fa5]{1,32}) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyCubeExtendInfoRequestSchema().dumps(d) + + resp = self.invoke("ModifyCubeExtendInfo", d, **kwargs) + return apis.ModifyCubeExtendInfoResponseSchema().loads(resp)
+ +
[docs] def modify_cube_tag( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyCubeTag - 修改业务组名字 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CubeId** (str) - (Required) CubeId + - **Tag** (str) - (Required) 业务组名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **CubeId** (str) - CubeId + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyCubeTagRequestSchema().dumps(d) + + resp = self.invoke("ModifyCubeTag", d, **kwargs) + return apis.ModifyCubeTagResponseSchema().loads(resp)
+ +
[docs] def renew_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RenewCubePod - 更新Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - (Required) 容器Id + - **Pod** (str) - (Required) base64编码的Pod的yaml + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Pod** (str) - base64编码过的yaml,需要解码获取信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RenewCubePodRequestSchema().dumps(d) + + resp = self.invoke("RenewCubePod", d, **kwargs) + return apis.RenewCubePodResponseSchema().loads(resp)
+ +
[docs] def update_cube_deployment( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateCubeDeployment - 更新Deployment + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Deployment** (str) - (Required) base64编码的Deployment的yaml。大小不超过16KB + - **DeploymentId** (str) - (Required) Deployment的Id + - **Name** (str) - Deployment的name + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Deployment** (str) - 经过base64编码的Deployment的yaml + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateCubeDeploymentRequestSchema().dumps(d) + + resp = self.invoke("UpdateCubeDeployment", d, **kwargs) + return apis.UpdateCubeDeploymentResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/iam/client.html b/_modules/ucloud/services/iam/client.html new file mode 100644 index 00000000..43f06f64 --- /dev/null +++ b/_modules/ucloud/services/iam/client.html @@ -0,0 +1,167 @@ + + + + + + + + ucloud.services.iam.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.iam.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.iam.schemas import apis
+
+
+
[docs]class IAMClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(IAMClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateProject - 创建项目 + + **Request** + + - **ProjectName** (str) - (Required) 项目名称,不得与现有项目重名 + + **Response** + + - **ProjectId** (str) - 所创建项目的Id + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateProject", d, **kwargs) + return apis.CreateProjectResponseSchema().loads(resp)
+ +
[docs] def delete_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteProject - 删除项目 + + **Request** + + - **ProjectID** (str) - (Required) 项目ID + + **Response** + + - **Message** (str) - 错误消息 + + """ + # build request + d = {} + req and d.update(req) + d = apis.DeleteProjectRequestSchema().dumps(d) + + resp = self.invoke("DeleteProject", d, **kwargs) + return apis.DeleteProjectResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ipsecvpn/client.html b/_modules/ucloud/services/ipsecvpn/client.html new file mode 100644 index 00000000..6cfe39bb --- /dev/null +++ b/_modules/ucloud/services/ipsecvpn/client.html @@ -0,0 +1,626 @@ + + + + + + + + ucloud.services.ipsecvpn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ipsecvpn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ipsecvpn.schemas import apis
+
+
+
[docs]class IPSecVPNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(IPSecVPNClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_remote_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateRemoteVPNGateway - 创建客户VPN网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RemoteVPNGatewayAddr** (str) - (Required) 客户VPN网关地址 + - **RemoteVPNGatewayName** (str) - (Required) 客户VPN网关名称 + - **Remark** (str) - 备注,默认为空 + - **Tag** (str) - 业务组名称,默认为 "Default" + + **Response** + + - **RemoteVPNGatewayId** (str) - 新建客户VPN网关的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateRemoteVPNGatewayRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateRemoteVPNGateway", d, **kwargs) + return apis.CreateRemoteVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def create_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVPNGateway - 创建VPN网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Grade** (str) - (Required) 购买的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型 + - **VPCId** (str) - (Required) 新建VPN网关所属VPC的资源ID + - **VPNGatewayName** (str) - (Required) 新建VPN网关名称 + - **BusinessId** (str) - 业务组ID + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费;Dynamic, 按需付费(需开启权限);Trial, 试用(需开启权限);默认为按月付费 + - **CouponId** (str) - 代金券ID, 默认不使用 + - **EIPId** (str) - 若要绑定EIP,在此填上EIP的资源ID + - **Quantity** (int) - 购买时长, 默认: 1 + - **Remark** (str) - 备注,默认为空 + - **Tag** (str) - 业务组名称,默认为 "Default" + + **Response** + + - **VPNGatewayId** (str) - 新建VPN网关的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPNGatewayRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPNGateway", d, **kwargs) + return apis.CreateVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def create_vpn_tunnel( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVPNTunnel - 创建VPN隧道 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **IKEPreSharedKey** (str) - (Required) 预共享密钥 + - **IKEVersion** (str) - (Required) ike版本,枚举值: "IKE V1","IKE V2",默认v1 + - **IPSecLocalSubnetIds** (list) - (Required) 指定VPN连接的本地子网的资源ID,最多可填写10个。 + - **IPSecRemoteSubnets** (list) - (Required) 指定VPN连接的客户网段,最多可填写20个。 + - **RemoteVPNGatewayId** (str) - (Required) 客户VPN网关的资源ID + - **VPCId** (str) - (Required) vpcId + - **VPNGatewayId** (str) - (Required) VPN网关的资源ID + - **VPNTunnelName** (str) - (Required) VPN隧道名称 + - **IKEAuthenticationAlgorithm** (str) - IKE协商过程中使用的认证算法,"md5", "sha1", "sha2-256"。默认值为“sha1” + - **IKEDhGroup** (str) - IKE协商过程中使用的DH组,枚举值,"1", "2", "5", "14", "15", "16"。默认为“15” + - **IKEEncryptionAlgorithm** (str) - IKE协商过程中使用的加密算法,枚举值,"aes128", "aes192", "aes256", "aes512", "3des"。默认值为“aes128” + - **IKEExchangeMode** (str) - IKE协商过程中使用的模式,枚举值,主模式,“main”;野蛮模式,“aggressive”。IKEV1默认为主模式“main”,IKEV2时不使用该参数。 + - **IKELocalId** (str) - 本端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为自动识别“auto”。IKEV2必填该参数 + - **IKERemoteId** (str) - 客户端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为“自动识别“auto”。IKEV2必填该参数 + - **IKESALifetime** (str) - IKE中SA的生存时间,可填写范围为600-604800。默认为86400。 + - **IPSecAuthenticationAlgorithm** (str) - IPSec隧道中使用的认证算法,枚举值,"md5", "sha1"。默认值为“sha1” + - **IPSecEncryptionAlgorithm** (str) - IPSec隧道中使用的加密算法,枚举值,"aes128", "aes192", "aes256", "aes512", "3des"。默认值为“aes128” + - **IPSecPFSDhGroup** (str) - IPSec的PFS是否开启,枚举值,,不开启,"disable";数字表示DH组, "1", "2", "5", "14", "15", "16"。默认为“disable”。 + - **IPSecProtocol** (str) - 使用的安全协议,枚举值,“esp”,“ah”。默认为“esp” + - **IPSecSALifetime** (str) - IPSec中SA的生存时间,可填写范围为1200 - 604800。默认为3600 + - **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计)。可选为8000 – 20000000。默认使用SA生存时间, + - **Remark** (str) - 备注,默认为空 + - **Tag** (str) - 业务组,默认为“Default” + + **Response** + + - **VPNTunnelId** (str) - VPN隧道的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPNTunnelRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPNTunnel", d, **kwargs) + return apis.CreateVPNTunnelResponseSchema().loads(resp)
+ +
[docs] def delete_remote_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteRemoteVPNGateway - 删除客户VPN网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RemoteVPNGatewayId** (str) - (Required) 客户VPN网关的资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteRemoteVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("DeleteRemoteVPNGateway", d, **kwargs) + return apis.DeleteRemoteVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def delete_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVPNGateway - 删除VPN网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPNGatewayId** (str) - (Required) VPN网关的资源ID + - **ReleaseEip** (bool) - 删除VPN时是否一并释放EIP。false,只解绑EIP不删除EIP;true,解绑并释放EIP。默认是false + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPNGateway", d, **kwargs) + return apis.DeleteVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def delete_vpn_tunnel( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVPNTunnel - 删除VPN隧道 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPNTunnelId** (str) - (Required) VPN隧道的资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPNTunnelRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPNTunnel", d, **kwargs) + return apis.DeleteVPNTunnelResponseSchema().loads(resp)
+ +
[docs] def describe_remote_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeRemoteVPNGateway - 获取客户VPN网关信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **RemoteVPNGatewayIds** (list) - 客户VPN网关的资源ID,例如RemoteVPNGatewayIds.0代表希望获取客户VPN网关1的信息,RemoteVPNGatewayIds.1代表客户VPN网关2,如果为空,则返回当前Region中所有客户VPN网关实例的信息 + - **Tag** (str) - 业务组名称,若指定则返回业务组下所有客户VPN网关信息 + + **Response** + + - **DataSet** (list) - 见 **RemoteVPNGatewayDataSet** 模型定义 + - **TotalCount** (int) - 符合条件的客户VPN网关总数 + + **Response Model** + + **RemoteVPNGatewayDataSet** + - **CreateTime** (int) - 创建时间 + - **Remark** (str) - 备注 + - **RemoteVPNGatewayAddr** (str) - 客户网关IP地址 + - **RemoteVPNGatewayId** (str) - 客户网关ID + - **RemoteVPNGatewayName** (str) - 客户网关名称 + - **Tag** (str) - 用户组 + - **TunnelCount** (int) - 活跃的隧道数量 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRemoteVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("DescribeRemoteVPNGateway", d, **kwargs) + return apis.DescribeRemoteVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def describe_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVPNGateway - 获取VPN网关信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值。默认为20 + - **Offset** (int) - 数据偏移量。默认为0 + - **Tag** (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息。 + - **VPCId** (str) - VPC的资源ID,返回指定的VPC下的所有VPN网关的信息。默认返回当前Region中所有VPN网关实例的信息 + - **VPNGatewayIds** (list) - VPN网关的资源ID,例如VPNGatewayIds.0代表希望获取VPN网关1的信息,VPNGatewayIds.1代表VPN网关2,如果为空,则返回当前Region中所有VPN网关的信息 + + **Response** + + - **DataSet** (list) - 见 **VPNGatewayDataSet** 模型定义 + - **TotalCount** (int) - 满足条件的VPN网关总数 + + **Response Model** + + **VPNGatewayDataSet** + - **AutoRenew** (str) - 是否自动续费 + - **ChargeType** (str) - 付费类型 + - **CreateTime** (int) - 创建时间 + - **EIP** (str) - 绑定EIP的IP地址 + - **EIPId** (str) - EIPID + - **EIPType** (str) - EIP类型 + - **ExpireTime** (int) - 到期时间 + - **Grade** (str) - 网关类型 + - **Remark** (str) - 网关备注 + - **Tag** (str) - 网关业务组 + - **VPCId** (str) - 所属VPCId + - **VPCName** (str) - 所属VPC名字 + - **VPNGatewayId** (str) - 网关Id + - **VPNGatewayName** (str) - 网关名字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPNGateway", d, **kwargs) + return apis.DescribeVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def describe_vpn_tunnel( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVPNTunnel - 获取VPN隧道信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **Tag** (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息 + - **VPNTunnelIds** (list) - VPN隧道的资源ID,例如VPNTunnelIds.0代表希望获取信息的VPN隧道1,VPNTunneIds.1代表VPN隧道2,如果为空,则返回当前Region中所有的VPN隧道实例 + + **Response** + + - **DataSet** (list) - 见 **VPNTunnelDataSet** 模型定义 + - **TotalCount** (int) - VPN隧道总数 + + **Response Model** + + **VPNTunnelDataSet** + - **CreateTime** (int) - 创建时间 + - **IKEData** (dict) - 见 **IKEData** 模型定义 + - **IPSecData** (dict) - 见 **IPSecData** 模型定义 + - **Remark** (str) - 备注 + - **RemoteVPNGatewayId** (str) - 对端网关Id + - **RemoteVPNGatewayName** (str) - 对端网关名字 + - **Tag** (str) - 用户组 + - **VPCId** (str) - 所属VPCId + - **VPCName** (str) - 所属VOC名字 + - **VPNGatewayId** (str) - 所属VPN网关id + - **VPNGatewayName** (str) - VPN网关名字 + - **VPNTunnelId** (str) - 隧道id + - **VPNTunnelName** (str) - 隧道名称 + + + **IKEData** + - **IKEAuthenticationAlgorithm** (str) - IKE认证算法 + - **IKEDhGroup** (str) - IKEDH组 + - **IKEEncryptionAlgorithm** (str) - IKE加密算法 + - **IKEExchangeMode** (str) - IKEv1协商模式 + - **IKELocalId** (str) - IKE本地ID标识 + - **IKEPreSharedKey** (str) - IKE预共享秘钥 + - **IKERemoteId** (str) - IKE对端ID标识 + - **IKESALifetime** (str) - IKE秘钥生存时间 + - **IKEVersion** (str) - IKE版本 + + + **IPSecData** + - **IPSecAuthenticationAlgorithm** (str) - IPSec通道中使用的认证算法 + - **IPSecEncryptionAlgorithm** (str) - IPSec通道中使用的加密算法 + - **IPSecLocalSubnetIds** (list) - 指定VPN连接的本地子网,用逗号分隔 + - **IPSecPFSDhGroup** (str) - 是否开启PFS功能,Disable表示关闭,数字表示DH组 + - **IPSecProtocol** (str) - 使用的安全协议,ESP或AH + - **IPSecRemoteSubnets** (list) - 指定VPN连接的客户网段,用逗号分隔 + - **IPSecSALifetime** (str) - IPSec中SA的生存时间 + - **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPNTunnelRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPNTunnel", d, **kwargs) + return apis.DescribeVPNTunnelResponseSchema().loads(resp)
+ +
[docs] def get_vpn_gateway_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetVPNGatewayPrice - 获取VPN价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Grade** (str) - (Required) VPN网关规格。枚举值,包括:标准型:Standard,增强型:Enhanced。 + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); 默认为获取三种价格 + - **Quantity** (int) - 购买时长, 默认: 1 + + **Response** + + - **PriceSet** (list) - 见 **VPNGatewayPriceSet** 模型定义 + + **Response Model** + + **VPNGatewayPriceSet** + - **ChargeType** (str) - VPN网关付费方式 + - **Price** (float) - VPN网关价格, 单位"元" + - **PurchaseValue** (int) - 资源有效期, 以Unix Timestamp表示 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetVPNGatewayPriceRequestSchema().dumps(d) + + resp = self.invoke("GetVPNGatewayPrice", d, **kwargs) + return apis.GetVPNGatewayPriceResponseSchema().loads(resp)
+ +
[docs] def get_vpn_gateway_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetVPNGatewayUpgradePrice - 获取VPN网关规格改动价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Grade** (str) - (Required) 更改的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型。 + - **VPNGatewayId** (str) - (Required) VPN网关的资源ID + + **Response** + + - **Price** (float) - 调整规格后的VPN网关价格, 单位为"元", 如需退费此处为负值 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetVPNGatewayUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetVPNGatewayUpgradePrice", d, **kwargs) + return apis.GetVPNGatewayUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def update_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVPNGateway - 更改VPN网关规格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Grade** (str) - (Required) 网关规格。枚举值为: Standard, 标准型; Enhanced, 增强型。 + - **VPNGatewayId** (str) - (Required) VPN网关的资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("UpdateVPNGateway", d, **kwargs) + return apis.UpdateVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def update_vpn_tunnel_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVPNTunnelAttribute - 更新VPN隧道属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPNTunnelId** (str) - (Required) VPN隧道的资源ID + - **IKEAuthenticationAlgorithm** (str) - IKE协商过程中使用的认证算法 + - **IKEDhGroup** (str) - IKE协商过程中使用的DH组 + - **IKEEncryptionAlgorithm** (str) - IKE协商过程中使用的加密算法 + - **IKEExchangeMode** (str) - IKE协商过程中使用的模式,可选“主动模式”与“野蛮模式”。IKEV2不使用该参数。 + - **IKELocalId** (str) - 本端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。 + - **IKEPreSharedKey** (str) - 预共享密钥 + - **IKERemoteId** (str) - 客户端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。 + - **IKESALifetime** (str) - IKE中SA的生存时间 + - **IKEVersion** (str) - 枚举值:"IKE V1","IKE V2" + - **IPSecAuthenticationAlgorithm** (str) - IPSec隧道中使用的认证算法 + - **IPSecEncryptionAlgorithm** (str) - IPSec隧道中使用的加密算法 + - **IPSecLocalSubnetIds** (list) - 指定VPN连接的本地子网的id,用逗号分隔 + - **IPSecPFSDhGroup** (str) - IPSec中的PFS是否开启 + - **IPSecProtocol** (str) - 使用的安全协议,ESP或AH + - **IPSecRemoteSubnets** (list) - 指定VPN连接的客户网段,用逗号分隔 + - **IPSecSALifetime** (str) - IPSec中SA的生存时间 + - **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVPNTunnelAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateVPNTunnelAttribute", d, **kwargs) + return apis.UpdateVPNTunnelAttributeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/isms/client.html b/_modules/ucloud/services/isms/client.html new file mode 100644 index 00000000..a4b9fc92 --- /dev/null +++ b/_modules/ucloud/services/isms/client.html @@ -0,0 +1,436 @@ + + + + + + + + ucloud.services.isms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.isms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.isms.schemas import apis
+
+
+
[docs]class ISMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(ISMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateISMSSignature - 调用接口CreateISMSSignature申请视频短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CertificateType** (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Description** (str) - (Required) 短信签名申请原因 + - **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB + - **SigContent** (str) - (Required) 短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **ProxyFile** (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项; + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **SigId** (str) - 短信签名ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateISMSSignatureRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateISMSSignature", d, **kwargs) + return apis.CreateISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def create_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateISMSTemplate - 申请视频短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Content** (str) - (Required) 视频短信模板内容。json数组的字符串格式。如:[{name:"0.txt",type:"txt",content:"北京是一座美丽的城市,我爱北京!",index:0},{name:"1.jpg",type:"jpg",content:"jpg文件字节的base64编码字符串",index:1},{name:”2.mp4”,type:"mp4",content:"mp4文件字节的base64编码字符串",index:2}]。name: 文件名,name中不能出现中文,必须要带上和type相同的后缀;type:文件类型,不能为空,文本为txt,图片为jpg、gif或png,音频为mp3,视频为mp4;content:文件内容,由文本、图片、音频、视频组成,文本使用txt文件,图片使用 jpg、gif、png 格式,音频使用 mp3 格式,视频使用mp4(视频只允许一个),文本、图片、音频、视频文件合计大小不可超过2M;index: 在视频短信中的位置。从0开始。 + - **MsgSignature** (str) - (Required) 视频短信签名 + - **MsgTitle** (str) - (Required) 视频短信标题 + - **Remark** (str) - (Required) 备注 + - **TemplateName** (str) - (Required) 视频短信模板名称 + - **UnsubscribeInfo** (str) - (Required) 退订信息,如:“回T退订” + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - API接口调用出错时表示错误信息 + - **ReqUuid** (str) - 本次接口调用请求Id,用于问题排查。 + - **TemplateId** (str) - 申请的模板Id。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateISMSTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateISMSTemplate", d, **kwargs) + return apis.CreateISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def delete_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteISMSSignature - 调用接口DeleteISMSSignature删除视频短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigIds** (list) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("DeleteISMSSignature", d, **kwargs) + return apis.DeleteISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def delete_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteISMSTemplate - 调用接口DeleteISMSTemplate删除视频短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TemplateIds** (list) - (Required) 模板ID,支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1...TemplateIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteISMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("DeleteISMSTemplate", d, **kwargs) + return apis.DeleteISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def get_isms_send_receipt( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetISMSSendReceipt - 获取视频短信发送记录的状态回执 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TaskIdSet** (list) - (Required) 发送记录TaskId集合。调用SendUSMSVideoMessage时返回的TaskId的集合。以TaskIdSet.0、TaskIdSet.1...TaskIdSet.N的形式传入。每次请求最多支持100个 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (list) - 见 **ReceiptPerTask** 模型定义 + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + + **Response Model** + + **ReceiptPerTask** + - **ReceiptSet** (list) - 见 **ReceiptPerPhone** 模型定义 + - **TaskId** (str) - 发送短信时返回的TaskId + + + **ReceiptPerPhone** + - **Phone** (str) - 手机号码 + - **ReceiptCode** (str) - 回执码 + - **ReceiptDesc** (str) - 回执结果描述 + - **ReceiptResult** (str) - 回执结果(发送成功、发送失败、状态未知) + - **ReceiptTime** (int) - 回执返回时间 + - **SessionId** (str) - SessionId + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetISMSSendReceiptRequestSchema().dumps(d) + + resp = self.invoke("GetISMSSendReceipt", d, **kwargs) + return apis.GetISMSSendReceiptResponseSchema().loads(resp)
+ +
[docs] def query_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryISMSSignature - 调用接口QueryISMSSignature查询视频短信签名申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigId** (str) - (Required) 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项; + - **SigContent** (str) - 签名内容;签名ID和签名至少需填写1项; + + **Response** + + - **Data** (dict) - 见 **OutSignature** 模型定义 + - **Message** (str) - 发生错误时,表示具体错误描述 + + **Response Model** + + **OutSignature** + - **ErrDesc** (str) - 短信签名未通过审核原因 + - **SigContent** (str) - 短信签名内容 + - **SigId** (str) - 短信签名ID + - **Status** (int) - 签名状态,0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.QueryISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("QueryISMSSignature", d, **kwargs) + return apis.QueryISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def query_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryISMSTemplate - 查询模板状态信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TemplateId** (str) - (Required) 模板Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **OutTemplate** 模型定义 + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + + **Response Model** + + **OutTemplate** + - **CreateTime** (int) - 创建时间,时间戳格式1629357838 + - **ExpireTime** (int) - 截止有效时间,时间戳格式1629357838 + - **Purpose** (int) - 视频短信类型(3-会员营销) + - **Remark** (str) - 备注信息 + - **StatusDesc** (str) - 状态描述。json格式,给出运营商维度的审核状态信息,示例:{"telecom_status":2,"telecom_desc":"审核通过","unicom_status":2,"unicom_desc":"审核通过","mobile_status":2,"mobile_desc":"审核通过"}。状态枚举值:0-创建模板时未向该运营商报备 1->审核中 2->审核通过 3->审核未通过 4->禁用 7->过期 11->待审核 + - **TemplateId** (str) - 模板ID + - **TemplateName** (str) - 模板名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.QueryISMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("QueryISMSTemplate", d, **kwargs) + return apis.QueryISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def send_isms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendISMSMessage - 发送视频短信 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PhoneSet** (list) - (Required) 手机号码列表。暂时只支持中国大陆号码。若号码中带区号,需要将区号使用小括号包含,放在号码前面。如: (86)1851623xxxx + - **TemplateId** (str) - (Required) 视频短信模板Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + - **TaskId** (str) - 本次调用TaskId,使用该字段查询回执信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendISMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendISMSMessage", d, **kwargs) + return apis.SendISMSMessageResponseSchema().loads(resp)
+ +
[docs] def update_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateISMSSignature - 调用接口UpdateISMSSignature修改未通过审核的视频短信签名,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigContent** (str) - (Required) 新的短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigId** (str) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **CertificateType** (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Document** (str) - 短信签名的资质证明文件URL,若未更改审核材料,则该处使用已上传审核材料的URL链接,否则使用File参数 + - **File** (str) - 短信签名的资质证明文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB。内容格式如下: [file type];[code type],[base64] 如:image/jpeg;base64,5YaF5a65 + - **ProxyDoc** (str) - 短信签名授权委托文件URL,若未更改授权委托文件,则该处填写已上传的授权委托文件的URL链接,否则使用ProxyFile参数 + - **ProxyFile** (str) - 短信签名授权委托文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;格式和File类似。 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("UpdateISMSSignature", d, **kwargs) + return apis.UpdateISMSSignatureResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/pathx/client.html b/_modules/ucloud/services/pathx/client.html new file mode 100644 index 00000000..9637bcbc --- /dev/null +++ b/_modules/ucloud/services/pathx/client.html @@ -0,0 +1,1141 @@ + + + + + + + + ucloud.services.pathx.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.pathx.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.pathx.schemas import apis
+
+
+
[docs]class PathXClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(PathXClient, self).__init__(config, transport, middleware, logger) + +
[docs] def bind_path_xssl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindPathXSSL - 绑定PathX SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Port** (list) - (Required) 绑定SSL证书的HTTPS端口。Port.0 Port.1对应多个Port。如果Port不存在则不会绑定 + - **SSLId** (str) - (Required) 证书ID,如果没有指定证书ID也没有申请免费证书,HTTPS接入无法正常工作 + - **UGAId** (str) - (Required) UGA实例ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.BindPathXSSLRequestSchema().dumps(d) + + resp = self.invoke("BindPathXSSL", d, **kwargs) + return apis.BindPathXSSLResponseSchema().loads(resp)
+ +
[docs] def create_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateGlobalSSHInstance - 创建GlobalSSH实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Area** (str) - (Required) 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”,“首尔”。Area和AreaCode两者必填一个 + - **AreaCode** (str) - (Required) AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个 + - **Port** (int) - (Required) 源站服务器监听的SSH端口,可取范围[1-65535],不能使用80,443, 65123端口。如果InstanceType=Free,取值范围缩小为[22,3389],linux系统选择22,windows系统自动选3389。 + - **TargetIP** (str) - (Required) 被SSH访问的源站IP,仅支持IPv4地址。 + - **BandwidthPackage** (int) - Ultimate版本带宽包大小,枚举值:[0,20,40]。单位MB + - **ChargeType** (str) - 支付方式,如按月:Month、 按年:Year、按时:Dynamic + - **CouponId** (str) - 使用代金券可冲抵部分费用 + - **ForwardRegion** (str) - InstanceType等于Basic时可以在["cn-bj2","cn-sh2","cn-gd"]中选择1个作为转发机房,其他付费版默认配置三个转发机房 + - **InstanceType** (str) - 枚举值:["Ultimate","Enterprise","Basic","Primary"], 分别代表旗舰版,企业版,基础版,入门版 + - **Quantity** (int) - 购买数量按月购买至月底请传0 + - **Remark** (str) - 备注信息 + + **Response** + + - **AcceleratingDomain** (str) - 加速域名,访问该域名可就近接入 + - **InstanceId** (str) - 实例ID,资源唯一标识 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateGlobalSSHInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateGlobalSSHInstance", d, **kwargs) + return apis.CreateGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def create_path_xssl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreatePathXSSL - 创建SSL证书,可以把整个 Pem 证书内容传到SSLContent,或者把证书、私钥、CA证书分别传过来 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID org-xxx格式。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SSLName** (str) - (Required) SSL证书的名字 + - **CACert** (str) - CA颁发证书内容 + - **PrivateKey** (str) - 加密证书的私钥,不可使用密码保护,开启密码保护后,重启服务需要输入密码 + - **SSLContent** (str) - SSL证书的完整内容,私钥不可使用密码,包括加密证书的私钥、用户证书或CA证书等 + - **SSLType** (str) - 所添加的SSL证书类型,目前只支持Pem格式 + - **UserCert** (str) - 用户自签证书内容 + + **Response** + + - **SSLId** (str) - SSL证书的Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreatePathXSSLRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreatePathXSSL", d, **kwargs) + return apis.CreatePathXSSLResponseSchema().loads(resp)
+ +
[docs] def create_uga_forwarder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUGAForwarder - 创建加速实例转发器,支持HTTPS接入HTTPS回源、HTTPS接入HTTP回源、HTTP接入HTTP回源、TCP接入TCP回源、UDP接入UDP回源、 支持WSS接入WSS回源、WSS接入WS回源、WS接入WS回源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **UGAId** (str) - (Required) 加速配置实例ID + - **HTTPHTTP** (list) - HTTP接入HTTP回源转发,接入端口。禁用65123端口 + - **HTTPHTTPRS** (list) - HTTP接入HTTP回源转发,源站监听端口 + - **HTTPSHTTP** (list) - HTTPS接入HTTP回源转发,接入端口。禁用65123端口 + - **HTTPSHTTPRS** (list) - HTTPS接入HTTP回源转发,回源端口 + - **HTTPSHTTPS** (list) - HTTPS接入HTTPS回源转发,接入端口。禁用65123端口 + - **HTTPSHTTPSRS** (list) - HTTPS接入HTTPS回源转发,源站监听端口 + - **TCP** (list) - TCP接入端口,禁用65123端口 + - **TCPRS** (list) - TCP回源端口 + - **UDP** (list) - UDP接入端口,禁用65123端口 + - **UDPRS** (list) - UDP回源端口 + - **WSSWS** (list) - WebSocketS接入WebSocket回源转发,接入端口。禁用65123。 + - **WSSWSRS** (list) - WebSocketS接入WebSocket回源转发,源站监听端口。 + - **WSSWSS** (list) - WebSocketS接入WebSocketS回源转发,接入端口。禁用65123。 + - **WSSWSSRS** (list) - WebSocketS接入WebSocketS回源转发,源站监听端口。 + - **WSWS** (list) - WebSocket接入WebSocket回源转发,接入端口。禁用65123。 + - **WSWSRS** (list) - WebSocket接入WebSocket回源转发,源站监听端口 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUGAForwarderRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUGAForwarder", d, **kwargs) + return apis.CreateUGAForwarderResponseSchema().loads(resp)
+ +
[docs] def create_uga_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUGAInstance - 创建全球加速配置项 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Name** (str) - (Required) 加速配置实例名称 + - **Domain** (str) - 加速源域名,IPList和Domain二选一必填 + - **IPList** (str) - 加速源IP,多个IP用英文半角逗号(,)隔开;IPList和Domain二选一必填 + - **TCP** (list) - TCP端口号,已废弃。请使用 CreateUGAForwarder API 创建端口 + - **UDP** (list) - UDP端口号,已废弃。请使用 CreateUGAForwarder API 创建端口 + + **Response** + + - **CName** (str) - 加速域名 用户可把业务域名CName到此域名上。注意:未绑定线路情况时 加速域名解析不出IP。 + - **Message** (str) - 返回信息 + - **UGAId** (str) - 加速配置ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUGAInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUGAInstance", d, **kwargs) + return apis.CreateUGAInstanceResponseSchema().loads(resp)
+ +
[docs] def create_upath(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateUPath - 创建UPath + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Bandwidth** (int) - (Required) 线路带宽,最小1Mbps,最大带宽由 DescribePathXLineConfig 接口获得。如需更大带宽,请联系产品团队。 + - **LineId** (str) - (Required) 选择的线路 + - **Name** (str) - (Required) UPath名字 + - **ChargeType** (str) - 计费模式,默认为Month 按月收费,可选范围['Month','Year','Dynamic'] + - **CouponId** (str) - 代金券Id + - **PostPaid** (bool) - 是否开启后付费, 默认为false + - **Quantity** (int) - 购买周期,ChargeType为Month时,Quantity默认为0代表购买到月底,按时和按年付费该参数必须大于0 + + **Response** + + - **UPathId** (str) - 加速线路实例Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUPathRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUPath", d, **kwargs) + return apis.CreateUPathResponseSchema().loads(resp)
+ +
[docs] def delete_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteGlobalSSHInstance - 删除GlobalSSH实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **InstanceId** (str) - (Required) 实例Id,资源的唯一标识 + + **Response** + + - **Message** (str) - 提示信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteGlobalSSHInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteGlobalSSHInstance", d, **kwargs) + return apis.DeleteGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_path_xssl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeletePathXSSL - 删除PathX SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SSLId** (str) - (Required) SSL证书的ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeletePathXSSLRequestSchema().dumps(d) + + resp = self.invoke("DeletePathXSSL", d, **kwargs) + return apis.DeletePathXSSLResponseSchema().loads(resp)
+ +
[docs] def delete_uga_forwarder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUGAForwarder - 删除加速实例转发器 按接入端口删除 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **UGAId** (str) - (Required) 加速配置实例ID + - **HTTPHTTP** (list) - HTTP接入HTTP回源,接入端口。禁用65123端口 + - **HTTPSHTTP** (list) - HTTPS接入HTTP回源, 接入端口。禁用65123端口 + - **HTTPSHTTPS** (list) - HTTPS接入HTTPS回源, 接入端口。禁用65123端口 + - **TCP** (list) - TCP接入端口 + - **UDP** (list) - UDP接入端口 + - **WSSWS** (list) - WebSocketS接入WebSocket回源, 接入端口。禁用65123端口。 + - **WSSWSS** (list) - WebSocketS接入WebSocketS回源, 接入端口。禁用65123端口 + - **WSWS** (list) - WebSocket接入WebSocket回源, 接入端口。禁用65123端口 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUGAForwarderRequestSchema().dumps(d) + + resp = self.invoke("DeleteUGAForwarder", d, **kwargs) + return apis.DeleteUGAForwarderResponseSchema().loads(resp)
+ +
[docs] def delete_uga_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUGAInstance - 删除全球加速服务加速配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UGAId** (str) - (Required) 加速配置实例ID + + **Response** + + - **Message** (str) - 消息提示 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUGAInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUGAInstance", d, **kwargs) + return apis.DeleteUGAInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_upath(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteUPath - 删除UPath + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UPathId** (str) - (Required) 加速线路实例ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUPathRequestSchema().dumps(d) + + resp = self.invoke("DeleteUPath", d, **kwargs) + return apis.DeleteUPathResponseSchema().loads(resp)
+ +
[docs] def describe_global_ssh_area( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeGlobalSSHArea - + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) + + **Response** + + - **AreaSet** (list) - 见 **GlobalSSHArea** 模型定义 + - **Message** (str) - + + **Response Model** + + **GlobalSSHArea** + - **Area** (str) - + - **AreaCode** (str) - + - **RegionSet** (list) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeGlobalSSHAreaRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("DescribeGlobalSSHArea", d, **kwargs) + return apis.DescribeGlobalSSHAreaResponseSchema().loads(resp)
+ +
[docs] def describe_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeGlobalSSHInstance - 获取GlobalSSH实例列表(传实例ID获取单个实例信息,不传获取项目下全部实例) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **InstanceId** (str) - 实例ID,资源唯一标识 + + **Response** + + - **InstanceSet** (list) - 见 **GlobalSSHInfo** 模型定义 + + **Response Model** + + **GlobalSSHInfo** + - **AcceleratingDomain** (str) - GlobalSSH分配的加速域名。 + - **Area** (str) - 被SSH访问的IP所在地区 + - **BandwidthPackage** (int) - globalssh Ultimate带宽包大小 + - **ChargeType** (str) - 支付周期,如Month,Year,Dynamic等 + - **CreateTime** (int) - 资源创建时间戳 + - **Expire** (bool) - 是否过期 + - **ExpireTime** (int) - 资源过期时间戳 + - **ForwardRegion** (str) - InstanceType为Basic版本时,需要展示具体分配的转发机房 + - **GlobalSSHPort** (int) - InstanceType等于Free时,由系统自动分配,不等于源站Port值。InstanceType不等于Free时,与源站Port值相同。 + - **InstanceId** (str) - 实例ID,资源唯一标识 + - **InstanceType** (str) - 枚举值:["Enterprise","Basic","Free","Welfare"], 分别代表企业版,基础版本,免费版本,较早的公测免费版 + - **Port** (int) - 源站服务器监听的SSH端口,windows系统为RDP端口 + - **Remark** (str) - 备注信息 + - **TargetIP** (str) - 被SSH访问的源站 IPv4地址。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeGlobalSSHInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeGlobalSSHInstance", d, **kwargs) + return apis.DescribeGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_path_x_line_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePathXLineConfig - 获取全球加速线路信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + + **Response** + + - **LineSet** (list) - 见 **UGAALine** 模型定义 + + **Response Model** + + **UGAALine** + - **LineDetail** (list) - 见 **LineDetail** 模型定义 + - **LineFrom** (str) - 线路源 + - **LineFromName** (str) - 线路源中文名称 + - **LineId** (str) - 线路计费Id + - **LineTo** (str) - 线路目的 + - **LineToName** (str) - 线路目的中文名称 + - **MaxBandwidth** (int) - 线路可售最大带宽 + + + **LineDetail** + - **LineFrom** (str) - 线路源 + - **LineFromName** (str) - 线路源中文名称 + - **LineId** (str) - 线路计费Id + - **LineTo** (str) - 线路目的 + - **LineToName** (str) - 线路目的中文名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribePathXLineConfigRequestSchema().dumps(d) + + resp = self.invoke("DescribePathXLineConfig", d, **kwargs) + return apis.DescribePathXLineConfigResponseSchema().loads(resp)
+ +
[docs] def describe_path_xssl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePathXSSL - 获取SSL证书信息,支持分页,支持按证书名称 证书域名模糊搜索 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (int) - 最大返回条数,默认100,最大400 + - **Offset** (int) - 偏移值 默认为0 + - **SSLId** (str) - SSL证书的Id,不传分页获取证书列表 + - **SearchValue** (str) - 不为空则按证书名称、证书域名模糊搜索 分页返回结果 + + **Response** + + - **DataSet** (list) - 见 **PathXSSLSet** 模型定义 + - **TotalCount** (int) - 符合条件的证书总数 + + **Response Model** + + **PathXSSLSet** + - **CreateTime** (int) - SSL证书的创建时间 时间戳 + - **ExpireTime** (int) - 证书过期时间 时间戳 + - **SSLBindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 + - **SSLContent** (str) - SSL证书内容 + - **SSLId** (str) - SSL证书的Id + - **SSLMD5** (str) - SSL证书(用户证书、私钥、ca证书合并)内容md5值 + - **SSLName** (str) - SSL证书的名字 + - **SourceType** (int) - 证书来源,0:用户上传 1: 免费颁发 + - **SubjectName** (str) - 证书域名 + + + **SSLBindedTargetSet** + - **ResourceId** (str) - SSL证书绑定到的实例ID + - **ResourceName** (str) - SSL证书绑定到的实例名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribePathXSSLRequestSchema().dumps(d) + + resp = self.invoke("DescribePathXSSL", d, **kwargs) + return apis.DescribePathXSSLResponseSchema().loads(resp)
+ +
[docs] def describe_uga_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUGAInstance - 获取全球加速服务加速配置信息,指定实例ID返回单个实例。未指定实例ID时 指定分页参数 则按创建时间降序 返回记录 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (int) - 返回的最大条数,默认为100,最大值400 + - **Offset** (int) - 偏移量,默认为0 + - **UGAId** (str) - 加速配置实例ID,如果传了实例ID 则返回匹配实例ID的记录;如果没传则返回 ProjectId 下全部实例且符合分页要求 + + **Response** + + - **TotalCount** (int) - 符合条件的总数 + - **UGAList** (list) - 见 **UGAAInfo** 模型定义 + + **Response Model** + + **UGAAInfo** + - **CName** (str) - 加速域名,请在加速区域配置您的业务域名的CName记录值为加速域名 + - **Domain** (str) - 源站域名 + - **IPList** (list) - 源站IP列表,多个值由半角英文逗号相隔 + - **L4ForwarderSet** (list) - 见 **UGAL4Forwarder** 模型定义 + - **L7ForwarderSet** (list) - 见 **UGAL7Forwarder** 模型定义 + - **Location** (str) - 源站所在区域,加速实例在绑定线路后会自动设置该值。console页面上通过该值过滤加速实例可以绑定的upath实例。注意:缺少该值会导致在console上无法修改线路 + - **OutPublicIpList** (list) - 见 **OutPublicIpInfo** 模型定义 + - **TaskSet** (list) - 见 **UGAATask** 模型定义 + - **UGAId** (str) - 加速配置实例ID + - **UGAName** (str) - 加速配置名称 + - **UPathSet** (list) - 见 **UPathSet** 模型定义 + + + **UGAL4Forwarder** + - **Port** (int) - 接入端口 + - **Protocol** (str) - 转发协议,枚举值["TCP","UDP","HTTPHTTP","HTTPSHTTP","HTTPSHTTPS"]。TCP和UDP代表四层转发,其余为七层转发 + - **RSPort** (int) - RSPort,源站监听端口 + + + **UGAL7Forwarder** + - **Port** (int) - 接入端口 + - **Protocol** (str) - 转发协议,枚举值["TCP","UDP","HTTPHTTP","HTTPSHTTP","HTTPSHTTPS"]。TCP和UDP代表四层转发,其余为七层转发 + - **RSPort** (int) - RSPort,源站监听端口 + - **SSLId** (str) - 证书ID + - **SSLName** (str) - 证书名称 + + + **OutPublicIpInfo** + - **Area** (str) - 线路出口机房代号 + - **IP** (str) - 线路出口EIP + + + **UGAATask** + - **Port** (int) - 接入端口 + - **Protocol** (str) - 转发协议,枚举值["TCP","UDP","HTTPHTTP","HTTPSHTTP","HTTPSHTTPS"]。TCP和UDP代表四层转发,其余为七层转发 + + + **UPathSet** + - **Bandwidth** (int) - 带宽 Mbps, 1~800Mbps + - **LineFrom** (str) - 线路起点英文代号,加速区域 + - **LineFromName** (str) - 线路起点中文名字,加速区域 + - **LineId** (str) - 线路ID + - **LineTo** (str) - 线路对端英文代号,源站区域 + - **LineToName** (str) - 线路对端中文名字,源站区域 + - **UPathId** (str) - UPath 实例ID + - **UPathName** (str) - UPath名字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUGAInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUGAInstance", d, **kwargs) + return apis.DescribeUGAInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_upath( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUPath - 获取加速线路信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UPathId** (str) - 如果不填参数 返回 ProjectId 下所有的线路资源,填此参数则返回upath实例ID匹配的线路 + + **Response** + + - **UPathSet** (list) - 见 **UPathInfo** 模型定义 + + **Response Model** + + **UPathInfo** + - **Bandwidth** (int) - 带宽,单位Mbps + - **ChargeType** (str) - 计费模式,默认为Month 按月收费,可选范围['Month','Year','Dynamic'] + - **CreateTime** (int) - UPath创建的时间,10位时间戳 + - **ExpireTime** (int) - UPath的过期时间,10位时间戳 + - **LineFromName** (str) - 线路入口名称 + - **LineId** (str) - 选择的线路 + - **LineToName** (str) - 线路出口名称 + - **Name** (str) - UPath实例名字 + - **OutPublicIpList** (list) - 见 **OutPublicIpInfo** 模型定义 + - **PostPaid** (bool) - 是否为后付费实例 + - **UGAList** (list) - 见 **PathXUGAInfo** 模型定义 + - **UPathId** (str) - UPath加速线路实例ID + + + **OutPublicIpInfo** + - **Area** (str) - 线路出口机房代号 + - **IP** (str) - 线路出口EIP + + + **PathXUGAInfo** + - **Domain** (str) - 源站域名 + - **IPList** (list) - 源站IP列表,多个值由半角英文逗号相隔 + - **UGAId** (str) - 加速配置ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUPathRequestSchema().dumps(d) + + resp = self.invoke("DescribeUPath", d, **kwargs) + return apis.DescribeUPathResponseSchema().loads(resp)
+ +
[docs] def describe_upath_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUPathTemplate - 查询UPath的监控模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **UPathId** (str) - (Required) 加速线路实例ID,格式 upath-xxxx + + **Response** + + - **DataSet** (list) - 见 **AlarmRuler** 模型定义 + + **Response Model** + + **AlarmRuler** + - **AlarmFrequency** (int) - 告警探测周期,单位秒 + - **AlarmStrategy** (str) - 收敛策略,可选范围 ['Exponential','Continuous','Once'],分别对应指数递增、连续告警、单次告警 + - **AlarmTemplateRuleId** (int) - 告警模板策略ID + - **Compare** (str) - 比较策略,可选 ['GE','LE'] 分别代表不小于和不大于 + - **ContactGroupId** (int) - 联系组ID + - **MetricName** (str) - 告警指标名称, 所有n的个数必须一致。目前仅允许以下四项:UpathNetworkOut:出向带宽,UpathNetworkIn:入向带宽,UpathNetworkOutUsage:出向带宽使用率,UpathNetworkInUsage:入向带宽使用率 + - **ResourceType** (str) - 资源类型 + - **Threshold** (int) - 告警阈值,带宽使用率的阈值范围是[50,100]的正整数,带宽告警阈值为1000000的倍数, 如大于2Mbps则告警 阈值应该传 2000000 + - **TriggerCount** (int) - 告警触发周期(次数) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUPathTemplateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUPathTemplate", d, **kwargs) + return apis.DescribeUPathTemplateResponseSchema().loads(resp)
+ +
[docs] def get_global_ssh_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetGlobalSSHPrice - 获取GlobalSSH价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ChargeType** (str) - 计费类型:Dynamic,Month,Year + - **InstanceType** (str) - 版本类型。枚举值,Enterprise:企业版;Basic:基础版。可不填,默认为Basic。 + - **Quantity** (int) - 购买周期,如果ChargeType为Month,Quantity默认为0;其他情况必须为大于0的整数 + + **Response** + + - **Price** (float) - 价格,返回单位为元 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetGlobalSSHPriceRequestSchema().dumps(d) + + resp = self.invoke("GetGlobalSSHPrice", d, **kwargs) + return apis.GetGlobalSSHPriceResponseSchema().loads(resp)
+ +
[docs] def get_global_ssh_update_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetGlobalSSHUpdatePrice - 获取GlobalSSH升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceType** (str) - (Required) 升级后的实例类型。枚举值,Enterprise:企业版;Basic:基础版。 + - **ChargeType** (str) - 计费类型:Dynamic,Month,Year。从免费版升级到付费版必须传,其他情况不需要传 + - **InstanceId** (str) - 实例ID,唯一资源标识。从免费版升级到付费版可不填,其他情况必填。 + - **Quantity** (int) - 购买周期,如果ChargeType为Month,Quantity可以不填默认为0;其他情况必须为正整数。 + + **Response** + + - **Price** (float) - 价格,返回单位为元。正数表示付费升级,负数表示降级退费。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetGlobalSSHUpdatePriceRequestSchema().dumps(d) + + resp = self.invoke("GetGlobalSSHUpdatePrice", d, **kwargs) + return apis.GetGlobalSSHUpdatePriceResponseSchema().loads(resp)
+ +
[docs] def get_path_x_metric( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetPathXMetric - 获取全球加速监控信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询起始时间,10位长度时间戳 + - **EndTime** (int) - (Required) 查询结束时间,10位长度时间戳 + - **LineId** (str) - (Required) 具体线路id,调用DescribePathXLineConfig接口获取线路列表 + - **MetricName** (list) - (Required) 查询监控的指标项。目前仅允许以下四项:NetworkOut:出向带宽,NetworkIn:入向带宽,NetworkOutUsage:出向带宽使用率,NetworkInUsage:入向带宽使用率 + - **ResourceId** (str) - (Required) ResourceId,如upath ID 和 uga ID + - **ResourceType** (str) - (Required) upath:加速线路,uga:加速实例 + + **Response** + + - **DataSet** (dict) - 见 **MetricPeriod** 模型定义 + + **Response Model** + + **MetricPeriod** + - **NetworkIn** (list) - 见 **MatricPoint** 模型定义 + - **NetworkInUsage** (list) - 见 **MatricPoint** 模型定义 + - **NetworkOut** (list) - 见 **MatricPoint** 模型定义 + - **NetworkOutUsage** (list) - 见 **MatricPoint** 模型定义 + + + **MatricPoint** + - **Timestamp** (int) - 时间戳 + - **Value** (int) - 监控点数值 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetPathXMetricRequestSchema().dumps(d) + + resp = self.invoke("GetPathXMetric", d, **kwargs) + return apis.GetPathXMetricResponseSchema().loads(resp)
+ +
[docs] def modify_global_ssh_port( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyGlobalSSHPort - 修改GlobalSSH端口 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **InstanceId** (str) - (Required) 实例ID,资源唯一标识。当前仅收费版GlobalSSH实例可以修改端口。 + - **Port** (int) - (Required) 源站服务器监听的SSH端口号。收费版本端口范围[1,65535]且不能为80,443,65123端口。免费版不支持修改端口。 + + **Response** + + - **Message** (str) - 提示信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyGlobalSSHPortRequestSchema().dumps(d) + + resp = self.invoke("ModifyGlobalSSHPort", d, **kwargs) + return apis.ModifyGlobalSSHPortResponseSchema().loads(resp)
+ +
[docs] def modify_global_ssh_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyGlobalSSHRemark - + + **Request** + + - **ProjectId** (str) - (Config) + - **InstanceId** (str) - (Required) + - **Remark** (str) - + + **Response** + + - **Message** (str) - + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyGlobalSSHRemarkRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ModifyGlobalSSHRemark", d, **kwargs) + return apis.ModifyGlobalSSHRemarkResponseSchema().loads(resp)
+ +
[docs] def modify_global_ssh_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyGlobalSSHType - 修改GlobalSSH实例类型,仅支持低版本升级到高版本,不支持高版本降级到低版本 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceId** (str) - (Required) 实例ID,资源唯一标识 + - **InstanceType** (str) - (Required) 取值范围["Enterprise","Basic"],分别对应企业版和基础版,表示升级后的实例类型。比如从Free版本升级为Basic版或Enterprise版,不可从收费版降级为免费版,或从企业版降级为基础版 + - **ChargeType** (str) - 支付方式,如按月、按年、按时 + - **CouponId** (str) - 可抵扣费用的券,通常不使用 + - **Quantity** (str) - 购买时间,当ChargeType为Month,Quantity为0代表购买到月底 + + **Response** + + - **Message** (str) - 提示信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyGlobalSSHTypeRequestSchema().dumps(d) + + resp = self.invoke("ModifyGlobalSSHType", d, **kwargs) + return apis.ModifyGlobalSSHTypeResponseSchema().loads(resp)
+ +
[docs] def modify_upath_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUPathBandwidth - 修改加速线路带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Bandwidth** (int) - (Required) 线路带宽,单位Mbps。最小1Mbps,最大带宽由 DescribePathXLineConfig 接口获得。如需更大带宽,请联系产品团队。 + - **UPathId** (str) - (Required) UPath 加速线路实例Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUPathBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyUPathBandwidth", d, **kwargs) + return apis.ModifyUPathBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_upath_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUPathTemplate - 修改UPath监控告警项 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UPathId** (str) - (Required) 加速线路实例ID + - **AlarmFrequency** (list) - 告警探测周期,单位:秒 + - **AlarmStrategy** (list) - 收敛策略,可选范围 ['Exponential','Continuous','Once'],分别对应指数递增、连续告警、单次告警 + - **Compare** (list) - 比较策略,可选 ['GE','LE'] 分别代表不小于和不大于 + - **ContactGroupId** (list) - 告警组id + - **MetricName** (list) - 告警指标名称, 所有n的个数必须一致。目前仅允许以下四项:UpathNetworkOut:出向带宽,UpathNetworkIn:入向带宽,UpathNetworkOutUsage:出向带宽使用率,UpathNetworkInUsage:入向带宽使用率 + - **Threshold** (list) - 告警阈值,带宽使用率的阈值范围是[50,100]的正整数,带宽告警阈值为1000000的倍数, 如大于2Mbps则告警 阈值应该传 2000000 + - **TriggerCount** (list) - 告警触发周期(次数) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUPathTemplateRequestSchema().dumps(d) + + resp = self.invoke("ModifyUPathTemplate", d, **kwargs) + return apis.ModifyUPathTemplateResponseSchema().loads(resp)
+ +
[docs] def uga_bind_upath( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UGABindUPath - UGA绑定UPath + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UGAId** (str) - (Required) 加速配置实例ID,格式uga-xxxx + - **UPathId** (str) - (Required) 加速线路实例ID,格式upath-xxx + - **CouponId** (str) - 代金券 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UGABindUPathRequestSchema().dumps(d) + + resp = self.invoke("UGABindUPath", d, **kwargs) + return apis.UGABindUPathResponseSchema().loads(resp)
+ +
[docs] def uga_un_bind_upath( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UGAUnBindUPath - UGA与UPath解绑 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UGAId** (str) - (Required) 加速配置实例ID 格式uga-xxx + - **UPathId** (str) - (Required) 加速线路实例ID 格式upath-xxx + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UGAUnBindUPathRequestSchema().dumps(d) + + resp = self.invoke("UGAUnBindUPath", d, **kwargs) + return apis.UGAUnBindUPathResponseSchema().loads(resp)
+ +
[docs] def un_bind_path_xssl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnBindPathXSSL - 解绑PathX SSL 证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Port** (list) - (Required) 解绑SSL证书的HTTPS端口。Port.0 Port.1格式 端口错误则解绑失败。 + - **SSLId** (str) - (Required) SSL证书ID。 + - **UGAId** (str) - (Required) UGA实例ID。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UnBindPathXSSLRequestSchema().dumps(d) + + resp = self.invoke("UnBindPathXSSL", d, **kwargs) + return apis.UnBindPathXSSLResponseSchema().loads(resp)
+ +
[docs] def update_path_x_whitelist( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdatePathXWhitelist - 更新入口白名单,仅限GlobalSSH 实例使用。其他uga-实例不生效 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **InstanceId** (str) - (Required) GlobalSSH实例ID,资源唯一标识 + - **Whitelist** (list) - 白名单规则,例如 "Whitelist.0": "192.168.1.1/24|tcp|22","Whitelist.1": "192.168.1.2|tcp|8080:8090",第一个参数为ip或ip段,第二个参数代表协议(tcp/udp),第三个参数代表端口号或端口范围(使用 ':' 隔开);可以添加多条规则(递增Whitelist.n字段内的n值);此接口需要列出全部规则,例如不填则为清空白名单规则,如若需要增量添加,使用InsertPathXWhitelist接口,globalssh 没有端口范围:端口设置成加速端口,协议设置成tcp:ip|tcp|加速端口 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdatePathXWhitelistRequestSchema().dumps(d) + + resp = self.invoke("UpdatePathXWhitelist", d, **kwargs) + return apis.UpdatePathXWhitelistResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/stepflow/client.html b/_modules/ucloud/services/stepflow/client.html new file mode 100644 index 00000000..ea8df298 --- /dev/null +++ b/_modules/ucloud/services/stepflow/client.html @@ -0,0 +1,204 @@ + + + + + + + + ucloud.services.stepflow.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.stepflow.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.stepflow.schemas import apis
+
+
+
[docs]class StepFlowClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(StepFlowClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_sf_workflow_from_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSFWorkflowFromTemplate - 导入工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Namespace** (str) - (Required) 需要创建的工作流namespace + - **Workflow** (str) - (Required) 描述工作流定义的base64字符串 + - **WorkflowName** (str) - (Required) 需要创建的工作流名称 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 创建的工作流版本号 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateSFWorkflowFromTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSFWorkflowFromTemplate", d, **kwargs) + return apis.CreateSFWorkflowFromTemplateResponseSchema().loads(resp)
+ +
[docs] def get_sf_workflow_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetSFWorkflowTemplate - 导出工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **WorkflowId** (str) - (Required) 被导出工作流的Id + - **WorkflowVersion** (int) - 被导出工作流的版本号。取值范围:WorkflowVersion >= 1;默认会获取发布版本对应的workflow;超过最大版本会返回错误 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 导出工作流的版本号 + - **Workflow** (dict) - 见 **WorkflowTemplate** 模型定义 + - **WorkflowId** (str) - 导出工作流的Id + + **Response Model** + + **Param** + + - **Name** (str) - 参数名称 + - **Type** (str) - 参数类型 + - **Value** (str) - 参数值 + + **ActivityTemplate** + + - **Input** (dict) - Activity的输入 + - **Name** (str) - Activity的名字 + - **Next** (str) - 下一个Activity的名字 + - **Output** (list) - Activity的输出,详见Param + - **RetryTimes** (str) - Activity的重试次数 + - **Timeout** (str) - Activity的超时时间 + - **Type** (str) - Activity的类型 + + **WorkflowTemplate** + + - **Activites** (list) - 见 **ActivityTemplate** 模型定义 + - **Input** (list) - 见 **Param** 模型定义 + - **Output** (list) - 见 **Param** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetSFWorkflowTemplateRequestSchema().dumps(d) + + resp = self.invoke("GetSFWorkflowTemplate", d, **kwargs) + return apis.GetSFWorkflowTemplateResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/tidb/client.html b/_modules/ucloud/services/tidb/client.html new file mode 100644 index 00000000..2c2d4bf8 --- /dev/null +++ b/_modules/ucloud/services/tidb/client.html @@ -0,0 +1,226 @@ + + + + + + + + ucloud.services.tidb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.tidb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.tidb.schemas import apis
+
+
+
[docs]class TiDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(TiDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_ti_db_service( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateTiDBService - 创建TiDB服务 + + **Request** + + - **ProjectId** (str) - (Config) 项目 ID + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 服务名称, 长度不超过64 + - **Password** (str) - (Required) 服务root账号的密码, 长度不超过32 + - **SubnetId** (str) - (Required) 子网 ID + - **VPCId** (str) - (Required) VPC ID + - **DTType** (str) - 容灾类型:10:同可用区,20:跨可用区,默认是同可用区 + - **Ip** (str) - ipv4 + - **Port** (str) - 端口 + - **TikvMemoryHardTh** (str) - 实例类型: 0: 旗舰版,30: 体验版,60: 轻量版 + + **Response** + + - **Data** (dict) - 见 **ServiceID** 模型定义 + - **Message** (str) - 返回信息 + - **ServiceId** (str) - 服务ID + + **Response Model** + + **ServiceID** + - **Id** (str) - 服务ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateTiDBServiceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateTiDBService", d, **kwargs) + return apis.CreateTiDBServiceResponseSchema().loads(resp)
+ +
[docs] def delete_ti_db_service( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteTiDBService - 删除一个服务 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Id** (str) - (Required) 资源ID + + **Response** + + - **Message** (str) - 返回信息 + - **ServiceId** (str) - ServiceId + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteTiDBServiceRequestSchema().dumps(d) + + resp = self.invoke("DeleteTiDBService", d, **kwargs) + return apis.DeleteTiDBServiceResponseSchema().loads(resp)
+ +
[docs] def set_ti_db_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetTiDBConfig - 设置TiDB服务实例参数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Id** (str) - (Required) 资源Id + - **Configs** (list) - 见 **SetTiDBConfigParamConfigs** 模型定义 + + **Response** + + - **ServiceId** (str) - ServiceId + + **Request Model** + + **SetTiDBConfigParamConfigs** + - **Name** (str) - 修改的参数名: proxysql_mysql-max_connections:类型:string, 描述: 所有用户总共的最大连接数 。proxysql_max_connections: 类型:string, 描述: 每个用户的最大连接数。tidb_gc: 类型:string, 描述: tikv_gc_life_time。 + - **Value** (str) - 对应修改的参数值: string + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetTiDBConfigRequestSchema().dumps(d) + + resp = self.invoke("SetTiDBConfig", d, **kwargs) + return apis.SetTiDBConfigResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uaccount/client.html b/_modules/ucloud/services/uaccount/client.html new file mode 100644 index 00000000..462731a3 --- /dev/null +++ b/_modules/ucloud/services/uaccount/client.html @@ -0,0 +1,653 @@ + + + + + + + + ucloud.services.uaccount.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uaccount.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uaccount.schemas import apis
+
+
+
[docs]class UAccountClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UAccountClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def add_member_to_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddMemberToProject - 添加成员到项目 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 的描述。不填写为创建时间最早的项目。 + - **CharacterId** (str) - (Required) 被加入成员归属角色ID + - **MemberEmail** (str) - (Required) 被加入成员Email + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.AddMemberToProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddMemberToProject", d, **kwargs) + return apis.AddMemberToProjectResponseSchema().loads(resp)
+ +
[docs] def create_character( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCharacter - 创建角色 + + **Request** + + - **CharacterName** (str) - (Required) 角色名称,不得与现有角色重名 + - **Add** (list) - 角色对产品的权限(增) + - **CharacterDescription** (str) - 角色描述 + - **Del** (list) - 角色对产品的权限(删) + - **Get** (list) - 角色对产品的权限(查) + - **Mod** (list) - 角色对产品的权限(改) + + **Response** + + - **CharacterId** (str) - 角色ID + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateCharacterRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCharacter", d, **kwargs) + return apis.CreateCharacterResponseSchema().loads(resp)
+ +
[docs] def create_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateProject - 创建项目 + + **Request** + + - **ProjectName** (str) - (Required) 项目名称,不得与现有项目重名 + + **Response** + + - **ProjectId** (str) - 所创建项目的Id + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateProject", d, **kwargs) + return apis.CreateProjectResponseSchema().loads(resp)
+ +
[docs] def describe_character_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeCharacterList - 获取角色列表 + + **Request** + + - **Limit** (int) - 角色列表的最大数量,默认为20 + - **Offset** (int) - 角色列表的偏移量,默认为0 + + **Response** + + - **CharacterSet** (list) - 见 **CharacterSet** 模型定义 + - **TotalCount** (int) - 角色总数 + + **Response Model** + + **PermissionSet** + - **Add** (list) - 有增权限的产品列表 + - **Del** (list) - 有删权限的产品列表 + - **Get** (list) - 有查权限的产品列表 + - **Mod** (list) - 有改权限的产品列表 + + + **CharacterSet** + - **CharacterDescription** (str) - 角色描述 + - **CharacterId** (str) - 角色ID + - **CharacterName** (str) - 角色名 + - **Modifiable** (bool) - 可修改性 + - **PermissionSet** (list) - 见 **PermissionSet** 模型定义 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeCharacterListRequestSchema().dumps(d) + + resp = self.invoke("DescribeCharacterList", d, **kwargs) + return apis.DescribeCharacterListResponseSchema().loads(resp)
+ +
[docs] def describe_member_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeMemberList - 获取成员列表,限主账号使用。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 。不填写为查询所有项目。 + - **Limit** (str) - 成员列表的最大数量,默认为200 + - **Offset** (str) - 成员列表的偏移量,默认为0 + + **Response** + + - **MemberSet** (list) - 见 **MemberInfo** 模型定义 + - **TotalCount** (int) - 成员总数 + + **Response Model** + + **ProjectInfo** + - **CharacterId** (str) - 角色ID + - **ProjectId** (str) - 项目ID,请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ProjectName** (str) - 项目名 + + + **MemberInfo** + - **ActivateFlag** (int) - 激活状态(0:未激活,1:已激活) + - **Created** (int) - 创建时间 + - **DefultProjectId** (str) - 默认项目 + - **IsAdmin** (int) - 是否主账号(0:子账号,1:主账号) + - **IsFinance** (int) - 是否有财务权限(0:无财务权限,1:有财务权限) + - **LastLogin** (int) - 最后一次登录时间 + - **LastRegionId** (str) - 最后访问的机房 + - **MemberEmail** (str) - 成员邮箱 + - **MemberName** (str) - 成员名字 + - **MemberPhone** (str) - 成员手机 + - **MemberPosition** (str) - 成员地址 + - **MemberQQ** (str) - 成员QQ + - **PasswordPolicyDate** (int) - 密码安全策略开启时间,格式:unix timestamp + - **ProjectSet** (list) - 见 **ProjectInfo** 模型定义 + - **PublicKey** (str) - 公钥 + - **State** (str) - 状态 + - **TOTPStatus** (int) - TOTP状态(0:未开启,1:已开启) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeMemberListRequestSchema().dumps(d) + + resp = self.invoke("DescribeMemberList", d, **kwargs) + return apis.DescribeMemberListResponseSchema().loads(resp)
+ +
[docs] def freeze_member( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """FreezeMember - 冻结成员 + + **Request** + + - **MemberEmail** (str) - (Required) 需要被冻结的成员Email + + **Response** + + + """ + # build request + d = {} + req and d.update(req) + d = apis.FreezeMemberRequestSchema().dumps(d) + + resp = self.invoke("FreezeMember", d, **kwargs) + return apis.FreezeMemberResponseSchema().loads(resp)
+ +
[docs] def get_network_mask( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNetworkMask - 查询登录与API调用的网络掩码 + + **Request** + + + **Response** + + - **Data** (dict) - 见 **NetworkMask** 模型定义 + - **Message** (str) - 接口信息,成功时为`success`,错误时显示具体错误信息。 + + **Response Model** + + **NetworkMask** + - **APINetworkMask** (str) - API调用网络掩码,默认空字符串,不限制登录IP,多个IP以英文逗号分隔。 + - **LoginNetworkMask** (str) - 登录网络掩码,默认空字符串,不限制登录IP,多个IP以英文逗号分隔。 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetNetworkMaskRequestSchema().dumps(d) + + resp = self.invoke("GetNetworkMask", d, **kwargs) + return apis.GetNetworkMaskResponseSchema().loads(resp)
+ +
[docs] def get_project_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetProjectList - 获取项目列表 + + **Request** + + - **IsFinance** (str) - 是否是财务账号(Yes:是,No:否) + + **Response** + + - **ProjectCount** (int) - 项目总数 + - **ProjectSet** (list) - 见 **ProjectListInfo** 模型定义 + + **Response Model** + + **ProjectListInfo** + - **CreateTime** (int) - 创建时间(Unix时间戳) + - **IsDefault** (bool) - 是否为默认项目 + - **MemberCount** (int) - 项目下成员数量 + - **ParentId** (str) - 父项目ID(已废弃) + - **ParentName** (str) - 父项目名称(已废弃) + - **ProjectId** (str) - 项目ID + - **ProjectName** (str) - 项目名称 + - **ResourceCount** (int) - 项目下资源数量(已废弃,不建议使用) + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetProjectListRequestSchema().dumps(d) + + resp = self.invoke("GetProjectList", d, **kwargs) + return apis.GetProjectListResponseSchema().loads(resp)
+ +
[docs] def get_region(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetRegion - 获取用户在各数据中心的权限等信息 + + **Request** + + + **Response** + + - **Regions** (list) - 见 **RegionInfo** 模型定义 + + **Response Model** + + **RegionInfo** + - **BitMaps** (str) - 用户在此数据中心的权限位 + - **IsDefault** (bool) - 是否用户当前默认数据中心 + - **Region** (str) - 地域名字,如cn-bj + - **RegionId** (int) - 数据中心ID + - **RegionName** (str) - 数据中心名称 + - **Zone** (str) - 可用区名字,如cn-bj-01 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetRegionRequestSchema().dumps(d) + + resp = self.invoke("GetRegion", d, **kwargs) + return apis.GetRegionResponseSchema().loads(resp)
+ +
[docs] def get_user_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUserInfo - + + **Request** + + + **Response** + + - **DataSet** (list) - 见 **UserInfo** 模型定义 + + **Response Model** + + **UserInfo** + - **Admin** (int) - + - **Administrator** (str) - + - **AuthState** (str) - + - **City** (str) - + - **CompanyName** (str) - + - **Finance** (int) - + - **IndustryType** (int) - + - **PhonePrefix** (str) - + - **Province** (str) - + - **UserAddress** (str) - + - **UserEmail** (str) - + - **UserId** (int) - + - **UserName** (str) - + - **UserPhone** (str) - + - **UserType** (int) - + - **UserVersion** (int) - + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUserInfoRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("GetUserInfo", d, **kwargs) + return apis.GetUserInfoResponseSchema().loads(resp)
+ +
[docs] def invite_subaccount( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """InviteSubaccount - 邀请子帐号成员 + + **Request** + + - **IsFinance** (str) - (Required) 是否有财务权限(true:是,false:否,默认为否) + - **UserEmail** (str) - (Required) 受邀成员邮箱地址,不得重复 + - **UserName** (str) - (Required) 受邀成员姓名 + - **UserPhone** (str) - (Required) 受邀成员手机号码 + + **Response** + + + """ + # build request + d = {} + req and d.update(req) + d = apis.InviteSubaccountRequestSchema().dumps(d) + + resp = self.invoke("InviteSubaccount", d, **kwargs) + return apis.InviteSubaccountResponseSchema().loads(resp)
+ +
[docs] def modify_character( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyCharacter - 修改角色 + + **Request** + + - **CharacterId** (str) - (Required) 角色ID + - **Add** (list) - 角色权限(增) + - **CharacterDescription** (str) - 角色描述 + - **CharacterName** (str) - 新角色名称 + - **Del** (list) - 角色权限(删) + - **Get** (list) - 角色权限(查) + - **Mod** (list) - 角色权限(改) + + **Response** + + + """ + # build request + d = {} + req and d.update(req) + d = apis.ModifyCharacterRequestSchema().dumps(d) + + resp = self.invoke("ModifyCharacter", d, **kwargs) + return apis.ModifyCharacterResponseSchema().loads(resp)
+ +
[docs] def modify_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyProject - + + **Request** + + - **ProjectId** (str) - (Config) + - **ProjectName** (str) - (Required) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ModifyProject", d, **kwargs) + return apis.ModifyProjectResponseSchema().loads(resp)
+ +
[docs] def remove_member_from_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RemoveMemberFromProject - 从项目中移除成员 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 的描述。不填写为默认项目,子帐号必须填写。 + - **MemberEmail** (str) - (Required) 需要被移除成员Email + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RemoveMemberFromProjectRequestSchema().dumps(d) + + resp = self.invoke("RemoveMemberFromProject", d, **kwargs) + return apis.RemoveMemberFromProjectResponseSchema().loads(resp)
+ +
[docs] def set_network_mask( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetNetworkMask - 设置登录与API调用的网络掩码 + + **Request** + + - **Code** (str) - (Required) 短信验证码 + - **APINetworkMask** (str) - API调用网络掩码,多个IP以英文逗号分隔。默认空字符串,不限制登录IP。 + - **LoginNetworkMask** (str) - 登录网络掩码,多个IP以英文逗号分隔。默认空字符串,不限制登录IP。 + + **Response** + + - **Message** (str) - 接口信息,成功时为`success`,错误时显示具体错误信息。 + + """ + # build request + d = {} + req and d.update(req) + d = apis.SetNetworkMaskRequestSchema().dumps(d) + + resp = self.invoke("SetNetworkMask", d, **kwargs) + return apis.SetNetworkMaskResponseSchema().loads(resp)
+ +
[docs] def terminate_character( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateCharacter - 删除用户角色管理列表中的指定角色 + + **Request** + + - **CharacterId** (str) - (Required) 角色ID,使用 `DescribeCharacterList接口 <https://docs.ucloud.cn/api/summary/describe_character_list.html>`_ 获取角色ID + + **Response** + + + """ + # build request + d = {} + req and d.update(req) + d = apis.TerminateCharacterRequestSchema().dumps(d) + + resp = self.invoke("TerminateCharacter", d, **kwargs) + return apis.TerminateCharacterResponseSchema().loads(resp)
+ +
[docs] def terminate_member( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateMember - 删除管理员人员管理页面的指定子账号 + + **Request** + + - **MemberEmail** (str) - (Required) 用户邮箱 + + **Response** + + + """ + # build request + d = {} + req and d.update(req) + d = apis.TerminateMemberRequestSchema().dumps(d) + + resp = self.invoke("TerminateMember", d, **kwargs) + return apis.TerminateMemberResponseSchema().loads(resp)
+ +
[docs] def terminate_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateProject - 删除项目 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 的描述。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.TerminateProjectRequestSchema().dumps(d) + + resp = self.invoke("TerminateProject", d, **kwargs) + return apis.TerminateProjectResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ubill/client.html b/_modules/ucloud/services/ubill/client.html new file mode 100644 index 00000000..853166a6 --- /dev/null +++ b/_modules/ucloud/services/ubill/client.html @@ -0,0 +1,292 @@ + + + + + + + + ucloud.services.ubill.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ubill.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ubill.schemas import apis
+
+
+
[docs]class UBillClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UBillClient, self).__init__(config, transport, middleware, logger) + +
[docs] def get_balance(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetBalance - 获取账户余额 + + **Request** + + + **Response** + + - **AccountInfo** (dict) - 见 **AccountInfo** 模型定义 + + **Response Model** + + **AccountInfo** + - **Amount** (str) - 账户余额 + - **AmountAvailable** (str) - 账户可用余额 + - **AmountCredit** (str) - 信用账户余额 + - **AmountFree** (str) - 赠送账户余额 + - **AmountFreeze** (str) - 冻结账户金额 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetBalanceRequestSchema().dumps(d) + + resp = self.invoke("GetBalance", d, **kwargs) + return apis.GetBalanceResponseSchema().loads(resp)
+ +
[docs] def get_bill_data_file_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetBillDataFileUrl - 生成账单数据文件下载的 url + + **Request** + + - **BillType** (int) - (Required) 账单类型,传 0 时获取账单总览报表,传 1 获取账单明细报表 + - **BillingCycle** (str) - (Required) 账期(字符串格式,YYYY-MM,例如2021-08). 若BillingCycle 和 BillPeriod同时存在,BillingCycle 优先 + - **BillPeriod** (int) - 此字段不推荐使用,建议使用BillingCycle. 若BillingCycle 和 BillPeriod同时存在,BillingCycle 优先 + - **PaidType** (int) - 获取账单总览报表时,账单的支付状态,传 0 时获取待支付账单,传 1 时获取已支付账单。获取账单明细报表时该参数无效 + - **RequireVersion** (str) - 如需求其他语言版本的账单则使用此参数。默认中文。如 RequireVersion = "EN",则提供英文版本账单。 + - **Version** (str) - 文件版本,若为"v1"表示获取带有子用户信息的账单,可以为空 + + **Response** + + - **FileUrl** (str) - 交易账单数据下载URL + - **IsValid** (str) - 生成的 URL是否有效,即有对应数据文件 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetBillDataFileUrlRequestSchema().dumps(d) + + resp = self.invoke("GetBillDataFileUrl", d, **kwargs) + return apis.GetBillDataFileUrlResponseSchema().loads(resp)
+ +
[docs] def list_u_bill_detail( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUBillDetail - 获取某个账期内的所有消费。 + + **Request** + + - **BillingCycle** (str) - (Required) 账期,YYYY-MM,比如2021-08,只支持2018-05之后的查询 + - **ChargeType** (str) - 计费方式 (筛选项, 默认全部) + - **Limit** (int) - 每页数量,默认值25,最大值:100。 + - **Offset** (int) - 数据偏移量 (默认0) + - **OrderType** (str) - 订单类型 (筛选项, 默认全部) + - **PaidState** (int) - 支付状态 (筛选项, 1:仅显示未支付订单; 2:仅显示已支付订单; 0:两者都显示) + - **ProjectName** (str) - 项目名称 (筛选项, 默认全部) + - **ResourceIds** (list) - 资源ID(筛选项, 默认全部) 支持多筛选,多筛选请在请求参数中添加多个字段例ResourceIds.0: uhost-bzgf1gh5,ResourceIds.1: uhost-gu1xpspa, + - **ResourceTypes** (list) - 产品类型 (筛选项, 默认全部),支持多筛选,多筛选请在请求参数中添加多个字段例ResourceTypes.0: uhost,ResourceTypes.1: udisk,ResourceTypes.2: udb, + - **ShowZero** (int) - 是否显示0元订单 (0 不显示, 1 显示, 默认0) + - **UserEmail** (str) - 用户邮箱,可以根据用户邮箱来进行筛选 + + **Response** + + - **Items** (list) - 见 **BillDetailItem** 模型定义 + - **TotalCount** (int) - 账单明细总长度 + + **Response Model** + + **ResourceExtendInfo** + - **KeyId** (str) - 资源标识健 + - **Value** (str) - 资源标识值 + + + **ItemDetail** + - **ProductName** (str) - 产品小类名称 + - **Value** (str) - 产品小类规格 + + + **BillDetailItem** + - **Admin** (int) - 是否为主账号 + - **Amount** (str) - 订单总金额 + - **AmountCoupon** (str) - 代金券抵扣 + - **AmountFree** (str) - 赠送金额抵扣 + - **AmountReal** (str) - 现金账户支付 + - **AzGroupCName** (str) - 可用区 + - **ChargeType** (str) - 计费方式 + - **CreateTime** (int) - 创建时间(时间戳) + - **ItemDetails** (list) - 见 **ItemDetail** 模型定义 + - **OrderNo** (str) - 订单号 + - **OrderType** (str) - 订单类型 + - **ProjectName** (str) - 项目名称 + - **ResourceExtendInfo** (list) - 见 **ResourceExtendInfo** 模型定义 + - **ResourceId** (str) - 资源ID + - **ResourceType** (str) - 产品类型 + - **ResourceTypeCode** (int) - 产品类型代码 + - **ShowHover** (int) - 订单支付状态 + - **StartTime** (int) - 开始时间(时间戳) + - **UserDisplayName** (str) - 账户昵称 + - **UserEmail** (str) - 账户邮箱 + - **UserName** (str) - 账户名 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.ListUBillDetailRequestSchema().dumps(d) + + resp = self.invoke("ListUBillDetail", d, **kwargs) + return apis.ListUBillDetailResponseSchema().loads(resp)
+ +
[docs] def list_u_bill_overview( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUBillOverview - 账单总览。可按产品/项目/用户纬度获取某个账期内账单总览信息。 + + **Request** + + - **BillingCycle** (str) - (Required) 账期,YYYY-MM格式,例如2022-02,只支持2018-05之后的查询 + - **Dimension** (str) - (Required) 账单维度, product 按产品聚合,project 按项目聚合,user 按子账号聚合 + - **HideUnpaid** (int) - 是否显示已入账账单, 1 已入账, 0 待入账 (默认0 ) + + **Response** + + - **Items** (list) - 见 **BillOverviewItem** 模型定义 + - **TotalCount** (int) - 账单总览数据总数 + - **TotalPaidAmount** (str) - 已入账订单总额(已入账时显示) + - **TotalPaidAmountReal** (str) - 现金账户扣款总额 (已入账时显示) + - **TotalUnpaidAmount** (str) - 待入账订单总额(待入账时显示) + + **Response Model** + + **BillOverviewItem** + - **Admin** (int) - 该账户是否为主账号,1 主账号,0 子账号(账单维度按子账号筛选时显示) + - **Amount** (str) - 订单总金额 + - **AmountCoupon** (str) - 代金券抵扣(已入账时显示) + - **AmountFree** (str) - 赠送金额抵扣(已入账时显示) + - **AmountReal** (str) - 现金账户支付(已入账时显示) + - **Dimension** (str) - 账单维度, product 按产品维度聚合,project 按项目维度聚合,user 按子账号维度聚合 + - **ProductCategory** (str) - 产品分类 (账单维度按产品筛选时显示) + - **ProjectName** (str) - 项目名称(账单维度按项目筛选时显示) + - **ResourceType** (str) - 产品类型 (账单维度按产品筛选时显示) + - **ResourceTypeCode** (int) - 产品类型代码(账单维度按产品筛选时显示) + - **UserDisplayName** (str) - 账户昵称(账单维度按子账号筛选时显示) + - **UserEmail** (str) - 账户邮箱(账单维度按子账号筛选时显示) + - **UserName** (str) - 账户名 (账单维度按子账号筛选时显示) + + + """ + # build request + d = {} + req and d.update(req) + d = apis.ListUBillOverviewRequestSchema().dumps(d) + + resp = self.invoke("ListUBillOverview", d, **kwargs) + return apis.ListUBillOverviewResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ucdn/client.html b/_modules/ucloud/services/ucdn/client.html new file mode 100644 index 00000000..9cff27af --- /dev/null +++ b/_modules/ucloud/services/ucdn/client.html @@ -0,0 +1,1789 @@ + + + + + + + + ucloud.services.ucdn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ucdn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ucdn.schemas import apis
+
+
+
[docs]class UCDNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UCDNClient, self).__init__(config, transport, middleware, logger) + +
[docs] def add_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddCertificate - 添加证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CertName** (str) - (Required) 证书名称 + - **PrivateKey** (str) - (Required) 用户私钥 + - **UserCert** (str) - (Required) 用户证书 + - **CaCert** (str) - Ca证书,默认为空 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.AddCertificateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddCertificate", d, **kwargs) + return apis.AddCertificateResponseSchema().loads(resp)
+ +
[docs] def batch_describe_new_ucdn_domain( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BatchDescribeNewUcdnDomain - 批量获取加速域名配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ChannelType** (str) - 渠道ucdn、ufile、uvideo + - **DomainId** (list) - 域名id,创建域名时生成的资源id,默认获取账号下的所有域名信息,n为自然数 + - **Limit** (int) - 返回数据长度,如果制定了Offset,则默认20,否则默认全部,非负整数 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **Arrearage** (list) - 标识欠费的数组,数组含有下列元素值, 1=国内流量有欠费 2=国外流量有欠费 3=国内带宽有欠费 4=国外带宽有欠费 + - **ChargeType** (int) - 当前计费方式,10-流量付费 20-带宽日峰值 30-月95计费,31-月日均峰值, 32-月第四峰值 33-日均峰值之和 34- 日95再取平均 40-未选择计费方式 + - **DomainSet** (list) - 见 **DomainInfo** 模型定义 + - **LastChargeType** (int) - 表示最后一次切换的计费方式,10=流量付费 20=带宽日峰值 30=按月后付费 40=未选择计费方式 + - **MaxDomainNum** (int) - 最大域名数量,默认20 + - **TotalCount** (int) - 满足条件的域名个数 + - **Vip** (str) - vip标示,yes-是 no-否 + + **Response Model** + + **DomainInfo** + - **AccessConf** (dict) - 见 **AccessConf** 模型定义 + - **AreaCode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **CacheConf** (list) - 见 **CacheConf** 模型定义 + - **CacheHost** (str) - 缓存Host,不同的域名可以配置为同一个CacheHost来实现缓存共享,默认为加速域名 + - **CdnProtocol** (str) - 加速类型http,http|https + - **CdnType** (str) - 加速域名的业务类型,web代表网站,stream代表视频,download代表下载。 + - **CertName** (str) - 证书名称 + - **Cname** (str) - cdn域名。创建加速域名生成的cdn域名,用于设置CNAME记录 + - **CreateTime** (int) - 域名创建的时间。格式:时间戳 + - **Domain** (str) - 域名,用户创建加速的域名 + - **DomainId** (str) - 域名id,创建域名时生成的id + - **HttpsStatusAbroad** (str) - 国外https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **HttpsStatusCn** (str) - 国内https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **NullRefer** (bool) - ReferType为白名单时,NullRefer为false代表不允许NULL refer访问,为true代表允许Null refer访问 + - **OriginHost** (str) - 回源Http请求头部Host,默认是加速域名 + - **OriginIp** (list) - 源站ip即cdn服务器回源访问的ip地址。支持多个源站ip,多个源站ip,可表述为如:[1.1.1.1,2.2.2.2] + - **OriginPort** (int) - 回源端口 + - **OriginProtocol** (str) - 源站协议http,http|https 默认http + - **ReferList** (list) - Refer列表,支持正则表达式 + - **ReferStatus** (bool) - refer配置开关,true打开,false关闭 + - **ReferType** (int) - 0白名单,1黑名单 + - **Status** (str) - 创建的加速域名的当前的状态。check代表审核中,checkSuccess代表审核通过,checkFail代表审核失败,enable代表加速中,disable代表停止加速,delete代表删除加速 enableing代表正在开启加速,disableing代表正在停止加速中,deleteing代表删除中 + - **Tag** (str) - 业务组,默认为Default + - **TestUrl** (str) - 测试url,用于域名创建加速时的测试 + - **ValidTime** (int) - 开始分配Cname时间。格式:时间戳 + + + **AccessConf** + - **IpBlacklist** (str) - 多个ip用逗号隔开 + + + **CacheConf** + - **CacheBehavior** (bool) - 是否缓存,true为缓存,flase为不缓存。为flase的情况下,CacheTTL和CacheUnit强制不生效 + - **CacheTTL** (int) - 缓存时间 + - **CacheUnit** (str) - 缓存时间的单位。sec(秒),min(分钟),hour(小时),day(天)。上限1年。 + - **Description** (str) - 缓存规则描述 + - **FollowOriginRule** (bool) - 是否优先遵循源站头部缓存策略,false为不优先遵循源站,true为优先遵循源站缓存头部。默认为0 + - **HttpCodePattern** (str) - 状态码模式,非200,206状态码,多个状态码用竖线(|)分隔,该属性仅仅在状态码缓存配置列表中返回 + - **PathPattern** (str) - 路径模式,支持正则 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.BatchDescribeNewUcdnDomainRequestSchema().dumps(d) + + resp = self.invoke("BatchDescribeNewUcdnDomain", d, **kwargs) + return apis.BatchDescribeNewUcdnDomainResponseSchema().loads(resp)
+ +
[docs] def batch_refresh_new_ucdn_domain_cache( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BatchRefreshNewUcdnDomainCache - 批量刷新缓存 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (str) - (Required) 刷新类型,file代表文件刷新,dir 代表路径刷新 + - **UrlList** (str) - (Required) 待刷新URL列表,以JSON格式描述。刷新多个URL列表时,一次最多提交1000个。每个域名必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面所有img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名 + + **Response** + + - **TaskId** (str) - 本次提交url对应的任务id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.BatchRefreshNewUcdnDomainCacheRequestSchema().dumps(d) + + resp = self.invoke("BatchRefreshNewUcdnDomainCache", d, **kwargs) + return apis.BatchRefreshNewUcdnDomainCacheResponseSchema().loads(resp)
+ +
[docs] def control_ucdn_domain_cache_access( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ControlUcdnDomainCacheAccess - 封禁解封缓存访问 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (str) - (Required) forbid=封禁 unforbid=解封 其他值非法 + - **UrlList** (list) - (Required) 待封禁的Url,一次封禁多个Url时最多一次30条,只能对表示文件的Url进行操作 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ControlUcdnDomainCacheAccessRequestSchema().dumps(d) + + resp = self.invoke("ControlUcdnDomainCacheAccess", d, **kwargs) + return apis.ControlUcdnDomainCacheAccessResponseSchema().loads(resp)
+ +
[docs] def delete_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCertificate - 删除证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CertName** (str) - (Required) 证书名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteCertificateRequestSchema().dumps(d) + + resp = self.invoke("DeleteCertificate", d, **kwargs) + return apis.DeleteCertificateResponseSchema().loads(resp)
+ +
[docs] def describe_new_ucdn_prefetch_cache_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNewUcdnPrefetchCacheTask - 获取预取任务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Limit** (int) - 返回数据长度,默认全部,自然数 + - **Offset** (int) - 数据偏移量,默认为0,自然数 + - **Status** (str) - 需要获取的内容预热的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态 + - **TaskId** (list) - 提交任务时返回的任务ID + + **Response** + + - **TaskList** (list) - 见 **TaskInfo** 模型定义 + - **TotalCount** (int) - 预热任务的总数 + + **Response Model** + + **TaskInfo** + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **TaskId** (str) - 提交任务时返回的任务ID + - **UrlLists** (list) - 见 **UrlProgressInfo** 模型定义 + + + **UrlProgressInfo** + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **FinishTime** (int) - 任务完成时间。格式为Unix Timestamp + - **Progress** (int) - 刷新进度,单位% + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **Url** (str) - 刷新的单条url + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeNewUcdnPrefetchCacheTaskRequestSchema().dumps(d) + + resp = self.invoke("DescribeNewUcdnPrefetchCacheTask", d, **kwargs) + return apis.DescribeNewUcdnPrefetchCacheTaskResponseSchema().loads(resp)
+ +
[docs] def describe_new_ucdn_refresh_cache_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNewUcdnRefreshCacheTask - 获取域名刷新任务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Limit** (int) - 返回数据长度,默认全部,自然数 + - **Offset** (int) - 数据偏移量,默认为0,自然数 + - **Status** (str) - 需要获取的内容刷新的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态 + - **TaskId** (list) - 提交任务时返回的任务ID + + **Response** + + - **TaskList** (list) - 见 **TaskInfo** 模型定义 + - **TotalCount** (int) - 刷新任务的总数 + + **Response Model** + + **TaskInfo** + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **TaskId** (str) - 提交任务时返回的任务ID + - **UrlLists** (list) - 见 **UrlProgressInfo** 模型定义 + + + **UrlProgressInfo** + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **FinishTime** (int) - 任务完成时间。格式为Unix Timestamp + - **Progress** (int) - 刷新进度,单位% + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **Url** (str) - 刷新的单条url + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeNewUcdnRefreshCacheTaskRequestSchema().dumps(d) + + resp = self.invoke("DescribeNewUcdnRefreshCacheTask", d, **kwargs) + return apis.DescribeNewUcdnRefreshCacheTaskResponseSchema().loads(resp)
+ +
[docs] def get_certificate_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCertificateV2 - 获取证书列表(新) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Limit** (int) - 长度,默认为全部,非负整数 + - **Offset** (int) - 偏移,默认为0,非负整数 + + **Response** + + - **CertList** (list) - 见 **CertList** 模型定义 + - **TotalCount** (int) - 证书数量 + + **Response Model** + + **CertList** + - **BeginTime** (int) - 证书开始时间 + - **CaCert** (str) - ca证内容 + - **CertName** (str) - 证书名 + - **CommonName** (str) - 通用名 + - **DnsName** (str) - dns名称 + - **DomainCount** (int) - 已配置域名个数 + - **Domains** (list) - 已配置的域名列表 + - **EndTime** (int) - 证书获取时间 + - **UserCert** (str) - 证书内容 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetCertificateV2RequestSchema().dumps(d) + + resp = self.invoke("GetCertificateV2", d, **kwargs) + return apis.GetCertificateV2ResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnDomainBandwidth - 获取域名带宽数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **BandwidthList** (list) - 见 **BandwidthInfo** 模型定义 + - **Traffic** (float) - 从起始时间到结束时间内的所使用的CDN总流量,单位GB + + **Response Model** + + **BandwidthInfo** + - **CdnBandwidth** (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps(如果请求参数Type为0,则Value是五分钟粒度的带宽值,如果Type为1,则Value是1小时的带宽峰值,如果Type为2,则Value是一天内的带宽峰值) + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnDomainBandwidthRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainBandwidth", d, **kwargs) + return apis.GetNewUcdnDomainBandwidthResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_hit_rate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnDomainHitRate - 获取域名命中率 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Type** (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)默认5分钟 + + **Response** + + - **HitRateList** (list) - 见 **HitRateInfo** 模型定义 + + **Response Model** + + **HitRateInfo** + - **FlowHitRate** (float) - 总流量命中率,单位% + - **RequestHitRate** (float) - 请求数命中率,单位% + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnDomainHitRateRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHitRate", d, **kwargs) + return apis.GetNewUcdnDomainHitRateResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_http_code( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnDomainHttpCode - 获取域名状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **HttpCodeDetail** (list) - 见 **HttpCodeInfo** 模型定义 + + **Response Model** + + **HttpCodeInfo** + - **HttpFiveXX** (int) - 5xx数量 + - **HttpFourXX** (int) - 4xx数量 + - **HttpOneXX** (int) - 1xx数量 + - **HttpThreeXX** (int) - 3xx数量 + - **HttpTwoXX** (int) - 2xx数量 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnDomainHttpCodeRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHttpCode", d, **kwargs) + return apis.GetNewUcdnDomainHttpCodeResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_http_code_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnDomainHttpCodeV2 - 获取域名详细状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp。 + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp。 + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **HttpCodeV2Detail** (list) - 见 **HttpCodeV2Detail** 模型定义 + + **Response Model** + + **HttpCodeV2Detail** + - **Http100** (int) - http100数量 + - **Http101** (int) - http101数量 + - **Http102** (int) - http102数量 + - **Http200** (int) - http200数量 + - **Http201** (int) - http201数量 + - **Http202** (int) - http202数量 + - **Http203** (int) - http203数量 + - **Http204** (int) - http204数量 + - **Http205** (int) - http205数量 + - **Http206** (int) - http206数量 + - **Http207** (int) - http207数量 + - **Http300** (int) - http300数量 + - **Http301** (int) - http301数量 + - **Http302** (int) - http302数量 + - **Http303** (int) - http303数量 + - **Http304** (int) - http304数量 + - **Http305** (int) - http305数量 + - **Http306** (int) - http306数量 + - **Http307** (int) - http307数量 + - **Http400** (int) - http400数量 + - **Http401** (int) - http401数量 + - **Http402** (int) - http402数量 + - **Http403** (int) - http403数量 + - **Http404** (int) - http404数量 + - **Http405** (int) - http405数量 + - **Http406** (int) - http406数量 + - **Http407** (int) - http407数量 + - **Http408** (int) - http408数量 + - **Http409** (int) - http409数量 + - **Http410** (int) - http410数量 + - **Http411** (int) - http411数量 + - **Http412** (int) - http412数量 + - **Http413** (int) - http413数量 + - **Http414** (int) - http414数量 + - **Http415** (int) - http415数量 + - **Http416** (int) - http416数量 + - **Http417** (int) - http417数量 + - **Http418** (int) - http418数量 + - **Http421** (int) - http421数量 + - **Http422** (int) - http422数量 + - **Http423** (int) - http423数量 + - **Http424** (int) - http424数量 + - **Http425** (int) - http425数量 + - **Http426** (int) - http426数量 + - **Http449** (int) - http449数量 + - **Http451** (int) - http451数量 + - **Http500** (int) - http500数量 + - **Http501** (int) - http501数量 + - **Http502** (int) - http502数量 + - **Http503** (int) - http503数量 + - **Http504** (int) - http504数量 + - **Http505** (int) - http505数量 + - **Http506** (int) - http506数量 + - **Http507** (int) - http507数量 + - **Http509** (int) - http509数量 + - **Http510** (int) - http510数量 + - **Time** (int) - 时间 + - **Total** (int) - 当前分组的总状态码数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnDomainHttpCodeV2RequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHttpCodeV2", d, **kwargs) + return apis.GetNewUcdnDomainHttpCodeV2ResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_request_num( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnDomainRequestNum - 获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **RequestList** (list) - 见 **RequestInfo** 模型定义 + + **Response Model** + + **RequestInfo** + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **OriginRequest** (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnDomainRequestNumRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainRequestNum", d, **kwargs) + return apis.GetNewUcdnDomainRequestNumResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_log_referer_statistics( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnLogRefererStatistics - 获取热点referer统计 + + **Request** + + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 ;目前只支持国内 + - **BeginTime** (int) - 查询带宽的起始时间,格式:时间戳 + - **DomainId** (str) - 域名id,创建域名时生成的id + - **EndTime** (int) - 查询统计日志的结束时间,格式:时间戳。最大时间间隔30天 + - **Limit** (int) - 返回的结果数量限制,默认1000 + - **OrderBy** (int) - 0表示按流量降序排列,1表示按照下载次数降序排列,默认为0 + + **Response** + + - **RefererStatistics** (list) - 见 **RefererStatistics** 模型定义 + + **Response Model** + + **RefererList** + - **Percent** (float) - 次数占比,单位% + - **Referer** (str) - 客户端请求的referer + - **RequestTimes** (int) - 次数 + + + **RefererStatistics** + - **Date** (str) - 日期 + - **RefererList** (list) - 见 **RefererList** 模型定义 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetNewUcdnLogRefererStatisticsRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnLogRefererStatistics", d, **kwargs) + return apis.GetNewUcdnLogRefererStatisticsResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_log_url_statistics( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNewUcdnLogUrlStatistics - 获取日志url统计 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **DomainId** (str) - (Required) 域名Id + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 只支持国内 + - **BeginTime** (int) - 查询带宽的起始时间,格式:时间戳。BeginTime和EndTime必须同时赋值 + - **EndTime** (int) - 查询统计日志的结束时间,格式:时间戳,最多可拉取30天 + - **Limit** (int) - 返回的结果数量限制,默认1000 + - **OrderBy** (int) - 0表示按流量降序排列,1表示按照下载次数降序排列,默认为0 + + **Response** + + - **UrlStatisticsList** (list) - 见 **UrlStatistics** 模型定义 + + **Response Model** + + **DownloadStatisticInfo** + - **DownloadTimes** (int) - 下载次数 + - **Percent** (float) - 流量占比,单位% + - **Traffic** (float) - 流量(单位为G) + - **Url** (str) - 下载链接的url + + + **UrlStatistics** + - **Date** (str) - 日期 + - **UrlList** (list) - 见 **DownloadStatisticInfo** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetNewUcdnLogUrlStatisticsRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnLogUrlStatistics", d, **kwargs) + return apis.GetNewUcdnLogUrlStatisticsResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_95bandwidth_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomain95BandwidthV2 - 获取域名九五峰值带宽数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始日期,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束日期,格式为Unix Timestamp + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **CdnBandwidth** (float) - 查询期间的CDN的95带宽值,单位Mbps + - **Time** (int) - 查询时间期间的95带宽时间点 Unix时间戳 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomain95BandwidthV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomain95BandwidthV2", d, **kwargs) + return apis.GetUcdnDomain95BandwidthV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_bandwidth_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainBandwidthV2 - 获取域名带宽数据(新) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Primeval** (int) - 原始带宽,不为0则获取原始带宽,默认为0 + - **Protocol** (str) - 协议,http、https 不传则查所有协议的带宽 + - **Type** (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度) + + **Response** + + - **BandwidthTrafficList** (list) - 见 **BandwidthTrafficInfo** 模型定义 + + **Response Model** + + **BandwidthTrafficInfo** + - **CdnBandwidth** (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps(如果请求参数Type为0,则Value是五分钟粒度的带宽值,如果Type为1,则Value是1小时的带宽峰值,如果Type为2,则Value是一天内的带宽峰值) + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + - **Traffic** (float) - 对应时间粒度的流量,单位字节 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainBandwidthV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainBandwidthV2", d, **kwargs) + return apis.GetUcdnDomainBandwidthV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainConfig - 批量获取加速域名配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ChannelType** (str) - 产品类型ucdn,可不填,默认为ucdn + - **DomainId** (list) - 域名id,创建域名时生成的id。默认获取账号下的所有域名信息,n为自然数,从DomainId.0开始。 + - **Limit** (int) - 返回数据长度, 默认全部,非负整数 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **DomainList** (list) - 见 **DomainConfigInfo** 模型定义 + + **Response Model** + + **DomainConfigInfo** + - **AccessControlConf** (dict) - 见 **AccessControlConf** 模型定义 + - **AdvancedConf** (dict) - 见 **AdvancedConf** 模型定义 + - **AreaCode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 all表示全部区域 + - **CacheConf** (dict) - 见 **CacheAllConfig** 模型定义 + - **CdnType** (str) - 加速域名的业务类型,web代表网站,stream代表视频 ,download 代表下载 + - **CertNameAbroad** (str) - 国外证书名称 + - **CertNameCn** (str) - 国内证书名称 + - **Cname** (str) - cdn域名。创建加速域名生成的cdn域名,用于设置CNAME记录 + - **CreateTime** (int) - 域名创建的时间。格式:时间戳 + - **Domain** (str) - 域名 + - **DomainId** (str) - 域名Id + - **HttpsStatusAbroad** (str) - 国外https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **HttpsStatusCn** (str) - 国内https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **OriginConf** (dict) - 见 **OriginConf** 模型定义 + - **Status** (str) - 创建的加速域名的当前的状态。check代表审核中,checkSuccess代表审核通过,checkFail代表审核失败,enable代表加速中,disable代表停止加速,delete代表删除加速enableing代表正在开启加速,disableing代表正在停止加速中,deleteing代表删除中 + - **Tag** (str) - 业务组:Default + - **TestUrl** (str) - 测试url。用于域名创建加速时的测试 + + + **AccessControlConf** + - **IpBlackList** (list) - ip黑名单,多个ip,可表示为:IpBlackList.0=1.1.1.1,IpBlackList.1=2.2.2.2 + - **ReferConf** (dict) - 见 **ReferConf** 模型定义 + + + **ReferConf** + - **NullRefer** (int) - ReferType为白名单时(删除),NullRefer为0代表不允许NULL refer访问,为1代表允许Null refer访问 + - **ReferList** (list) - Refer防盗链规则列表,支持正则表达式 + - **ReferType** (int) - Refer防盗链配置 0白名单,1黑名单 + + + **AdvancedConf** + - **Http2Https** (bool) - http转https回源 true是,false否 + - **HttpClientHeader** (list) - 客户端响应http头列表 + - **HttpOriginHeader** (list) - 源站http头列表 + + + **CacheAllConfig** + - **CacheHost** (str) - 缓存Host,不同的域名可以配置为同一个CacheHost来实现缓存共享,默认为加速域名 + - **CacheKeyList** (list) - 见 **CacheKeyInfo** 模型定义 + - **CacheList** (list) - 见 **CacheConf** 模型定义 + - **HttpCodeCacheList** (list) - 见 **CacheConf** 模型定义 + + + **CacheKeyInfo** + - **Ignore** (bool) - 是否忽略 + - **PathPattern** (str) - 路径模式,支持正则 + - **QueryString** (str) - 自定义变量,以$符号开头,多个变量用加号(+)连接,$querystring表示所有变量 + + + **CacheConf** + - **CacheBehavior** (bool) - 是否缓存,true为缓存,flase为不缓存。为flase的情况下,CacheTTL和CacheUnit强制不生效 + - **CacheTTL** (int) - 缓存时间 + - **CacheUnit** (str) - 缓存时间的单位。sec(秒),min(分钟),hour(小时),day(天)。上限1年。 + - **Description** (str) - 缓存规则描述 + - **FollowOriginRule** (bool) - 是否优先遵循源站头部缓存策略,false为不优先遵循源站,true为优先遵循源站缓存头部。默认为0 + - **HttpCodePattern** (str) - 状态码模式,非200,206状态码,多个状态码用竖线(|)分隔,该属性仅仅在状态码缓存配置列表中返回 + - **PathPattern** (str) - 路径模式,支持正则 + + + **OriginConf** + - **BackupOriginEnable** (bool) - 1如果为false表示BackupOriginIp为空,表示没有备份源站,忽略BackupOriginIp,BackupOriginHost字段2如果为true表示BackupOriginIp.n必须至少有一个备份源站地址 + - **BackupOriginHost** (str) - 备份回源Http请求头部Host,默认是加速域名 + - **BackupOriginIpList** (list) - 备份源站ip即cdn服务器回源访问的ip地址。多个源站ip,可以这样表述,如:["1.1.1.1","2.2.2.2"] + - **OriginErrorCode** (str) - 主源响应的回源错误码(如:404|500),默认空字符串 + - **OriginErrorNum** (int) - 回主源的回源失败数,默认1 + - **OriginFollow301** (int) - 跟随301跳转 0=不跟随 1=跟随 + - **OriginHost** (str) - 回源Http请求头部Host,默认是加速域名 + - **OriginIpList** (list) - 源站ip即cdn服务器回源访问的ip地址。多个源站ip,可以这样表述,如:["1.1.1.1","2.2.2.2"] + - **OriginPort** (int) - 回源端口 + - **OriginProtocol** (str) - 源站协议http,http|https 默认http + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainConfigRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainConfig", d, **kwargs) + return apis.GetUcdnDomainConfigResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_hit_rate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainHitRate - 获取域名命中率 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照一分钟的粒度)默认5分钟 + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **HitType** (int) - 命中类型:0=整体命中 1=边缘命中 默认是0 + + **Response** + + - **HitRateList** (list) - 见 **HitRateInfoV2** 模型定义 + + **Response Model** + + **HitRateInfoV2** + - **FlowHitRate** (float) - 总流量命中率,单位% + - **RequestHitRate** (float) - 请求数命中率,单位% + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainHitRateRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainHitRate", d, **kwargs) + return apis.GetUcdnDomainHitRateResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_http_code_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainHttpCodeV2 - 获取域名状态码信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示1分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Layer** (str) - 指定获取的状态码是边缘还是上层 edge 表示边缘 layer 表示上层 + + **Response** + + - **HttpCodeDetail** (list) - 见 **HttpCodeInfoV2** 模型定义 + + **Response Model** + + **HttpCodeInfoV2** + - **Http1XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Http2XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Http3XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Http4XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Http5XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Http6XX** (dict) - 见 **HttpCodeV2Detail** 模型定义 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + **HttpCodeV2Detail** + - **Http100** (int) - http100数量 + - **Http101** (int) - http101数量 + - **Http102** (int) - http102数量 + - **Http200** (int) - http200数量 + - **Http201** (int) - http201数量 + - **Http202** (int) - http202数量 + - **Http203** (int) - http203数量 + - **Http204** (int) - http204数量 + - **Http205** (int) - http205数量 + - **Http206** (int) - http206数量 + - **Http207** (int) - http207数量 + - **Http300** (int) - http300数量 + - **Http301** (int) - http301数量 + - **Http302** (int) - http302数量 + - **Http303** (int) - http303数量 + - **Http304** (int) - http304数量 + - **Http305** (int) - http305数量 + - **Http306** (int) - http306数量 + - **Http307** (int) - http307数量 + - **Http400** (int) - http400数量 + - **Http401** (int) - http401数量 + - **Http402** (int) - http402数量 + - **Http403** (int) - http403数量 + - **Http404** (int) - http404数量 + - **Http405** (int) - http405数量 + - **Http406** (int) - http406数量 + - **Http407** (int) - http407数量 + - **Http408** (int) - http408数量 + - **Http409** (int) - http409数量 + - **Http410** (int) - http410数量 + - **Http411** (int) - http411数量 + - **Http412** (int) - http412数量 + - **Http413** (int) - http413数量 + - **Http414** (int) - http414数量 + - **Http415** (int) - http415数量 + - **Http416** (int) - http416数量 + - **Http417** (int) - http417数量 + - **Http418** (int) - http418数量 + - **Http421** (int) - http421数量 + - **Http422** (int) - http422数量 + - **Http423** (int) - http423数量 + - **Http424** (int) - http424数量 + - **Http425** (int) - http425数量 + - **Http426** (int) - http426数量 + - **Http449** (int) - http449数量 + - **Http451** (int) - http451数量 + - **Http500** (int) - http500数量 + - **Http501** (int) - http501数量 + - **Http502** (int) - http502数量 + - **Http503** (int) - http503数量 + - **Http504** (int) - http504数量 + - **Http505** (int) - http505数量 + - **Http506** (int) - http506数量 + - **Http507** (int) - http507数量 + - **Http509** (int) - http509数量 + - **Http510** (int) - http510数量 + - **Time** (int) - 时间 + - **Total** (int) - 当前分组的总状态码数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainHttpCodeV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainHttpCodeV2", d, **kwargs) + return apis.GetUcdnDomainHttpCodeV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_info_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainInfoList - 获取域名基本信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **PageIndex** (int) - 返回第几页,不填默认是第1页 + - **PageSize** (int) - 分页的大小,不填默认每页20个 + + **Response** + + - **DomainInfoList** (list) - 见 **DomainBaseInfo** 模型定义 + - **TotalCount** (int) - 账户下域名总个数 + + **Response Model** + + **DomainBaseInfo** + - **Domain** (str) - 域名 + - **DomainId** (str) - 域名的资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainInfoListRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainInfoList", d, **kwargs) + return apis.GetUcdnDomainInfoListResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainLog - 获取加速域名原始日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。 + - **DomainId** (list) - 域名ID,创建加速域名时生成。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Type** (int) - 查询粒度 0=default(没有粒度) 1=按小时 2=按天 + + **Response** + + - **LogSet** (list) - 见 **LogSetList** 模型定义 + + **Response Model** + + **LogSetList** + - **Domain** (str) - 域名 + - **Logs** (list) - 见 **LogSetInfo** 模型定义 + + + **LogSetInfo** + - **AbroadLog** (list) - 国外日志url列表 + - **CnLog** (list) - 国内日志url列表 + - **Time** (int) - 日志时间UnixTime + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainLogRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainLog", d, **kwargs) + return apis.GetUcdnDomainLogResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_origin_http_code( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainOriginHttpCode - 获取域名源站状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **HttpCodeDetail** (list) - 见 **HttpCodeInfo** 模型定义 + + **Response Model** + + **HttpCodeInfo** + - **HttpFiveXX** (int) - 5xx数量 + - **HttpFourXX** (int) - 4xx数量 + - **HttpOneXX** (int) - 1xx数量 + - **HttpThreeXX** (int) - 3xx数量 + - **HttpTwoXX** (int) - 2xx数量 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainOriginHttpCodeRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainOriginHttpCode", d, **kwargs) + return apis.GetUcdnDomainOriginHttpCodeResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_origin_http_code_detail( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainOriginHttpCodeDetail - 获取域名源站详细状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp。 + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp。 + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **HttpCodeV2Detail** (list) - 见 **HttpCodeV2Detail** 模型定义 + + **Response Model** + + **HttpCodeV2Detail** + - **Http100** (int) - http100数量 + - **Http101** (int) - http101数量 + - **Http102** (int) - http102数量 + - **Http200** (int) - http200数量 + - **Http201** (int) - http201数量 + - **Http202** (int) - http202数量 + - **Http203** (int) - http203数量 + - **Http204** (int) - http204数量 + - **Http205** (int) - http205数量 + - **Http206** (int) - http206数量 + - **Http207** (int) - http207数量 + - **Http300** (int) - http300数量 + - **Http301** (int) - http301数量 + - **Http302** (int) - http302数量 + - **Http303** (int) - http303数量 + - **Http304** (int) - http304数量 + - **Http305** (int) - http305数量 + - **Http306** (int) - http306数量 + - **Http307** (int) - http307数量 + - **Http400** (int) - http400数量 + - **Http401** (int) - http401数量 + - **Http402** (int) - http402数量 + - **Http403** (int) - http403数量 + - **Http404** (int) - http404数量 + - **Http405** (int) - http405数量 + - **Http406** (int) - http406数量 + - **Http407** (int) - http407数量 + - **Http408** (int) - http408数量 + - **Http409** (int) - http409数量 + - **Http410** (int) - http410数量 + - **Http411** (int) - http411数量 + - **Http412** (int) - http412数量 + - **Http413** (int) - http413数量 + - **Http414** (int) - http414数量 + - **Http415** (int) - http415数量 + - **Http416** (int) - http416数量 + - **Http417** (int) - http417数量 + - **Http418** (int) - http418数量 + - **Http421** (int) - http421数量 + - **Http422** (int) - http422数量 + - **Http423** (int) - http423数量 + - **Http424** (int) - http424数量 + - **Http425** (int) - http425数量 + - **Http426** (int) - http426数量 + - **Http449** (int) - http449数量 + - **Http451** (int) - http451数量 + - **Http500** (int) - http500数量 + - **Http501** (int) - http501数量 + - **Http502** (int) - http502数量 + - **Http503** (int) - http503数量 + - **Http504** (int) - http504数量 + - **Http505** (int) - http505数量 + - **Http506** (int) - http506数量 + - **Http507** (int) - http507数量 + - **Http509** (int) - http509数量 + - **Http510** (int) - http510数量 + - **Time** (int) - 时间 + - **Total** (int) - 当前分组的总状态码数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainOriginHttpCodeDetailRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainOriginHttpCodeDetail", d, **kwargs) + return apis.GetUcdnDomainOriginHttpCodeDetailResponseSchema().loads( + resp + )
+ +
[docs] def get_ucdn_domain_origin_request_num( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainOriginRequestNum - 获取域名回源请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **RequestList** (list) - 见 **RequestInfoV2** 模型定义 + + **Response Model** + + **RequestInfoV2** + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainOriginRequestNumRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainOriginRequestNum", d, **kwargs) + return apis.GetUcdnDomainOriginRequestNumResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_prefetch_enable( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainPrefetchEnable - 获取域名预取开启状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **DomainId** (str) - (Required) 域名ID,创建加速域名时生成。 + + **Response** + + - **Enable** (int) - 0表示该域名未开启预取,1表示该域名已开启预取 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainPrefetchEnableRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainPrefetchEnable", d, **kwargs) + return apis.GetUcdnDomainPrefetchEnableResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_request_num_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainRequestNumV2 - 获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **RequestList** (list) - 见 **RequestInfo** 模型定义 + + **Response Model** + + **RequestInfo** + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **OriginRequest** (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainRequestNumV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainRequestNumV2", d, **kwargs) + return apis.GetUcdnDomainRequestNumV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_request_num_v3( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainRequestNumV3 - 获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **Protocol** (str) - 协议,http、https 不传则查所有协议的带宽 + + **Response** + + - **RequestList** (list) - 见 **RequestInfoV2** 模型定义 + + **Response Model** + + **RequestInfoV2** + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainRequestNumV3RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainRequestNumV3", d, **kwargs) + return apis.GetUcdnDomainRequestNumV3ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_traffic( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnDomainTraffic - 获取加速域名流量使用信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **AccountType** (str) - 指定按项目查询,还是按整个账户查询 取值 top 表示按整个账户查询,取值org表示按项目查询 + - **Areacode** (str) - 查询流量区域 cn代表国内 abroad代表海外,默认全部区域 + - **BeginTime** (int) - 查询的起始日期,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值 + - **DomainId** (list) - 域名ID,创建加速域名时生成,n从自然数0开始。默认全部域名 + - **EndTime** (int) - 查询的结束日期,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天 + + **Response** + + - **TrafficSet** (list) - 见 **UcdnDomainTrafficSet** 模型定义 + + **Response Model** + + **UcdnDomainTrafficSet** + - **Time** (int) - 流量获取的时间点,格式为Unix Timestamp + - **Value** (float) - 查询每日流量总值,单位:GB + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnDomainTrafficRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainTraffic", d, **kwargs) + return apis.GetUcdnDomainTrafficResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_pass_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnPassBandwidth - 获取回源带宽数据(cdn回客户源站部分) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **BandwidthDetail** (list) - 见 **BandwidthInfoDetail** 模型定义 + + **Response Model** + + **BandwidthInfoDetail** + - **Bandwidth** (float) - 返回值带宽值数据。 + - **Time** (int) - 宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnPassBandwidthRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnPassBandwidth", d, **kwargs) + return apis.GetUcdnPassBandwidthResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_pass_bandwidth_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnPassBandwidthV2 - 获取回源带宽数据(cdn回客户源站部分) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **BandwidthList** (list) - 见 **BandwidthInfoDetail** 模型定义 + + **Response Model** + + **BandwidthInfoDetail** + - **Bandwidth** (float) - 返回值带宽值数据。 + - **Time** (int) - 宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnPassBandwidthV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnPassBandwidthV2", d, **kwargs) + return apis.GetUcdnPassBandwidthV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_pro_isp_bandwidth_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnProIspBandwidthV2 - 按省份运营商获取域名带宽数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始日期,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束日期,格式为Unix Timestamp + - **Type** (int) - (Required) 时间粒度0 (按5分钟粒度)1 (按小时粒度)2(按天粒度)3(按分钟粒度) + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **Isp** (str) - 运营商代码(运营商拼音),一次只能查询一个运营商,不传递默认取所有运营商 + - **Province** (list) - 省份代码(省份拼音),可以传多个,不传则查询所有省份 + + **Response** + + - **BandwidthSet** (list) - 见 **ProIspBandwidthSet** 模型定义 + + **Response Model** + + **ProIspBandwidthSet** + - **BandwidthTrafficList** (list) - 见 **ProIspBandwidthList** 模型定义 + - **Province** (str) - 省份代码 + + + **ProIspBandwidthList** + - **CdnBandwidth** (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + - **Traffic** (float) - 对应时间粒度的流量,单位字节 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnProIspBandwidthV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnProIspBandwidthV2", d, **kwargs) + return apis.GetUcdnProIspBandwidthV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_pro_isp_request_num_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnProIspRequestNumV2 - 按省份运营商获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **BeginTime** (int) - (Required) 查询的起始日期,格式为Unix Timestamp 忽略时间部分 + - **EndTime** (int) - (Required) 查询的结束日期,格式为Unix Timestamp 忽略时间部分 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **Isp** (str) - 运营商代码,一次只能查询一个运营商,不传递默认取所有运营商 + - **Province** (list) - 省份代码,可以传多个,不传则查询所有省份 + - **Type** (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度) + + **Response** + + - **RequestNumSet** (list) - 见 **ProIspRequestNumSetV2** 模型定义 + + **Response Model** + + **ProIspRequestNumSetV2** + - **Province** (str) - 省份代码 + - **RequestList** (list) - 见 **ProIspRequestListV2** 模型定义 + + + **ProIspRequestListV2** + - **CdnRequest** (float) - 返回值返回指定时间区间内的请求数 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnProIspRequestNumV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnProIspRequestNumV2", d, **kwargs) + return apis.GetUcdnProIspRequestNumV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_traffic( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnTraffic - 获取流量信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + + **Response** + + - **TrafficSet** (list) - 见 **TrafficSet** 模型定义 + + **Response Model** + + **TrafficSet** + - **Areacode** (str) - 购买流量的区域, cn: 国内; abroad: 国外 + - **TrafficLeft** (float) - Areacode区域内总剩余流量, 单位GB + - **TrafficTotal** (float) - Areacode区域内总购买流量, 单位GB + - **TrafficUsed** (float) - Areacode区域内总使用流量, 单位GB + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnTrafficRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnTraffic", d, **kwargs) + return apis.GetUcdnTrafficResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_traffic_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUcdnTrafficV2 - 获取流量信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + + **Response** + + - **TrafficSet** (list) - 见 **TrafficSet** 模型定义 + + **Response Model** + + **TrafficSet** + - **Areacode** (str) - 购买流量的区域, cn: 国内; abroad: 国外 + - **TrafficLeft** (float) - Areacode区域内总剩余流量, 单位GB + - **TrafficTotal** (float) - Areacode区域内总购买流量, 单位GB + - **TrafficUsed** (float) - Areacode区域内总使用流量, 单位GB + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUcdnTrafficV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnTrafficV2", d, **kwargs) + return apis.GetUcdnTrafficV2ResponseSchema().loads(resp)
+ +
[docs] def prefetch_new_ucdn_domain_cache( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PrefetchNewUcdnDomainCache - 提交预取任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **UrlList** (list) - (Required) 预热URL列表,n从自然数0开始。UrlList.n字段必须以”http://域名/”开始。如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名 + + **Response** + + - **TaskId** (str) - 本次提交url对应的任务id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.PrefetchNewUcdnDomainCacheRequestSchema().dumps(d) + + resp = self.invoke("PrefetchNewUcdnDomainCache", d, **kwargs) + return apis.PrefetchNewUcdnDomainCacheResponseSchema().loads(resp)
+ +
[docs] def query_ip_location( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryIpLocation - 查询IP信息 + + **Request** + + - **Ip** (list) - (Required) ip列表 + + **Response** + + - **Data** (list) - 见 **IpLocationInfo** 模型定义 + + **Response Model** + + **IpLocationInfo** + - **Area** (str) - 地区 + - **City** (str) - 城市 + - **Exist** (bool) - ip是否存在 + - **Ip** (str) - 客户端请求的ip + - **Isp** (str) - 运营商 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.QueryIpLocationRequestSchema().dumps(d) + + resp = self.invoke("QueryIpLocation", d, **kwargs) + return apis.QueryIpLocationResponseSchema().loads(resp)
+ +
[docs] def refresh_new_ucdn_domain_cache( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RefreshNewUcdnDomainCache - 刷新缓存 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Type** (str) - (Required) 刷新类型,file代表文件刷新,dir 代表路径刷新 + - **UrlList** (list) - (Required) 需要刷新的URL,n 从自然数0开始,刷新多个URL列表时,一次最多提交30个。必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名 + + **Response** + + - **TaskId** (str) - 本次提交url对应的任务id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RefreshNewUcdnDomainCacheRequestSchema().dumps(d) + + resp = self.invoke("RefreshNewUcdnDomainCache", d, **kwargs) + return apis.RefreshNewUcdnDomainCacheResponseSchema().loads(resp)
+ +
[docs] def switch_ucdn_charge_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SwitchUcdnChargeType - 切换账号计费方式 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ChargeType** (str) - (Required) 计费方式。traffic代表按流量包计费,bandwidth按带宽付费 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.SwitchUcdnChargeTypeRequestSchema().dumps(d) + + resp = self.invoke("SwitchUcdnChargeType", d, **kwargs) + return apis.SwitchUcdnChargeTypeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ucloudstack/client.html b/_modules/ucloud/services/ucloudstack/client.html new file mode 100644 index 00000000..e86841bb --- /dev/null +++ b/_modules/ucloud/services/ucloudstack/client.html @@ -0,0 +1,3459 @@ + + + + + + + + ucloud.services.ucloudstack.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ucloudstack.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ucloudstack.schemas import apis
+
+
+
[docs]class UCloudStackClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UCloudStackClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def allocate_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AllocateEIP - 申请外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Bandwidth** (int) - (Required) 带宽,默认值1,默认范围1~100 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Name** (str) - (Required) 名称 + - **OperatorName** (str) - (Required) 线路。目前支持Bgp + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **IP** (str) - 指定IP + - **IPVersion** (str) - IP版本,默认值IPv4,支持值:IPv4\IPv6 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **EIPID** (str) - 申请的EIP的ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateEIPRequestSchema().dumps(d) + + resp = self.invoke("AllocateEIP", d, **kwargs) + return apis.AllocateEIPResponseSchema().loads(resp)
+ +
[docs] def attach_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AttachDisk - 绑定硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **ResourceType** (str) - (Required) 绑定的资源类型,枚举值:VM,标识虚拟机 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AttachDiskRequestSchema().dumps(d) + + resp = self.invoke("AttachDisk", d, **kwargs) + return apis.AttachDiskResponseSchema().loads(resp)
+ +
[docs] def attach_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AttachNIC - 绑定UCloudStack网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 网卡ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AttachNICRequestSchema().dumps(d) + + resp = self.invoke("AttachNIC", d, **kwargs) + return apis.AttachNICResponseSchema().loads(resp)
+ +
[docs] def bind_alarm_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindAlarmTemplate - 绑定告警模板 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **ResourceIDs** (list) - (Required) 【数组】告警模板ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关;EIP:弹性IP + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindAlarmTemplateRequestSchema().dumps(d) + + resp = self.invoke("BindAlarmTemplate", d, **kwargs) + return apis.BindAlarmTemplateResponseSchema().loads(resp)
+ +
[docs] def bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """BindEIP - 绑定外网 IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindEIPRequestSchema().dumps(d) + + resp = self.invoke("BindEIP", d, **kwargs) + return apis.BindEIPResponseSchema().loads(resp)
+ +
[docs] def bind_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindPhysicalIP - 绑定物理 IP ,被绑定的资源必须处于运行中或有效状态。 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindPhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("BindPhysicalIP", d, **kwargs) + return apis.BindPhysicalIPResponseSchema().loads(resp)
+ +
[docs] def bind_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindSecurityGroup - 绑定安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ResourceID** (str) - (Required) 绑定的资源ID。调用方式举例:ResourceID=“one-id”。 + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **NICType** (str) - 网卡类型,玫举值:WAN,外网;LAN,内网,默认为WAN + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("BindSecurityGroup", d, **kwargs) + return apis.BindSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def clone_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CloneDisk - 克隆硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Name** (str) - (Required) 名称 + - **SrcID** (str) - (Required) 源硬盘ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 克隆出的硬盘ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneDiskRequestSchema().dumps(d) + + resp = self.invoke("CloneDisk", d, **kwargs) + return apis.CloneDiskResponseSchema().loads(resp)
+ +
[docs] def create_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCertificate - 创建证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Certificate** (str) - (Required) 证书内容 + - **CertificateType** (str) - (Required) 证书类型,枚举值["ServerCrt","CACrt"]。分别表示服务器证书和CA证书。只有在双向认证的时候才需要CA证书 + - **Name** (str) - (Required) 证书名称 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PrivateKey** (str) - 私钥内容,服务器证书必传,CA证书不用传递 + - **Remark** (str) - 证书描述 + + **Response** + + - **CertificateID** (str) - 证书ID + - **Message** (str) - 错误描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCertificateRequestSchema().dumps(d) + + resp = self.invoke("CreateCertificate", d, **kwargs) + return apis.CreateCertificateResponseSchema().loads(resp)
+ +
[docs] def create_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCustomImage - 创建自制镜像 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ImageName** (str) - (Required) 镜像名称 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **ImageDescription** (str) - 镜像描述。 + + **Response** + + - **ImageID** (str) - 创建的自制镜像ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCustomImageRequestSchema().dumps(d) + + resp = self.invoke("CreateCustomImage", d, **kwargs) + return apis.CreateCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateDisk - 创建硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DiskSpace** (int) - (Required) 磁盘大小 + - **Name** (str) - (Required) 磁盘名称 + - **SetType** (str) - (Required) 磁盘类型。例如:Normal,SSD + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 创建的磁盘ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateDiskRequestSchema().dumps(d) + + resp = self.invoke("CreateDisk", d, **kwargs) + return apis.CreateDiskResponseSchema().loads(resp)
+ +
[docs] def create_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateLB - 创建负载均衡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **LBType** (str) - (Required) 枚举值。LAN:内网,WAN:外网 + - **Name** (str) - (Required) 名称。 + - **SubnetID** (str) - (Required) LB 实例所在的子网 ID 。 + - **VMType** (str) - (Required) 运行负载均衡实例的主机机型。枚举值:如 Normal ,表示普通机型; SSD,表示 SSD 机型。(机型由平台管理员修改和指定,可参考获取主机机型接口) + - **VPCID** (str) - (Required) LB实例所在的 VPC ID 。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **EIPID** (str) - 外网IP的ID,创建外网LB时为必需 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + - **Remark** (str) - 描述。 + - **SGID** (str) - 安全组ID,创建外网LB时为必需 + + **Response** + + - **LBID** (str) - 返回创建的负载均衡ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateLBRequestSchema().dumps(d) + + resp = self.invoke("CreateLB", d, **kwargs) + return apis.CreateLBResponseSchema().loads(resp)
+ +
[docs] def create_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateNATGW - 创建NAT网关 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **EIPID** (str) - (Required) 外网IP的ID + - **Name** (str) - (Required) 名称。 + - **SGID** (str) - (Required) 安全组ID + - **SubnetID** (str) - (Required) NAT网关实例所在的子网 ID + - **VMType** (str) - (Required) 运行NAT网关实例的主机机型。枚举值:如 Normal ,表示普通机型; SSD,表示 SSD 机型。(机型由平台管理员修改和指定,可参考获取主机机型接口) + - **VPCID** (str) - (Required) NAT网关实例所在的 VPC ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + - **Remark** (str) - 描述 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **NATGWID** (str) - 返回创建的NAT网关ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWRequestSchema().dumps(d) + + resp = self.invoke("CreateNATGW", d, **kwargs) + return apis.CreateNATGWResponseSchema().loads(resp)
+ +
[docs] def create_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNATGWRule - 添加NAT网关白名单 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BindResourceID** (str) - (Required) 绑定的虚拟机资源ID + - **NATGWID** (str) - (Required) NAT网关ID + - **NATGWType** (str) - (Required) NAT的类型。枚举值:SNAT,DNAT + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + - **RuleID** (str) - 白名单ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("CreateNATGWRule", d, **kwargs) + return apis.CreateNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def create_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateNIC - 创建网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Name** (str) - (Required) 名称 + - **SubnetID** (str) - (Required) Subnet ID + - **VPCID** (str) - (Required) VPC ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **IP** (str) - 指定IP + - **SGID** (str) - 安全组 ID + + **Response** + + - **Message** (str) - 返回信息描述。 + - **NICID** (str) - 创建的网卡 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNICRequestSchema().dumps(d) + + resp = self.invoke("CreateNIC", d, **kwargs) + return apis.CreateNICResponseSchema().loads(resp)
+ +
[docs] def create_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreatePhysicalIP - 创建物理 IP ,需确保平台已配置物理 IP 线路相关信息及物理网络联通性。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Name** (str) - (Required) 物理IP名称,限制字符长度30 + - **OperatorName** (str) - (Required) 物理IP线路 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述 + + **Response** + + - **Message** (str) - 返回信息描述 + - **PhysicalIPID** (str) - 返回创建的物理IP的ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreatePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("CreatePhysicalIP", d, **kwargs) + return apis.CreatePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def create_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateRS - 为负载均衡的 VServer 添加后端服务节点。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BindResourceID** (str) - (Required) 服务节点的资源 ID ,仅支持添加与 LB 相同 VPC 的虚拟机资源 + - **LBID** (str) - (Required) 负载均衡ID + - **Port** (int) - (Required) 服务节点暴露的服务端口号 + - **VSID** (str) - (Required) VServer的ID + - **Weight** (int) - (Required) 服务节点的权重 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + - **RSID** (str) - 返回创建的RSID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateRSRequestSchema().dumps(d) + + resp = self.invoke("CreateRS", d, **kwargs) + return apis.CreateRSResponseSchema().loads(resp)
+ +
[docs] def create_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSecurityGroup - 创建安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Rule** (list) - (Required) 【数组】安全组规则。输入有效的规则,调用方式举例:Rule.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1”、Rule.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1” + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SGID** (str) - 创建的安全组ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("CreateSecurityGroup", d, **kwargs) + return apis.CreateSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def create_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSecurityGroupRule - 创建安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Rules** (list) - (Required) 【数组】安全组规则。输入有效的规则,调用方式举例:Rule.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1”、Rule.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1” + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SGRuleID** (str) - 创建的安全组规则ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("CreateSecurityGroupRule", d, **kwargs) + return apis.CreateSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def create_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSnapshot - 创建硬盘快照 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **DiskID** (str) - (Required) 硬盘ID,输入“有效”状态的ID + - **Name** (str) - (Required) 快照名称,限制字符长度30 + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Remark** (str) - 描述,限制字符长度100 + + **Response** + + - **Message** (str) - 返回信息描述 + - **SnapshotID** (str) - 创建的快照ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSnapshotRequestSchema().dumps(d) + + resp = self.invoke("CreateSnapshot", d, **kwargs) + return apis.CreateSnapshotResponseSchema().loads(resp)
+ +
[docs] def create_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSubnet - 创建子网 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Network** (str) - (Required) 网段。列如:10.0.0.0/16; + - **VPCID** (str) - (Required) 所属VPCID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SubnetID** (str) - 创建Subnet的ID; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSubnetRequestSchema().dumps(d) + + resp = self.invoke("CreateSubnet", d, **kwargs) + return apis.CreateSubnetResponseSchema().loads(resp)
+ +
[docs] def create_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateUser - 管理员添加账号 + + **Request** + + - **PassWord** (str) - (Required) 账号密码。 + - **UserEmail** (str) - (Required) 账号邮箱。 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **UserID** (int) - 账户ID + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateUserRequestSchema().dumps(d) + + resp = self.invoke("CreateUser", d, **kwargs) + return apis.CreateUserResponseSchema().loads(resp)
+ +
[docs] def create_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVMInstance - 创建虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域或数据中心。枚举值:cn,表示中国; + - **BootDiskSetType** (str) - (Required) 系统盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **CPU** (int) - (Required) CPU个数,如1,2,4,8,16,32,64等。 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DataDiskSetType** (str) - (Required) 数据盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **ImageID** (str) - (Required) 镜像 ID。基础镜像 ID 或者自制镜像 ID。如:cn-image-centos-74。 + - **Memory** (int) - (Required) 内存容量,如1024,2048,4096,8192,16384,32768,65535等。 + - **Name** (str) - (Required) 虚拟机名称。可输入如:myVM。名称只能包含中英文、数字以及- _ .且1-30个字符。 + - **Password** (str) - (Required) 密码。可输入如:ucloud.cn。密码长度限6-30个字符;需要同时包含两项或以上(大写字母/小写字母/数字/特殊符号);windows不能包含用户名(administrator)中超过2个连续字符的部分。 + - **SubnetID** (str) - (Required) 虚拟机所属子网 ID。 + - **VMType** (str) - (Required) 虚拟机所在宿主机的集群类型,代表不同架构、不同型号的 CPU 或硬件特征。枚举值:Normal,表示普通;SSD,表示SSD。 + - **VPCID** (str) - (Required) 虚拟机所属 VPC ID。 + - **WANSGID** (str) - (Required) 外网安全组 ID。输入“有效”状态的安全组的ID。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Bandwidth** (str) - 创建虚拟机同时绑定外网 IP 的带宽。 + - **DataDiskSpace** (int) - 数据盘大小,单位 GB。默认值为0。范围:【0,8000】,步长10。 + - **GPU** (int) - GPU 卡核心的占用个数。枚举值:【1,2,4】。GPU与CPU、内存大小关系:CPU个数>=4*GPU个数,同时内存与CPU规格匹配. + - **IPVersion** (str) - 创建虚拟机同时绑定外网 IP 的 IP 版本。枚举值:IPv4 & IPv6,默认为 IPv4 + - **InternalIP** (str) - 指定内网IP。输入有效的指定内网 IP,不指定时系统将自动从子网分配 IP 地址。 + - **InternetIP** (str) - 手动指定虚拟机绑定外网 IP 的地址,IP地址必须包含在网段内。 + - **LANSGID** (str) - 内网安全组 ID。输入“有效”状态的安全组的ID。 + - **OperatorName** (str) - 创建虚拟机同时绑定外网 IP 的网段,可由管理员自定义。 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 返回同时创建的数据盘 ID + - **EIPID** (str) - 返回同时创建的外网IP ID + - **Message** (str) - 返回信息描述。 + - **VMID** (str) - 返回创建的虚拟机 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("CreateVMInstance", d, **kwargs) + return apis.CreateVMInstanceResponseSchema().loads(resp)
+ +
[docs] def create_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateVPC - 创建VPC + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Network** (str) - (Required) 网段。例如:10.0.0.0/16; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **VPCID** (str) - 创建的VPCID; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPCRequestSchema().dumps(d) + + resp = self.invoke("CreateVPC", d, **kwargs) + return apis.CreateVPCResponseSchema().loads(resp)
+ +
[docs] def create_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateVS - 创建负载均衡VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **HealthcheckType** (str) - (Required) 健康检查类型,枚举值,Port:端口,Path:域名。TCP和UDP协议只支持Port类型。 + - **LBID** (str) - (Required) 负载均衡ID + - **Port** (int) - (Required) VServer 的监听端口。端口范围为 1~65535 ,其中 323、9102、9103、9104、9105、60909、60910 被系统占用。 + - **Protocol** (str) - (Required) VServer 的监听协议。枚举值:支持 TCP、UDP、HTTP、HTTPS 四种协议转发。 + - **Scheduler** (str) - (Required) 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名,仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。 + - **Path** (str) - HTTP 健康检查的路径,健康检查类型为 HTTP 检查时为必填项。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,会话保持类型为Manual时为必填项,仅当 VServer 协议为 HTTP 时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值不生效,会话保持和选择的调度算法相关;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **SSLMode** (str) - SSL认证模式,HTTPS协议下必传,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份,仅当 VServer监听协议为 HTTPS时有效。 + + **Response** + + - **Action** (str) - 操作名称 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + - **VSID** (str) - 返回创建的VSID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVSRequestSchema().dumps(d) + + resp = self.invoke("CreateVS", d, **kwargs) + return apis.CreateVSResponseSchema().loads(resp)
+ +
[docs] def create_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVSPolicy - 创建七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSIDs** (list) - (Required) 【数组】内容转发规则应用的服务节点的 ID,来源于 VServer 中添加的服务节点。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。域名和路径至少需要指定一项,且域名和路径的组合在一个 VServer 中必须唯一。 + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。域名和路径至少需要指定一项,且域名和路径的组合在一个 VServer 中必须唯一。 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **PolicyID** (str) - 返回创建的内容转发规则ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("CreateVSPolicy", d, **kwargs) + return apis.CreateVSPolicyResponseSchema().loads(resp)
+ +
[docs] def delete_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCertificate - 删除证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CertificateID** (str) - (Required) 证书ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCertificateRequestSchema().dumps(d) + + resp = self.invoke("DeleteCertificate", d, **kwargs) + return apis.DeleteCertificateResponseSchema().loads(resp)
+ +
[docs] def delete_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCustomImage - 删除自制镜像 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ImageID** (str) - (Required) 自制镜像ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCustomImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteCustomImage", d, **kwargs) + return apis.DeleteCustomImageResponseSchema().loads(resp)
+ +
[docs] def delete_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteDisk - 删除硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 被删除的硬盘ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteDiskRequestSchema().dumps(d) + + resp = self.invoke("DeleteDisk", d, **kwargs) + return apis.DeleteDiskResponseSchema().loads(resp)
+ +
[docs] def delete_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteLB - 删除负载均衡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteLBRequestSchema().dumps(d) + + resp = self.invoke("DeleteLB", d, **kwargs) + return apis.DeleteLBResponseSchema().loads(resp)
+ +
[docs] def delete_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteNATGW - 删除NAT网关 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NATGWID** (str) - (Required) NAT网关ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGW", d, **kwargs) + return apis.DeleteNATGWResponseSchema().loads(resp)
+ +
[docs] def delete_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNATGWRule - 删除NAT网关白名单 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NATGWID** (str) - (Required) nat网关ID + - **RuleID** (str) - (Required) 白名单ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGWRule", d, **kwargs) + return apis.DeleteNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def delete_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteNIC - 删除网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 被删除的网卡 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNICRequestSchema().dumps(d) + + resp = self.invoke("DeleteNIC", d, **kwargs) + return apis.DeleteNICResponseSchema().loads(resp)
+ +
[docs] def delete_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeletePhysicalIP - 删除物理IP + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回状态描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeletePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("DeletePhysicalIP", d, **kwargs) + return apis.DeletePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def delete_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteRS - 移除负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteRSRequestSchema().dumps(d) + + resp = self.invoke("DeleteRS", d, **kwargs) + return apis.DeleteRSResponseSchema().loads(resp)
+ +
[docs] def delete_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSecurityGroup - 删除安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteSecurityGroup", d, **kwargs) + return apis.DeleteSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def delete_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSecurityGroupRule - 删除安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **SGID** (str) - (Required) 安全组ID + - **SGRuleID** (str) - (Required) 安全组规则ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("DeleteSecurityGroupRule", d, **kwargs) + return apis.DeleteSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def delete_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSnapshot - 删除快照,仅支持状态为正常的快照进行删除操作。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **SnapshotID** (str) - (Required) 快照ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DeleteSnapshot", d, **kwargs) + return apis.DeleteSnapshotResponseSchema().loads(resp)
+ +
[docs] def delete_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSubnet - 删除子网 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **SubnetID** (str) - (Required) SubnetID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteSubnet", d, **kwargs) + return apis.DeleteSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVMInstance - 删除虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。 枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID。输入有效的虚拟机 ID。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteVMInstance", d, **kwargs) + return apis.DeleteVMInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteVPC - 删除VPC + + **Request** + + - **Region** (str) - (Config) 地域。 + - **VPCID** (str) - (Required) ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPCRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPC", d, **kwargs) + return apis.DeleteVPCResponseSchema().loads(resp)
+ +
[docs] def delete_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteVS - 删除VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **VSID** (str) - (Required) 负载均衡VServer监听器ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVSRequestSchema().dumps(d) + + resp = self.invoke("DeleteVS", d, **kwargs) + return apis.DeleteVSResponseSchema().loads(resp)
+ +
[docs] def delete_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVSPolicy - 删除七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **PolicyID** (str) - (Required) 内容转发规则ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("DeleteVSPolicy", d, **kwargs) + return apis.DeleteVSPolicyResponseSchema().loads(resp)
+ +
[docs] def describe_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeCertificate - 查询证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CertificateIDs** (list) - 证书ID列表 + - **CertificateType** (str) - 证书类型,枚举值["ServerCrt","CACrt"]。分别表示服务器证书和CA证书。 + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **Infos** (list) - 见 **CertificateInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 证书总个数 + + **Response Model** + + **BindVSInfo** + + - **LBID** (str) - LB ID + - **LBName** (str) - LB名称 + - **Port** (int) - VS的端口 + - **Protocol** (str) - VS的协议 + - **VSID** (str) - VS ID + + **CertificateInfo** + + - **CertificateContent** (str) - 证书内容 + - **CertificateID** (str) - 证书ID + - **CertificateType** (str) - 证书类型,枚举值["ServerCrt","CACrt"] + - **CommonName** (str) - 主域名 + - **CreateTime** (int) - 创建时间(平台创建时间) + - **ExpireTime** (int) - 证书内容的过期时间 + - **Fingerprint** (str) - 证书指纹 + - **Name** (str) - 证书名 + - **Privatekey** (str) - 私钥内容 + - **Region** (str) - 地域 + - **Remark** (str) - 证书描述 + - **SubjectAlternativeNames** (list) - 备域名 + - **VSInfos** (list) - 见 **BindVSInfo** 模型定义 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeCertificateRequestSchema().dumps(d) + + resp = self.invoke("DescribeCertificate", d, **kwargs) + return apis.DescribeCertificateResponseSchema().loads(resp)
+ +
[docs] def describe_disk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeDisk - 获取硬盘信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **DiskIDs** (list) - 【数组】磁盘的 ID。输入有效的 ID。调用方式举例:DiskIDs.0=“one-id”、DiskIDs.1=“two-id”。 + - **DiskType** (str) - 硬盘用途类型,默认空返回虚拟机所有硬盘,支持值:Boot(系统盘)、Data(数据盘) + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **DiskInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回磁盘总个数。 + + **Response Model** + + **DiskInfo** + + - **AttachResourceID** (str) - 绑定资源ID + - **ChargeType** (str) - 硬盘计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间。时间戳 + - **DiskID** (str) - 硬盘ID + - **DiskStatus** (str) - 硬盘状态。Creating:创建中,BeingCloned:正在被克隆中,Unbound:已解绑,Unbounding:解绑中,Bounding:绑定中,Bound:已绑定,Upgrading:升级中,Deleting:删除中,Deleted:已删除,Releasing:销毁中,Released:已销毁;Snapshoting(快照中);Rollbacking(回滚中) + - **DiskType** (str) - 硬盘用途类型,Boot(系统盘)、Data(数据盘) + - **ExpireTime** (int) - 过期时间。时间戳 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SetType** (str) - 磁盘类型。例如:Normal,SSD + - **Size** (int) - 大小。单位GB + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeDiskRequestSchema().dumps(d) + + resp = self.invoke("DescribeDisk", d, **kwargs) + return apis.DescribeDiskResponseSchema().loads(resp)
+ +
[docs] def describe_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeEIP - 获取外网IP的信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **BindResourceID** (str) - 绑定资源ID,查询该资源绑定的所有 EIP + - **EIPIDs** (list) - 【数组】外网的 ID。输入有效的 ID。调用方式举例:EIPIDs.0=“one-id”、EIPIDs.1=“two-id” + - **IPVersion** (str) - 版本,支持IPv4、IPv6 + - **Limit** (str) - 返回数据长度,默认为20,最大100。 + - **Offset** (str) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **EIPInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **Totalcount** (int) - 返回现有外网IP总数 + + **Response Model** + + **EIPInfo** + + - **Bandwidth** (int) - 带宽大小 + - **BindResourceID** (str) - 绑定资源ID + - **BindResourceType** (str) - 绑定资源类型 + - **CanDefaultGW** (int) - 所处线路是否为默认路由,1代表所处线路是默认路由;默认路由的可以设置成出口 + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间。时间戳 + - **EIPID** (str) - ID + - **ExpireTime** (int) - 过期时间。时间戳 + - **IP** (str) - 外网IP + - **IPVersion** (str) - IP版本,支持值:IPv4\IPv6 + - **ISDefaultGW** (int) - 是否为默认出口,1代表该IP地址为默认出口 + - **Name** (str) - 名称 + - **OperatorName** (str) - 线路 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **Status** (str) - 状态。Allocating:申请中,Free:未绑定,Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Deleted:已删除,Releasing:销毁中,Released:已销毁,BandwidthChanging:带宽修改中 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeEIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeEIP", d, **kwargs) + return apis.DescribeEIPResponseSchema().loads(resp)
+ +
[docs] def describe_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeImage - 获取镜像信息,包括默认镜像和自制镜像。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **ImageIDs** (list) - 【数组】镜像的 ID。输入有效的 ID。调用方式举例:ImageIDs.0=“one-id”、ImageIDs.1=“two-id”。 + - **ImageType** (str) - 镜像类型。枚举值:Base(基础镜像,平台默认提供的镜像),Custom(自制镜像,通过虚拟机导出的镜像) 。若该值为空,默认查询所有镜像。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Action** (str) - 操作名称 + - **Infos** (list) - 见 **ImageInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + - **TotalCount** (int) - 返回镜像的总个数。 + + **Response Model** + + **ImageInfo** + + - **CreateTime** (int) - 创建时间。时间戳。 + - **ImageID** (str) - 镜像ID + - **ImageStatus** (str) - 镜像状态。枚举类型:Making(创建中),Terminating(销毁中),Used(可用),Deleting(删除中),Deleted(已删除), Uploading(导入中), Failed(导入失败) + - **ImageType** (str) - 镜像类型。枚举类型:Base(基础镜像),Custom(自制镜像)。 + - **Name** (str) - 镜像名称 + - **OSDistribution** (str) - 镜像系统发行版本。例如:Centos, Ubuntu, Windows等 + - **OSName** (str) - 系统名称。例如:CentOS 7.4 x86_64 + - **OSType** (str) - 系统类型。例如:Linux, Windows,Kylin + - **Region** (str) - 地域 + - **SetArch** (str) - 架构名称。例如:x86_64 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeImage", d, **kwargs) + return apis.DescribeImageResponseSchema().loads(resp)
+ +
[docs] def describe_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeLB - 获取负载均衡信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **LBIDs** (list) - 【数组】负载均衡的 ID。调用方式举例:LBIDs.0=“one-id”、LBIDs.1=“two-id”。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetID** (str) - 子网ID + - **VPCID** (str) - VPCID + + **Response** + + - **Infos** (list) - 见 **LBInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回负载均衡总个数。 + + **Response Model** + + **LBInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **ChargeType** (str) - 虚拟机计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间,时间戳 + - **ExpireTime** (int) - 过期时间,时间戳 + - **LBID** (str) - 负载均衡ID + - **LBStatus** (str) - 状态。Creating:创建中,Running:运行中,Deleting:删除中,Deleted:已删除 + - **LBType** (str) - 负载均衡类型,枚举值,WAN:外网负载均衡,LAN:内网负载均衡。 + - **Name** (str) - 名称 + - **PrivateIP** (str) - 负载均衡的内网 IP 地址,当LB为外网类型时,该值为空。 + - **PublicIP** (str) - 负载均衡的外网 IP 地址,当LB为内网类型时,该值为空。 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **SGID** (str) - 安全组 ID ,当LB为内网类型时,该值为空。 + - **SubnetID** (str) - 子网ID + - **VPCID** (str) - VPCID + - **VSCount** (int) - VServer的数量 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeLBRequestSchema().dumps(d) + + resp = self.invoke("DescribeLB", d, **kwargs) + return apis.DescribeLBResponseSchema().loads(resp)
+ +
[docs] def describe_metric( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeMetric - 获取资源监控信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BeginTime** (str) - (Required) 开始时间。使用unix时间戳 + - **EndTime** (str) - (Required) 结束时间。使用Unix时间戳 + - **MetricName** (list) - (Required) 监控指标。1. 获取虚拟机监控信息调用举例,MetricName.0="CPUUtilization"、MetricName.0="MemUsage"。虚拟机监控指标枚举值:BlockProcessCount,表示阻塞进程数;CPUUtilization,表示CPU使用率;DiskReadOps,表示磁盘读次数;DiskWriteOps,表示磁盘写次数;IORead,表示磁盘读吞吐;IOWrite,表示磁盘写吞吐;LoadAvg,表示平均负载1分钟;MemUsage,表示内存使用率;NetPacketIn,表示网卡入包量;NetPacketOut,表示网卡出包量;NICIn,表示网卡入带宽;NICOut,表示网卡出带宽;SpaceUsage,表示空间使用率;TCPConnectCount,表示TCP连接数;2. EIP监控指标:NetPacketIn:入包量;NetPacketOut:出包量;NICIn:入带宽;NICOut:出带宽;NICOutUsage:出带宽使用率; + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机;EIP:弹性IP + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,中国; + + **Response** + + - **Infos** (list) - 见 **MetricInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回监控信息条数 + + **Response Model** + + **MetricSet** + + - **Timestamp** (int) - 监控时间 + - **Value** (float) - 监控值 + + **MetricInfo** + + - **Infos** (list) - 见 **MetricSet** 模型定义 + - **MetricName** (str) - 监控指标。虚拟机的监控指标枚举值为:BlockProcessCount,表示阻塞进程数;CPUUtilization,表示CPU使用率;DiskReadOps,表示磁盘读次数;DiskWriteOps,表示磁盘写次数;IORead,表示磁盘读吞吐;IOWrite,表示磁盘写吞吐;LoadAvg,表示平均负载1分钟;MemUsage,表示内存使用率;NetPacketIn,表示网卡入包量;NetPacketOut,表示网卡出包量;NICIn,表示网卡入带宽;NICOut,表示网卡出带宽;SpaceUsage,表示空间使用率;TCPConnectCount,表示TCP连接数; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeMetricRequestSchema().dumps(d) + + resp = self.invoke("DescribeMetric", d, **kwargs) + return apis.DescribeMetricResponseSchema().loads(resp)
+ +
[docs] def describe_natgw( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGW - 获取NAT网关信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **NATGWIDs** (list) - 【数组】NAT网关的 ID。调用方式举例:NATGWIDs.0=“one-id”、NATGWIDs.1=“two-id”。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **NATGWInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回NAT网关总个数 + + **Response Model** + + **NATGWInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间,时间戳 + - **EIP** (str) - 虚拟IP + - **ExpireTime** (int) - 过期时间,时间戳 + - **NATGWID** (str) - NAT网关ID + - **NATGWStatus** (str) - 状态。Creating:创建中, Running:运行中, Deleting:删除中, Deleted:已删除 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SGID** (str) - NAT网关绑定的安全组ID + - **SubnetID** (str) - NAT网关实例所在的子网 ID + - **VPCID** (str) - NAT网关实例所在的 VPC ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGW", d, **kwargs) + return apis.DescribeNATGWResponseSchema().loads(resp)
+ +
[docs] def describe_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGWRule - 获取NAT网关白名单信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **NATGWID** (str) - (Required) NAT网关ID + - **NATGWType** (str) - (Required) NAT类型。枚举值:SNAT,DNAT + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **BindResourceIDs** (list) - 【数组】NAT网关白名单资源ID。调用方式举例:NATGWRules.0=“one-id”、NATGWRules.1=“two-id”。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **RuleIDs** (list) - 【数组】NAT网关白名单ID。调用方式举例:NATGWRules.0=“one-id”、NATGWRules.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **NATGWRuleInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回NAT网关白名单资源总个数。 + + **Response Model** + + **NATGWRuleInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **BindResourceType** (str) - 绑定资源的类型 + - **CreateTime** (int) - 创建时间,时间戳。 + - **IP** (str) - 白名单资源的内网IP地址 + - **NATGWID** (str) - NAT网关ID + - **NATGWType** (str) - nat网关类型 + - **Name** (str) - 添加的白名单资源名称 + - **RuleID** (str) - 白名单ID + - **RuleStatus** (str) - 状态。Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Unbound:已解绑 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGWRule", d, **kwargs) + return apis.DescribeNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def describe_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeNIC - 获取网卡信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **NICIDs** (list) - 【数组】网卡的 ID。输入有效的 ID。调用方式举例:NICIDs.0=“one-id”、NICIDs.1=“two-id”。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **NICInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回网卡总个数。 + + **Response Model** + + **NICInfo** + + - **BindResourceID** (str) - 绑定资源ID + - **CreateTime** (int) - 创建时间。时间戳 + - **IP** (str) - IP + - **MAC** (str) - mac 地址 + - **NICID** (str) - 网卡ID + - **NICStatus** (str) - 网卡状态。枚举值。Creating:创建中,Free:未绑定,Unbounding:解绑中,Bounding:绑定中,Bound:已绑定,BindSGing:绑定安全组中,UnbindSGing:解绑安全组中,UpdateSGing:更新安全组中,Deleting:删除中,Deleted:已删除,Releasing:销毁中,Released:已销毁 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SGID** (str) - 安全组ID + - **SubnetID** (str) - Subnet ID + - **VPCID** (str) - VPC ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNICRequestSchema().dumps(d) + + resp = self.invoke("DescribeNIC", d, **kwargs) + return apis.DescribeNICResponseSchema().loads(resp)
+ +
[docs] def describe_op_logs( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeOPLogs - 查询操作日志 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BeginTime** (int) - (Required) 开始时间 + - **EndTime** (int) - (Required) 结束时间 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **IsSuccess** (str) - 是否操作成功 + - **Limit** (int) - + - **Offset** (int) - + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型 + + **Response** + + - **Infos** (list) - 见 **OPLogInfo** 模型定义 + - **Message** (str) - 错误信息 + - **TotalCount** (int) - 总数 + + **Response Model** + + **OPLogInfo** + + - **CreateTime** (int) - 创建时间 + - **IsSuccess** (str) - 是否操作成功, Yes, No + - **OPLogsID** (str) - 日志ID + - **OPName** (str) - API + - **OPTime** (int) - 操作时间 + - **OpMessage** (str) - 错误信息 + - **Region** (str) - + - **ResourceID** (str) - 资源ID + - **ResourceType** (int) - 资源类型 + - **RetCode** (int) - 状态码 + - **UserEmail** (str) - 账号邮箱 + - **Zone** (str) - + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeOPLogsRequestSchema().dumps(d) + + resp = self.invoke("DescribeOPLogs", d, **kwargs) + return apis.DescribeOPLogsResponseSchema().loads(resp)
+ +
[docs] def describe_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePhysicalIP - 获取物理IP信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (str) - 返回数据长度,默认为20,最大100。 + - **Offset** (str) - 列表起始位置偏移量,默认为0。 + - **PhysicalIPIDs** (list) - 【数组】物理IP的 ID。输入有效的 ID。调用方式举例:PhysicalIPIDs.0=“one-id”、PhysicalIPIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **PhysicalIPInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回现有物理IP总数 + + **Response Model** + + **PhysicalIPInfo** + + - **BindResourceID** (str) - 绑定资源ID + - **BindResourceType** (str) - 绑定资源类型 + - **CreateTime** (int) - 创建时间。时间戳 + - **IP** (str) - 物理IP + - **Name** (str) - 名称 + - **OperatorName** (str) - 线路 + - **PhysicalIPID** (str) - 物理IP的ID + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **Status** (str) - 状态。Allocating:申请中,Free:未绑定,Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Deleted:已删除,Releasing:销毁中,Released:已销毁 + - **UpdateTime** (int) - 过期时间。时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("DescribePhysicalIP", d, **kwargs) + return apis.DescribePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def describe_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeRS - 获取负载均衡服务的服务节点信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **RSIDs** (list) - 【数组】RServer的 ID。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + - **VSID** (str) - VServer的ID + + **Response** + + - **Infos** (list) - 见 **RSInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回该负载均衡下VServer的总个数。 + + **Response Model** + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRSRequestSchema().dumps(d) + + resp = self.invoke("DescribeRS", d, **kwargs) + return apis.DescribeRSResponseSchema().loads(resp)
+ +
[docs] def describe_recycled_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeRecycledResource - 查询回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **ResourceIDs** (list) - 【数组】资源ID,输入“有效”的ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **RecycledResourceInfo** 模型定义 + - **TotalCount** (int) - 返回回收站资源的总个数 + + **Response Model** + + **RecycledResourceInfo** + + - **CreateTime** (int) - 创建时间 + - **DeleteTime** (int) - 删除时间 + - **Description** (str) - 描述 + - **ExpireTime** (int) - 过期时间 + - **IsAutoTerminated** (bool) - 是否自动销户 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型:VM:虚拟机,Disk:硬盘,EIP:外网IP,PIP:物理IP,MySQL:数据库,Redis:缓存 + - **Status** (str) - 资源状态 + - **WillTerminateTime** (int) - 销毁时间 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRecycledResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeRecycledResource", d, **kwargs) + return apis.DescribeRecycledResourceResponseSchema().loads(resp)
+ +
[docs] def describe_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSecurityGroup - 查询安全组信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SGIDs** (list) - 【数组】安全组的 ID。输入有效的 ID。调用方式举例:SGIDs.0=“one-id”、SGIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **SGInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 安全组的总数 + + **Response Model** + + **SGRuleInfo** + + - **DstPort** (str) - 端口号 + - **IsIn** (str) - 方向。1:入,0:出 + - **Priority** (str) - 优先级。HIGH:高,MEDIUM:中,LOW:低 + - **ProtocolType** (str) - 协议 + - **RuleAction** (str) - 动作。ACCEPT:接受,DROP:拒绝 + - **RuleID** (str) - 规则ID + - **SrcIP** (str) - IP或者掩码/段形式。10.0.0.2,10.0.10.10/16 + + **SGInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **ResourceCount** (int) - 资源绑定数量 + - **Rule** (list) - 见 **SGRuleInfo** 模型定义 + - **RuleCount** (int) - 规则数量 + - **SGID** (str) - 安全组ID + - **Status** (str) - 状态。Creating:创建中,Updating:更新中,Available:有效,Deleted:已删除,Terminating:销毁中,Terminated:已销毁 + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeSecurityGroup", d, **kwargs) + return apis.DescribeSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def describe_security_group_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSecurityGroupResource - 查询安全组绑定的资源信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **SGResourceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回资源总个数。 + + **Response Model** + + **SGResourceInfo** + + - **Name** (str) - 资源名称 + - **Region** (str) - 地域 + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSecurityGroupResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeSecurityGroupResource", d, **kwargs) + return apis.DescribeSecurityGroupResourceResponseSchema().loads(resp)
+ +
[docs] def describe_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSnapshot - 查询硬盘快照信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **DiskID** (str) - 硬盘ID,输入“有效”状态的ID + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SnapshotIDs** (list) - 【数组】快照ID,输入“有效”的ID。调用方式举例:SnapshotIDs.0=“one-id”、SnapshotIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **SnapshotInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回快照总个数 + + **Response Model** + + **SnapshotInfo** + + - **CreateTime** (int) - 快照创建时间 + - **DiskID** (str) - 快照对应的硬盘 ID + - **DiskType** (str) - 硬盘类型。枚举值:Boot,表示系统盘;Data,表示数据盘; + - **Name** (str) - 快照名称 + - **Region** (str) - 地域。枚举值: cn,表示中国; + - **Remark** (str) - 描述 + - **SnapshotID** (str) - 快照ID + - **SnapshotStatus** (str) - 快照状态。枚举值:Createing,表示制作中;Normal,表示正常;RollBacking,表示回滚中;Deleting,表示删除中;Deleted,表示已删除; + - **Zone** (str) - 可用区。枚举值:zone-01,表示中国; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DescribeSnapshot", d, **kwargs) + return apis.DescribeSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_storage_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeStorageType - 查询存储类型 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Infos** (list) - 见 **StorageTypeInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 存储类型的总数 + + **Response Model** + + **StorageTypeInfo** + + - **Region** (str) - 地域 + - **SetArch** (str) - 架构 + - **StorageType** (str) - 存储类型 + - **StorageTypeAlias** (str) - 存储类型别名 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeStorageTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeStorageType", d, **kwargs) + return apis.DescribeStorageTypeResponseSchema().loads(resp)
+ +
[docs] def describe_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSubnet - 查询子网信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetIDs** (list) - 【数组】子网 ID。调用方式举例:SubnetIDs.0=“one-id”、SubnetIDs.1=“two-id” + - **VPCID** (str) - VPCID + + **Response** + + - **Infos** (list) - 见 **SubnetInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 子网的总数 + + **Response Model** + + **SubnetInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Deleting:删除中,Deleted:已删除 + - **SubnetID** (str) - ID + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnet", d, **kwargs) + return apis.DescribeSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_user( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUser - 查询租户信息 + + **Request** + + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **UserIDs** (list) - 【数组】租户的 ID。输入有效的 ID。调用方式举例:UserIDs.0=123”、UserIDs.1=456 + + **Response** + + - **Infos** (list) - 见 **UserInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回现有租户总数 + + **Response Model** + + **UserInfo** + + - **Amount** (float) - 账户余额 + - **CreateTime** (int) - 账户创建时间。时间戳 + - **Email** (str) - 租户名称 + - **PrivateKey** (str) - 私钥 + - **PublicKey** (str) - 公钥 + - **Status** (str) - 用户状态。USER_STATUS_AVAILABLE:正常,USER_STATUS_FREEZE:冻结 + - **UpdateTime** (int) - 更新时间。时间戳 + - **UserID** (int) - 租户ID. + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeUserRequestSchema().dumps(d) + + resp = self.invoke("DescribeUser", d, **kwargs) + return apis.DescribeUserResponseSchema().loads(resp)
+ +
[docs] def describe_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVMInstance - 查询虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域或数据中心。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetID** (str) - 子网 ID。输入“有效”状态的子网 ID。 + - **VMIDs** (list) - 【数组】虚拟机的 ID。输入有效的 ID。调用方式举例:PrivateIp.0=“one-id”、PrivateIp.1=“two-id”。 + - **VPCID** (str) - VPC ID。输入“有效”状态的VPC ID。 + + **Response** + + - **Infos** (list) - 见 **VMInstanceInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回虚拟机总个数 + + **Response Model** + + **VMDiskInfo** + + - **DiskID** (str) - 磁盘 ID + - **Drive** (str) - 磁盘盘符 + - **IsElastic** (str) - 是否是弹性磁盘。枚举值为:Y,表示是;N,表示否; + - **Name** (str) - 磁盘名称 + - **Size** (int) - 磁盘大小,单位 GB + - **Type** (str) - 磁盘类型。枚举值:Boot,表示系统盘;Data,表示数据盘; + + **VMIPInfo** + + - **IP** (str) - IP 值 + - **IPVersion** (str) - IP版本,支持值:IPv4\IPv6 + - **InterfaceID** (str) - 网卡 ID,IP 地址绑定的网卡 ID + - **IsElastic** (str) - 是否是弹性网卡。枚举值:Y,表示是;N,表示否; + - **MAC** (str) - MAC 地址值 + - **SGID** (str) - 安全组 ID + - **SGName** (str) - 安全组名称 + - **SubnetID** (str) - 子网 ID,IP 为外网 IP 时为空; + - **SubnetName** (str) - 子网名称,IP 为外网 IP 时为空; + - **Type** (str) - IP 类型。枚举值:Private,表示内网;Public,表示外网。 + - **VPCID** (str) - VPC ID,IP 为外网 IP 时为空; + - **VPCName** (str) - VPC 名称,IP 为外网 IP 时为空; + + **VMInstanceInfo** + + - **CPU** (int) - CPU 个数 + - **ChargeType** (str) - 虚拟机计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 虚拟机创建时间 + - **DiskInfos** (list) - 见 **VMDiskInfo** 模型定义 + - **ExpireTime** (int) - 虚拟机过期时间 + - **IPInfos** (list) - 见 **VMIPInfo** 模型定义 + - **ImageID** (str) - 镜像 ID + - **Memory** (int) - 内存大小,单位 M + - **Name** (str) - 虚拟机名称 + - **OSName** (str) - 操作系统名称 + - **OSType** (str) - 操作系统类型 + - **Region** (str) - Region + - **Remark** (str) - 备注 + - **State** (str) - 虚拟机状态。枚举值:Initializing,表示初始化;Starting,表示启动中;Restarting,表示重启中;Running,表示运行;Stopping,表示关机中;Stopped,表示关机;Deleted,表示已删除;Resizing,表示修改配置中;Terminating,表示销毁中;Terminated,表示已销毁;Migrating,表示迁移中;WaitReinstall,表示等待重装系统;Reinstalling,表示重装中;Poweroffing,表示断电中;ChangeSGing,表示修改防火墙中; + - **SubnetID** (str) - 子网 ID + - **SubnetName** (str) - 子网 名称 + - **VMID** (str) - 虚拟机 ID + - **VMType** (str) - 虚拟机所在宿主机的集群类型 ID + - **VMTypeAlias** (str) - 虚拟机所在宿主机的集群类型名称 + - **VPCID** (str) - VPC ID + - **VPCName** (str) - VPC 名称 + - **Zone** (str) - Zone + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeVMInstance", d, **kwargs) + return apis.DescribeVMInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_vm_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVMType - 查询主机机型 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Infos** (list) - 见 **VMTypeInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 主机机型的总数 + + **Response Model** + + **VMTypeInfo** + + - **Region** (str) - 地域 + - **SetArch** (str) - 架构 + - **VMType** (str) - 机型 + - **VMTypeAlias** (str) - 机型别名 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVMTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeVMType", d, **kwargs) + return apis.DescribeVMTypeResponseSchema().loads(resp)
+ +
[docs] def describe_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVPC - 查询VPC信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **VPCIDs** (list) - 【数组】VPC的 ID。调用方式举例:VPCIDs.0=“one-id”、VPCIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **VPCInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - VPC的总数 + + **Response Model** + + **SubnetInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Deleting:删除中,Deleted:已删除 + - **SubnetID** (str) - ID + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + **VPCInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段,比如10.0.0.0/16 + - **Region** (str) - 地域。 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Terminating:销毁中,Terminated:已销毁 + - **SubnetCount** (int) - 该VPC下拥有的子网数目 + - **SubnetInfos** (list) - 见 **SubnetInfo** 模型定义 + - **UpdateTime** (int) - 修改时间,时间戳 + - **VPCID** (str) - VPC的ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPCRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPC", d, **kwargs) + return apis.DescribeVPCResponseSchema().loads(resp)
+ +
[docs] def describe_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVS - 获取负载均衡 VServer 信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **VSIDs** (list) - 【数组】VServer的 ID。调用方式举例:VSIDs.0=“one-id”、VSIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **VSInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回当前负载均衡 VServer 总个数。 + + **Response Model** + + **VSPolicyInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **LBID** (str) - 负载均衡ID + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **PolicyID** (str) - 内容转发规则ID + - **PolicyStatus** (str) - 状态,枚举值,Available:有效,Deleted:已删除 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServerID + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + **VSInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名。仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **HealthcheckType** (str) - 负载均衡的健康检查类型。枚举值:Port:端口检查;Path: HTTP检查 。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。当 VServer 协议为 UDP 时,该值为空。 + - **LBID** (str) - VServer 所属的负载均衡 ID + - **Path** (str) - HTTP 健康检查的路径。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,仅当 VServer 协议为 HTTP 且会话保持为手动时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值为空;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **Port** (int) - 端口 + - **Protocol** (str) - 协议 + - **RSHealthStatus** (str) - 健康检查状态,枚举值,Empty:全部异常,Parts:部分异常,All:正常 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **SSLMode** (str) - SSL认证模式,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **Scheduler** (str) - 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份。仅当 VServer监听协议为 HTTPS 时有效。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServer的ID + - **VSPolicyInfos** (list) - 见 **VSPolicyInfo** 模型定义 + - **VSStatus** (str) - VServer 的资源状态。枚举值,Available:可用,Updating:更新中,Deleted:已删除 。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVSRequestSchema().dumps(d) + + resp = self.invoke("DescribeVS", d, **kwargs) + return apis.DescribeVSResponseSchema().loads(resp)
+ +
[docs] def describe_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVSPolicy - 获取七层负载均衡内容转发规则信息,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **PolicyIDs** (list) - 【数组】七层负载均衡内容转发规则的 ID。调用方式举例:PolicyIDs.0=“one-id”、PolicyIDs.1=“two-id” + - **VSID** (str) - VServerID + + **Response** + + - **Infos** (list) - 见 **VSPolicyInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回内容转发规则的总个数。 + + **Response Model** + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + **VSPolicyInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **LBID** (str) - 负载均衡ID + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **PolicyID** (str) - 内容转发规则ID + - **PolicyStatus** (str) - 状态,枚举值,Available:有效,Deleted:已删除 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServerID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("DescribeVSPolicy", d, **kwargs) + return apis.DescribeVSPolicyResponseSchema().loads(resp)
+ +
[docs] def detach_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DetachDisk - 解绑硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DetachDiskRequestSchema().dumps(d) + + resp = self.invoke("DetachDisk", d, **kwargs) + return apis.DetachDiskResponseSchema().loads(resp)
+ +
[docs] def detach_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DetachNIC - 解绑UClouStack网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 网卡ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DetachNICRequestSchema().dumps(d) + + resp = self.invoke("DetachNIC", d, **kwargs) + return apis.DetachNICResponseSchema().loads(resp)
+ +
[docs] def disable_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DisableRS - 禁用负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DisableRSRequestSchema().dumps(d) + + resp = self.invoke("DisableRS", d, **kwargs) + return apis.DisableRSResponseSchema().loads(resp)
+ +
[docs] def enable_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """EnableRS - 启用负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.EnableRSRequestSchema().dumps(d) + + resp = self.invoke("EnableRS", d, **kwargs) + return apis.EnableRSResponseSchema().loads(resp)
+ +
[docs] def get_disk_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetDiskPrice - 获取硬盘价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DiskSpace** (int) - (Required) 磁盘大小 + - **SetType** (str) - (Required) 磁盘类型 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetDiskPriceRequestSchema().dumps(d) + + resp = self.invoke("GetDiskPrice", d, **kwargs) + return apis.GetDiskPriceResponseSchema().loads(resp)
+ +
[docs] def get_eip_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetEIPPrice - 获取外网IP价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Bandwidth** (int) - (Required) 带宽,默认值1,默认范围1~100 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **OpertatorName** (str) - (Required) 线路。目前支持Bgp + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetEIPPriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPrice", d, **kwargs) + return apis.GetEIPPriceResponseSchema().loads(resp)
+ +
[docs] def get_vm_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetVMInstancePrice - 获取虚拟机价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BootDiskSetType** (str) - (Required) 系统盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **CPU** (int) - (Required) CPU 个数,目前只能输入数据库配置指定规格参数,如:1核2048M、2核4096M、4核8192M、8核16384M、16核32768M。 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DataDiskSetType** (str) - (Required) 数据盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **DataDiskSpace** (int) - (Required) 数据盘大小,单位 GB。默认值为0。范围:【0,8000】,步长10。 + - **ImageID** (str) - (Required) 镜像 ID。基础镜像 ID 或者自制镜像 ID。如:cn-image-centos-74。 + - **Memory** (int) - (Required) 内存大小,单位 M。目前只能输入数据库配置指定规格参数,如:1核2048M、2核4096M、4核8192M、8核16384M、16核32768M。 + - **OSType** (str) - (Required) 系统类型。 + - **VMType** (str) - (Required) 机型。枚举值:Normal,表示普通;SSD,表示SSD; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **GPU** (int) - GPU 卡核心的占用个数。枚举值:【1,2,4】。GPU与CPU、内存大小关系:CPU个数>=4*GPU个数,同时内存与CPU规格匹配. + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetVMInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("GetVMInstancePrice", d, **kwargs) + return apis.GetVMInstancePriceResponseSchema().loads(resp)
+ +
[docs] def modify_eip_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyEIPBandwidth - 调整外网IP带宽 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Bandwidth** (int) - (Required) 调整后的带宽 + - **EIPID** (str) - (Required) 外网IP的ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyEIPBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPBandwidth", d, **kwargs) + return apis.ModifyEIPBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_name_and_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyNameAndRemark - 修改资源名称和备注 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **ResourceID** (str) - (Required) 资源ID; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyNameAndRemarkRequestSchema().dumps(d) + + resp = self.invoke("ModifyNameAndRemark", d, **kwargs) + return apis.ModifyNameAndRemarkResponseSchema().loads(resp)
+ +
[docs] def poweroff_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffVMInstance - 断电虚拟机,可能导致丢失数据甚至损坏操作系统,仅适用于虚拟机死机及级端测试场景。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.PoweroffVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("PoweroffVMInstance", d, **kwargs) + return apis.PoweroffVMInstanceResponseSchema().loads(resp)
+ +
[docs] def recharge(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """Recharge - 管理员给租户充值 + + **Request** + + - **Amount** (int) - (Required) 充值金额。最少100,最大500000 + - **FromType** (str) - (Required) 充值来源。INPOUR_FROM_ALIPAY:支付宝,INPOUR_FROM_OFFLINE:银行转账,INPOUR_FROM_SINPAY:新浪支付,INPOUR_FROM_WECHAT_PAY:微信转账。 + - **SerialNo** (str) - (Required) 充值单号。充值方式为“账户余额”时为必要参数。 + - **UserID** (int) - (Required) 租户的账户ID。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = {} + req and d.update(req) + d = apis.RechargeRequestSchema().dumps(d) + + resp = self.invoke("Recharge", d, **kwargs) + return apis.RechargeResponseSchema().loads(resp)
+ +
[docs] def reinstall_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallVMInstance - 重装系统,关机的虚拟机才可以重装系统 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ImageID** (str) - (Required) 镜像ID + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReinstallVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("ReinstallVMInstance", d, **kwargs) + return apis.ReinstallVMInstanceResponseSchema().loads(resp)
+ +
[docs] def release_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ReleaseEIP - 删除外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国 + + **Response** + + - **Message** (str) - 返回状态描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseEIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseEIP", d, **kwargs) + return apis.ReleaseEIPResponseSchema().loads(resp)
+ +
[docs] def renew_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RenewResource - 续费回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **ResourceID** (str) - (Required) 待续续的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Quantity** (int) - 购买时长,默认为 1。按小时(Dynamic)付费的资源无需此参数,按月付费的资源传 0 时,代表购买至月末。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RenewResourceRequestSchema().dumps(d) + + resp = self.invoke("RenewResource", d, **kwargs) + return apis.RenewResourceResponseSchema().loads(resp)
+ +
[docs] def reset_vm_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetVMInstancePassword - 重置虚拟机密码,主机必须开机才可以重置密码 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Password** (str) - (Required) 密码 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetVMInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ResetVMInstancePassword", d, **kwargs) + return apis.ResetVMInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def resize_vm_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeVMConfig - 修改虚拟机配置 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **CPU** (int) - (Required) CPU 个数,如 1、2、4、8、16、32、64。 + - **Memory** (int) - (Required) 内存容量,如 2048、4096、8192、16384、32768、65536、131072。 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeVMConfigRequestSchema().dumps(d) + + resp = self.invoke("ResizeVMConfig", d, **kwargs) + return apis.ResizeVMConfigResponseSchema().loads(resp)
+ +
[docs] def restart_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartVMInstance - 重启虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机ID; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartVMInstance", d, **kwargs) + return apis.RestartVMInstanceResponseSchema().loads(resp)
+ +
[docs] def rollback_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RollbackResource - 恢复回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **ResourceID** (str) - (Required) 待恢复的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RollbackResourceRequestSchema().dumps(d) + + resp = self.invoke("RollbackResource", d, **kwargs) + return apis.RollbackResourceResponseSchema().loads(resp)
+ +
[docs] def rollback_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RollbackSnapshot - 将某个快照内的数据回滚到原云硬盘,仅支持正常状态的快照进行回滚操作,回滚时硬盘必须处于未绑定或其挂载的主机为关机状态。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **DiskID** (str) - (Required) 对应的云硬盘 ID; + - **SnapshotID** (str) - (Required) 快照ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RollbackSnapshotRequestSchema().dumps(d) + + resp = self.invoke("RollbackSnapshot", d, **kwargs) + return apis.RollbackSnapshotResponseSchema().loads(resp)
+ +
[docs] def start_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartVMInstance - 开启虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartVMInstance", d, **kwargs) + return apis.StartVMInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopVMInstance - 关闭虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + - **VMID** (str) - 虚拟机 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopVMInstance", d, **kwargs) + return apis.StopVMInstanceResponseSchema().loads(resp)
+ +
[docs] def terminate_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateResource - 销毁资源 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **ResourceID** (str) - (Required) 资源id + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminateResourceRequestSchema().dumps(d) + + resp = self.invoke("TerminateResource", d, **kwargs) + return apis.TerminateResourceResponseSchema().loads(resp)
+ +
[docs] def un_bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UnBindEIP - 解绑外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnBindEIPRequestSchema().dumps(d) + + resp = self.invoke("UnBindEIP", d, **kwargs) + return apis.UnBindEIPResponseSchema().loads(resp)
+ +
[docs] def un_bind_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnBindSecurityGroup - 解绑安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ResourceID** (str) - (Required) 解绑的资源ID。调用方式举例:ResourceID=“one-id”。 + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnBindSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("UnBindSecurityGroup", d, **kwargs) + return apis.UnBindSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def unbind_alarm_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnbindAlarmTemplate - 解绑告警模板 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **ResourceIDs** (list) - (Required) 【数组】资源的 ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关;EIP:弹性网卡 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnbindAlarmTemplateRequestSchema().dumps(d) + + resp = self.invoke("UnbindAlarmTemplate", d, **kwargs) + return apis.UnbindAlarmTemplateResponseSchema().loads(resp)
+ +
[docs] def unbind_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnbindPhysicalIP - 解绑物理IP + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnbindPhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("UnbindPhysicalIP", d, **kwargs) + return apis.UnbindPhysicalIPResponseSchema().loads(resp)
+ +
[docs] def update_alarm_template_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateAlarmTemplateRule - 更新告警模板规则 + + **Request** + + - **Region** (str) - (Config) 地域 + - **AlarmStrategy** (str) - (Required) 瘦脸策略 + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **AlarmTemplateRuleID** (str) - (Required) 告警规则ID + - **Compare** (str) - (Required) 对比方式 + - **ContactGroupID** (str) - (Required) 通知组ID + - **MetricName** (str) - (Required) 监控指标名称 + - **ResourceType** (str) - (Required) 资源类型 + - **Threshold** (str) - (Required) 告警阈值 + - **TriggerCount** (str) - (Required) 连续触发次数 + - **Zone** (str) - (Required) 可用区 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateAlarmTemplateRuleRequestSchema().dumps(d) + + resp = self.invoke("UpdateAlarmTemplateRule", d, **kwargs) + return apis.UpdateAlarmTemplateRuleResponseSchema().loads(resp)
+ +
[docs] def update_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpdateRS - 修改负载均衡的服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) RServer所属的VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Port** (int) - 端口号 + - **Weight** (int) - 权重 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateRSRequestSchema().dumps(d) + + resp = self.invoke("UpdateRS", d, **kwargs) + return apis.UpdateRSResponseSchema().loads(resp)
+ +
[docs] def update_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateSecurityGroupRule - 修改安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Rules** (list) - (Required) 【数组】规则。输入有效的 规则。调用方式举例:Rules.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1|sg_rule-wefvg34f”、Rules.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1|sg_rule-wefvggf” + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("UpdateSecurityGroupRule", d, **kwargs) + return apis.UpdateSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def update_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpdateVS - 修改负载均衡VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **VSID** (str) - (Required) 需要更新的VSID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名,仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **HealthcheckType** (str) - 负载均衡的健康检查类型。枚举值:Port:端口检查;Path: HTTP检查 。仅当 VServer 协议类型为 HTTP 时,才可进行 HTTP 检查。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。当 VServer 协议为 UDP 时,该值为空。 + - **Path** (str) - HTTP 健康检查的路径,健康检查类型为 HTTP 检查时为必填项。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,会话保持类型为Manual时为必填项,仅当 VServer 协议为 HTTP 时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值不生效,会话保持和选择的调度算法相关;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **Port** (int) - VServer 监听端口 + - **SSLMode** (str) - SSL认证模式,HTTPS协议下必传,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **Scheduler** (str) - 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份,仅当 VServer监听协议为 HTTPS 时有效。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVSRequestSchema().dumps(d) + + resp = self.invoke("UpdateVS", d, **kwargs) + return apis.UpdateVSResponseSchema().loads(resp)
+ +
[docs] def update_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVSPolicy - 更新七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **PolicyID** (str) - (Required) 内容转发规则ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **RSIDs** (list) - 【数组】RServer的 ID。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("UpdateVSPolicy", d, **kwargs) + return apis.UpdateVSPolicyResponseSchema().loads(resp)
+ +
[docs] def upgrade_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpgradeDisk - 扩容硬盘,为保证数据完整性,容量扩容前建议暂停对当前硬盘的所有文件系统读写操作,并进入操作系统进行 `umount ` 或`脱机` 操作。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **DiskSpace** (int) - (Required) 硬盘升级后的容量, 不能小于原硬盘容量,单位为 GB 。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Action** (str) - 操作名称 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeDiskRequestSchema().dumps(d) + + resp = self.invoke("UpgradeDisk", d, **kwargs) + return apis.UpgradeDiskResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/udb/client.html b/_modules/ucloud/services/udb/client.html new file mode 100644 index 00000000..a59e7361 --- /dev/null +++ b/_modules/ucloud/services/udb/client.html @@ -0,0 +1,2154 @@ + + + + + + + + ucloud.services.udb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udb.schemas import apis
+
+
+
[docs]class UDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def backup_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BackupUDBInstance - 备份UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份名称 + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **BackupMethod** (str) - 使用的备份方式。(快照备份即物理备份。注意只有SSD版本的mysql实例支持设置为snapshot) + - **Blacklist** (str) - 备份黑名单列表,以 ; 分隔。注意:只有逻辑备份下备份黑名单才生效,快照备份备份黑名单下无效 + - **ForceBackup** (bool) - true表示逻辑备份时是使用 --force 参数,false表示不使用 --force 参数。物理备份此参数无效。 + - **UseBlacklist** (bool) - 是否使用黑名单备份,默认false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BackupUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstance", d, **kwargs) + return apis.BackupUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_binlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BackupUDBInstanceBinlog - 备份UDB指定时间段的binlog列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupFile** (str) - (Required) 需要备份文件,可通过DescribeUDBInstanceBinlog获得 如果要传入多个文件名,以空格键分割,用单引号包含. + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **BackupName** (str) - DB备份文件名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BackupUDBInstanceBinlogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceBinlog", d, **kwargs) + return apis.BackupUDBInstanceBinlogResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_error_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BackupUDBInstanceErrorLog - 备份UDB指定时间段的errorlog + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份名称 + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BackupUDBInstanceErrorLogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceErrorLog", d, **kwargs) + return apis.BackupUDBInstanceErrorLogResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_slow_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BackupUDBInstanceSlowLog - 备份UDB指定时间段的slowlog分析结果 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份文件名称 + - **BeginTime** (int) - (Required) 过滤条件:起始时间(时间戳) + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **EndTime** (int) - (Required) 过滤条件:结束时间(时间戳) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BackupUDBInstanceSlowLogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceSlowLog", d, **kwargs) + return apis.BackupUDBInstanceSlowLogResponseSchema().loads(resp)
+ +
[docs] def change_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ChangeUDBParamGroup - 修改配置文件 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例Id + - **GroupId** (str) - (Required) 参数组Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ChangeUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("ChangeUDBParamGroup", d, **kwargs) + return apis.ChangeUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def check_recover_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckRecoverUDBInstance - 核查db是否可以使用回档功能 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SrcDBId** (str) - (Required) 源实例的Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **LastestTime** (int) - 核查成功返回值为可以回档到的最近时刻,核查失败不返回 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckRecoverUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("CheckRecoverUDBInstance", d, **kwargs) + return apis.CheckRecoverUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def check_udb_instance_to_ha_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUDBInstanceToHAAllowance - 核查db是否可以升级为高可用 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + + **Response** + + - **Allowance** (str) - Yes ,No ,Yes即可以升级,No为不可以升级 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckUDBInstanceToHAAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckUDBInstanceToHAAllowance", d, **kwargs) + return apis.CheckUDBInstanceToHAAllowanceResponseSchema().loads(resp)
+ +
[docs] def clear_udb_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ClearUDBLog - 清除UDB实例的log + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取 + - **LogType** (int) - (Required) 日志类型,10-error(暂不支持)、20-slow(暂不支持 )、30-binlog + - **BeforeTime** (int) - 删除时间点(至少前一天)之前log,采用时间戳(秒),默认当 前时间点前一天 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ClearUDBLogRequestSchema().dumps(d) + + resp = self.invoke("ClearUDBLog", d, **kwargs) + return apis.ClearUDBLogResponseSchema().loads(resp)
+ +
[docs] def create_mongo_db_replica_set( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateMongoDBReplicaSet - 一键创建DB副本集 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminPassword** (str) - (Required) 管理员密码 + - **DBTypeId** (str) - (Required) DB类型id对应的字符串形式(例如:mongodb-2.6)注意:当前仅支持mongodb + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 3000G + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M + - **Name** (str) - (Required) PrimaryDB实例名称,至少6位 + - **ParamGroupId** (int) - (Required) DB实例使用的配置参数组id + - **Port** (int) - (Required) 端口号 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupCount** (int) - 备份策略,每周备份数量,默认7次 + - **BackupDuration** (int) - 备份策略,备份时间间隔,单位小时计,默认24小时 + - **BackupTime** (int) - 备份策略,备份开始时间,单位小时计,默认1点 + - **CPU** (int) - cpu核数 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Month + - **ClusterId** (str) - 所属分片集群的ID + - **CouponId** (list) - CouponId.0 代表第一个代金券id,对于传入多个代金券id,后面为 CouponId.1, CouponId.2 以此类推 + - **InstanceType** (str) - UDB数据库机型 + - **Quantity** (int) - 购买时长(N个月),默认值1个月。如果为0,代表购买到月底。 + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **SubnetId** (str) - 子网ID + - **UseSSD** (bool) - 是否使用SSD,默认为true + - **VPCId** (str) - VPC的ID + + **Response** + + - **Action** (str) - 操作名称 + - **DBIds** (list) - 返回所有副本集成员的Id + - **RetCode** (int) - 返回码 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateMongoDBReplicaSetRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateMongoDBReplicaSet", d, **kwargs) + return apis.CreateMongoDBReplicaSetResponseSchema().loads(resp)
+ +
[docs] def create_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBInstance - 创建UDB实例(包括创建mysql master节点、mongodb primary/configsvr节点和从备份恢复实例) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminPassword** (str) - (Required) 管理员密码 + - **DBTypeId** (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6,14:postgresql-10.4 + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 32T + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M/128000M/192000M/256000M/320000M + - **Name** (str) - (Required) 实例名称,至少6位 + - **ParamGroupId** (int) - (Required) DB实例使用的配置参数组id + - **Port** (int) - (Required) 端口号,mysql默认3306,mongodb默认27017,postgresql默认5432 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupCount** (int) - 备份策略,每周备份数量,默认7次 + - **BackupDuration** (int) - 备份策略,备份时间间隔,单位小时计,默认24小时 + - **BackupId** (int) - 备份id,如果指定,则表明从备份恢复实例 + - **BackupTime** (int) - 备份策略,备份开始时间,单位小时计,默认1点 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CPU** (int) - cpu核数 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Month + - **ClusterRole** (str) - 当DB类型(DBTypeId)为mongodb时,需要指定mongo的角色,可选值为configsrv (配置节点),shardsrv (数据节点) + - **CouponId** (str) - 使用的代金券id + - **DisableSemisync** (bool) - 是否开启异步高可用,默认不填,可置为true + - **EnableIpV6** (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true + - **HAArch** (str) - 高可用架构:1) haproxy(默认): 当前仅支持mysql。2) sentinel: 基于vip和哨兵节点的架构,当前支持mysql和pg。 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 默认是"Normal" + - **Quantity** (int) - 购买时长,默认值1 + - **SSDType** (str) - SSD类型,可选值为"SATA"、“NVMe”,如果UseSSD为true ,则必选 + - **SubnetId** (str) - 子网ID + - **Tag** (str) - 实例所在的业务组名称 + - **UDBCId** (str) - 专区ID信息(如果这个参数存在这说明是在专区中创建DB) + - **UseSSD** (bool) - 是否使用SSD,默认为true。目前主要可用区、海外机房、新机房只提供SSD资源,非SSD资源不再提供。 + - **VPCId** (str) - VPC的ID + + **Response** + + - **DBId** (str) - BD实例id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBInstance", d, **kwargs) + return apis.CreateUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_instance_by_recovery( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBInstanceByRecovery - 创建db,将新创建的db恢复到指定db某个指定时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **RecoveryTime** (int) - (Required) 恢复到某个时间点的时间戳(UTC时间格式,默认单位秒) + - **SrcDBId** (str) - (Required) 源实例的Id + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **CouponId** (str) - 使用的代金券id + - **EnableIpV6** (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true + - **Quantity** (int) - 购买时长,默认值1 + - **SubnetId** (str) - 子网ID + - **UDBCId** (str) - 专区的Id + - **UseSSD** (bool) - 指定是否是否使用SSD,默认使用主库的配置 + - **VPCId** (str) - VPC的ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - db实例id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBInstanceByRecoveryRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBInstanceByRecovery", d, **kwargs) + return apis.CreateUDBInstanceByRecoveryResponseSchema().loads(resp)
+ +
[docs] def create_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBParamGroup - 从已有配置文件创建新配置文件 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBTypeId** (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6 + - **Description** (str) - (Required) 参数组描述 + - **GroupName** (str) - (Required) 新配置参数组名称 + - **SrcGroupId** (int) - (Required) 源参数组id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - 是否是地域级别的配置文件,默认是false + + **Response** + + - **GroupId** (int) - 新配置参数组id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBParamGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBParamGroup", d, **kwargs) + return apis.CreateUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def create_udb_replication_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBReplicationInstance - 创建MongoDB的副本节点(包括仲裁) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **SrcId** (str) - (Required) primary节点的DBId,该值可以通过DescribeUDBInstance获取 + - **CouponId** (str) - 使用的代金券id + - **IsArbiter** (bool) - 是否是仲裁节点,默认false,仲裁节点按最小机型创建 + - **Port** (int) - 端口号,默认27017,取值范围3306至65535。 + - **UseSSD** (bool) - 是否使用SSD,默认 为 true + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - 创建从节点的DBId + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBReplicationInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBReplicationInstance", d, **kwargs) + return apis.CreateUDBReplicationInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_route_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBRouteInstance - 创建mongos实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ConfigsvrId** (list) - (Required) 配置服务器的dbid,允许一个或者三个。 + - **DBTypeId** (str) - (Required) DB类型id,mongodb按版本细分有1:mongodb-2.4,2:mongodb-2.6,3:mongodb-3.0,4:mongodb-3.2 + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 600M/1500M/3000M /6000M/15000M/30000M + - **Name** (str) - (Required) 实例名称,至少6位 + - **ParamGroupId** (int) - (Required) DB实例使用的配置参数组id + - **Port** (int) - (Required) 端口号,mongodb默认27017 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Month + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长,默认值1 + - **UseSSD** (bool) - 是否使用SSD,默认为ture + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - db实例id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBRouteInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBRouteInstance", d, **kwargs) + return apis.CreateUDBRouteInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_slave( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDBSlave - 创建UDB实例的slave + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **SrcId** (str) - (Required) master实例的DBId,该值可以通过DescribeUDBInstance获取 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认和主库保持一致 + - **CouponId** (str) - 使用的代金券id + - **DiskSpace** (int) - 磁盘空间(GB), 暂时支持20G - 3000G(API支持,前端暂时只开放内存定制) + - **InstanceMode** (str) - UDB实例部署模式,可选值如下:Normal: 普通单点实例HA: 高可用部署实例 + - **InstanceType** (str) - UDB实例类型:Normal、SATA_SSD、NVMe_SSD + - **IsLock** (bool) - 是否锁主库,默认为true + - **MemoryLimit** (int) - 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M/128000M/192000M/256000M/320000M + - **ParamGroupId** (int) - DB实例使用的配置参数组id,默认和主库保持一致 + - **Port** (int) - 端口号 + - **Quantity** (int) - 购买时长,默认默认和主库保持一致 + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E"、“NVMe”,如果UseSSD为true ,则必选 + - **SubnetId** (str) - 子网ID(如果不传用默认子网) + - **UseSSD** (bool) - 是否使用SSD,默认为true + - **VPCId** (str) - VPCID(如果不传用默认的VPC) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - 创建slave的DBId + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDBSlaveRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBSlave", d, **kwargs) + return apis.CreateUDBSlaveResponseSchema().loads(resp)
+ +
[docs] def delete_udb_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDBBackup - + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) + - **BackupId** (int) - (Required) + - **Zone** (str) - (Required) + - **BackupZone** (str) - + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDBBackupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("DeleteUDBBackup", d, **kwargs) + return apis.DeleteUDBBackupResponseSchema().loads(resp)
+ +
[docs] def delete_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDBInstance - 删除UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取 + - **UDBCId** (str) - 专区ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBInstance", d, **kwargs) + return apis.DeleteUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_udb_log_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDBLogPackage - 删除UDB日志包 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 日志包id,可通过DescribeUDBLogPackage获得 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDBLogPackageRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBLogPackage", d, **kwargs) + return apis.DeleteUDBLogPackageResponseSchema().loads(resp)
+ +
[docs] def delete_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDBParamGroup - 删除配置参数组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (int) - (Required) 参数组id,可通过DescribeUDBParamGroup获取 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - 是否属于地域级别 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBParamGroup", d, **kwargs) + return apis.DeleteUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBBackup - 列表UDB实例备份信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数,列表操作则指定 + - **Offset** (int) - (Required) 分页显示的起始偏移,列表操作则指定 + - **BackupType** (int) - 备份类型,取值为0或1,0表示自动,1表示手动 + - **BeginTime** (int) - 过滤条件:起始时间(Unix时间戳) + - **DBId** (str) - DB实例Id,如果指定,则只获取该db的备份信息 该值可以通过DescribeUDBInstance获取 + - **EndTime** (int) - 过滤条件:结束时间(Unix时间戳) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBBackupSet** 模型定义 + - **TotalCount** (int) - 满足条件备份总数,如果指定dbid,则是该db备份总数 + + **Response Model** + + **UDBBackupSet** + - **BackupEndTime** (int) - 备份完成时间(Unix时间戳) + - **BackupId** (int) - 备份id + - **BackupName** (str) - 备份名称 + - **BackupSize** (int) - 备份文件大小(字节) + - **BackupTime** (int) - 备份时间(Unix时间戳) + - **BackupType** (int) - 备份类型,取值为0或1,0表示自动,1表示手动 + - **BackupZone** (str) - 跨机房高可用备库所在可用区 + - **DBId** (str) - dbid + - **DBName** (str) - 对应的db名称 + - **State** (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 + - **Zone** (str) - 备份所在可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBBackupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBackup", d, **kwargs) + return apis.DescribeUDBBackupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_backup_blacklist( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBBackupBlacklist - 获取UDB实例的备份黑名单 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Blacklist** (str) - DB的黑名单列表, db.%为指定库 dbname.tablename为指定表 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBBackupBlacklistRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBackupBlacklist", d, **kwargs) + return apis.DescribeUDBBackupBlacklistResponseSchema().loads(resp)
+ +
[docs] def describe_udb_binlog_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBBinlogBackupURL - 获取UDB的Binlog备份地址 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) DB实例binlog备份ID,可以从DescribeUDBLogPackage结果当中获得 + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - DB实例备份文件的公网地址 + - **InnerBackupPath** (str) - DB实例备份文件的内网地址 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBBinlogBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBinlogBackupURL", d, **kwargs) + return apis.DescribeUDBBinlogBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstance - 获取UDB实例信息,支持两类操作:(1)指定DBId用于获取该db的信息;(2)指定ClassType、Offset、Limit用于列表操作,查询某一个类型db。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClassType** (str) - DB种类,如果是列表操作,则需要指定,不区分大小写,其取值如下:mysql: SQL;mongo: NOSQL;postgresql: postgresql + - **DBId** (str) - DB实例id,如果指定则获取单个db实例的描述,否则为列表操作。 指定DBId时无需填写ClassType、Offset、Limit + - **IncludeSlaves** (bool) - 当只获取这个特定DBId的信息时,如果有该选项,那么把这个DBId实例的所有从库信息一起拉取并返回 + - **IsInUDBC** (bool) - 是否查看专区里面DB + - **Limit** (int) - 分页显示数量,列表操作时必填 + - **Offset** (int) - 分页显示起始偏移位置,列表操作时必填 + - **UDBCId** (str) - IsInUDBC为True,UDBCId为空,说明查看整个可用区的专区的db,如果UDBId不为空则只查看此专区下面的db + - **Zone** (str) - 可用区,不填时默认全部可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBInstanceSet** 模型定义 + - **TotalCount** (int) - 用户db组的数量,对于 mysql: 主从结对数量,没有slave,则只有master mongodb: 副本集数量 + + **Response Model** + + **UDBInstanceSet** + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupBeginTime** (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 + - **BackupBlacklist** (str) - 备份策略,备份黑名单,mongodb则不适用 + - **BackupCount** (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 + - **BackupDate** (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 + - **BackupDuration** (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **ClusterRole** (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 + - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 + - **DBId** (str) - DB实例id + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + - **DataFileSize** (float) - DB实例数据文件大小,单位GB + - **DataSet** (list) - 见 **UDBSlaveInstanceSet** 模型定义 + - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 + - **DiskUsedSize** (float) - DB实例磁盘已使用空间,单位GB + - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 + - **IPv6Address** (str) - 该实例的ipv6地址 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 + - **InstanceType** (str) - UDB数据库机型 + - **InstanceTypeId** (int) - UDB数据库机型ID + - **LogFileSize** (float) - DB实例日志文件大小,单位GB + - **MemoryLimit** (int) - 内存限制(MB),默认根据配置机型 + - **ModifyTime** (int) - DB实例修改时间,采用UTC计时时间戳 + - **Name** (str) - 实例名称,至少6位 + - **ParamGroupId** (int) - DB实例使用的配置参数组id + - **Port** (int) - 端口号,mysql默认3306,mongodb默认27017 + - **Role** (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 + - **SSDType** (str) - SSD类型,SATA/PCI-E/NVMe + - **SrcDBId** (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id + - **State** (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 + - **SubnetId** (str) - 子网ID + - **SystemFileSize** (float) - DB实例系统文件大小,单位GB + - **Tag** (str) - 获取资源其他信息 + - **UseSSD** (bool) - 是否使用SSD + - **UserUFileData** (dict) - 见 **UFileDataSet** 模型定义 + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - DB实例虚ip + - **VirtualIPMac** (str) - DB实例虚ip的mac地址 + - **Zone** (str) - DB实例所在可用区 + + + **UDBSlaveInstanceSet** + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupBeginTime** (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 + - **BackupBlacklist** (str) - 备份策略,备份黑名单,mongodb则不适用 + - **BackupCount** (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 + - **BackupDate** (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 + - **BackupDuration** (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **ClusterRole** (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 + - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 + - **DBId** (str) - DB实例id + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + - **DataFileSize** (float) - DB实例数据文件大小,单位GB + - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 + - **DiskUsedSize** (float) - DB实例磁盘已使用空间,单位GB + - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 + - **IPv6Address** (str) - 获取该实例的IPv6地址 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例;"HA": 高可用版UDB实例 + - **InstanceType** (str) - UDB数据库机型 + - **InstanceTypeId** (int) - UDB数据库机型ID + - **LogFileSize** (float) - DB实例日志文件大小,单位GB + - **MemoryLimit** (int) - 内存限制(MB),默认根据配置机型 + - **ModifyTime** (int) - DB实例修改时间,采用UTC计时时间戳 + - **Name** (str) - 实例名称,至少6位 + - **ParamGroupId** (int) - DB实例使用的配置参数组id + - **Port** (int) - 端口号,mysql默认3306,mongodb默认27017 + - **Role** (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 + - **SSDType** (str) - SSD类型,SATA/PCI-E + - **SrcDBId** (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id + - **State** (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 + - **SubnetId** (str) - 子网ID + - **SystemFileSize** (float) - DB实例系统文件大小,单位GB + - **Tag** (str) - 获取资源其他信息 + - **UseSSD** (bool) - 是否使用SSD + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - DB实例虚ip + - **VirtualIPMac** (str) - DB实例虚ip的mac地址 + - **Zone** (str) - 可用区 + + + **UFileDataSet** + - **Bucket** (str) - bucket名称 + - **TokenID** (str) - Ufile的令牌tokenid + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstance", d, **kwargs) + return apis.DescribeUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_backup_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceBackupState - 获取UDB实例备份状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 备份记录ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区,参见[可用区列表] + + **Response** + + - **BackupEndTime** (int) - + - **BackupSize** (int) - + - **State** (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceBackupStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBackupState", d, **kwargs) + return apis.DescribeUDBInstanceBackupStateResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceBackupURL - 获取UDB备份下载地址 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) DB实例备份ID,该值可以通过DescribeUDBBackup获取 + - **DBId** (str) - (Required) DB实例Id,该值可通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - DB实例备份文件公网的地址 + - **InnerBackupPath** (str) - DB实例备份文件内网的地址 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBackupURL", d, **kwargs) + return apis.DescribeUDBInstanceBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_binlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceBinlog - 获取UDB指定时间段的binlog列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BeginTime** (int) - (Required) 过滤条件:起始时间(时间戳) + - **DBId** (str) - (Required) DB实例Id + - **EndTime** (int) - (Required) 过滤条件:结束时间(时间戳) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBInstanceBinlogSet** 模型定义 + + **Response Model** + + **UDBInstanceBinlogSet** + - **BeginTime** (int) - Binlog文件生成时间(时间戳) + - **EndTime** (int) - Binlog文件结束时间(时间戳) + - **Name** (str) - Binlog文件名 + - **Size** (int) - Binlog文件大小 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceBinlogRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBinlog", d, **kwargs) + return apis.DescribeUDBInstanceBinlogResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_binlog_backup_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceBinlogBackupState - 获取udb实例备份状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 备份记录ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + + **Response** + + - **State** (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceBinlogBackupStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBinlogBackupState", d, **kwargs) + return apis.DescribeUDBInstanceBinlogBackupStateResponseSchema().loads( + resp + )
+ +
[docs] def describe_udb_instance_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceLog - 查询某一段时间内UDB的错误日志或慢查询日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BeginTime** (int) - (Required) 查询的日志开始的时间戳(Unix Timestamp)。对于实时查询,这个参数应该是上次轮询请求时的时间戳,后台会返回从该值到当前时间的日志内容。 + - **DBId** (str) - (Required) 实例ID + - **EndTime** (int) - (Required) 查询日志的结束时间戳(Unix Timestamp),对于实时查询不传该值,与BeginTime的差值不超过24小时:(EndTime-BeginTime) < 24*60*60 + - **LogType** (str) - (Required) 查询日志的类型error:错误日志;slow:慢日志 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Log** (str) - 查询到的日志内容,一段纯文本 + - **NextTime** (str) - 此次查询到的日志的下一个时间,用于下一次轮询时的BeginTime参数;如果日志查询结束则返回为空,前端结束查询 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceLogRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceLog", d, **kwargs) + return apis.DescribeUDBInstanceLogResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstancePrice - 获取UDB实例价格信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBTypeId** (str) - (Required) UDB实例的DB版本字符串 + - **DiskSpace** (int) - (Required) 磁盘空间(GB),暂时支持20(GB) - 3000(GB), 输入不带单位 + - **MemoryLimit** (int) - (Required) 内存限制(MB),单位为MB.目前支持:1000-96000 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year,按年付费; Month,按月付费 Dynamic,按需付费(需开启权限) Trial,试用(需开启权限)默认为月付 + - **Count** (int) - 购买DB实例数量,最大数量为10台, 默认为1台 + - **InstanceMode** (str) - 实例的部署类型。可选值为:Normal: 普通单点实例,Slave: 从库实例,HA: 高可用部署实例,默认是Normal + - **Quantity** (int) - DB购买多少个"计费时间单位",默认值为1。比如:买2个月,Quantity就是2。如果计费单位是“按月”,并且Quantity为0,表示“购买到月底” + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必填 + - **UseSSD** (str) - 是否使用SSD,只能填true或false,默认为false + + **Response** + + - **DataSet** (list) - 见 **UDBInstancePriceSet** 模型定义 + + **Response Model** + + **UDBInstancePriceSet** + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **Price** (int) - 价格,单位为分 + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstancePrice", d, **kwargs) + return apis.DescribeUDBInstancePriceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceState - 获取UDB实例状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **State** (str) - DB状态标记 Init:初始化中;Fail:安装失败; Starting:启动中; Running : 运行 ;Shutdown:关闭中; Shutoff :已关闭; Delete:已删除; Upgrading:升级中; Promoting: 提升为独库进行中; Recovering: 恢复中; Recover fail:恢复失败。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceState", d, **kwargs) + return apis.DescribeUDBInstanceStateResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBInstanceUpgradePrice - 获取UDB实例升降级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G + - **MemoryLimit** (int) - (Required) 内存限制(MB) + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **UseSSD** (bool) - 是否使用SSD,默认为false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Price** (int) - 价格,单位为分 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBInstanceUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceUpgradePrice", d, **kwargs) + return apis.DescribeUDBInstanceUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_log_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBLogBackupURL - 获取UDB的slowlog备份地址 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BackupId** (int) - (Required) DB实例备份ID + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **BackupPath** (str) - 备份外网URL + - **UsernetPath** (str) - 备份用户网URL + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBLogBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBLogBackupURL", d, **kwargs) + return apis.DescribeUDBLogBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_log_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBLogPackage - 列表UDB实例binlog或slowlog或errorlog备份信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数,列表操作则指定 + - **Offset** (int) - (Required) 分页显示的起始偏移,列表操作则指定 + - **BeginTime** (int) - 过滤条件:起始时间(时间戳) + - **DBId** (str) - DB实例Id,如果指定,则只获取该db的备份信息 + - **EndTime** (int) - 过滤条件:结束时间(时间戳) + - **Type** (int) - 需要列出的备份文件类型,每种文件的值如下 2 : BINLOG\_BACKUP 3 : SLOW\_QUERY\_BACKUP 4 : ERRORLOG\_BACKUP + - **Types** (list) - Types作为Type的补充,支持多值传入,可以获取多个类型的日志记录,如:Types.0=2&Types.1=3 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **LogPackageDataSet** 模型定义 + - **TotalCount** (int) - 备份总数,如果指定dbid,则是该db备份总数 + + **Response Model** + + **LogPackageDataSet** + - **BackupId** (int) - 备份id + - **BackupName** (str) - 备份名称 + - **BackupSize** (int) - 备份文件大小 + - **BackupTime** (int) - 备份时间 + - **BackupType** (int) - 备份类型,包括2-binlog备份,3-slowlog备份 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + - **DBId** (str) - dbid + - **DBName** (str) - 对应的db名称 + - **State** (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 + - **Zone** (str) - 所在可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBLogPackageRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBLogPackage", d, **kwargs) + return apis.DescribeUDBLogPackageResponseSchema().loads(resp)
+ +
[docs] def describe_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBParamGroup - 获取参数组详细参数信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClassType** (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver) + - **GroupId** (int) - 参数组id,如果指定则获取描述,否则是列表操作,需要 指定Offset/Limit + - **IsInUDBC** (bool) - 是否选取专区中配置 + - **Limit** (int) - 分页显示的条目数,列表操作则指定 + - **Offset** (int) - 分页显示的起始偏移,列表操作则指定 + - **RegionFlag** (bool) - 当请求没有填写Zone时,如果指定为true,表示只拉取跨可用区的相关配置文件,否则,拉取所有机房的配置文件(包括每个单可用区和跨可用区) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBParamGroupSet** 模型定义 + - **TotalCount** (int) - 参数组总数,列表操作时才会有该参数 + + **Response Model** + + **UDBParamGroupSet** + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6 7:percona-5.6 + - **Description** (str) - 参数组描述 + - **GroupId** (int) - 参数组id + - **GroupName** (str) - 参数组名称 + - **Modifiable** (bool) - 参数组是否可修改 + - **ParamMember** (list) - 见 **UDBParamMemberSet** 模型定义 + - **RegionFlag** (bool) - + - **Zone** (str) - + + + **UDBParamMemberSet** + - **AllowedVal** (str) - 允许的值(根据参数类型,用分隔符表示) + - **ApplyType** (int) - 参数值应用类型,取值范围为{0,10,20},各值代表 意义为0-unknown、10-static、20-dynamic + - **FormatType** (int) - 允许值的格式类型,取值范围为{0,10,20},意义分 别为PVFT_UNKOWN=0,PVFT_RANGE=10, PVFT_ENUM=20 + - **Key** (str) - 参数名称 + - **Modifiable** (bool) - 是否可更改,默认为false + - **Value** (str) - 参数值 + - **ValueType** (int) - 参数值应用类型,取值范围为{0,10,20,30},各值 代表意义为 0-unknown、10-int、20-string、 30-bool + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBParamGroup", d, **kwargs) + return apis.DescribeUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_splitting_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBSplittingInfo - 描述读写分离功能的详细信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **MasterDBId** (str) - (Required) DB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DBTypeId** (str) - 数据库版本 + - **DataSet** (list) - 见 **UDBRWSplittingSet** 模型定义 + - **DelayThreshold** (int) - 时间阈值 + - **MasterDBId** (str) - DB实例ID + - **Port** (int) - 端口号 + - **RWIP** (str) - 读写分离IP + - **RWState** (str) - 读写分离状态 + - **ReadModel** (str) - 读写分离策略 + - **Zone** (str) - 可用区 + + **Response Model** + + **UDBRWSplittingSet** + - **DBId** (str) - DB实例ID + - **ReadWeight** (int) - 读写分离比重 + - **Role** (str) - 主库/从库 + - **State** (str) - DB状态 + - **VirtualIP** (str) - DBIP + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBSplittingInfoRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBSplittingInfo", d, **kwargs) + return apis.DescribeUDBSplittingInfoResponseSchema().loads(resp)
+ +
[docs] def describe_udb_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDBType - 获取UDB支持的类型信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用DB的备库所在区域,仅当该可用区支持跨可用区高可用时填入。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CompatibleWithDBType** (str) - 返回从备份创建实例时,该版本号所支持的备份创建版本。如果没传,则表示不是从备份创建。 + - **DBClusterType** (str) - DB实例类型,如mysql,sqlserver,mongo,postgresql + - **DiskType** (str) - 返回支持某种磁盘类型的DB类型,如Normal、SSD、NVMe_SSD。如果没传,则表示任何磁盘类型均可。 + - **InstanceMode** (str) - 返回支持某种实例类型的DB类型。如果没传,则表示任何实例类型均可。normal:单点,ha:高可用,sharded_cluster:分片集群 + + **Response** + + - **DataSet** (list) - 见 **UDBTypeSet** 模型定义 + + **Response Model** + + **UDBTypeSet** + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id, 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDBTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBType", d, **kwargs) + return apis.DescribeUDBTypeResponseSchema().loads(resp)
+ +
[docs] def disable_udb_rw_splitting( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DisableUDBRWSplitting - 关闭DB的读写分离功能 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **MasterDBId** (str) - (Required) DB实例ID(master) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DisableUDBRWSplittingRequestSchema().dumps(d) + + resp = self.invoke("DisableUDBRWSplitting", d, **kwargs) + return apis.DisableUDBRWSplittingResponseSchema().loads(resp)
+ +
[docs] def edit_udb_backup_blacklist( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """EditUDBBackupBlacklist - 编辑UDB实例的备份黑名单 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Blacklist** (str) - (Required) 黑名单,规范示例,指定库mysql.%;test.%; 指定表city.address; + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.EditUDBBackupBlacklistRequestSchema().dumps(d) + + resp = self.invoke("EditUDBBackupBlacklist", d, **kwargs) + return apis.EditUDBBackupBlacklistResponseSchema().loads(resp)
+ +
[docs] def enable_udb_rw_splitting( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """EnableUDBRWSplitting - 开启DB的读写分离功能 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **MasterDBId** (str) - (Required) DB实例ID(主库) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BackupZone** (str) - 备份的可用区。用于创建跨可用区读写分离的一个节点,跨机房的读写分离必须有这个参数 + + **Response** + + - **MasterDBId** (str) - DB实例ID(主库) + - **RWIp** (str) - 读写分离访问IP + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.EnableUDBRWSplittingRequestSchema().dumps(d) + + resp = self.invoke("EnableUDBRWSplitting", d, **kwargs) + return apis.EnableUDBRWSplittingResponseSchema().loads(resp)
+ +
[docs] def extract_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ExtractUDBParamGroup - 获取配置文件内容 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (int) - (Required) 配置id + - **RegionFlag** (bool) - 是否跨可用区,RegionFlag为true时表示跨可用区配置文件。如果RegionFlag=true,Zone可以不传,否则Zone必须传。 + - **Zone** (str) - 可用区。如果RegionFlag=false,必须传,反之,可不传。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Content** (str) - 配置文件内容 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ExtractUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("ExtractUDBParamGroup", d, **kwargs) + return apis.ExtractUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def fetch_udb_instance_earliest_recover_time( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """FetchUDBInstanceEarliestRecoverTime - 获取UDB最早可回档的时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **EarliestTime** (int) - 获取最早可回档时间点 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.FetchUDBInstanceEarliestRecoverTimeRequestSchema().dumps(d) + + resp = self.invoke("FetchUDBInstanceEarliestRecoverTime", d, **kwargs) + return apis.FetchUDBInstanceEarliestRecoverTimeResponseSchema().loads( + resp + )
+ +
[docs] def get_udb_client_conn_num( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDBClientConnNum - 输入一个DBID,能够获取客户端来源IP以及对应的连接数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DBId** (str) - (Required) DB实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **ConnNumMap** 模型定义 + + **Response Model** + + **ConnNumMap** + - **Ip** (str) - 客户端IP + - **Num** (int) - 该Ip连接数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUDBClientConnNumRequestSchema().dumps(d) + + resp = self.invoke("GetUDBClientConnNum", d, **kwargs) + return apis.GetUDBClientConnNumResponseSchema().loads(resp)
+ +
[docs] def modify_udb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUDBInstanceName - 重命名UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Name** (str) - (Required) 实例的新名字, 长度要求为6~63位 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUDBInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDBInstanceName", d, **kwargs) + return apis.ModifyUDBInstanceNameResponseSchema().loads(resp)
+ +
[docs] def modify_udb_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUDBInstancePassword - 修改DB实例的管理员密码 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的ID,该值可以通过DescribeUDBInstance获取 + - **Password** (str) - (Required) 实例的新密码 + - **AccountName** (str) - sqlserver帐号,仅在sqlserver的情况下填该参数 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUDBInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDBInstancePassword", d, **kwargs) + return apis.ModifyUDBInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def promote_udb_instance_to_ha( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PromoteUDBInstanceToHA - 普通db升级为高可用(只针对mysql5.5及以上版本SSD机型的实例) ,对于NVMe机型的单点升级高可用,虽然也能使用该操作再加上SwitchUDBInstanceToHA,但是更建议直接调用新的API接口(UpgradeUDBInstanceToHA) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.PromoteUDBInstanceToHARequestSchema().dumps(d) + + resp = self.invoke("PromoteUDBInstanceToHA", d, **kwargs) + return apis.PromoteUDBInstanceToHAResponseSchema().loads(resp)
+ +
[docs] def promote_udb_slave( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PromoteUDBSlave - 从库提升为独立库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **IsForce** (bool) - 是否强制(如果从库落后可能会禁止提升),默认false 如果落后情况下,强制提升丢失数据 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.PromoteUDBSlaveRequestSchema().dumps(d) + + resp = self.invoke("PromoteUDBSlave", d, **kwargs) + return apis.PromoteUDBSlaveResponseSchema().loads(resp)
+ +
[docs] def resize_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeUDBInstance - 修改(升级和降级)UDB实例的配置,包括内存和磁盘的配置,对于内存升级无需关闭实例,其他场景需要事先关闭实例。两套参数可以配置升降机:1.配置UseSSD和SSDType 2.配置InstanceType,不需要配置InstanceMode。这两套第二套参数的优先级更高 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G-32T + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/ 12000M/16000M/ 24000M/32000M/ 48000M/64000M/96000M/128000M/192000M/256000M/320000M。 + - **CouponId** (str) - 使用的代金券id + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 默认是"Normal" + - **InstanceType** (str) - UDB数据库机型: "Normal": "标准机型" , "SATA_SSD": "SSD机型" , "PCIE_SSD": "SSD高性能机型" , "Normal_Volume": "标准大容量机型", "SATA_SSD_Volume": "SSD大容量机型" , "PCIE_SSD_Volume": "SSD高性能大容量机型",“NVMe_SSD”:“快杰机型” + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E"、“NVMe”,如果UseSSD为true ,则必选 + - **StartAfterUpgrade** (bool) - DB关闭状态下升降级,升降级后是否启动DB,默认为false + - **UDBCId** (str) - 专区的ID,如果有值表示专区中的DB配置升降级 + - **UseSSD** (bool) - 是否使用SSD,默认为true + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUDBInstance", d, **kwargs) + return apis.ResizeUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def restart_rw_splitting( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartRWSplitting - 读写分离中间件重启,对应docker重启,但是ip不变 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **MasterDBId** (str) - (Required) 待关闭读写分离中间键ProxyId + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartRWSplittingRequestSchema().dumps(d) + + resp = self.invoke("RestartRWSplitting", d, **kwargs) + return apis.RestartRWSplittingResponseSchema().loads(resp)
+ +
[docs] def restart_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUDBInstance - 重启UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartUDBInstance", d, **kwargs) + return apis.RestartUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def set_udb_rw_splitting( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetUDBRWSplitting - 设置读写分离的模式 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBIds** (list) - (Required) DBIds.0 代表UDB主节点, DBIds.1 到DBIds.n 代表1到N个从节点 + - **MasterDBId** (str) - (Required) DB实例ID(master) + - **ReadModel** (str) - (Required) 读写分离策略 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DelayThreshold** (int) - 时间阙值 + - **ReadPercents** (list) - udb主从节点的只读比例。ReadPercents.0代表主节点的只读比例,ReadPercents.1代表从节点1的读写比例, 以此类推 + + **Response** + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetUDBRWSplittingRequestSchema().dumps(d) + + resp = self.invoke("SetUDBRWSplitting", d, **kwargs) + return apis.SetUDBRWSplittingResponseSchema().loads(resp)
+ +
[docs] def start_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUDBInstance - 启动UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUDBInstance", d, **kwargs) + return apis.StartUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUDBInstance - 关闭UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **ForceToKill** (bool) - 是否使用强制手段关闭DB,默认是false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUDBInstance", d, **kwargs) + return apis.StopUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def switch_udb_ha_to_sentinel( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SwitchUDBHAToSentinel - UDB高可用实例从HAProxy版本升级为Sentinel版本(不带HAProxy)升级耗时5-10秒 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DBId** (str) - (Required) UDB的实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ForceSwitch** (bool) - 是否跳过预检查强制升级。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SwitchUDBHAToSentinelRequestSchema().dumps(d) + + resp = self.invoke("SwitchUDBHAToSentinel", d, **kwargs) + return apis.SwitchUDBHAToSentinelResponseSchema().loads(resp)
+ +
[docs] def switch_udb_instance_to_ha( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SwitchUDBInstanceToHA - 普通UDB切换为高可用(只针对mysql5.5及以上版本SSD机型的实例) ,原db状态为WaitForSwitch时,调用该api; 对于NVMe机型的单点升级高可用,虽然也能使用PromoteUDBInstanceToHA再加上该操作,但是更建议直接调用新的API接口(UpgradeUDBInstanceToHA) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,不填则按现在单点计费执行 + - **Quantity** (str) - 购买时长,需要和 ChargeType 搭配使用,否则使用单点计费策略的值 + - **Tag** (str) - 业务组 + + **Response** + + - **DBId** (str) - 切换后高可用db实例的Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SwitchUDBInstanceToHARequestSchema().dumps(d) + + resp = self.invoke("SwitchUDBInstanceToHA", d, **kwargs) + return apis.SwitchUDBInstanceToHAResponseSchema().loads(resp)
+ +
[docs] def update_udb_instance_backup_strategy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUDBInstanceBackupStrategy - 修改UDB自动备份策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 主节点的Id + - **BackupDate** (str) - 备份时期标记位。共7位,每一位为一周中一天的备份情况,0表示关闭当天备份,1表示打开当天备份。最右边的一位为星期天的备份开关,其余从右到左依次为星期一到星期六的备份配置开关,每周必须至少设置两天备份。例如:1100000表示打开星期六和星期五的备份功能 + - **BackupMethod** (str) - 选择默认的备份方式,可选 snapshot 表示使用快照/物理备份,不填或者其它任何值为默认的逻辑备份。需要同时设置BackupDate字段。(注意现在只有SSD 版本的 MySQL实例支持物理备份) + - **BackupTime** (int) - 备份的整点时间,范围[0,23] + - **ForceDump** (bool) - 当导出某些数据遇到问题后,是否强制导出其他剩余数据默认是false需要同时设置BackupDate字段 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUDBInstanceBackupStrategyRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBInstanceBackupStrategy", d, **kwargs) + return apis.UpdateUDBInstanceBackupStrategyResponseSchema().loads(resp)
+ +
[docs] def update_udb_instance_slave_backup_switch( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUDBInstanceSlaveBackupSwitch - 开启或者关闭UDB从库备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupSwitch** (int) - (Required) 从库的备份开关,范围[0,1],0表示从库备份功能关闭,1 表示从库备份开关打开。 + - **MasterDBId** (str) - (Required) 主库的Id + - **SlaveDBId** (str) - 从库的Id,如果从库备份开关设定为打开,则必须赋值。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUDBInstanceSlaveBackupSwitchRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBInstanceSlaveBackupSwitch", d, **kwargs) + return apis.UpdateUDBInstanceSlaveBackupSwitchResponseSchema().loads( + resp + )
+ +
[docs] def update_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUDBParamGroup - 更新UDB配置参数项 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (int) - (Required) 配置参数组id,使用DescribeUDBParamGroup获得 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Description** (str) - 配置文件的描述,不传时认为不修改 + - **Key** (str) - 参数名称(与Value配合使用) + - **Name** (str) - 配置文件的名字,不传时认为不修改名字,传了则不能为空 + - **RegionFlag** (bool) - 该配置文件是否是地域级别配置文件,默认是false + - **Value** (str) - 参数值(与Key配合使用) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBParamGroup", d, **kwargs) + return apis.UpdateUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def upgrade_udb_instance_to_ha( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUDBInstanceToHA - 快杰普通db升级为高可用(只针对mysql5.5及以上版本Nvme机型的实例) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUDBInstanceToHARequestSchema().dumps(d) + + resp = self.invoke("UpgradeUDBInstanceToHA", d, **kwargs) + return apis.UpgradeUDBInstanceToHAResponseSchema().loads(resp)
+ +
[docs] def upload_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UploadUDBParamGroup - 导入UDB配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Content** (str) - (Required) 配置内容,导入的配置内容采用base64编码 + - **DBTypeId** (str) - (Required) DB类型id,DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6 + - **Description** (str) - (Required) 参数组描述 + - **GroupName** (str) - (Required) 配置参数组名称 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - 该配置文件是否是地域级别配置文件,默认是false + + **Response** + + - **GroupId** (int) - 配置参数组id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UploadUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("UploadUDBParamGroup", d, **kwargs) + return apis.UploadUDBParamGroupResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uddb/client.html b/_modules/ucloud/services/uddb/client.html new file mode 100644 index 00000000..b86e1a4c --- /dev/null +++ b/_modules/ucloud/services/uddb/client.html @@ -0,0 +1,562 @@ + + + + + + + + ucloud.services.uddb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uddb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uddb.schemas import apis
+
+
+
[docs]class UDDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def change_uddb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ChangeUDDBInstanceName - 修改分布式数据库中间件名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NewName** (str) - (Required) 名称 + - **UDDBId** (str) - (Required) UDDB实例Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ChangeUDDBInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ChangeUDDBInstanceName", d, **kwargs) + return apis.ChangeUDDBInstanceNameResponseSchema().loads(resp)
+ +
[docs] def change_uddb_slave_count( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ChangeUDDBSlaveCount - 改变分布式数据库数据节点的只读实例个数每一个UDDB的数据节点负责处理所有的写入请求。与此同时,每一个数据节点可以配置若干个该节点的只读实例。当主节点的数据写入完毕后,只读实例把这次的写入操作进行更新,从而和数据节点保持一致。只读实例可以使得数据由多份复制,在数据节点和只读实例之间,可以做请求的读写分离, 也就是说, 主节点写入数据之后, 数据的读操作可以由数据只读实例进行分担, 这样减少主节点的压力, 增加性能当改变了数据节点的只读实例个数之后,对于现有的和以后的每一个数据节点都采用这个配置。如果UDDB实例有现有的数据节点, 那么它会根据新配置的参数,自动创建或删除数据节点的只读实例如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成"ChangingSlaveCount"; 如果返回失败, UDDB实例状态保持不变 当UDDB更改数据分区的只读实例个数成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果更改过程中出现异常, 状态变成"Abnormal"(异常运行中)或者"Error"(运行错误) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SlaveCount** (str) - (Required) 每个数据节点的只读实例个数, 取值必须>=0 + - **UDDBId** (str) - (Required) UDDB资源id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ChangeUDDBSlaveCountRequestSchema().dumps(d) + + resp = self.invoke("ChangeUDDBSlaveCount", d, **kwargs) + return apis.ChangeUDDBSlaveCountResponseSchema().loads(resp)
+ +
[docs] def create_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDDBInstance - 创建创建分布式数据库UDDB实例, 简称UDDB实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminPassword** (str) - (Required) 管理员密码, 密码需要使用base64加密 + - **DBTypeId** (str) - (Required) UDDB的数据库版本,支持版本如下:mysql-5.6 mysql-5.7. 如果不填,则默认为mysql-5.6 + - **DataNodeCount** (int) - (Required) 初始的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **Name** (str) - (Required) 实例名称,至少6位 + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminUser** (str) - 管理员帐户名,默认root + - **ChargeType** (str) - 付费类型,可选值如下:Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic + - **CouponId** (str) - 使用的代金券id + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Port** (int) - 端口号,mysql默认端口为3306 + - **Quantity** (int) - 购买时长,默认值1 + - **SubnetId** (str) - 子网ID + - **VPCId** (str) - VPC的ID + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **UDDBId** (str) - UDDB实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDDBInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDDBInstance", d, **kwargs) + return apis.CreateUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDDBInstance - 删除UDDB实例。如下状态的UDDB实例可以进行这个操作:InitFail: 初始化失败Shutoff: 已关闭当请求返回成功之后,UDDB实例就已经被删除, 列表上看不到对应的UDDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDDBInstance", d, **kwargs) + return apis.DeleteUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstance - 获取分布式数据库UDDB的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **DataSetUDDB** 模型定义 + - **Message** (str) - 如果执行失败, 失败的错误消息 + + **Response Model** + + **SlaveInfo** + - **DataNodeId** (str) - 对应数据节点的ID + - **Id** (str) - 只读实例ID + - **State** (str) - 只读实例状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中 + + + **DataNodeInfo** + - **CreateTime** (str) - 节点的创建时间 + - **DiskSpace** (str) - 数据节点的磁盘大小配置. 单位: GB + - **Id** (str) - 数据节点ID + - **LastTransTaskId** (str) - 最近一次数据迁移任务id + - **Memory** (str) - 数据节点的内存配置, 单位:MB + - **SlaveCount** (str) - 数据节点的只读实例个数. + - **SlaveInfos** (list) - 见 **SlaveInfo** 模型定义 + - **State** (str) - 数据分片状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中 + + + **DataSetUDDB** + - **AdminUser** (str) - 管理员帐户名,默认root + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 + - **CreateTime** (str) - UDDB实例创建时间,采用UTC计时时间戳 + - **DBTypeId** (str) - UDDB的数据库版本 + - **DataNodeCount** (str) - 数据节点个数 + - **DataNodeDiskSpace** (str) - 数据节点的磁盘大小配置. 单位: GB + - **DataNodeList** (list) - 见 **DataNodeInfo** 模型定义 + - **DataNodeMemory** (str) - 数据节点的内存配置, 单位:MB + - **DataNodeSlaveCount** (str) - 每个数据节点的只读实例个数. + - **ExpiredTime** (str) - UDDB实例过期时间,采用UTC计时时间戳 + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Name** (str) - UDDB实例名称 + - **Port** (str) - UDDB实例访问的端口号 + - **RefQps** (int) - 参考QPS。 免费版: 15000; 畅享版: 30000 - 100000 (根据节点数而定); 专享版: 节点数 * 10w qps + - **RouterNodeNum** (int) - 各版本下的节点个数。体验版: 固定为2节点; 畅享版:固定为4节点(后续可通过管理API调整);专享版:物理机台数 + - **RouterVersion** (str) - UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **State** (str) - UDDB状态, 状态列表如下: Init: 初始化中 InitFail: 初始化失败 Starting: 启动中 Running: 系统正常运行中 Abnormal: 系统运行中, 有异常, 还能提供服务 Error: 系统运行中, 但不能正常提供服务 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 UpgradingUDDB: 升降级UDDB配置中 UpgradingDataNode: 升降级UDDB节点配置中 ChangingSlaveCount: 改变只读实例数量中 ScalingOutUDDB: 水平扩展中 + - **UDDBId** (str) - UDDB实例ID + - **VirtualIP** (str) - UDDB实例访问的虚IP + - **Zone** (str) - UDDB实例对应的可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstance", d, **kwargs) + return apis.DescribeUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstancePrice - 获取分布式数据库UDDB价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeCount** (int) - (Required) 初始的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (str) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点个数。一台物理机有2个节点 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Quantity** (int) - 购买时长,默认值1 + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **PriceInfo** (dict) - 见 **PriceDetailInfo** 模型定义 + + **Response Model** + + **PriceDetailInfo** + - **DataNodePrice** (float) - 存储节点费用 + - **DataNodeSlavePrice** (float) - 只读实例费用 + - **MiddlewarePrice** (float) - 中间件路由节点费用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstancePrice", d, **kwargs) + return apis.DescribeUDDBInstancePriceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstanceUpgradePrice - 升级UDDB时,获取升级后的价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点的个数。一台物理机有2个节点 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeCount** (int) - 新的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **PriceInfo** (dict) - 见 **PriceInfo** 模型定义 + + **Response Model** + + **PriceInfo** + - **DataNodePrice** (float) - 存储节点费用 + - **DataNodeSlavePrice** (float) - 只读实例费用 + - **MiddlewarePrice** (float) - 中间件路由节点费用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstanceUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstanceUpgradePrice", d, **kwargs) + return apis.DescribeUDDBInstanceUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def restart_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUDDBInstance - 重启UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成"Starting"(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在重启过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果启动过程中出现异常, 状态变成"Abnormal"(异常运行中), 或者"Shutoff"(已关闭 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartUDDBInstance", d, **kwargs) + return apis.RestartUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def start_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUDDBInstance - 启动UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成"Starting"(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在启动过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果启动过程中出现异常, 状态变成"Abnormal"(异常运行中), 或者"Shutoff"(已关闭) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUDDBInstance", d, **kwargs) + return apis.StartUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUDDBInstance - 关闭UDDB实例,停止提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成"Shutdown"(关闭中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在关闭过程中, 当UDDB实例关闭成功之后, UDDB实例的状态变成"Shutoff"(已关闭); 如果关闭过程中出现异常, 根据UDDB实例的情况, 状态变成"Abnormal"(异常运行中), 或者"Running"(正常运行中) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUDDBInstance", d, **kwargs) + return apis.StopUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_uddb_data_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUDDBDataNode - 升降级分布式数据库数据节点的配置, 提高/降低数据节点的数据容量和内存所有数据节点以及其所挂载的只读实例的配置都受到影响升降级数据节点的配置之后之后, 会按照数据节点新的磁盘和内存大小重新计费如下状态的数据节点实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成"UpgradingDataNode",相关数据节点的状态变成"Upgrading"; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级结束之后, UDDB实例的状态变成"Shutoff" + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值 + - **UDDBId** (str) - (Required) UDDB实例ID + - **CouponId** (str) - 使用的代金券id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUDDBDataNodeRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUDDBDataNode", d, **kwargs) + return apis.UpgradeUDDBDataNodeResponseSchema().loads(resp)
+ +
[docs] def upgrade_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUDDBInstance - 升降级分布式数据库中间件的配置, 提高/降低请求处理的并发性修改请求处理节点个数之后, 按照所有请求处理节点的总内存容量和CPU核数重新计费如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成"UpgradingUDDB"; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级成功之后, UDDB实例的状态变成"Running"; 如果更改过程中出现异常, 状态变成"Abnormal", 或者"Error" + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **UDDBId** (str) - (Required) UDDB实例ID + - **CouponId** (str) - 使用的代金券id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUDDBInstance", d, **kwargs) + return apis.UpgradeUDDBInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/udisk/client.html b/_modules/ucloud/services/udisk/client.html new file mode 100644 index 00000000..6f3465c2 --- /dev/null +++ b/_modules/ucloud/services/udisk/client.html @@ -0,0 +1,873 @@ + + + + + + + + ucloud.services.udisk.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udisk.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udisk.schemas import apis
+
+
+
[docs]class UDiskClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDiskClient, self).__init__(config, transport, middleware, logger) + +
[docs] def attach_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AttachUDisk - 将一个可用的UDisk挂载到某台主机上,当UDisk挂载成功后,还需要在主机内部进行文件系统操作 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要挂载的UDisk实例ID. + - **HostId** (str) - Host实例ID + - **MultiAttach** (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes ) + - **UHostId** (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DeviceName** (str) - 挂载的设备名称 + - **HostId** (str) - 挂载的Host实例ID + - **UDiskId** (str) - 挂载的UDisk实例ID + - **UHostId** (str) - 挂载的UHost实例ID。【即将废弃,建议使用HostId】 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AttachUDiskRequestSchema().dumps(d) + + resp = self.invoke("AttachUDisk", d, **kwargs) + return apis.AttachUDiskResponseSchema().loads(resp)
+ +
[docs] def clone_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CloneUDisk - 从UDisk创建UDisk克隆 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 实例名称 + - **SourceId** (str) - (Required) 克隆父Disk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay,Trial 默认: Month + - **Comment** (str) - Disk注释 + - **CouponId** (str) - 使用的代金券id + - **HostId** (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。 + - **Quantity** (int) - 购买时长 默认: 1 + - **RdmaClusterId** (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。 + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + - **UDiskId** (list) - 创建UDisk Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneUDiskRequestSchema().dumps(d) + + resp = self.invoke("CloneUDisk", d, **kwargs) + return apis.CloneUDiskResponseSchema().loads(resp)
+ +
[docs] def clone_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CloneUDiskSnapshot - 从快照创建UDisk克隆 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 实例名称 + - **SourceId** (str) - (Required) 克隆父Snapshot的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay 默认: Dynamic + - **Comment** (str) - Disk注释 + - **CouponId** (str) - 使用的代金券id + - **HostId** (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。 + - **Quantity** (int) - 购买时长 默认: 1 + - **RdmaClusterId** (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。 + - **Size** (int) - 购买UDisk大小,单位:GB,范围[1~8000]。(UDisk大小设定对本地盘快照有效,对云盘快照无效) + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + - **UDiskId** (list) - 创建UDisk Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneUDiskSnapshotRequestSchema().dumps(d) + + resp = self.invoke("CloneUDiskSnapshot", d, **kwargs) + return apis.CloneUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def clone_udisk_udataark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CloneUDiskUDataArk - 从数据方舟的备份创建UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 实例名称 + - **SnapshotTime** (int) - (Required) 指定从方舟克隆的备份时间点 + - **UDiskId** (str) - (Required) 需要克隆的源盘id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay 默认: Dynamic + - **Comment** (str) - Disk注释 + - **CouponId** (str) - 使用的代金券id + - **HostId** (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。 + - **Quantity** (int) - 购买时长 默认: 1 + - **RdmaClusterId** (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。 + - **Size** (int) - 购买UDisk大小,单位:GB,范围[1~8000]。(UDisk大小设定对本地盘备份有效,对云盘备份无效) + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + - **UDiskId** (list) - 创建UDisk Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneUDiskUDataArkRequestSchema().dumps(d) + + resp = self.invoke("CloneUDiskUDataArk", d, **kwargs) + return apis.CloneUDiskUDataArkResponseSchema().loads(resp)
+ +
[docs] def create_attach_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateAttachUDisk - 创建并挂载UDisk磁盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 实例名称 + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000];高效数据盘:范围[1~32000]。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic, Postpay, Trial 。 Size小于等于2000时,默认为Dynamic;Size大于2000时,默认为Month。 + - **CmkId** (str) - 加密需要的cmk id,UKmsMode为Yes时,必填 + - **CouponId** (str) - 使用的代金券id + - **DiskType** (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),默认值(DataDisk) + - **HostId** (str) - Host实例ID。当创建云盘类型为RSSDDataDisk时,根据传入的HostId,创建与虚机在同一PodId下的云盘。 + - **MultiAttach** (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes ) + - **Quantity** (int) - 购买时长 默认: 1 + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + - **UHostId** (str) - UHost实例ID。当创建云盘类型为RSSDDataDisk时,根据传入的UHostId,创建与虚机在同一PodId下的云盘。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 + - **UKmsMode** (str) - 是否加密。Yes:加密,No:不加密,默认值(No) + + **Response** + + - **DeviceName** (str) - 挂载设备名称 + - **HostId** (str) - 挂载的Host实例ID + - **UDiskId** (str) - 挂载的UDisk实例ID + - **UHostId** (str) - 挂载的UHost实例ID。【即将废弃,建议使用HostId】 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateAttachUDiskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateAttachUDisk", d, **kwargs) + return apis.CreateAttachUDiskResponseSchema().loads(resp)
+ +
[docs] def create_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateUDisk - 创建UDisk磁盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 实例名称 + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000];高效数据盘:范围[1~32000]。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic, Postpay, Trial 。默认为Dynamic。 + - **CmkId** (str) - 加密需要的cmk id,UKmsMode为Yes时,必填 + - **CouponId** (str) - 使用的代金券id + - **DiskType** (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),默认值(DataDisk) + - **Quantity** (int) - 购买时长 默认: 1 + - **RdmaClusterId** (str) - RDMA集群id。DiskType为RSSDDataDisk可填,指定云盘创建到对应的RDMA集群。 + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + - **UKmsMode** (str) - 是否加密。Yes:加密,No:不加密,默认值(No) + + **Response** + + - **UDiskId** (list) - UDisk实例Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDiskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDisk", d, **kwargs) + return apis.CreateUDiskResponseSchema().loads(resp)
+ +
[docs] def create_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDiskSnapshot - 创建snapshot快照 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 快照名称 + - **UDiskId** (str) - (Required) 快照的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic 默认: Dynamic (已废弃) + - **Comment** (str) - 快照描述 + - **Quantity** (int) - 购买时长 默认: 1 (已废弃) + + **Response** + + - **SnapshotId** (list) - 快照Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDiskSnapshotRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDiskSnapshot", d, **kwargs) + return apis.CreateUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def delete_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteUDisk - 删除UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 要删除的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDiskRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDisk", d, **kwargs) + return apis.DeleteUDiskResponseSchema().loads(resp)
+ +
[docs] def delete_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDiskSnapshot - 删除Snapshot + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SnapshotId** (str) - 快照Id(填写后不能填写UDisk Id) + - **UDiskId** (str) - UDisk Id,删除该盘所创建出来的所有快照(填写后不能填写SnapshotId) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDiskSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDiskSnapshot", d, **kwargs) + return apis.DeleteUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_recycle_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeRecycleUDisk - 拉取回收站中云硬盘列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **DataSet** (list) - 见 **RecycleUDiskSet** 模型定义 + - **TotalCount** (int) - 磁盘数量 + + **Response Model** + + **RecycleUDiskSet** + - **CountdownTime** (int) - 销毁倒计时 + - **CreateTime** (int) - 创建时间 + - **ExpiredTime** (int) - 过期时间 + - **Name** (str) - 磁盘名称 + - **Size** (int) - 磁盘容量 + - **Tag** (str) - 业务组 + - **UDiskId** (str) - 磁盘id + - **Zone** (str) - 可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRecycleUDiskRequestSchema().dumps(d) + + resp = self.invoke("DescribeRecycleUDisk", d, **kwargs) + return apis.DescribeRecycleUDiskResponseSchema().loads(resp)
+ +
[docs] def describe_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDisk - 获取UDisk实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DiskType** (str) - ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:"CLOUD_NORMAL",IsBoot:"False";普通系统盘:DiskType:"CLOUD_NORMAL",IsBoot:"True";SSD数据盘:DiskType:"CLOUD_SSD",IsBoot:"False";SSD系统盘:DiskType:"CLOUD_SSD",IsBoot:"True";RSSD数据盘:DiskType:"CLOUD_RSSD",IsBoot:"False";RSSD系统盘:DiskType:"CLOUD_RSSD",IsBoot:"True";高效数据盘:DiskType:"CLOUD_EFFICIENCY",IsBoot:"False";高效系统盘:DiskType:"CLOUD_EFFICIENCY",IsBoot:"True";为空拉取所有。ProtocolVersion字段为0或没有该字段时,可设为以下几个值:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;RSSD系统盘:RSSDSystemDisk:高效数据盘:EfficiencyDataDisk;高效系统盘:EfficiencySystemDisk;为空拉取所有。 + - **HostId** (str) - 根据传入的HostId,返回与该主机关联的云盘信息。 + - **HostIdForAttachment** (str) - 根据传入的HostIdForAttachment,筛选出能被挂载在该主机上的云盘。目前主要针对RSSD云盘。 + - **HostProduct** (str) - 宿主产品类型,可筛选挂载在该类型宿主上的云盘。可选值:uhost, uphost。为空拉取所有。(当HostIdForAttachment字段不为空时,该字段可以不填,若HostIdForAttachment与该字段宿主类型冲突,则以HostIdForAttachment字段为准。) + - **IgnoreBackupMode** (str) - 是否忽略快照服务信息。Yes:忽略,No:不忽略,默认值(No)。(如不关心快照服务信息,建议选填“Yes”,可降低请求延时) + - **IgnoreUBillInfo** (str) - 是否忽略计费信息。Yes:忽略,No:不忽略,默认值(No)。(如不关心账单信息,建议选填“Yes”,可降低请求延时) + - **IsBoot** (str) - ProtocolVersion字段为1且DiskType不为空时,必须设置,设置规则请参照DiskType;ProtocolVersion字段为1且DiskType为空时,该字段无效。ProtocolVersion字段为0或没有该字段时,该字段无效。 + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **ProtocolVersion** (int) - 请求协议版本,建议升级为1,为1时DiskType与UHost磁盘类型定义一致;默认为0 + - **UDiskBasicInfo** (str) - 是否只返回云盘基础信息(只包含云盘及关联主机的资源信息)。Yes:是,No:否,默认值(No)。(如仅需要基础信息,建议选填“Yes”,可降低请求延时) + - **UDiskId** (str) - UDisk Id(留空返回全部) + - **UHostIdForAttachment** (str) - 根据传入的UHostIdForAttachment,筛选出能被挂载在该主机上的云盘【本字段即将废弃,建议使用HostIdForAttachment】 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **UDiskDataSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UDiskDataSet** + - **ArkSwitchEnable** (int) - 是否支持开启方舟,1支持 ,0不支持 + - **BackupMode** (str) - 该盘的备份方式。快照服务:"SnapshotService";数据方舟:"UDataArk";无备份方式:"" + - **ChargeType** (str) - Year,Month,Dynamic,Trial,Postpay + - **CloneEnable** (int) - 是否支持克隆,1支持 ,0不支持 + - **CmkId** (str) - 该盘的cmk id + - **CmkIdAlias** (str) - cmk id 别名 + - **CmkIdStatus** (str) - 该盘cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) + - **CreateTime** (int) - 创建时间 + - **DataKey** (str) - 该盘的密文密钥 + - **DeviceName** (str) - 挂载的设备名称 + - **DiskType** (str) - 请求中的ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:"CLOUD_NORMAL",IsBoot:"False"; 普通系统盘:DiskType:"CLOUD_NORMAL",IsBoot:"True";SSD数据盘:DiskType:"CLOUD_SSD",IsBoot:"False";SSD系统盘:DiskType:"CLOUD_SSD",IsBoot:"True";RSSD数据盘:DiskType:"CLOUD_RSSD",IsBoot:"False";RSSD系统盘:DiskType:"CLOUD_RSSD",IsBoot:"True";高效数据盘:DiskType:"CLOUD_EFFICIENCY",IsBoot:"False";高效系统盘:DiskType:"CLOUD_EFFICIENCY",IsBoot:"True"。请求中的ProtocolVersion字段为0或没有该字段时,云硬盘类型参照如下:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;RSSD系统盘:RSSDSystemDisk;高效数据盘:EfficiencyDataDisk;高效系统盘:EfficiencySystemDisk。 + - **ExpiredTime** (int) - 过期时间 + - **HostIP** (str) - 挂载的Host的IP + - **HostId** (str) - 挂载的Host的Id + - **HostName** (str) - 挂载的Host的Name + - **IsBoot** (str) - 是否是系统盘,是:"True", 否:"False" + - **IsExpire** (str) - 资源是否过期,过期:"Yes", 未过期:"No" + - **Name** (str) - 实例名称 + - **RdmaClusterId** (str) - RDMA集群id,仅RSSD返回该值;其他类型云盘返回""。当云盘的此值与快杰云主机的RdmaClusterId相同时,RSSD可以挂载到这台云主机。 + - **Size** (int) - 容量单位GB + - **SnapEnable** (int) - 是否支持快照,1支持 ,0不支持 + - **SnapshotCount** (int) - 该盘快照个数 + - **SnapshotLimit** (int) - 该盘快照上限 + - **Status** (str) - 状态:Available(可用),Attaching(挂载中), InUse(已挂载), Detaching(卸载中), Initializating(分配中), Failed(创建失败),Cloning(克隆中),Restoring(恢复中),RestoreFailed(恢复失败), + - **Tag** (str) - 业务组名称 + - **UDataArkMode** (str) - 是否开启数据方舟,开启:"Yes", 不支持:"No" + - **UDiskId** (str) - UDisk实例Id + - **UHostIP** (str) - 挂载的UHost的IP。【即将废弃,建议使用HostIP】 + - **UHostId** (str) - 挂载的UHost的Id。【即将废弃,建议使用HostId】 + - **UHostName** (str) - 挂载的UHost的Name。【即将废弃,建议使用HostName】 + - **UKmsMode** (str) - 是否是加密盘,是:"Yes", 否:"No" + - **Version** (str) - 是否支持数据方舟,支持:"2.0", 不支持:"1.0" + - **Zone** (str) - 可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDiskRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDisk", d, **kwargs) + return apis.DescribeUDiskResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDiskPrice - 获取UDisk实例价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];普通系统盘:范围[1~8000];SSD系统盘:范围[1~4000];RSSD数据盘:范围[1~32000];RSSD系统盘:范围[1~4000];高效数据盘:范围[1~32000];高效系统盘:范围[1~500]。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay,Trial 默认: Month + - **DiskType** (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDSystemDisk(RSSD系统盘),EfficiencySystemDisk(高效系统盘),默认值(DataDisk) + - **IsTotalPrice** (str) - 是否将快照服务(数据方舟),云硬盘放入一张订单, 是:"Yes",否:"No",默认是"No" + - **MachineType** (str) - 云主机机型(V2.0),枚举值["N", "C", "G", "O", "OM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Quantity** (int) - 购买UDisk的时长,默认值为1 + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + - **DataSet** (list) - 见 **UDiskPriceDataSet** 模型定义 + + **Response Model** + + **UDiskPriceDataSet** + - **ChargeName** (str) - "UDataArk","SnapshotService","UDisk","Total" + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **ListPrice** (int) - 原价(对应计费OriginalPrice) + - **OriginalPrice** (int) - 用户折后价(对应计费CustomPrice) + - **Price** (int) - 实际价格 (单位: 分) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDiskPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskPrice", d, **kwargs) + return apis.DescribeUDiskPriceResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDiskSnapshot - 获取UDisk快照 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **SnapshotId** (str) - 快照id,SnapshotId , UDiskId 同时传SnapshotId优先 + - **UDiskId** (str) - UDiskId,返回该盘所做快照.(必须同时传Zone) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **UDiskSnapshotSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UDiskSnapshotSet** + - **CmkId** (str) - 该快照的cmk id + - **CmkIdAlias** (str) - cmk id 别名 + - **CmkIdStatus** (str) - 该快照cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) + - **Comment** (str) - 快照描述 + - **CreateTime** (int) - 创建时间 + - **DataKey** (str) - 该快照的密文密钥 + - **DiskType** (int) - 磁盘类型,0:普通数据盘;1:普通系统盘;2:SSD数据盘;3:SSD系统盘;4:RSSD数据盘;5:RSSD系统盘。 + - **ExpiredTime** (int) - 过期时间 + - **IsUDiskAvailable** (bool) - 对应磁盘是否处于可用状态 + - **Name** (str) - 快照名称 + - **Size** (int) - 容量单位GB + - **SnapshotId** (str) - 快照Id + - **Status** (str) - 快照状态,Normal:正常,Failed:失败,Creating:制作中 + - **UDiskId** (str) - 快照的源UDisk的Id + - **UDiskName** (str) - 快照的源UDisk的Name + - **UHostId** (str) - 对应磁盘制作快照时所挂载的主机 + - **UKmsMode** (str) - 是否是加密盘快照,是:"Yes", 否:"No" + - **Version** (str) - 快照版本 + - **Zone** (str) - 可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDiskSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskSnapshot", d, **kwargs) + return apis.DescribeUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDiskUpgradePrice - 获取UDisk升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];普通系统盘:范围[1~8000];SSD系统盘:范围[1~4000];RSSD数据盘:范围[1~32000];RSSD系统盘:范围[1~4000];高效数据盘:范围[1~32000];高效系统盘:范围[1~500]。 + - **SourceId** (str) - (Required) 升级目标UDisk ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DiskType** (str) - 【已废弃】UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDSystemDisk(RSSD系统盘),EfficiencySystemDisk(高效系统盘),默认值(DataDisk) + - **MachineType** (str) - 【已废弃】云主机机型(V2.0),枚举值["N", "C", "G", "O", "OM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **SnapshotService** (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No。仅支持查询开启快照服务的价格。 + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + - **OriginalPrice** (int) - 用户折后价 (对应计费CustomPrice) + - **Price** (int) - 价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDiskUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskUpgradePrice", d, **kwargs) + return apis.DescribeUDiskUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def detach_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DetachUDisk - 卸载某个已经挂载在指定UHost实例上的UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要卸载的UDisk实例ID + - **HostId** (str) - Host实例ID + - **UHostId** (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **HostId** (str) - 卸载的Host实例ID + - **UDiskId** (str) - 卸载的UDisk实例ID + - **UHostId** (str) - 卸载的UHost实例ID。【即将废弃,建议使用HostId】 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DetachUDiskRequestSchema().dumps(d) + + resp = self.invoke("DetachUDisk", d, **kwargs) + return apis.DetachUDiskResponseSchema().loads(resp)
+ +
[docs] def recover_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RecoverUDisk - 从回收站中恢复云硬盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 云硬盘资源ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic 默认: Dynamic + - **Quantity** (int) - 购买时长 默认: 1 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RecoverUDiskRequestSchema().dumps(d) + + resp = self.invoke("RecoverUDisk", d, **kwargs) + return apis.RecoverUDiskResponseSchema().loads(resp)
+ +
[docs] def rename_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """RenameUDisk - 重命名UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 重命名的UDisk的Id + - **UDiskName** (str) - (Required) 重命名UDisk的name + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RenameUDiskRequestSchema().dumps(d) + + resp = self.invoke("RenameUDisk", d, **kwargs) + return apis.RenameUDiskResponseSchema().loads(resp)
+ +
[docs] def resize_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ResizeUDisk - 调整UDisk容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 调整后大小, 单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000]。 + - **UDiskId** (str) - (Required) UDisk Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CouponId** (str) - 使用的代金券id + - **MachineType** (str) - 云主机机型(V2.0),枚举值["N", "C", "G", "O", "OM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeUDiskRequestSchema().dumps(d) + + resp = self.invoke("ResizeUDisk", d, **kwargs) + return apis.ResizeUDiskResponseSchema().loads(resp)
+ +
[docs] def restore_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestoreUDisk - 从备份恢复数据至UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要恢复的盘ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SnapshotId** (str) - 从指定的快照恢复 + - **SnapshotTime** (int) - 指定从方舟恢复的备份时间点 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestoreUDiskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("RestoreUDisk", d, **kwargs) + return apis.RestoreUDiskResponseSchema().loads(resp)
+ +
[docs] def set_udisk_udataark_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetUDiskUDataArkMode - 设置UDisk数据方舟的状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UDiskId** (str) - (Required) 需要设置数据方舟的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CouponId** (str) - 使用的代金券id + - **UDataArkMode** (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetUDiskUDataArkModeRequestSchema().dumps(d) + + resp = self.invoke("SetUDiskUDataArkMode", d, **kwargs) + return apis.SetUDiskUDataArkModeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/udpn/client.html b/_modules/ucloud/services/udpn/client.html new file mode 100644 index 00000000..2aa7215d --- /dev/null +++ b/_modules/ucloud/services/udpn/client.html @@ -0,0 +1,346 @@ + + + + + + + + ucloud.services.udpn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udpn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udpn.schemas import apis
+
+
+
[docs]class UDPNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDPNClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_udpn( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AllocateUDPN - 分配一条 UDPN 专线 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Bandwidth** (int) - (Required) 带宽 + - **Peer1** (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-ca, 华盛顿:us-ws, 东京:jpn-tky + - **Peer2** (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-ca, 华盛顿:us-ws, 东京:jpn-tky + - **ChargeType** (str) - 计费类型,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费 + - **CouponId** (str) - 代金劵 + - **PayMode** (str) - 计费模式. 枚举值:"Traffic", 流量计费模式; 否则 带宽计费模式; + - **Quantity** (int) - 计费时长,默认 1 + + **Response** + + - **Action** (str) - 操作名称 + - **RetCode** (int) - 返回码 + - **UDPNId** (str) - 资源名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateUDPNRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateUDPN", d, **kwargs) + return apis.AllocateUDPNResponseSchema().loads(resp)
+ +
[docs] def describe_udpn( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDPN - 描述 UDPN + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 返回数据长度,默认为 20 + - **Offset** (int) - 列表起始位置偏移量,默认为 0 + - **UDPNId** (str) - 申请到的 UDPN 资源 ID。若为空,则查询该用户在机房所有的专线信息。非默认项目资源,需填写ProjectId + + **Response** + + - **DataSet** (list) - 见 **UDPNData** 模型定义 + - **TotalCount** (int) - 查询到的总数量 + + **Response Model** + + **UDPNData** + - **Bandwidth** (int) - 带宽 + - **ChargeType** (str) - 计费类型 + - **CreateTime** (int) - unix 时间戳 创建时间 + - **ExpireTime** (int) - unix 时间戳 到期时间 + - **Peer1** (str) - 可用区域 1 + - **Peer2** (str) - 可用区域 2 + - **UDPNId** (str) - UDPN 资源短 ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDPNRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDPN", d, **kwargs) + return apis.DescribeUDPNResponseSchema().loads(resp)
+ +
[docs] def get_udpn_line_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDPNLineList - 获取当前支持的专线线路列表 + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDPNLineSet** 模型定义 + - **TotalCount** (int) - DataSet中的元素个数 + + **Response Model** + + **UDPNLineSet** + - **BandwidthUpperLimit** (int) - 线路带宽上限,单位 M + - **LocalRegion** (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky + - **RemoteRegion** (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUDPNLineListRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNLineList", d, **kwargs) + return apis.GetUDPNLineListResponseSchema().loads(resp)
+ +
[docs] def get_udpn_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDPNPrice - 获取 UDPN 价格 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽信息 + - **Peer1** (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **Peer2** (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **ChargeType** (str) - 计费类型 + - **PayMode** (str) - PayMode,枚举值,Bandwidth:带宽;Traffic:流量 默认不填写:带宽 + - **Quantity** (int) - 购买时长 + + **Response** + + - **Price** (float) - 专线价格 + - **PurchaseValue** (int) - 资源有效期 unix 时间戳 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUDPNPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNPrice", d, **kwargs) + return apis.GetUDPNPriceResponseSchema().loads(resp)
+ +
[docs] def get_udpn_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDPNUpgradePrice - 获取专线升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽 + - **UDPNId** (str) - (Required) 专线带宽资源 Id + + **Response** + + - **Price** (float) - 升级后的价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUDPNUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNUpgradePrice", d, **kwargs) + return apis.GetUDPNUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def modify_udpn_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUDPNBandwidth - 修改带宽值 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) + - **Bandwidth** (int) - (Required) 调整后专线带宽, 单位为Mbps,取值范围为大于等于2且小于等于1000([2-1000])的整数 + - **UDPNId** (str) - (Required) UDPN Id + - **CouponId** (str) - 代金劵 ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUDPNBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDPNBandwidth", d, **kwargs) + return apis.ModifyUDPNBandwidthResponseSchema().loads(resp)
+ +
[docs] def release_udpn(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ReleaseUDPN - 释放 UDPN + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDPNId** (str) - (Required) UDPN 资源 Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseUDPNRequestSchema().dumps(d) + + resp = self.invoke("ReleaseUDPN", d, **kwargs) + return apis.ReleaseUDPNResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/udts/client.html b/_modules/ucloud/services/udts/client.html new file mode 100644 index 00000000..4af84038 --- /dev/null +++ b/_modules/ucloud/services/udts/client.html @@ -0,0 +1,516 @@ + + + + + + + + ucloud.services.udts.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udts.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udts.schemas import apis
+
+
+
[docs]class UDTSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDTSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def check_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUDTSTask - 对UDTS 任务提供预检查功能 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **MaxRetryCount** (str) - (Required) 重试次数,最大为 5。 默认为0 + - **Name** (str) - (Required) task 名称,长度不能超过 128 + - **Type** (str) - (Required) 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。 + - **Query** (str) - 废弃 + - **Source** (list) - 见 **CheckUDTSTaskParamSource** 模型定义 + - **Target** (dict) - 见 **CheckUDTSTaskParamTarget** 模型定义 + + **Response** + + - **Action** (str) - 操作名称 + - **Data** (dict) - 见 **CheckUDTSTaskResult** 模型定义 + - **Message** (str) - 返回消息 + - **RetCode** (str) - 返回码 + + **Request Model** + + **CheckUDTSTaskParamSourceMySQLNodeSyncData** + - **BinlogGTID** (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogName** (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogPos** (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **ServerID** (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值 + + + **CheckUDTSTaskParamSourceMySQLNodeQueryData** + - **DBName** (str) - 数据集成时需要迁移的 DB 名 + - **NewDBName** (str) - 数据集成时迁移后的 DB 名 + + + **CheckUDTSTaskParamTargetMySQLNode** + - **DataRegion** (str) - 目标数据库地域,比如 cn-bj2 + - **Host** (str) - 目标数据库地址, 比如 10.9.37.212 + - **Password** (str) - 目标数据库密码 + - **Port** (int) - 目标数据库端口,比如 3306 + - **SubnetId** (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq + - **User** (str) - 目标数据库用户名,比如 root + - **VPCId** (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte + + + **CheckUDTSTaskParamSourceMySQLNode** + - **DataRegion** (str) - 数据库地域,比如 cn-bj2 + - **Database** (str) - 需要迁移的 DB 名称 + - **Host** (str) - 源数据库地址, 比如 10.9.37.200 + - **Password** (str) - 源 MySQL 密码 + - **Port** (int) - 源 MySQL 端口,如 3306 + - **QueryData** (list) - 见 **CheckUDTSTaskParamSourceMySQLNodeQueryData** 模型定义 + - **SubnetId** (str) - 子网 ID + - **SyncData** (dict) - 见 **CheckUDTSTaskParamSourceMySQLNodeSyncData** 模型定义 + - **Table** (str) - 需要迁移的 table 名 + - **User** (str) - 源 MySQL 用户名,如 root + - **VPCId** (str) - VPC + + + **CheckUDTSTaskParamTarget** + - **DataType** (str) - 目标数据库类型,比如 mysql + - **MySQLNode** (dict) - 见 **CheckUDTSTaskParamTargetMySQLNode** 模型定义 + - **NWType** (str) - 目标 db 网络类型,目前进支持 user + + + **CheckUDTSTaskParamSource** + - **DataType** (str) - 数据库类型 + - **Mode** (str) - // 任务类型,值可以是 full, incremental, full+incremental, bidirectional + - **MySQLNode** (dict) - 见 **CheckUDTSTaskParamSourceMySQLNode** 模型定义 + - **NWType** (str) - 源网络类型,可以是 public,user,dedicated_line + + + **Response Model** + + **CheckResultItem** + - **ErrMessage** (str) - + - **State** (str) - 状态 + + + **CheckResult** + - **Config** (dict) - 见 **CheckResultItem** 模型定义 + - **Connection** (dict) - 见 **CheckResultItem** 模型定义 + - **Privileges** (dict) - 见 **CheckResultItem** 模型定义 + + + **CheckUDTSTaskResult** + - **Source** (dict) - 见 **CheckResult** 模型定义 + - **Target** (dict) - 见 **CheckResult** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CheckUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("CheckUDTSTask", d, **kwargs) + return apis.CheckUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def create_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDTSTask - 创建UDTS任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) task 名称,长度不能超过 128 + - **Type** (str) - (Required) 任务类型,transfer(数据传输) 或 integration(数据集成) + - **IsUnidirection** (str) - 暂时未使用该字段 + - **MaxRetryCount** (str) - 重试次数,最大为 5。 默认为0 + - **Query** (str) - 暂时未使用该字段 + - **Remark** (str) - 备注信息,长度不能大于 255 + - **Source** (list) - 见 **CreateUDTSTaskParamSource** 模型定义 + - **Target** (dict) - 见 **CreateUDTSTaskParamTarget** 模型定义 + + **Response** + + - **Data** (dict) - + - **Message** (str) - 返回消息 + + **Request Model** + + **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData** + - **ExcludeTables** (bool) - 暂时未使用该字段 + - **TableNames** (str) - 暂时未使用该字段 + + + **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps** + - **NewTableName** (str) - 数据集成时迁移后的 Table 名 + - **TableName** (str) - 数据集成时需要迁移的 Table 名 + + + **CreateUDTSTaskParamSourceMySQLNodeSyncData** + - **BinlogGTID** (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogName** (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogPos** (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **ServerID** (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值 + + + **CreateUDTSTaskParamSourceMySQLNodeQueryData** + - **DBName** (str) - 数据集成时需要迁移的 DB 名 + - **NewDBName** (str) - 数据集成时迁移后的 DB 名 + - **TableData** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData** 模型定义 + - **TableMaps** (list) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps** 模型定义 + + + **CreateUDTSTaskParamSourceMySQLNode** + - **DataRegion** (str) - 数据库地域,比如 cn-bj2 + - **Database** (str) - 需要迁移的 DB 名称 + - **DupAction** (str) - 重复数据处理规则,数据集成时该参数才有效,值为 ignore或者replace + - **Host** (str) - 源数据库地址 + - **KeepExistData** (bool) - 是否保留原有数据,只有数据集成时该参数才有效 + - **Password** (str) - 源数据库密码 + - **Port** (int) - 源数据库端口 + - **QueryData** (list) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryData** 模型定义 + - **SubnetId** (str) - 源数据库子网 ID,当网络类型为 user 时需要填写 + - **SyncData** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNodeSyncData** 模型定义 + - **Table** (str) - 需要迁移的 table 名 + - **User** (str) - 源数据库用户名 + - **VPCId** (str) - 源数据库 VPC ID,当网络类型为 user 时需要填写 + + + **CreateUDTSTaskParamTargetMySQLNode** + - **DataRegion** (str) - 目标数据库地域,比如 cn-bj2 + - **Host** (str) - 目标数据库地址, 比如 10.9.37.212 + - **NoBinlog** (bool) - 是否在全量过程中,临时禁用目标 MySQL 产生 binlog,在目标磁盘空间不足,或者需要获取更快的迁移速度时可以使用,该参数会破坏目标 MySQL 的高可用 + - **Password** (str) - 目标数据库密码 + - **Port** (int) - 目标数据库端口,比如 3306 + - **SubnetId** (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq + - **User** (str) - 目标数据库用户名,比如 root + - **VPCId** (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte + + + **CreateUDTSTaskParamSource** + - **BandwidthLimit** (int) - 源端限速值,单位为 MB/s + - **DataType** (str) - 数据库类型,比如 mysql + - **Mode** (str) - 任务类型,值可以是 full, incremental, full+incremental, bidirectional + - **MySQLNode** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNode** 模型定义 + - **NWType** (str) - 源网络类型,可以是 public,user,dedicated_line + + + **CreateUDTSTaskParamTarget** + - **BandwidthLimit** (str) - 目标端限速,单位为 MB/s + - **DataType** (str) - 目标数据库类型,比如 mysql + - **Mode** (str) - + - **MySQLNode** (dict) - 见 **CreateUDTSTaskParamTargetMySQLNode** 模型定义 + - **NWType** (str) - 目标 db 网络类型,目前仅支持 user + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUDTSTaskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDTSTask", d, **kwargs) + return apis.CreateUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def get_udts_task_history( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDTSTaskHistory - 获取任务历史状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **TaskId** (str) - (Required) 任务短 id + - **Type** (str) - 任务类型 + + **Response** + + - **Data** (list) - 见 **TaskHistoryItem** 模型定义 + + **Response Model** + + **TaskHistoryItem** + - **AntID** (str) - 任务 ID + - **AntState** (str) - 任务状态 + - **CreateTime** (int) - 事件时间,值为 timestamp + - **CreateTimeH** (str) - 事件时间,为可读的日期时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUDTSTaskHistoryRequestSchema().dumps(d) + + resp = self.invoke("GetUDTSTaskHistory", d, **kwargs) + return apis.GetUDTSTaskHistoryResponseSchema().loads(resp)
+ +
[docs] def get_udts_task_status( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDTSTaskStatus - 查看服务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **TaskId** (str) - (Required) 任务ID + - **Type** (str) - 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。 + + **Response** + + - **Data** (dict) - 见 **StatusData** 模型定义 + - **Message** (str) - 返回信息 + + **Response Model** + + **SyncData** + - **BinlogGTID** (str) - GTID + - **BinlogName** (str) - Binlog 文件名, 长度不超过128字符 + - **BinlogPos** (int) - Binlog Pos + - **ServerId** (int) - 分配给UDTS task的server ID, 必须在MySQL集群中唯一 + + + **Progress** + - **CurCount** (int) - 已迁移条目数 + - **CurDuration** (int) - 已耗时间(单位秒) + - **Percentage** (float) - 完成进度 + - **TotalCount** (int) - 总条目数 + - **TotalDuration** (int) - 估算总耗时间(单位秒) + + + **StatusData** + - **CurRetryCount** (int) - 当前失败重试次数 + - **FailedMessage** (str) - 当Status为Failed时, 显示失败原因 + - **MaxRetryCount** (int) - 用户设置的最大失败重试次数 + - **Progress** (dict) - 见 **Progress** 模型定义 + - **Status** (str) - 任务状态, 状态有 Created:已创建,Checking:检查中,Dumping:转储中,Loading:加载中,Syncing:同步中,Synced:已同步,Done:完成,Failed:失败,Stopping:停止中,Stopped:停止,RetryPending:重试等待中,Starting:启动中,FailedUnrecoverable:异常,StoppedUnrecoverable:异常,Success:成功,Started:已启动 + - **Sync** (dict) - 见 **SyncData** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUDTSTaskStatusRequestSchema().dumps(d) + + resp = self.invoke("GetUDTSTaskStatus", d, **kwargs) + return apis.GetUDTSTaskStatusResponseSchema().loads(resp)
+ +
[docs] def list_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUDTSTask - 获取用户创建的 Task 信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (str) - 请求数量,默认为 20 + - **Offset** (str) - 偏移量,默认为 0 + - **Type** (str) - 任务类型 + + **Response** + + - **Data** (list) - 见 **ListDataItem** 模型定义 + - **Message** (str) - 返回信息 + + **Response Model** + + **Progress** + - **CurCount** (int) - 已迁移条目数 + - **CurDuration** (int) - 已耗时间(单位秒) + - **Percentage** (float) - 完成进度 + - **TotalCount** (int) - 总条目数 + - **TotalDuration** (int) - 估算总耗时间(单位秒) + + + **ListDataItem** + - **CreateTime** (int) - 创建时间 + - **CurRetryCount** (int) - 当前失败重试次数 + - **MaxRetryCount** (int) - 最大失败重试次数 + - **Name** (str) - 任务名称 + - **Progress** (dict) - 见 **Progress** 模型定义 + - **Status** (str) - 任务状态 + - **TaskId** (str) - 任务 ID + - **Type** (str) - 任务类型, full全量, incremental增量,full+incremental全量+增量。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ListUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("ListUDTSTask", d, **kwargs) + return apis.ListUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def start_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUDTSTask - 启动UDTS服务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TaskId** (str) - (Required) 任务ID + - **Type** (str) - 任务类型 + + **Response** + + - **Message** (str) - 返回信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StartUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("StartUDTSTask", d, **kwargs) + return apis.StartUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def stop_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUDTSTask - 停止UDTS任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TaskId** (str) - (Required) 任务 ID + - **Type** (str) - 任务类型 + + **Response** + + - **Message** (str) - 返回信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StopUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("StopUDTSTask", d, **kwargs) + return apis.StopUDTSTaskResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uec/client.html b/_modules/ucloud/services/uec/client.html new file mode 100644 index 00000000..7187d2eb --- /dev/null +++ b/_modules/ucloud/services/uec/client.html @@ -0,0 +1,1616 @@ + + + + + + + + ucloud.services.uec.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uec.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uec.schemas import apis
+
+
+
[docs]class UECClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UECClient, self).__init__(config, transport, middleware, logger) + +
[docs] def bind_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindUEcFirewall - 绑定防火墙,应用防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **ResourceId** (str) - (Required) 虚拟机资源Id或容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.BindUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("BindUEcFirewall", d, **kwargs) + return apis.BindUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcCustomImage - 从指定虚拟机,生成自定义镜像。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **NodeId** (str) - (Required) 虚拟机实例ID + - **ImageDescription** (str) - 镜像描述 + + **Response** + + - **ImageId** (str) - 镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcCustomImage", d, **kwargs) + return apis.CreateUEcCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcFirewall - 创建外网防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 防火墙名称 + - **Remark** (str) - 描述 + - **Rule** (list) - 见 **CreateUEcFirewallParamRule** 模型定义 + + **Response** + + - **FirewallId** (str) - 防火墙Id + + **Request Model** + + **CreateUEcFirewallParamRule** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcFirewallRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcFirewall", d, **kwargs) + return apis.CreateUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcHolder - 创建容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CpuCore** (float) - (Required) 容器组Cpu总核数 + - **IdcId** (str) - (Required) 机房id + - **MemSize** (int) - (Required) 容器组总内存,单位MB + - **SubnetId** (str) - (Required) 子网ID + - **Bandwidth** (int) - 外网绑定的带宽(单位M,默认0,只有当ElasticIp为yes时,默认1) + - **ChargeQuantity** (int) - 月数或者年数(默认值:1,当为按月计费时,0表示计费到月底,默认值为0) + - **ChargeType** (int) - 付费方式(2按月、3按年。默认2,默认月付) + - **ElasticIp** (str) - 绑定外网ip(yes-绑定,no-不绑定,默认no) + - **FirewallId** (str) - 防火墙ID + - **Image** (list) - 见 **CreateUEcHolderParamImage** 模型定义 + - **Name** (str) - 容器组名称(默认default) + - **Pack** (list) - 见 **CreateUEcHolderParamPack** 模型定义 + - **ProductType** (str) - 机型(normal-经济型,hf-标准型,默认normal) + - **RestartStrategy** (int) - 重启策略(0总是,1失败是,2永不,默认0) + - **Storage** (list) - 见 **CreateUEcHolderParamStorage** 模型定义 + + **Response** + + - **ResourceId** (str) - 容器组资源id + + **Request Model** + + **CreateUEcHolderParamImage** + - **Message** (str) - 镜像用户名和密码(如镜像名:密码) + - **StoreAddress** (str) - 镜像仓库地址 + + + **CreateUEcHolderParamPack** + - **Args** (str) - 容器参数(多个用;隔开) + - **Cmd** (str) - 开启容器的命令 + - **ConfigDict** (str) - 容器配置字典(多个用;隔开,如:/data1:resId1;/data2:resId2) + - **CpuCore** (float) - 容器Cpu核数 + - **Environment** (str) - 容器环境变量(多个用;隔开,如:key1:value1;key2:value2) + - **ImageName** (str) - 容器镜像名称 + - **MemSize** (int) - 容器内存,单位MB + - **Name** (str) - 容器名称 + - **WorkDir** (str) - 容器工作目录 + + + **CreateUEcHolderParamStorage** + - **Path** (str) - 存储卷挂载路径 + - **ResourceId** (str) - 存储卷资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcHolderRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcHolder", d, **kwargs) + return apis.CreateUEcHolderResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcSubnet - 创建子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CIDR** (str) - (Required) 子网cidr + - **IdcId** (str) - (Required) 机房ID + - **Comment** (str) - 备注 + - **SubnetName** (str) - 子网名称 + + **Response** + + - **SubnetId** (str) - 子网ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcSubnetRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcSubnet", d, **kwargs) + return apis.CreateUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcVHost - 创建虚拟机v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CpuCore** (int) - (Required) cpu核心数 + - **DiskSize** (int) - (Required) 数据盘大小,单位GB + - **IdcId** (str) - (Required) 机房id + - **ImageId** (str) - (Required) 镜像ID + - **MemSize** (int) - (Required) 内存大小,单位GB + - **NetLimit** (int) - (Required) 节点带宽限制,单位Mbs + - **AccountName** (str) - 账户名,默认root + - **ChargeQuantity** (int) - 月数或者年数,0计费到月底, 默认0 + - **ChargeType** (int) - 付费方式,1按时,2按月,3按年,默认2 + - **FirewallId** (str) - 外网防护墙规则组,默认 + - **Gpu** (int) - Gpu卡核心数。仅Gpu机型支持此字段 + - **GpuType** (str) - Gpu类型,枚举值["T4S"],ProductType为G时必填 + - **IsNeedOuterIp** (str) - 是否需要外网ip(no-否) + - **Isp** (list) - 运营商(1-电信,2-联通,4移动) + - **NodeCount** (int) - 创建节点数量,默认1 + - **NodeName** (str) - 节点名称 + - **PassWord** (str) - 密码 + - **ProductType** (str) - 产品类型:normal(经济型),hf(标准型),g(Gpu型) + - **SubnetId** (str) - 子网ID + - **SysDiskSize** (int) - 系统盘大小,单位GB, 默认20GB + + **Response** + + - **NodeList** (list) - 见 **NodeList** 模型定义 + + **Response Model** + + **NodeList** + - **NodeId** (str) - 虚拟机资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcVHostRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcVHost", d, **kwargs) + return apis.CreateUEcVHostResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcCustomImage - 删除UEDN客户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **IdcId** (str) - 机房ID,带机房ID表示只删除指定机房镜像 + + **Response** + + - **ImageId** (int) - 镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcCustomImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcCustomImage", d, **kwargs) + return apis.DeleteUEcCustomImageResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcHolder - 删除容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **HolderId** (list) - (Required) 容器组资源id,n为0,1,2... + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcHolder", d, **kwargs) + return apis.DeleteUEcHolderResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcSubnet - 删除子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcSubnet", d, **kwargs) + return apis.DeleteUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcVHost - 删除vhost虚拟机 v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcVHost", d, **kwargs) + return apis.DeleteUEcVHostResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcFirewall - 获取防火墙信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - 防火墙ID,默认为返回所有防火墙 + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceId** (str) - 绑定防火墙组的虚拟机资源ID + + **Response** + + - **FirewallSet** (list) - 见 **FirewallInfo** 模型定义 + - **TotalCount** (int) - 满足条件的节点总数 + + **Response Model** + + **FirewallInfo** + - **CreateTime** (int) - 创建时间 + - **FirewallId** (str) - 防火墙Id + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 描述 + - **ResourceCount** (int) - 防火墙绑定资源数量 + - **Rule** (list) - 见 **RuleInfo** 模型定义 + - **Type** (str) - 防火墙组类型,枚举值为: "user defined", 用户自定义防火墙; "recommend web", 默认Web防火墙; "recommend non web", 默认非Web防火墙 + + + **RuleInfo** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcFirewall", d, **kwargs) + return apis.DescribeUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_firewall_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcFirewallResource - 防火墙绑定的资源列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + + **Response** + + - **ResourceSet** (list) - 见 **ResourceInfo** 模型定义 + - **TotalCount** (int) - 资源总数 + + **Response Model** + + **ResourceInfo** + - **Name** (str) - 节点名称 + - **PublicIpList** (list) - 节点公网Ip列表 + - **Remark** (str) - 节点备注 + - **ResourceId** (str) - 资源Id + - **State** (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcFirewallResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcFirewallResource", d, **kwargs) + return apis.DescribeUEcFirewallResourceResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcHolder - 获得容器组信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **HolderId** (list) - 容器组资源id + - **Limit** (int) - 返回数据长度,默认为20,非负整数 + - **Offset** (int) - 列表起始位置偏移量,默认为0。非负整数 + + **Response** + + - **HolderList** (list) - 见 **HolderList** 模型定义 + - **TotalCount** (int) - 满足条件的容器组总数 + + **Response Model** + + **HolderList** + - **City** (str) - 城市名称 + - **CreateTime** (int) - 创建时间 + - **DockerCount** (int) - 容器数量 + - **DockerInfo** (list) - 见 **DockerInfo** 模型定义 + - **ExpireTime** (int) - 过期时间 + - **FirewallId** (str) - 外网防火墙id + - **HolderName** (str) - 容器组名称 + - **IdcId** (str) - 机房id + - **ImageList** (list) - 见 **ImageList** 模型定义 + - **InnerIp** (str) - 容器组内网ip + - **IpList** (list) - 见 **IpList** 模型定义 + - **NetLimit** (int) - 外网绑定的带宽 + - **OcName** (str) - 机房名称 + - **ProductType** (str) - 机器类型(normal经济型,hf标准型) + - **Province** (str) - 省份名称 + - **ResourceId** (str) - 容器组资源id + - **RestartStrategy** (int) - 0:总是;1:失败是;2:永不 + - **State** (int) - 容器组运行状态0:初始化;1:拉取镜像;2:启动中;3:运行中;4:错误;5:正在重启;6:正在删除;7:已经删除;8:容器运行错误;9:启动失败;99:异常 + - **StorVolumeCount** (int) - 存储卷数量 + - **StorVolumeInfo** (list) - 见 **StorVolumeInfo** 模型定义 + - **SubnetId** (str) - 容器组子网id + - **Type** (int) - 线路类型(运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通) + + + **DockerInfo** + - **Args** (str) - 参数 + - **CfgDictList** (list) - 见 **CfgDictList** 模型定义 + - **Command** (str) - 命令 + - **CpuCores** (float) - CPU核数(/核)精度0.1核 + - **EnvList** (list) - 见 **EnvList** 模型定义 + - **ImageName** (str) - 镜像名称 + - **MemSize** (float) - 内存大小(Gi) + - **Name** (str) - 容器名称 + - **State** (int) - 容器状态,0:初始化;1:拉取镜像;2:拉取镜像失败;3:启动中;4:运行中;5:正在停止;6:已停止;7:已删除;8:镜像拉取成功;9:启动失败;99:异常 + - **WorkDir** (str) - 工作目录 + + + **CfgDictList** + - **MountPath** (str) - 挂载路径 + - **Name** (str) - 名称 + - **ResourceId** (str) - 资源id + + + **EnvList** + - **Key** (str) - 环境变量key值 + - **Value** (str) - 环境变量Value值 + + + **ImageList** + - **ImageKey** (str) - 镜像密钥 + - **StoreAddr** (str) - 仓库地址 + - **UserName** (str) - 用户名称 + + + **IpList** + - **Ip** (str) - 外网ip + - **Isp** (str) - 运营商 + + + **StorVolumeInfo** + - **DiskSize** (int) - 容量(单位GB) + - **MountPoint** (str) - 挂载点 + - **Name** (str) - 名称 + - **ResourceId** (str) - 资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcHolder", d, **kwargs) + return apis.DescribeUEcHolderResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_holder_idc( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcHolderIDC - 获取容器组机房信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Cpu** (float) - (Required) 容器组Cpu核数 + - **Memory** (int) - (Required) 容器组内存大小(单位MB) + - **IdcId** (list) - Idc机房id。默认全部机房 + - **ProductType** (str) - 产品类型,normal标准型,hf高性能型 + - **Type** (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + **Response** + + - **IdcList** (list) - 见 **IdcInfo** 模型定义 + + **Response Model** + + **IdcInfo** + - **City** (str) - 城市 + - **IdcId** (str) - 机房ID + - **Isp** (str) - 运营商 + - **MaxNodeCnt** (int) - 机房可创建节点最大数量 + - **Name** (str) - 机房名称 + - **Province** (str) - 省份 + - **Type** (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcHolderIDCRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcHolderIDC", d, **kwargs) + return apis.DescribeUEcHolderIDCResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_idc( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcIDC - 获取IDC机房列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Cpu** (int) - (Required) 节点cpu核数 + - **Memory** (int) - (Required) 节点内存大小, 单位GB + - **Gpu** (int) - Gpu卡核心数 + - **IdcId** (list) - Idc机房id。默认全部机房 + - **ProductType** (str) - 产品类型:normal(经济型),hf(标准型),g(GPU型) + - **Type** (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + **Response** + + - **Action** (str) - 操作名称 + - **IdcList** (list) - 见 **IdcInfo** 模型定义 + - **RetCode** (int) - 返回码 + + **Response Model** + + **IdcInfo** + - **City** (str) - 城市 + - **IdcId** (str) - 机房ID + - **Isp** (str) - 运营商 + - **MaxNodeCnt** (int) - 机房可创建节点最大数量 + - **Name** (str) - 机房名称 + - **Province** (str) - 省份 + - **Type** (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcIDCRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcIDC", d, **kwargs) + return apis.DescribeUEcIDCResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcSubnet - 获取子网列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **IdcId** (str) - 机房ID + - **SubnetId** (str) - 子网ID + + **Response** + + - **SubnetList** (list) - 见 **SubnetInfo** 模型定义 + + **Response Model** + + **SubnetInfo** + - **AvailableIPCnt** (int) - 可用ip数 + - **CIDR** (str) - 子网cidr + - **Comment** (str) - 备注 + - **CreateTime** (int) - 创建时间 + - **IdcId** (str) - 机房ID + - **SubnetId** (str) - 子网ID + - **SubnetName** (str) - 子网名称 + - **TotalIpCnt** (int) - 总ip数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcSubnet", d, **kwargs) + return apis.DescribeUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcVHost - 获取虚拟机列表 2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **IdcId** (list) - Idc机房id。默认全部机房 + - **Limit** (int) - 返回数据长度, 默认20,非负整数 + - **NodeId** (list) - 节点id,创建节点时生成的id。默认全部节点 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **NodeList** (list) - 见 **NodeInfo** 模型定义 + - **TotalCount** (int) - 满足条件的节点总数 + + **Response Model** + + **NodeInfo** + - **ChargeType** (int) - 付费类型:1按时, 2按月,3按年 + - **City** (str) - 城市 + - **CoreNum** (int) - Cpu核数 + - **CreateTime** (int) - 创建时间 + - **DiskSize** (int) - 数据盘大小, 单位GB + - **ExpiredTime** (int) - 过期时间 + - **FirewallId** (str) - 防火墙Id + - **IdcId** (str) - 机房ID + - **ImageName** (str) - 镜像名称 + - **InnerIps** (list) - 内网ip列表 + - **MemSize** (int) - 节点内存大小,单位GB + - **NetLimit** (int) - 节点带宽限制, 单位Mbs + - **NodeId** (str) - 节点ID + - **NodeIpList** (list) - 见 **NodeIpList** 模型定义 + - **NodeName** (str) - 节点名称 + - **OcName** (str) - 机房名称 + - **ProductType** (str) - 机器类型(normal-经济型,hf-标准型,g-GPU型) + - **Province** (str) - 省份 + - **State** (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常 + - **SysDiskSize** (int) - 系统盘大小, 单位GB + - **Type** (int) - 运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + **NodeIpList** + - **Ip** (str) - 外网ip + - **Isp** (str) - 运营商 + - **IspName** (str) - 运营商名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcVHost", d, **kwargs) + return apis.DescribeUEcVHostResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_v_host_isp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcVHostISP - 获取虚拟机运营商信息 + + **Request** + + - **City** (str) - 城市 + - **IspName** (str) - 运营商名称 + - **Province** (str) - 省份 + + **Response** + + - **NodeIspList** (list) - 见 **NodeIspList** 模型定义 + + **Response Model** + + **NodeIspList** + - **City** (str) - 城市 + - **IdcName** (str) - 机房名称 + - **IspName** (str) - 机房运营商名称 + - **LineType** (str) - 线路类型 + - **Province** (str) - 省份 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeUEcVHostISPRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcVHostISP", d, **kwargs) + return apis.DescribeUEcVHostISPResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_holder_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcHolderLog - 获取单个容器日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **PackName** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + - **Data** (str) - 返回的日志数据 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcHolderLogRequestSchema().dumps(d) + + resp = self.invoke("GetUEcHolderLog", d, **kwargs) + return apis.GetUEcHolderLogResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_holder_metrics( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcHolderMetrics - 获取容器(CPU利用率,带宽,内存)数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **PackName** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + - **Type** (list) - (Required) n为0 CPU利用率, 1内存使用率, 2网卡出带宽, 3网卡入带宽, 4网卡出包数, 5网卡入包数 + - **EndTime** (int) - 结束时间 + - **StartTime** (int) - 开始时间 + + **Response** + + - **DataSets** (dict) - 见 **MetricisDataSet** 模型定义 + + **Response Model** + + **MetricisDataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcHolderMetricsRequestSchema().dumps(d) + + resp = self.invoke("GetUEcHolderMetrics", d, **kwargs) + return apis.GetUEcHolderMetricsResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_idc_cut_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcIDCCutInfo - 获取机房割接信息 + + **Request** + + + **Response** + + - **IDCCutInfo** (list) - 见 **IDCCutInfo** 模型定义 + - **TotalCount** (int) - 满足条件的机房总数 + + **Response Model** + + **IDCCutInfo** + - **City** (str) - 城市 + - **CutType** (str) - 割接类型(中断、抖动、断电) + - **EndTime** (int) - 割接结束时间 + - **IDCName** (str) - 机房名称 + - **Province** (str) - 省份 + - **ResourceSet** (list) - 见 **ResourceSet** 模型定义 + - **StartTime** (int) - 割接开始时间 + + + **ResourceSet** + - **NodeId** (str) - 节点id + - **OuterIps** (list) - 机器外网ip集合 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcIDCCutInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUEcIDCCutInfo", d, **kwargs) + return apis.GetUEcIDCCutInfoResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_idcv_host_data( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcIDCVHostData - 获取机房虚拟机监控数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点资源id;n为0,1,2... + - **Type** (list) - (Required) 监控数据类型;n为0,1,2,3,4...,9 + - **BeginTime** (int) - 开始时间戳 + - **EndTime** (int) - 结束时间戳 + + **Response** + + - **DataSets** (dict) - 见 **DataSet** 模型定义 + + **Response Model** + + **DataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **DiskReadOps** (list) - 见 **MonitorInfo** 模型定义 + - **DiskWriteOps** (list) - 见 **MonitorInfo** 模型定义 + - **IORead** (list) - 见 **MonitorInfo** 模型定义 + - **IOWrite** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcIDCVHostDataRequestSchema().dumps(d) + + resp = self.invoke("GetUEcIDCVHostData", d, **kwargs) + return apis.GetUEcIDCVHostDataResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcImage - uec2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageType** (str) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像 + - **Limit** (int) - 返回数据长度, 默认20,非负整数 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **ImageList** (list) - 见 **ImageInfo** 模型定义 + - **TotalCount** (int) - 镜像总数 + + **Response Model** + + **ImageInfo** + - **CreateTime** (int) - 镜像创建时间戳 + - **DeployInfoList** (list) - 见 **DeployImageInfo** 模型定义 + - **Gpu** (int) - 是否支持Gpu(1-支持,0-不支持) + - **ImageDesc** (str) - 镜像描述 + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **ImageSize** (int) - 镜像大小,单位GB + - **ImageType** (int) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像 + - **OcType** (str) - 系统类型:unix, windows + - **State** (int) - 镜像状态:镜像状态 1可用,2不可用,3制作中 + + + **DeployImageInfo** + - **IdcId** (str) - 机房ID + - **State** (int) - 镜像状态 1-可用, 2-不可用, 3-获取中, 4-转换中, 5-部署中 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcImageRequestSchema().dumps(d) + + resp = self.invoke("GetUEcImage", d, **kwargs) + return apis.GetUEcImageResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_pod_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcPodPrice - 获得容器组价格 + + **Request** + + - **IdcId** (str) - (Required) 机房id + - **Bandwidth** (int) - 绑定的带宽,默认0,当绑定外网IP时默认1(单位M) + - **ChargeQuantity** (int) - 月数或年数(默认值:1,当支付类型为按月时,默认值为0) + - **ChargeType** (int) - 支付类型(2按月,3按年,默认2) + - **CpuCore** (float) - 容器组总Cpu核心数 + - **ElasticIp** (str) - 是否绑定外网IP(yes:是,no:否,默认:no) + - **MemSize** (int) - 容器组总内存大小(单位M) + - **ProductType** (str) - 产品类型(normal:标准型,hf:高性能型,默认:normal) + + **Response** + + - **HolderPrice** (float) - 容器组价格 + - **IpPrice** (float) - IP和带宽价格 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcPodPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcPodPrice", d, **kwargs) + return apis.GetUEcPodPriceResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcUpgradePrice - 获取虚拟机调整差价 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (str) - (Required) 虚拟机资源ID + - **CpuCore** (int) - cpu核心数 + - **DiskSize** (int) - 数据盘大小,单位GB + - **MemSize** (int) - 内存大小,单位GB + - **NetLimit** (int) - 节点带宽限制,单位Mbs + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + - **Price** (int) - 规格调整差价 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcUpgradePrice", d, **kwargs) + return apis.GetUEcUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_v_host_data( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcVHostData - 获取虚拟机监控数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (str) - (Required) 节点id + - **Type** (list) - (Required) 0CPU使用率, 1内存使用率, 2 网卡出流量, 3网卡入流量, 4网卡出包量, 5网卡入包量, 6磁盘读流量, 7磁盘写流量, 8磁盘读次数, 9磁盘写次数 + - **BeginTime** (int) - 查询起始时间 + - **EndTime** (int) - 查询结束时间 + + **Response** + + - **Action** (str) - 操作名称 + - **DataSets** (dict) - 见 **DataSet** 模型定义 + - **RetCode** (int) - 返回码 + + **Response Model** + + **DataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **DiskReadOps** (list) - 见 **MonitorInfo** 模型定义 + - **DiskWriteOps** (list) - 见 **MonitorInfo** 模型定义 + - **IORead** (list) - 见 **MonitorInfo** 模型定义 + - **IOWrite** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcVHostDataRequestSchema().dumps(d) + + resp = self.invoke("GetUEcVHostData", d, **kwargs) + return apis.GetUEcVHostDataResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_v_host_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcVHostPrice - 获取虚拟机价格 + + **Request** + + - **IdcId** (str) - (Required) 机房Id + - **ChargeQuantity** (int) - 月数或者年数,0计费到月底, 默认0 + - **ChargeType** (int) - 付费方式,1按时,2按月,3按年,默认2 + - **CpuCore** (int) - CPU核数 + - **DiskSize** (int) - 数据盘大小,单位GB + - **Gpu** (int) - Gpu卡核心数。仅Gpu机型支持此字段 + - **GpuType** (str) - Gpu类型,枚举值["T4"],ProductType为g时必填 + - **IpCount** (int) - 外网IP的数量,默认1 + - **MemSize** (int) - 内存大小,单位GB + - **NetLimit** (int) - 网络带宽限速,单位Mbs + - **NodeCount** (int) - 节点数量,默认1 + - **ProductType** (str) - 产品类型:normal(经济型),hf(标准型),g(Gpu型),默认normal + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + - **IpPrice** (float) - Ip和带宽价格 + - **NodePrice** (float) - 节点价格 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcVHostPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcVHostPrice", d, **kwargs) + return apis.GetUEcVHostPriceResponseSchema().loads(resp)
+ +
[docs] def import_u_ec_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ImportUEcCustomImage - 导入自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Format** (str) - 镜像格式,可选RAW、qcow2, 不带镜像ID时必填 + - **IdcId** (list) - 镜像需要导入机房,默认分发到所有机房 + - **ImageDesc** (str) - 镜像描述 + - **ImageId** (str) - 镜像Id,不传参表示新导入镜像,传参表示已有镜像分发到指定机房 + - **ImageName** (str) - 镜像名称,不带镜像ID时必填 + - **OsType** (str) - 操作系统平台,linux、windows(当前版本暂不支持windows),不带镜像ID时必填 + - **UFileUrl** (str) - UFile镜像文件下载地址,不带镜像ID时必填 + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ImportUEcCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ImportUEcCustomImage", d, **kwargs) + return apis.ImportUEcCustomImageResponseSchema().loads(resp)
+ +
[docs] def login_u_ec_docker( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """LoginUEcDocker - 登录容器 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + - **Link** (str) - 登录地址 + - **LinkPort** (int) - 登录端口 + - **SessionId** (str) - 返回的token + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.LoginUEcDockerRequestSchema().dumps(d) + + resp = self.invoke("LoginUEcDocker", d, **kwargs) + return apis.LoginUEcDockerResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcBandwidth - 修改节点带宽限制 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NetLimit** (str) - (Required) 节点带宽限制,单位Mbs + - **NodeId** (str) - (Required) 节点Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcBandwidth", d, **kwargs) + return apis.ModifyUEcBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_holder_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcHolderName - 修改容器组名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 容器组名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcHolderNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcHolderName", d, **kwargs) + return apis.ModifyUEcHolderNameResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_image_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcImageName - 修改镜像名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **ImageName** (str) - (Required) 镜像名称 + - **ImageDesc** (str) - 镜像描述 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcImageNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcImageName", d, **kwargs) + return apis.ModifyUEcImageNameResponseSchema().loads(resp)
+ +
[docs] def poweroff_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffUEcVHost - 虚拟机断电 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.PoweroffUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("PoweroffUEcVHost", d, **kwargs) + return apis.PoweroffUEcVHostResponseSchema().loads(resp)
+ +
[docs] def reinstall_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallUEcVHost - 虚拟机重装系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **NodeId** (str) - (Required) 虚拟机资源ID + - **KeepData** (int) - 是否保留数据盘数据, 0-不保留,1-保留,默认为1 + - **Password** (str) - 节点密码 + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ReinstallUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("ReinstallUEcVHost", d, **kwargs) + return apis.ReinstallUEcVHostResponseSchema().loads(resp)
+ +
[docs] def restart_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUEcHolder - 重启容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ResourceId** (list) - (Required) 容器组资源id,n为0,1,2... + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RestartUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("RestartUEcHolder", d, **kwargs) + return apis.RestartUEcHolderResponseSchema().loads(resp)
+ +
[docs] def restart_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUEcVHost - 重启虚拟机v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RestartUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("RestartUEcVHost", d, **kwargs) + return apis.RestartUEcVHostResponseSchema().loads(resp)
+ +
[docs] def start_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUEcVHost - 启动UEC虚拟机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StartUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("StartUEcVHost", d, **kwargs) + return apis.StartUEcVHostResponseSchema().loads(resp)
+ +
[docs] def stop_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUEcVHost - 停止UEC虚拟机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StopUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("StopUEcVHost", d, **kwargs) + return apis.StopUEcVHostResponseSchema().loads(resp)
+ +
[docs] def un_bind_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnBindUEcFirewall - 解绑防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **ResourceId** (str) - (Required) 节点Id或容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UnBindUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("UnBindUEcFirewall", d, **kwargs) + return apis.UnBindUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcFirewall - 更新防火墙信息,新增和删除规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **Rule** (list) - 见 **UpdateUEcFirewallParamRule** 模型定义 + + **Response** + + + **Request Model** + + **UpdateUEcFirewallParamRule** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcFirewall", d, **kwargs) + return apis.UpdateUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_firewall_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcFirewallAttribute - 更新防火墙名称及描述 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 描述 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcFirewallAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcFirewallAttribute", d, **kwargs) + return apis.UpdateUEcFirewallAttributeResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcSubnet - 更新子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SubnetId** (str) - (Required) 子网ID + - **Comment** (str) - 备注 + - **SubnetName** (str) - 子网名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcSubnet", d, **kwargs) + return apis.UpdateUEcSubnetResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ufile/client.html b/_modules/ucloud/services/ufile/client.html new file mode 100644 index 00000000..041aaf9a --- /dev/null +++ b/_modules/ucloud/services/ufile/client.html @@ -0,0 +1,611 @@ + + + + + + + + ucloud.services.ufile.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ufile.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ufile.schemas import apis
+
+
+
[docs]class UFileClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UFileClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateBucket - 创建Bucket + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BucketName** (str) - (Required) 待创建Bucket的名称,具有全局唯一性 + - **Type** (str) - Bucket访问类型,public或private; 默认为private + + **Response** + + - **BucketId** (str) - 已创建Bucket的ID + - **BucketName** (str) - 已创建Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateBucketRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateBucket", d, **kwargs) + return apis.CreateBucketResponseSchema().loads(resp)
+ +
[docs] def create_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUFileToken - 创建US3令牌 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenName** (str) - (Required) 令牌名称 + - **AllowedBuckets** (list) - 令牌允许操作的bucket,默认*表示全部 + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ]。默认TOKEN_ALLOW_NONE + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀,默认*表示全部 + - **ExpireTime** (int) - Unix 时间戳,精确到秒,为令牌过期时间点。默认过期时间为一天(即当前Unix时间戳+86400);注意:过期时间不能超过 4102416000 + + **Response** + + - **TokenId** (str) - 创建令牌的token_id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUFileTokenRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUFileToken", d, **kwargs) + return apis.CreateUFileTokenResponseSchema().loads(resp)
+ +
[docs] def delete_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteBucket - 删除Bucket + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BucketName** (str) - (Required) 待删除Bucket的名称 + + **Response** + + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteBucketRequestSchema().dumps(d) + + resp = self.invoke("DeleteBucket", d, **kwargs) + return apis.DeleteBucketResponseSchema().loads(resp)
+ +
[docs] def delete_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUFileToken - 删除令牌 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenId** (str) - (Required) 令牌ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("DeleteUFileToken", d, **kwargs) + return apis.DeleteUFileTokenResponseSchema().loads(resp)
+ +
[docs] def describe_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeBucket - 获取Bucket的描述信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 如果提供此参数,则获取相应地域下所有空间的空间名称(只返回空间名称信息) + - **BucketName** (str) - 待获取Bucket的名称,若不提供,则获取所有Bucket + - **Limit** (int) - 获取所有Bucket列表的限制数目,默认为20 + - **Offset** (int) - 获取所有Bucket列表的偏移数目,默认为0 + + **Response** + + - **DataSet** (list) - 见 **UFileBucketSet** 模型定义 + + **Response Model** + + **UFileBucketSet** + - **Biz** (str) - Bucket所属业务, general或vod或udb general: 普通业务; vod: 视频云业务; udb: 云数据库业务 + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket名称 + - **CdnDomainId** (list) - 与Bucket关联的CND加速域名的ID列表 + - **CreateTime** (int) - Bucket的创建时间 + - **Domain** (dict) - 见 **UFileDomainSet** 模型定义 + - **HasUserDomain** (int) - 是否存在自定义域名。0不存在,1存在,2错误 + - **ModifyTime** (int) - Bucket的修改时间 + - **Region** (str) - Bucket所属地域 + - **Tag** (str) - 所属业务组 + - **Type** (str) - Bucket访问类型 + + + **UFileDomainSet** + - **Cdn** (list) - UCDN加速域名 + - **CustomCdn** (list) - 用户自定义CDN加速域名 + - **CustomSrc** (list) - 用户自定义源站域名 + - **Src** (list) - 源站域名 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeBucketRequestSchema().dumps(d) + + resp = self.invoke("DescribeBucket", d, **kwargs) + return apis.DescribeBucketResponseSchema().loads(resp)
+ +
[docs] def describe_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUFileToken - 获取令牌信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Display** (int) - 0表示显示部分token信息;不传递和其他情况表示显示全部token信息 + - **TokenId** (str) - 令牌ID,只返回指定ID信息,否则拉取所有令牌 + - **TokenName** (str) - 令牌名称,只返回指定令牌名称信息,否则拉取所有令牌 + + **Response** + + - **DataSet** (list) - 见 **UFileTokenSet** 模型定义 + + **Response Model** + + **UFileTokenSet** + - **AllowedBuckets** (list) - 令牌允许操作的bucket + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ] + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀 + - **CreateTime** (int) - 创建时间 + - **ExpireTime** (int) - 令牌的超时时间点 + - **ModifyTime** (int) - 修改时间 + - **PrivateKey** (str) - 令牌私钥 + - **PublicKey** (str) - 令牌公钥 + - **Region** (str) - 所属地区 + - **TokenId** (str) - 令牌ID + - **TokenName** (str) - 令牌名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("DescribeUFileToken", d, **kwargs) + return apis.DescribeUFileTokenResponseSchema().loads(resp)
+ +
[docs] def get_ufile_daily_report( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileDailyReport - 查看日消费报表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **EndTime** (int) - (Required) 查询结束时间;unix时间戳,单位s + - **StartTime** (int) - (Required) 查询开始时间;unix时间戳,单位s + - **BucketName** (str) - 空间名称。此字段不为空,返回此Bucket日使用量;否则,返回这个项目的日使用量 + + **Response** + + - **DataSet** (list) - 见 **UFileReportItem** 模型定义 + + **Response Model** + + **UFileDailyReportItem** + - **AcRestore** (float) - 冷存激活量,即归档数据取回量;单位byte + - **AcStorage** (float) - 冷存(归档)存储量;单位byte + - **ApiTimes** (float) - API请求次数(次) + - **BusyFlow** (float) - 忙时流量;单位byte;海外无此字段 + - **CdnFlow** (float) - cdn回源流量;单位byte + - **Date** (int) - 配额消费时间,unix时间戳(单位s),精确到日期 + - **Flow** (float) - 下载流量:单位byte;国内无此字段 + - **IaGetSize** (float) - 低频数据取回量;单位byte + - **IaStorage** (float) - 低频存储量;单位byte + - **IdleFlow** (float) - 闲时流量;单位byte;海外无此字段 + - **Storage** (float) - 标准存储量;单位byte + + + **UFileTotalReportItem** + - **ApiTimes** (float) - API请求次数(次) + - **BusyFlow** (float) - 忙时流量;单位byte;海外无此字段 + - **CdnFlow** (float) - cdn回源流量;单位byte + - **Flow** (float) - 下载流量:单位byte;国内无此字段 + - **IdleFlow** (float) - 闲时流量;单位byte;海外无此字段 + + + **UFileReportItem** + - **Daily** (list) - 见 **UFileDailyReportItem** 模型定义 + - **Total** (list) - 见 **UFileTotalReportItem** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileDailyReportRequestSchema().dumps(d) + + resp = self.invoke("GetUFileDailyReport", d, **kwargs) + return apis.GetUFileDailyReportResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuota - 查看配额状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **QuotaType** (str) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count + + **Response** + + - **LeftQuota** (float) - 剩余的配额数值 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUFileQuotaRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuota", d, **kwargs) + return apis.GetUFileQuotaResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuotaInfo - 获取配额信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **QuotaType** (list) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count + + **Response** + + - **DataSet** (list) - 见 **UFileQuotaDataSetItem** 模型定义 + + **Response Model** + + **UFileQuotaDataSetItem** + - **DownloadFlow** (dict) - 见 **UFileQuotaLeft** 模型定义 + - **Owe** (int) - 是否欠费:1表示欠费;0表示未欠费 + - **Region** (str) - 可用地域 + - **RequestCnt** (dict) - 见 **UFileQuotaLeft** 模型定义 + - **Storage** (dict) - 见 **UFileQuotaLeft** 模型定义 + + + **UFileQuotaLeft** + - **Left** (float) - 配额剩余量 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileQuotaInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuotaInfo", d, **kwargs) + return apis.GetUFileQuotaInfoResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuotaPrice - 根据US3的购买配额,查询需要支付的价格。 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DownloadTraffic** (int) - 下载流量,单位: GB,范围: [0, 60 000],步长:1GB + - **RequestCount** (int) - 请求次数,单位:万次,范围:[0, 1 000 000],步长:1万次 + - **StorageVolume** (int) - 存储容量,单位: GB*天,范围: [0, 30 000 000],步长:100GB*天 + + **Response** + + - **Price** (float) - 待支付价格,单位:分 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileQuotaPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuotaPrice", d, **kwargs) + return apis.GetUFileQuotaPriceResponseSchema().loads(resp)
+ +
[docs] def get_ufile_report( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileReport - 查看配额使用报表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EndTime** (int) - (Required) 查询结束时间 + - **StartTime** (int) - (Required) 查询开始时间 + + **Response** + + - **DataSet** (list) - 见 **UFileReportSet** 模型定义 + + **Response Model** + + **UFileReportSet** + - **DownloadTraffic** (float) - 配额消费当日使用的下载流量,单位:GB + - **RequestCount** (float) - 配额消费当日使用的请求次数,单位:万次 + - **StorageVolume** (float) - 配额消费当日使用的存储容量,单位:GB*天 + - **Time** (int) - 配额消费时间,unix时间戳,精确到日期 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileReportRequestSchema().dumps(d) + + resp = self.invoke("GetUFileReport", d, **kwargs) + return apis.GetUFileReportResponseSchema().loads(resp)
+ +
[docs] def set_ufile_referer( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetUFileReferer - 设置对象存储防盗链 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BucketName** (str) - (Required) 存储空间名称 + - **RefererStatus** (str) - (Required) 开启关闭referer防盗链;关闭防盗链会清空防盗链参数设置,开启防盗链必须指定 RefererType、Referers;开启:on, 关闭:off; + - **RefererAllowNull** (bool) - RefererType为白名单时,RefererAllowNull为false代表不允许空referer访问,为true代表允许空referer访问;此参数默认为 true; + - **RefererType** (int) - 防盗链Referer类型,支持两种类型,黑名单和白名单; 1黑名单,2白名单;RefererStatus为"on"时此参数必填; + - **Referers** (list) - 防盗链Referer规则,支持正则表达式(不支持符号';') + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetUFileRefererRequestSchema().dumps(d) + + resp = self.invoke("SetUFileReferer", d, **kwargs) + return apis.SetUFileRefererResponseSchema().loads(resp)
+ +
[docs] def update_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateBucket - 更改Bucket的属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BucketName** (str) - (Required) 待修改Bucket的名称 + - **Type** (str) - (Required) Bucket访问类型;public或private + + **Response** + + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateBucketRequestSchema().dumps(d) + + resp = self.invoke("UpdateBucket", d, **kwargs) + return apis.UpdateBucketResponseSchema().loads(resp)
+ +
[docs] def update_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUFileToken - 更新令牌的操作权限,可操作key的前缀,可操作bucket和令牌超时时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenId** (str) - (Required) 令牌ID + - **AllowedBuckets** (list) - 令牌允许操作的bucket + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ] + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀 + - **ExpireTime** (int) - 令牌的超时时间点(时间戳);注意:过期时间不能超过 4102416000 + - **TokenName** (str) - 令牌名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("UpdateUFileToken", d, **kwargs) + return apis.UpdateUFileTokenResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ufs/client.html b/_modules/ucloud/services/ufs/client.html new file mode 100644 index 00000000..340077dc --- /dev/null +++ b/_modules/ucloud/services/ufs/client.html @@ -0,0 +1,261 @@ + + + + + + + + ucloud.services.ufs.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ufs.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ufs.schemas import apis
+
+
+
[docs]class UFSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UFSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUFSVolume - 创建文件系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ProtocolType** (str) - (Required) 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 + - **Size** (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB + - **StorageType** (str) - (Required) 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限) 默认为Dynamic + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长 默认: 1 + - **Remark** (str) - 备注 + - **Tag** (str) - 文件系统所属业务组 + - **VolumeName** (str) - 文件系统名称 + + **Response** + + - **VolumeId** (str) - 文件系统ID + - **VolumeName** (str) - 文件系统名称 + - **VolumeStatus** (str) - 文件系统挂载点状态 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUFSVolumeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUFSVolume", d, **kwargs) + return apis.CreateUFSVolumeResponseSchema().loads(resp)
+ +
[docs] def describe_ufs_volume_2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUFSVolume2 - 获取文件系统列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 文件列表长度 + - **Offset** (int) - 文件列表起始 + - **VolumeId** (str) - 文件系统ID + + **Response** + + - **DataSet** (list) - 见 **UFSVolumeInfo2** 模型定义 + - **TotalCount** (int) - 文件系统总数 + + **Response Model** + + **UFSVolumeInfo2** + - **CreateTime** (int) - 文件系统创建时间(unix时间戳) + - **ExpiredTime** (int) - 文件系统过期时间(unix时间戳) + - **IsExpired** (str) - 是否过期 + - **MaxMountPointNum** (int) - 文件系统允许创建的最大挂载点数目 + - **ProtocolType** (str) - 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 + - **Remark** (str) - 文件系统备注信息 + - **Size** (int) - 文件系统大小,单位GB + - **StorageType** (str) - 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 + - **Tag** (str) - 文件系统所属业务组 + - **TotalMountPointNum** (int) - 当前文件系统已创建的挂载点数目 + - **UsedSize** (int) - 文件系统当前使用容量,单位GB + - **VolumeId** (str) - 文件系统ID + - **VolumeName** (str) - 文件系统名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUFSVolume2RequestSchema().dumps(d) + + resp = self.invoke("DescribeUFSVolume2", d, **kwargs) + return apis.DescribeUFSVolume2ResponseSchema().loads(resp)
+ +
[docs] def extend_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ExtendUFSVolume - 文件系统扩容 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB + - **VolumeId** (str) - (Required) 文件系统ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ExtendUFSVolumeRequestSchema().dumps(d) + + resp = self.invoke("ExtendUFSVolume", d, **kwargs) + return apis.ExtendUFSVolumeResponseSchema().loads(resp)
+ +
[docs] def remove_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RemoveUFSVolume - 删除UFS文件系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VolumeId** (str) - (Required) 文件系统ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RemoveUFSVolumeRequestSchema().dumps(d) + + resp = self.invoke("RemoveUFSVolume", d, **kwargs) + return apis.RemoveUFSVolumeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uhost/client.html b/_modules/ucloud/services/uhost/client.html new file mode 100644 index 00000000..ba3ee28d --- /dev/null +++ b/_modules/ucloud/services/uhost/client.html @@ -0,0 +1,1452 @@ + + + + + + + + ucloud.services.uhost.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uhost.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uhost.schemas import apis
+
+
+
[docs]class UHostClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UHostClient, self).__init__(config, transport, middleware, logger) + +
[docs] def copy_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CopyCustomImage - 复制自制镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **SourceImageId** (str) - (Required) 源镜像Id, 参见 DescribeImage + - **TargetProjectId** (str) - (Required) 目标项目Id, 参见 GetProjectList + - **TargetImageDescription** (str) - 目标镜像描述 + - **TargetImageName** (str) - 目标镜像名称 + - **TargetRegion** (str) - 目标地域,不跨地域不用填 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **TargetImageId** (str) - 目标镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CopyCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CopyCustomImage", d, **kwargs) + return apis.CopyCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCustomImage - 从指定UHost实例,生成自定义镜像。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **ImageDescription** (str) - 镜像描述 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCustomImage", d, **kwargs) + return apis.CreateCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_isolation_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateIsolationGroup - 创建硬件隔离组,组内机器严格隔离在不同宿主机上。 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupName** (str) - (Required) 硬件隔离组名称。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定隔离组名称。 + - **Remark** (str) - 备注。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定隔离组备注。 + + **Response** + + - **GroupId** (str) - 硬件隔离组id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateIsolationGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateIsolationGroup", d, **kwargs) + return apis.CreateIsolationGroupResponseSchema().loads(resp)
+ +
[docs] def create_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUHostInstance - 创建UHost实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ 获取 + - **LoginMode** (str) - (Required) 主机登陆模式。密码(默认选项): Password,密钥:KeyPair。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AlarmTemplateId** (int) - 告警模板id,如果传了告警模板id,且告警模板id正确,则绑定告警模板。绑定告警模板失败只会在后台有日志,不会影响创建主机流程,也不会在前端报错。 + - **AutoDataDiskInit** (str) - 数据盘是否需要自动分区挂载。当镜像支持“Cloud-init”Feature时可填写此字段。取值 >“On” 自动挂载(默认值)> “Off” 不自动挂载。 + - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。 + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\Preemptive计费为抢占式实例 \\ 默认为月付 + - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **Disks** (list) - 见 **CreateUHostInstanceParamDisks** 模型定义 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关) + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100", "T4", "T4S","2080Ti","2080Ti-4C","1080Ti"],MachineType为G时必填 + - **HotplugFeature** (bool) - 热升级特性。True为开启,False为未开启,默认False。 + - **IsolationGroup** (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。 + - **KeyPairId** (str) - KeypairId 密钥对ID,LoginMode为KeyPair时此项必须 + - **MachineType** (str) - 云主机机型(V2.0),在本字段和字段UHostType中,仅需要其中1个字段即可。枚举值["N", "C", "G", "O", "OS", "OPRO", "OMAX", "O.BM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **MaxCount** (int) - 本次最大创建主机数量,取值范围是[1,100],默认值为1。 + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192 + - **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake";"Intel/CascadelakeR"; “Amd/Epyc2”,"Amd/Auto"],默认值是"Intel/Auto"。 + - **Name** (str) - UHost实例名称。默认:UHost。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定实例名称。 + - **NetCapability** (str) - 网络增强特性。枚举值:Normal(默认),不开启; Super,开启网络增强1.0; Ultra,开启网络增强2.0(仅支持部分可用区,请参考控制台) + - **NetworkInterface** (list) - 见 **CreateUHostInstanceParamNetworkInterface** 模型定义 + - **Password** (str) - UHost密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。 + - **PrivateIp** (list) - 【数组】创建云主机时指定内网IP。若不传值,则随机分配当前子网下的IP。调用方式举例:PrivateIp.0=x.x.x.x。当前只支持一个内网IP。 + - **Quantity** (int) - 购买时长。默认:值 1。按小时购买(Dynamic/Postpay)时无需此参数。 月付时,此参数传0,代表购买至月末。 + - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall <https://docs.ucloud.cn/api/uhost-api/api/unet-api/describe_firewall.html>`_ 。 + - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 + - **Tag** (str) - 业务组。默认:Default(Default即为未分组)。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定业务组。 + - **UHostType** (str) - 【建议后续不再使用】云主机机型(V1.0),在本字段和字段MachineType中,仅需要其中1个字段即可。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **UserData** (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码 + - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 + + **Response** + + - **IPs** (list) - 【批量创建不会返回】IP信息 + - **UHostIds** (list) - UHost实例Id集合 + + **Request Model** + + **CreateUHostInstanceParamDisks** + - **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ > SNAPSHOT(SNAPSHOT模式目前仅在上海C支持),快照 \\当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ ,默认值:NONE + - **CouponId** (str) - 云盘代金券id。不适用于系统盘/本地盘。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **Encrypted** (bool) - 【功能仅部分可用区开放,详询技术支持】磁盘是否加密。加密:true, 不加密: false加密必须传入对应的的KmsKeyId,默认值false + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **KmsKeyId** (str) - 【功能仅部分可用区开放,详询技术支持】kms key id。选择加密盘时必填。 + - **Size** (int) - 磁盘大小,单位GB,必须是10GB的整数倍。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Type** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + + + **CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH** + - **Area** (str) - 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填其中之一。 + - **AreaCode** (str) - GlobalSSH的地区编码,格式为区域航空港国际通用代码。Area和AreaCode两者必填其中之一。 + - **Port** (int) - SSH端口,1-65535且不能使用80,443端口 + + + **CreateUHostInstanceParamNetworkInterfaceEIP** + - **Bandwidth** (int) - 【若绑定EIP,此参数必填】弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-800] + - **CouponId** (str) - 当前EIP代金券id。请通过DescribeCoupon接口查询,或登录用户中心查看。 + - **GlobalSSH** (dict) - 见 **CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH** 模型定义 + - **OperatorName** (str) - 【若绑定EIP,此参数必填】弹性IP的线路。枚举值: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International + - **PayMode** (str) - 弹性IP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; "ShareBandwidth",共享带宽模式. "Free":免费带宽模式,默认为 "Bandwidth" + - **ShareBandwidthId** (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效 + + + **CreateUHostInstanceParamNetworkInterfaceIPv6** + + + **CreateUHostInstanceParamNetworkInterface** + - **CreateCernetIp** (bool) - 申请并绑定一个教育网EIP。True为申请并绑定,False为不会申请绑定,默认False。当前只支持具有HPC特性的机型。 + - **EIP** (dict) - 见 **CreateUHostInstanceParamNetworkInterfaceEIP** 模型定义 + + + **CreateUHostInstanceParamVirtualGpuGPUVirtualGpu** + + + **CreateUHostInstanceParamVirtualGpu** + + + **CreateUHostInstanceParamVolumes** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUHostInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUHostInstance", d, **kwargs) + return apis.CreateUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def create_uhost_key_pair( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUHostKeyPair - 创建主机密钥对信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **KeyPairName** (str) - (Required) 密钥对名称。 由字母,数字,符号组成,长度为1-63位。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **KeyPair** (dict) - 见 **KeyPair** 模型定义 + + **Response Model** + + **KeyPair** + - **CreateTime** (int) - 密钥对的创建时间,格式为Unix Timestamp。 + - **KeyPairFingerPrint** (str) - 密钥对指纹。md5(ProjectId|KeyPairId|PublicKey) + - **KeyPairId** (str) - 密钥对ID。 + - **KeyPairName** (str) - 密钥对名称。 长度为1~63个英文或中文字符。 + - **PrivateKeyBody** (str) - 密钥对的私钥内容。只有创建接口才会返回。 + - **ProjectId** (str) - 项目ID。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUHostKeyPairRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUHostKeyPair", d, **kwargs) + return apis.CreateUHostKeyPairResponseSchema().loads(resp)
+ +
[docs] def delete_isolation_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteIsolationGroup - 删除硬件隔离组。 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - (Required) 硬件隔离组id + + **Response** + + - **GroupId** (str) - 硬件隔离组id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteIsolationGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteIsolationGroup", d, **kwargs) + return apis.DeleteIsolationGroupResponseSchema().loads(resp)
+ +
[docs] def delete_uhost_key_pairs( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUHostKeyPairs - 删除一对或者多对密钥对。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **KeyPairIds** (list) - (Required) 密钥对ID,最多支持 100 对。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUHostKeyPairsRequestSchema().dumps(d) + + resp = self.invoke("DeleteUHostKeyPairs", d, **kwargs) + return apis.DeleteUHostKeyPairsResponseSchema().loads(resp)
+ +
[docs] def describe_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeImage - 获取指定数据中心镜像列表,用户可通过指定操作系统类型,镜像Id进行过滤。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - 镜像Id + - **ImageType** (str) - 镜像类型。标准镜像:Base,镜像市场:Business, 自定义镜像:Custom,默认返回所有类型 + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **OsType** (str) - 操作系统类型:Linux, Windows 默认返回所有类型 + - **PriceSet** (int) - 是否返回价格:1返回,0不返回;默认不返回 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Action** (str) - 操作名称 + - **ImageSet** (list) - 见 **UHostImageSet** 模型定义 + - **RetCode** (int) - 返回码 + - **TotalCount** (int) - 满足条件的镜像总数 + + **Response Model** + + **UHostImageSet** + - **CreateTime** (int) - 创建时间,格式为Unix时间戳 + - **Features** (list) - 特殊状态标识, 目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra](网络增强2.0), HotPlug(热升级), CloudInit, IPv6 + - **FuncType** (str) - 行业镜像类型(仅行业镜像将返回这个值) + - **ImageDescription** (str) - 镜像描述 + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **ImageSize** (int) - 镜像大小 + - **ImageType** (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom + - **IntegratedSoftware** (str) - 集成软件名称(仅行业镜像将返回这个值) + - **Links** (str) - 介绍链接(仅行业镜像将返回这个值) + - **MinimalCPU** (str) - 默认值为空'''。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell” + - **OsName** (str) - 操作系统名称 + - **OsType** (str) - 操作系统类型:Linux,Windows + - **State** (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable + - **Vendor** (str) - 供应商(仅行业镜像将返回这个值) + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeImage", d, **kwargs) + return apis.DescribeImageResponseSchema().loads(resp)
+ +
[docs] def describe_isolation_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeIsolationGroup - 查询硬件隔离组列表。 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - 待查的硬件隔离组id + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **IsolationGroupSet** (list) - 见 **IsolationGroup** 模型定义 + - **TotalCount** (int) - 硬件隔离组总数 + + **Response Model** + + **IsolationGroup** + - **GroupId** (str) - 硬件隔离组id + - **GroupName** (str) - 硬件隔离组名称 + - **Remark** (str) - 备注 + - **SpreadInfoSet** (list) - 见 **SpreadInfo** 模型定义 + + + **SpreadInfo** + - **UHostCount** (int) - 当前地域所有可用区中硬件隔离组中云主机的数量,不超过7。 + - **Zone** (str) - 可用区信息 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeIsolationGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeIsolationGroup", d, **kwargs) + return apis.DescribeIsolationGroupResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUHostInstance - 获取主机或主机列表信息,并可根据数据中心,主机ID等参数进行过滤。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **IsolationGroup** (str) - 硬件隔离组id。通过硬件隔离组筛选主机。 + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **SubnetId** (str) - 子网id。通过子网筛选主机。北京一地域无效。 + - **Tag** (str) - 要查询的业务组名称 + - **UDiskIdForAttachment** (str) - 要挂载的云盘id,过滤返回能被UDiskId挂载的云主机。目前主要针对rssd云盘使用 + - **UHostIds** (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。 + - **VPCId** (str) - vpc id。通过VPC筛选主机。北京一地域无效。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **TotalCount** (int) - UHostInstance总数 + - **UHostSet** (list) - 见 **UHostInstanceSet** 模型定义 + + **Response Model** + + **UHostInstanceSet** + - **AutoRenew** (str) - 是否自动续费,自动续费:“Yes”,不自动续费:“No” + - **BasicImageId** (str) - 基础镜像ID(指当前自定义镜像的来源镜像) + - **BasicImageName** (str) - 基础镜像名称(指当前自定义镜像的来源镜像) + - **BootDiskState** (str) - 系统盘状态 Normal表示初始化完成;Initializing表示在初始化。仍在初始化的系统盘无法制作镜像。 + - **CPU** (int) - 虚拟CPU核数,单位: 个 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限);Preemptive 为抢占式实例; + - **CloudInitFeature** (bool) - true,支持cloutinit方式初始化;false,不支持 + - **CpuPlatform** (str) - 云主机CPU平台。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type#主机概念20版本>`_ 。 + - **CreateTime** (int) - 创建时间,格式为Unix时间戳 + - **DiskSet** (list) - 见 **UHostDiskSet** 模型定义 + - **ExpireTime** (int) - 到期时间,格式为Unix时间戳 + - **GPU** (int) - GPU个数 + - **HostType** (str) - 【建议不再使用】主机系列:N2,表示系列2;N1,表示系列1 + - **HotplugFeature** (bool) - true: 开启热升级; false,未开启热升级 + - **HpcFeature** (bool) - true: 开启 hpc 系列功能;false: 未开启 + - **IPSet** (list) - 见 **UHostIPSet** 模型定义 + - **IPv6Feature** (bool) - true:有ipv6特性;false,没有ipv6特性 + - **ImageId** (str) - 【建议不再使用】主机的系统盘ID。 + - **IsolationGroup** (str) - 隔离组id,不在隔离组则返回"" + - **KeyPair** (dict) - 见 **UHostKeyPair** 模型定义 + - **LifeCycle** (str) - 主机的生命周期类型。目前仅支持Normal:普通; + - **MachineType** (str) - 云主机机型(新)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type#主机概念20版本>`_ 。 + - **Memory** (int) - 内存大小,单位: MB + - **Name** (str) - UHost实例名称 + - **NetCapability** (str) - 网络增强。Normal: 无;Super: 网络增强1.0; Ultra: 网络增强2.0 + - **NetworkState** (str) - 【建议不再使用】网络状态。 连接:Connected, 断开:NotConnected + - **OsName** (str) - 创建主机的最初来源镜像的操作系统名称(若直接通过基础镜像创建,此处返回和BasicImageName一致) + - **OsType** (str) - 操作系统类别。返回"Linux"或者"Windows" + - **RdmaClusterId** (str) - RDMA集群id,仅快杰云主机返回该值;其他类型云主机返回""。当云主机的此值与RSSD云盘的RdmaClusterId相同时,RSSD可以挂载到这台云主机。 + - **Remark** (str) - 备注 + - **RestrictMode** (str) - 仅抢占式实例返回,LowSpeed为低速模式,PowerOff为关机模式 + - **State** (str) - 实例状态,枚举值:\\ >初始化: Initializing; \\ >启动中: Starting; \\> 运行中: Running; \\> 关机中: Stopping; \\ >关机: Stopped \\ >安装失败: Install Fail; \\ >重启中: Rebooting; \\ > 未知(空字符串,获取状态超时或出错):"" + - **StorageType** (str) - 【建议不再使用】主机磁盘类型。 枚举值为:\\ > LocalDisk,本地磁盘; \\ > UDisk 云盘。\\只要有一块磁盘为本地盘,即返回LocalDisk。 + - **SubnetType** (str) - 【建议不再使用】仅北京A的云主机会返回此字段。基础网络模式:Default;子网模式:Private + - **Tag** (str) - 业务组名称 + - **TimemachineFeature** (str) - 【建议不再使用】数据方舟模式。枚举值:\\ > Yes: 开启方舟; \\ > no,未开启方舟 + - **TotalDiskSpace** (int) - 总的数据盘存储空间。 + - **UHostId** (str) - UHost实例ID + - **UHostType** (str) - 【建议不再使用】云主机机型(旧)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + **UHostDiskSet** + - **BackupType** (str) - 备份方案。若开通了数据方舟,则为DATAARK + - **DiskId** (str) - 磁盘ID + - **DiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Drive** (str) - 磁盘盘符 + - **Encrypted** (str) - "true": 加密盘 "false":非加密盘 + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Name** (str) - UDisk名字(仅当磁盘是UDisk时返回) + - **Size** (int) - 磁盘大小,单位: GB + - **Type** (str) - 【建议不再使用】磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk + + + **UHostIPSet** + - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) + - **Default** (str) - 内网 Private 类型下,表示是否为默认网卡。true: 是默认网卡;其他值:不是。 + - **IP** (str) - IP地址 + - **IPId** (str) - 外网IP资源ID 。(内网IP无对应的资源ID) + - **IPMode** (str) - IPv4/IPv6; + - **Mac** (str) - 内网 Private 类型下,当前网卡的Mac。 + - **NetworkInterfaceId** (str) - 弹性网卡为默认网卡时,返回对应的 ID 值 + - **SubnetId** (str) - IP地址对应的子网 ID。(北京一不支持,字段返回为空) + - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private + - **VPCId** (str) - IP地址对应的VPC ID。(北京一不支持,字段返回为空) + - **Weight** (int) - 当前EIP的权重。权重最大的为当前的出口IP。 + + + **UHostKeyPair** + - **KeyPairId** (str) - 密钥对ID + - **KeyPairState** (str) - 主机密钥对状态,Normal 正常,Deleted 删除 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUHostInstance", d, **kwargs) + return apis.DescribeUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_instance_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUHostInstanceSnapshot - + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) + - **UHostId** (str) - (Required) + - **Zone** (str) - + + **Response** + + - **SnapshotSet** (list) - 见 **UHostSnapshotSet** 模型定义 + - **UhostId** (str) - + + **Response Model** + + **UHostSnapshotSet** + - **SnapshotName** (str) - + - **SnapshotState** (str) - + - **SnapshotTime** (str) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUHostInstanceSnapshotRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("DescribeUHostInstanceSnapshot", d, **kwargs) + return apis.DescribeUHostInstanceSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_key_pairs( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUHostKeyPairs - 查询一个或多个密钥对。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **KeyPairFingerPrint** (str) - 密钥对的指纹。 + - **KeyPairName** (str) - 密钥对名称。 + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **KeyPairs** (list) - 见 **KeyPairDesc** 模型定义 + - **TotalCount** (int) - 密钥对总数 + + **Response Model** + + **KeyPairDesc** + - **CreateTime** (int) - 密钥对的创建时间,格式为Unix Timestamp。 + - **KeyPairFingerPrint** (str) - 密钥对指纹。md5(ProjectId|KeyPairId|PublicKey) + - **KeyPairId** (str) - 密钥对ID。 + - **KeyPairName** (str) - 密钥对名称。 长度为1~63个英文或中文字符。 + - **ProjectId** (str) - 项目ID。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUHostKeyPairsRequestSchema().dumps(d) + + resp = self.invoke("DescribeUHostKeyPairs", d, **kwargs) + return apis.DescribeUHostKeyPairsResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_tags( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUHostTags - 获取指定数据中心的业务组列表。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **TagSet** (list) - 见 **UHostTagSet** 模型定义 + - **TotalCount** (int) - 已有主机的业务组总数 + + **Response Model** + + **UHostTagSet** + - **Tag** (str) - 业务组名称 + - **TotalCount** (int) - 该业务组中包含的主机个数 + - **Zone** (str) - 可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUHostTagsRequestSchema().dumps(d) + + resp = self.invoke("DescribeUHostTags", d, **kwargs) + return apis.DescribeUHostTagsResponseSchema().loads(resp)
+ +
[docs] def get_attached_disk_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetAttachedDiskUpgradePrice - 获取挂载磁盘的升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DiskId** (str) - (Required) 磁盘ID。参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 返回值中的DiskSet。 + - **DiskSpace** (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **UHostId** (str) - (Required) UHost实例ID。 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 。 + - **BackupMode** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\> SNAPSHOT(SNAPSHOT模式目前仅在上海C支持),快照 \\ 当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认值为当前的备份模式。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Price** (float) - 升级差价。精度为小数点后2位。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetAttachedDiskUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetAttachedDiskUpgradePrice", d, **kwargs) + return apis.GetAttachedDiskUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def get_uhost_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUHostInstancePrice - 根据UHost实例配置,获取UHost实例的价格。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CPU** (int) - (Required) CPU核数。可选参数:1-64。可选范围参照控制台。默认值: 4 + - **Count** (int) - (Required) 购买台数,范围[1,5] + - **Memory** (int) - (Required) 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参照好控制台)。默认值:8192 + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时付费 // >Preemptive 抢占式实例 \\ 如果不传某个枚举值,默认返回年付、月付、时付的价格组合集。 + - **CpuPlatform** (str) - 取值"Intel" "Amd",默认值“Intel” + - **Disks** (list) - 见 **GetUHostInstancePriceParamDisks** 模型定义 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段。 + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100", "T4","T4S","2080Ti","2080Ti-4C","1080Ti"] + - **ImageId** (str) - 镜像Id,可通过 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ 获取镜像ID, 如果镜像ID不传,系统盘大小必传 + - **MachineType** (str) - 云主机机型(V2版本概念)。枚举值["N", "C", "G", "O", "OS", "OPRO", "OMAX", "O.BM"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **NetCapability** (str) - 网络增强。枚举值:Normal,不开启; Super,开启网络增强1.0。 默认值为Normal。 + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **UHostType** (str) - 【待废弃】云主机机型(V1版本概念)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **PriceSet** (list) - 见 **UHostPriceSet** 模型定义 + + **Request Model** + + **GetUHostInstancePriceParamDisks** + - **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ > SNAPSHOT,快照\\ 当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Type** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + + + **GetUHostInstancePriceParamVolumes** + + + **GetUHostInstancePriceParamVirtualGpu** + + + **Response Model** + + **UHostPriceSet** + - **ChargeType** (str) - 计费类型。Year,Month,Dynamic + - **ListPrice** (float) - 产品列表价。 + - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价)。 + - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUHostInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUHostInstancePrice", d, **kwargs) + return apis.GetUHostInstancePriceResponseSchema().loads(resp)
+ +
[docs] def get_uhost_instance_vnc_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUHostInstanceVncInfo - 获取指定UHost实例的管理VNC配置详细信息。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + - **VncIP** (str) - Vnc登录IP + - **VncPassword** (str) - Vnc 登录密码 + - **VncPort** (int) - Vnc登录端口 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUHostInstanceVncInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUHostInstanceVncInfo", d, **kwargs) + return apis.GetUHostInstanceVncInfoResponseSchema().loads(resp)
+ +
[docs] def get_uhost_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUHostUpgradePrice - 获取UHost实例升级配置的价格。可选配置范围请参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID。 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 。 + - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(可选范围参考控制台)。默认值为当前实例的CPU核数。 + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值为当前实例的内存大小。 + - **NetCapValue** (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **OriginalPrice** (float) - 限时优惠的折前原价 + - **Price** (float) - 规格调整差价。精确到小数点后2位。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUHostUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUHostUpgradePrice", d, **kwargs) + return apis.GetUHostUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def import_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ImportCustomImage - 把UFile的镜像文件导入到UHost,生成自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Auth** (bool) - (Required) 是否授权。必须填true + - **Format** (str) - (Required) 镜像格式,可选RAW、VHD、VMDK、qcow2 + - **ImageName** (str) - (Required) 镜像名称 + - **OsName** (str) - (Required) 操作系统详细版本,请参考控制台的镜像版本;OsType为Other时,输入参数为Other + - **OsType** (str) - (Required) 操作系统平台,比如CentOS、Ubuntu、Windows、RedHat等,请参考控制台的镜像版本;若导入控制台上没有的操作系统,参数为Other + - **UFileUrl** (str) - (Required) UFile私有空间地址 + - **ImageDescription** (str) - 镜像描述 + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ImportCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ImportCustomImage", d, **kwargs) + return apis.ImportCustomImageResponseSchema().loads(resp)
+ +
[docs] def import_uhost_key_pairs( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ImportUHostKeyPairs - 导入密钥对后,仅保管公钥部分,需自行妥善保存密钥对的私钥部分。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **KeyPairName** (str) - (Required) 密钥对名称。由字母,数字,符号组成,长度为1-63位。 + - **PublicKeyBody** (str) - (Required) 密钥对的公钥内容。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **KeyPairFingerPrint** (str) - 密钥对指纹。根据RFC4716定义的公钥指纹格式,采用MD5信息摘要算法。算法处理的具体信息格式:`ProjectIdKeyPairId|PublicKeyBody`。 + - **KeyPairId** (str) - 密钥对标识 + - **KeyPairName** (str) - 密钥对名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ImportUHostKeyPairsRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ImportUHostKeyPairs", d, **kwargs) + return apis.ImportUHostKeyPairsResponseSchema().loads(resp)
+ +
[docs] def leave_isolation_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """LeaveIsolationGroup - 移除硬件隔离组中的主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - (Required) 硬件隔离组id + - **UHostId** (str) - (Required) 主机id + - **Zone** (str) - 可用区信息 + + **Response** + + - **UHostId** (str) - 主机id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.LeaveIsolationGroupRequestSchema().dumps(d) + + resp = self.invoke("LeaveIsolationGroup", d, **kwargs) + return apis.LeaveIsolationGroupResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUHostIP - 修改云主机内网 IP 地址 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写时为默认项目。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PresentIpAddress** (str) - (Required) 需要修改为的 IP 地址。新的IP地址和旧IP地址必须属于统一子网,且和主机内部的配置文件一致。 + - **UHostId** (str) - (Required) 指定云主机 ID。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PreviousIpAddress** (str) - 所需修改的原 IP 地址 ,当云主机只有一个IP地址时,此参数不必填写。 + + **Response** + + - **Message** (str) - 输出错误的信息 + - **UHostId** (str) - 目标云主机 ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUHostIPRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostIP", d, **kwargs) + return apis.ModifyUHostIPResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUHostInstanceName - 修改指定UHost实例名称,需要给出数据中心,UHostId,及新的实例名称。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Name** (str) - UHost实例名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUHostInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceName", d, **kwargs) + return apis.ModifyUHostInstanceNameResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUHostInstanceRemark - 修改指定UHost实例备注信息。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Remark** (str) - 备注 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUHostInstanceRemarkRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceRemark", d, **kwargs) + return apis.ModifyUHostInstanceRemarkResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_tag( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUHostInstanceTag - 修改指定UHost实例业务组标识。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Tag** (str) - 业务组名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUHostInstanceTagRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceTag", d, **kwargs) + return apis.ModifyUHostInstanceTagResponseSchema().loads(resp)
+ +
[docs] def poweroff_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffUHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost的实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.PoweroffUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("PoweroffUHostInstance", d, **kwargs) + return apis.PoweroffUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reboot_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RebootUHostInstance - 重新启动UHost实例,需要指定数据中心及UHostID两个参数的值。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **DiskPassword** (str) - 加密盘密码 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RebootUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("RebootUHostInstance", d, **kwargs) + return apis.RebootUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reinstall_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallUHostInstance - 重新安装指定UHost实例的操作系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例资源ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **AutoDataDiskInit** (str) - 数据盘是否需要自动分区挂载。当镜像支持Cloud-init Feature时可填写此字段。取值“On”(默认值), “Off” + - **BootDiskSpace** (int) - 系统盘大小。 单位:GB, 范围[20,100], 步长:10 + - **ImageId** (str) - 镜像Id,默认使用原镜像 参见 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ + - **KeyPairId** (str) - KeypairId 密钥对ID,LoginMode为KeyPair时此项必须。 + - **LoginMode** (str) - 主机登陆模式。密码(默认选项): Password,密钥 KeyPair。 + - **Password** (str) - 如果重装UHost实例时LoginMode为Password,则必须填写,如果LoginMode为KeyPair,不需要填写 (密码格式使用BASE64编码;举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。) + - **ReserveDisk** (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes;如果是从Windows重装为Linux或反之,则无法保留数据盘(该参数目前仅对本地数据盘起作用) + - **UserData** (str) - cloudinit初始化使用。注意:1、总数据量大小不超多16K 2、使用base64编码 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReinstallUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("ReinstallUHostInstance", d, **kwargs) + return apis.ReinstallUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reset_uhost_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetUHostInstancePassword - 重置UHost实例的管理员密码。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Password** (str) - (Required) UHost新密码(密码格式使用BASE64编码) + - **UHostId** (str) - (Required) UHost实例ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetUHostInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ResetUHostInstancePassword", d, **kwargs) + return apis.ResetUHostInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def resize_attached_disk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeAttachedDisk - 修改挂载的磁盘大小,包含系统盘和数据盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DiskId** (str) - (Required) 磁盘ID。参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 返回值中的DiskSet。 + - **DiskSpace** (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **UHostId** (str) - (Required) UHost实例ID。 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DryRun** (bool) - 用于测试磁盘是否支持在线扩容。DryRun=true,不会执行实际操作,只会返回操作的预期结果。DryRun = false ,正常执行扩容操作。 + + **Response** + + - **DiskId** (str) - 改配成功的磁盘id + - **NeedRestart** (bool) - 扩容后的状态。NeedRestart = true,必须关闭后启动实例才能使用扩容的磁盘空间。NeedRestart = false,磁盘扩容后无需重启操作。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeAttachedDiskRequestSchema().dumps(d) + + resp = self.invoke("ResizeAttachedDisk", d, **kwargs) + return apis.ResizeAttachedDiskResponseSchema().loads(resp)
+ +
[docs] def resize_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeUHostInstance - 修改指定UHost实例的资源配置,如CPU核心数,内存容量大小,网络增强等。可选配置范围请参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **CPU** (int) - 虚拟CPU核数。可选参数:1-240(可选范围与UHostType相关)。默认值为当前实例的CPU核数 + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 1966080],取值为1024的倍数(可选范围与UHostType相关)。默认值为当前实例的内存大小。 + - **NetCapValue** (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUHostInstance", d, **kwargs) + return apis.ResizeUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def start_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUHostInstance - 启动处于关闭状态的UHost实例,需要指定数据中心及UHostID两个参数的值。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **DiskPassword** (str) - 加密盘密码 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUHostInstance", d, **kwargs) + return apis.StartUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUHostInstance - 指停止处于运行状态的UHost实例,需指定数据中心及UhostID。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **UHostId** (str) - UHost实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUHostInstance", d, **kwargs) + return apis.StopUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def terminate_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateCustomImage - 删除用户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - (Required) 自制镜像ID 参见 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ + + **Response** + + - **ImageId** (str) - 自制镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminateCustomImageRequestSchema().dumps(d) + + resp = self.invoke("TerminateCustomImage", d, **kwargs) + return apis.TerminateCustomImageResponseSchema().loads(resp)
+ +
[docs] def terminate_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateUHostInstance - 删除指定数据中心的UHost实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostId** (str) - (Required) UHost资源Id 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **ReleaseEIP** (bool) - 删除主机时是否释放绑定的EIP。默认为false。 + - **ReleaseUDisk** (bool) - 删除主机时是否同时删除挂载的数据盘。默认为false。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **InRecycle** (str) - 用于判断主机删除时是否进入回收站。放入回收站:"Yes", 彻底删除:“No”。 + - **UHostId** (str) - UHost 实例 Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminateUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("TerminateUHostInstance", d, **kwargs) + return apis.TerminateUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_to_ark_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeToArkUHostInstance - 普通升级为方舟机型 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UHostIds** (list) - (Required) UHost主机的资源ID,例如UHostIds.0代表希望升级的主机1,UHostIds.1代表主机2。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CouponId** (str) - 代金券ID 请参考DescribeCoupon接口 + + **Response** + + - **UHostSet** (list) - UHost主机的资源ID数组 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeToArkUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeToArkUHostInstance", d, **kwargs) + return apis.UpgradeToArkUHostInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uhub/client.html b/_modules/ucloud/services/uhub/client.html new file mode 100644 index 00000000..3b826742 --- /dev/null +++ b/_modules/ucloud/services/uhub/client.html @@ -0,0 +1,335 @@ + + + + + + + + ucloud.services.uhub.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uhub.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uhub.schemas import apis
+
+
+
[docs]class UHubClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UHubClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateRepo - 创建镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 仓库名称,不可修改 + - **Description** (str) - 仓库备注 + - **IsShared** (bool) - 镜像仓库是否公开,公开为true、不公开为false;默认为false + + **Response** + + - **Message** (str) - 有错误时返回内容 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateRepoRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateRepo", d, **kwargs) + return apis.CreateRepoResponseSchema().loads(resp)
+ +
[docs] def delete_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteRepo - 删除镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteRepoRequestSchema().dumps(d) + + resp = self.invoke("DeleteRepo", d, **kwargs) + return apis.DeleteRepoResponseSchema().loads(resp)
+ +
[docs] def delete_repo_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteRepoImage - 删除镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **RepoName** (str) - (Required) 镜像仓库名称 + - **TagName** (str) - 不指定tag则删除全部tag + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteRepoImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteRepoImage", d, **kwargs) + return apis.DeleteRepoImageResponseSchema().loads(resp)
+ +
[docs] def get_image_tag( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetImageTag - 获取镜像tag + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **RepoName** (str) - (Required) 镜像仓库名称 + - **Limit** (int) - 每次获取数量,默认为20 + - **Offset** (int) - 偏移量,默认0 + - **TagName** (str) - 默认不写,如果填写,代表查询该tag,否则查全部tag + + **Response** + + - **TagSet** (list) - 见 **TagSet** 模型定义 + - **TotalCount** (int) - tag总数 + + **Response Model** + + **TagSet** + - **Digest** (str) - 镜像digest值 + - **TagName** (str) - Tag名称 + - **UpdateTime** (str) - 镜像更新时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetImageTagRequestSchema().dumps(d) + + resp = self.invoke("GetImageTag", d, **kwargs) + return apis.GetImageTagResponseSchema().loads(resp)
+ +
[docs] def get_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetRepo - 获取镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (int) - 数量,默认20 + - **Offset** (int) - 偏移量,默认0 + - **Type** (str) - private私有仓库,public公共仓库,默认public + + **Response** + + - **RepoSet** (list) - 见 **RepoSet** 模型定义 + - **TotalCount** (int) - 总的仓库数量 + + **Response Model** + + **RepoSet** + - **CreateTime** (str) - 仓库创建时间 + - **Description** (str) - 镜像仓库描述 + - **IsOutSide** (str) - 镜像仓库是否外网可以访问,可以为ture,不可以为false + - **IsShared** (str) - 镜像仓库类型,false为私有;true为公有 + - **RepoName** (str) - 镜像仓库名称 + - **UpdateTime** (str) - 仓库更新时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetRepoRequestSchema().dumps(d) + + resp = self.invoke("GetRepo", d, **kwargs) + return apis.GetRepoResponseSchema().loads(resp)
+ +
[docs] def get_repo_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetRepoImage - 获取镜像仓库下的镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称 + - **Limit** (int) - 显示数量,默认为20 + - **Offset** (int) - 偏移量,默认0 + + **Response** + + - **ImageSet** (list) - 见 **ImageSet** 模型定义 + - **TotalCount** (int) - + + **Response Model** + + **ImageSet** + - **CreateTime** (str) - 创建时间 + - **ImageName** (str) - 镜像名称 + - **LatestTag** (str) - 最新push的Tag + - **PullCount** (int) - 镜像被下载次数 + - **RepoName** (str) - 镜像仓库名称 + - **UpdateTime** (str) - 修改时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetRepoImageRequestSchema().dumps(d) + + resp = self.invoke("GetRepoImage", d, **kwargs) + return apis.GetRepoImageResponseSchema().loads(resp)
+ +
[docs] def update_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpdateRepo - 更新镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称,不可修改 + - **Description** (str) - 备注 + - **IsShared** (str) - false设置为私有;true设置为公有。默认false + + **Response** + + - **Message** (str) - 错误的时候返回 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateRepoRequestSchema().dumps(d) + + resp = self.invoke("UpdateRepo", d, **kwargs) + return apis.UpdateRepoResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uk8s/client.html b/_modules/ucloud/services/uk8s/client.html new file mode 100644 index 00000000..bf4bf658 --- /dev/null +++ b/_modules/ucloud/services/uk8s/client.html @@ -0,0 +1,819 @@ + + + + + + + + ucloud.services.uk8s.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uk8s.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uk8s.schemas import apis
+
+
+
[docs]class UK8SClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UK8SClient, self).__init__(config, transport, middleware, logger) + +
[docs] def add_uk8s_existing_uhost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SExistingUHost - 将预先创建好的云主机加入到UK8S集群,需要注意的是,该云主机依然会执行重装系统的操作。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **UHostId** (str) - (Required) 云主机Id,为了保证节点正常运行,该主机配置不得低于2C4G。 + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **SubnetId** (str) - 该云主机所属子网Id。 + - **UserData** (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SExistingUHostRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SExistingUHost", d, **kwargs) + return apis.AddUK8SExistingUHostResponseSchema().loads(resp)
+ +
[docs] def add_uk8s_node_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SNodeGroup - 添加UK8S节点池 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - (Required) 集群ID + - **NodeGroupName** (str) - (Required) 节点池名字 + - **BootDiskType** (str) - 磁盘类型 + - **CPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关) + - **ChargeType** (str) - 计费模式 + - **DataDiskSize** (int) - 数据磁盘大小 + - **DataDiskType** (str) - 磁盘类型 + - **GPU** (int) - GPU卡核心数 + - **GpuType** (str) - GPU类型 + - **ImageId** (str) - 镜像ID + - **MachineType** (str) - 云主机机型。枚举值["N", "C", "G", "O", "OS"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Mem** (int) - 内存大小。单位:MB + - **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake";"Intel/CascadelakeR"; “Amd/Epyc2”,"Amd/Auto"],默认值是"Intel/Auto" + - **Tag** (str) - 业务组 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + - **NodeGroupId** (str) - 节点池ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SNodeGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SNodeGroup", d, **kwargs) + return apis.AddUK8SNodeGroupResponseSchema().loads(resp)
+ +
[docs] def add_uk8s_phost_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SPHostNode - 为UK8S集群添加一台或多台物理云主机类型的节点。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - (Required) 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ 默认为月付 + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Count** (int) - (Required) 最大创建Node节点数量,取值范围是[1,10]。 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **NIC** (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G。 + - **Quantity** (int) - 购买时长。默认: 1。月付时,此参数传0,代表了购买至月末。 + - **Raid** (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid + - **SubnetId** (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。 + - **Type** (str) - 物理机类型,默认为:db-2(基础型-SAS-V3) + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SPHostNodeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SPHostNode", d, **kwargs) + return apis.AddUK8SPHostNodeResponseSchema().loads(resp)
+ +
[docs] def add_uk8s_uhost_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SUHostNode - 为UK8S集群添加一台Node节点,机型类型为云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CPU** (int) - (Required) 虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。 + - **ChargeType** (str) - (Required) 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\ 默认为月付 + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Count** (int) - (Required) 创建Node节点数量,取值范围是[1,50]。 + - **Mem** (int) - (Required) 内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BootDiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **DataDiskSize** (int) - 数据磁盘大小,单位GB。默认0。范围 :[20, 1000] + - **DataDiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关) + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100",],MachineType为G时必填 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。 + - **IsolationGroup** (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MachineType** (str) - 云主机机型。枚举值["N", "C", "G", "O", "OS"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **MinmalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake";"Intel/CascadelakeR"; “Amd/Epyc2”,"Amd/Auto"],默认值是"Intel/Auto" + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **SubnetId** (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。 + - **UserData** (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。 + + **Response** + + - **NodeIds** (list) - Node实例Id集合 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SUHostNodeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SUHostNode", d, **kwargs) + return apis.AddUK8SUHostNodeResponseSchema().loads(resp)
+ +
[docs] def create_uk8s_cluster_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUK8SClusterV2 - 创建UK8S集群 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterName** (str) - (Required) 集群名称 + - **MasterCPU** (int) - (Required) Master节点的虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。 + - **MasterMachineType** (str) - (Required) Master节点的云主机机型(V2.0),如["N", "C", "O", "OS"],具体请参照云主机机型。 + - **MasterMem** (int) - (Required) Master节点的内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。 + - **Password** (str) - (Required) 集群节点密码,包括Master和Node。密码需包含最少一个大写字母,请使用base64进行编码,举例如下:# echo -n Password1 | base64 + - **ServiceCIDR** (str) - (Required) Service 网段,用于分配ClusterIP,如172.17.0.0/16。该网段不能与集群所属VPC网段重叠。 + - **SubnetId** (str) - (Required) 集群Node及Pod所属子网 + - **VPCId** (str) - (Required) 集群Node及Pod所属VPC + - **ChargeType** (str) - 集群所有节点的付费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限),默认按月。 + - **ExternalApiServer** (str) - 是否允许外网访问apiserver,开启:Yes 不开启:No。默认为No。 + - **ImageId** (str) - Master节点和Node节点的镜像 ID,不填则随机选择可用的基础镜像。支持用户自定义镜像。 + - **InitScript** (str) - 用户自定义脚本,与UserData不同,自定义脚本将在集群安装完毕后执行。注意:1、总数据量大小不超多16K;2、使用base64编码。 + - **K8sVersion** (str) - k8s集群的版本,版本信息请参考UK8S集群创建页,不指定的话默认为当前支持的最高版本。 + - **KubeProxy** (dict) - 见 **CreateUK8SClusterV2ParamKubeProxy** 模型定义 + - **Master** (list) - 见 **CreateUK8SClusterV2ParamMaster** 模型定义 + - **MasterBootDiskType** (str) - Master节点系统盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **MasterDataDiskSize** (int) - Master节点的数据盘大小,单位GB,默认为0。范围 :[20, 1000] + - **MasterDataDiskType** (str) - Master节点数据盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **MasterIsolationGroup** (str) - 【无效,已删除】当前将自动为Master节点创建隔离组,确保Master节点归属于不同物理机。 + - **MasterMinmalCpuPlatform** (str) - Master节点的最低cpu平台,不选则随机。枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake"。 + - **Nodes** (list) - 见 **CreateUK8SClusterV2ParamNodes** 模型定义 + - **Quantity** (int) - 购买时长。默认为1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **UserData** (str) - 用户自定义数据。注意:1、总数据量大小不超多16K;2、使用base64编码。 + + **Response** + + - **ClusterId** (str) - 集群ID + + **Request Model** + + **CreateUK8SClusterV2ParamKubeProxy** + - **Mode** (str) - 集群kube-proxy模式。支持iptables和ipvs,默认为iptables。 + + + **CreateUK8SClusterV2ParamMaster** + - **Zone** (str) - Master节点所属可用区,需要设置 Master.0.Zone、 Master.1.Zone、Master.2.Zone 三个 Master 节点的可用区。 三个节点可部署在不同可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + **CreateUK8SClusterV2ParamNodes** + - **BootDiskType** (str) - 一组Node节点的系统盘类型,请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **CPU** (int) - 一组Node节点的虚拟CPU核数。单位:核,范围:[2, 64],可选范围参考控制台。 + - **Count** (int) - 一组Node节点的数量,范围:[1,10]。 + - **DataDiskSize** (int) - 数据磁盘大小,单位GB。默认0。范围 :[20, 1000] + - **DataDiskType** (str) - 一组Node节点的数据盘类型,请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **GPU** (int) - 一组Node节点的GPU卡核心数,仅GPU机型支持此字段。 + - **GpuType** (str) - 一组Node节点的GPU类型,枚举值["K80", "P40", "V100"],最新值参考Console。 + - **IsolationGroup** (str) - 一组Node节点的隔离组Id,归属于同一隔离组的虚拟机节点将落在不同的物理机上,单个隔离组最多只能容纳8个节点。参见DescribeIsolationGroup。 + - **Labels** (str) - Node节点标签,形式为key=value,多组Labels用”,“隔开,最多支持五组。 + - **MachineType** (str) - 一组Nodes节点云主机机型,如["N", "C", "O", "OS"],具体请参照云主机机型。 + - **MaxPods** (int) - Node节点上可运行最大节点数,默认为110。 + - **Mem** (int) - 一组Node节点的内存大小。单位:MB,范围 :[4096, 262144],取值为1024的倍数,可选范围参考控制台。 + - **MinmalCpuPlatform** (str) - Node节点的最低cpu平台,不选则随机。枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake"。 + - **Zone** (str) - 一组Nodes节点所属可用区,可创建多组Nodes节点,如一组是CPU Nodes节点,另一组是GPU Nodes节点。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUK8SClusterV2RequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUK8SClusterV2", d, **kwargs) + return apis.CreateUK8SClusterV2ResponseSchema().loads(resp)
+ +
[docs] def del_uk8s_cluster( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DelUK8SCluster - 删除UK8S集群 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) 集群id + - **ReleaseUDisk** (bool) - 是否删除节点挂载的数据盘。枚举值[true:删除,false: 不删除],默认不删除 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DelUK8SClusterRequestSchema().dumps(d) + + resp = self.invoke("DelUK8SCluster", d, **kwargs) + return apis.DelUK8SClusterResponseSchema().loads(resp)
+ +
[docs] def del_uk8s_cluster_node_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DelUK8SClusterNodeV2 - 删除集群中的Node节点,删除前务必先将其中的Pod驱逐。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **NodeId** (str) - (Required) Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda。**非云主机或物理云主机资源Id** + - **ReleaseDataUDisk** (bool) - 删除节点时是否释放数据盘。 枚举值[true:释放,false: 不释放],默认为true。 + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DelUK8SClusterNodeV2RequestSchema().dumps(d) + + resp = self.invoke("DelUK8SClusterNodeV2", d, **kwargs) + return apis.DelUK8SClusterNodeV2ResponseSchema().loads(resp)
+ +
[docs] def describe_uk8s_cluster( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUK8SCluster - 获取集群信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 所属区域 + - **ClusterId** (str) - (Required) k8s集群ID + + **Response** + + - **ApiServer** (str) - 集群apiserver地址 + - **CACert** (str) - 集群CA根证书 + - **ClusterDomain** (str) - 自定义或者默认的clusterdomain + - **ClusterId** (str) - 集群ID + - **ClusterName** (str) - 资源名字 + - **CreateTime** (int) - 创建时间 + - **EtcdCert** (str) - 集群etcd服务证书 + - **EtcdKey** (str) - 集群etcd服务密钥 + - **ExternalApiServer** (str) - 集群外部apiserver地址 + - **KubeProxy** (dict) - kube-proxy配置 + - **MasterCount** (int) - Master 节点数量 + - **MasterList** (list) - 见 **UhostInfo** 模型定义 + - **NodeCount** (int) - Node节点数量 + - **NodeList** (list) - 见 **UhostInfo** 模型定义 + - **PodCIDR** (str) - Pod网段 + - **ServiceCIDR** (str) - 服务网段 + - **Status** (str) - 状态 + - **SubnetId** (str) - 所属子网 + - **VPCId** (str) - 所属VPC + - **Version** (str) - K8S版本 + + **Response Model** + + **UhostInfo** + - **CPU** (int) - Cpu数量 + - **CreateTime** (int) - 创建时间 + - **DiskSet** (list) - 见 **DiskSet** 模型定义 + - **ExpireTime** (int) - 到期时间 + - **IPSet** (list) - 见 **IPSet** 模型定义 + - **Memory** (int) - 内存 + - **Name** (str) - 主机名称 + - **NodeId** (str) - 主机ID + - **NodeType** (str) - 节点类型:uhost表示云主机;uphost表示物理云主机 + - **OsName** (str) - 镜像信息 + - **State** (str) - 主机状态 + - **Zone** (str) - 所在机房 + + + **DiskSet** + - **BackupType** (str) - 备份方案,枚举类型:BASIC_SNAPSHOT,普通快照;DATAARK,方舟。无快照则不返回该字段。 + - **DiskId** (str) - 磁盘长ID + - **DiskType** (str) - LOCAL_NOMAL| CLOUD_NORMAL| LOCAL_SSD| CLOUD_SSD|EXCLUSIVE_LOCAL_DISK + - **Drive** (str) - 磁盘盘符 + - **Encrypted** (str) - Yes: 加密 No: 非加密 + - **IOPS** (int) - 当前主机的IOPS值 + - **IsBoot** (str) - True| False + - **Name** (str) - UDisk名字(仅当磁盘是UDisk时返回) + - **Size** (int) - 磁盘大小,单位: GB + - **Type** (str) - 磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk + + + **IPSet** + - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) + - **Default** (str) - 是否默认的弹性网卡的信息。true: 是默认弹性网卡;其他值:不是。 + - **IP** (str) - IP地址 + - **IPId** (str) - IP资源ID (内网IP无对应的资源ID) + - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUK8SClusterRequestSchema().dumps(d) + + resp = self.invoke("DescribeUK8SCluster", d, **kwargs) + return apis.DescribeUK8SClusterResponseSchema().loads(resp)
+ +
[docs] def describe_uk8s_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUK8SImage - 获取UK8S支持的Node节点操作系统,可基于该操作系统制定自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ImageSet** (list) - 见 **ImageInfo** 模型定义 + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + - **PHostImageSet** (list) - 见 **ImageInfo** 模型定义 + + **Response Model** + + **ImageInfo** + - **ImageId** (str) - 镜像 Id + - **ImageName** (str) - 镜像名称 + - **NotSupportGPU** (bool) - 该镜像是否支持GPU机型,枚举值[true:不支持,false:支持]。 + - **ZoneId** (int) - 可用区 Id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUK8SImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeUK8SImage", d, **kwargs) + return apis.DescribeUK8SImageResponseSchema().loads(resp)
+ +
[docs] def describe_uk8s_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUK8SNode - 用于获取 UK8S 节点详情 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - (Required) UK8S 集群 Id + - **Name** (str) - (Required) K8S 节点IP或者节点ID + + **Response** + + - **Action** (str) - 操作名称 + - **AllocatedPodCount** (int) - 已分配到当前节点的 Pod 数量 + - **Annotations** (list) - 字符串数组,每一项是类似 "node.alpha.kubernetes.io/ttl=0" 的注解 + - **CPUCapacity** (str) - 节点 CPU 总量 + - **CPULimits** (str) - 节点上已分配 Pod 的 CPU 限制值 + - **CPULimitsFraction** (str) - 节点上已分配 Pod 的 CPU 限制值占 CPU 总量的比例 + - **CPURequests** (str) - 节点上已分配 Pod 的 CPU 请求量 + - **CPURequestsFraction** (str) - 节点上已分配 Pod 的 CPU 请求量占 CPU 总量的比例 + - **Conditions** (list) - 见 **K8SNodeCondition** 模型定义 + - **ContainerImages** (list) - 节点上镜像名称数组 + - **ContainerRuntimeVersion** (str) - 容器运行时版本,如:"docker://18.9.9" + - **CreationTimestamp** (int) - 时间戳,单位是 秒 + - **Hostname** (str) - 主机名 + - **InternalIP** (str) - 内部 IP 地址 + - **KernelVersion** (str) - 内核版本,如:"4.19.0-6.el7.ucloud.x86_64" + - **KubeProxyVersion** (str) - kubeproxy 版本 + - **KubeletVersion** (str) - kubelet 版本 + - **Labels** (list) - 字符串数组,每一项是类似 "kubernetes.io/arch=amd64" 的标签 + - **MemoryCapacity** (str) - 节点内存总量 + - **MemoryLimits** (str) - 节点上已分配 Pod 的内存限制量 + - **MemoryLimitsFraction** (str) - 节点上已分配 Pod 的内存限制量占内存总量的比例,如返回值为 "18",则意味着限制量占总量的 18% + - **MemoryRequests** (str) - 节点上已分配 Pod 的内存请求量 + - **MemoryRequestsFraction** (str) - 节点上已分配 Pod 的内存请求量占内存总量的比例,如返回值为 "4.5",则意味着请求量占总量的 4.5% + - **Message** (str) - 操作出错时的提示信息 + - **Name** (str) - 节点名称 + - **OSImage** (str) - 操作系统类型,如:"CentOS Linux 7 (Core)" + - **PodCapacity** (int) - 节点允许的可分配 Pod 最大数量 + - **ProviderID** (str) - 字符串,如:"UCloud://cn-sh2-02//uk8s-vsc0vgob-n-mpzxc" + - **RetCode** (int) - 返回码 + - **Taints** (list) - 字符串数组,每一项是类似 "node-role.kubernetes.io/master:NoSchedule" 的污点 + - **Unschedulable** (bool) - 是否禁止调度 + + **Response Model** + + **K8SNodeCondition** + - **LastProbeTime** (str) - 最后一次上报状态的时间 + - **LastTransitionTime** (str) - 最后一次状态转变时间 + - **Message** (str) - 状态变化的描述信息 + - **Reason** (str) - 状态变化的原因 + - **Status** (str) - 状态,False、True + - **Type** (str) - Condition 类型,如 MemoryPressure、DiskPressure、PIDPressure、Ready + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUK8SNodeRequestSchema().dumps(d) + + resp = self.invoke("DescribeUK8SNode", d, **kwargs) + return apis.DescribeUK8SNodeResponseSchema().loads(resp)
+ +
[docs] def list_uk8s_cluster_node_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUK8SClusterNodeV2 - 获取UK8S集群节点信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - (Required) UK8S集群ID + + **Response** + + - **NodeSet** (list) - 见 **NodeInfoV2** 模型定义 + - **TotalCount** (int) - 满足条件的节点数量,包括Master。 + + **Response Model** + + **NodeInfoV2** + - **AsgId** (str) - 节点所属伸缩组ID,非伸缩组创建出来的节点,伸缩组ID为Default。 + - **CPU** (int) - Node节点CPU核数,单位: 个。 + - **CreateTime** (int) - 节点创建时间 + - **ExpireTime** (int) - 节点计费到期时间 + - **GPU** (int) - 节点的GPU颗数。 + - **IPSet** (list) - 见 **UHostIPSet** 模型定义 + - **InstanceId** (str) - 资源ID,如uhost-xxxx,或uphost-xxxxx。 + - **InstanceName** (str) - 资源名称,初始值等于NodeId,用户可在UHost或UPHost处修改。 + - **InstanceType** (str) - Node节点的资源类型,枚举值为UHost或UPHost。 + - **KubeProxy** (dict) - 见 **KubeProxy** 模型定义 + - **MachineType** (str) - 机型类别,分别对应Uhost的MachineType或PHost的PHostType。 + - **Memory** (int) - 内存大小,单位: MB。 + - **NodeId** (str) - NodeId,Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda + - **NodeLogInfo** (str) - 加节点时判断是否没有资源,如果返回NORESOURCE则代表没有资源了 + - **NodeRole** (str) - node角色,枚举值为master、node + - **NodeStatus** (str) - Node的状态:枚举值:初始化:"Initializing";启动中:"Starting";运行:"Running";停止中:"Stopping";停止:"Stopped";待删除:"ToBeDeleted";删除中:"Deleting";异常:"Error";安装失败:"Install Fail"; + - **OsName** (str) - Node节点的镜像名称。 + - **OsType** (str) - Node节点的操作系统类别,如Linux或Windows。 + - **Unschedulable** (bool) - 是否允许Pod调度到该节点,枚举值为true或false。 + - **Zone** (str) - Node所在可用区 + + + **UHostIPSet** + - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) + - **IP** (str) - IP地址 + - **IPId** (str) - IP资源ID (内网IP无对应的资源ID) + - **Mac** (str) - Mac地址 + - **SubnetId** (str) - IP地址对应的子网 ID + - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private + - **VPCId** (str) - IP地址对应的VPC ID + + + **KubeProxy** + - **Mode** (str) - KubeProxy模式,枚举值为[ipvs,iptables] + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListUK8SClusterNodeV2RequestSchema().dumps(d) + + resp = self.invoke("ListUK8SClusterNodeV2", d, **kwargs) + return apis.ListUK8SClusterNodeV2ResponseSchema().loads(resp)
+ +
[docs] def list_uk8s_cluster_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUK8SClusterV2 - 获取UK8S集群列表信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - UK8S集群ID + - **Limit** (int) - 返回数据长度,默认为20。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **ClusterCount** (int) - 满足条件的集群数量 + - **ClusterSet** (list) - 见 **ClusterSet** 模型定义 + + **Response Model** + + **ClusterSet** + - **ApiServer** (str) - 集群apiserver地址 + - **ClusterId** (str) - 集群ID + - **ClusterLogInfo** (str) - 创建集群时判断如果为NORESOURCE则为没资源,否则为空 + - **ClusterName** (str) - 资源名字 + - **CreateTime** (int) - 创建时间 + - **ExternalApiServer** (str) - 集群外部apiserver地址 + - **K8sVersion** (str) - 集群版本 + - **MasterCount** (int) - Master 节点数量 + - **NodeCount** (int) - Node节点数量 + - **PodCIDR** (str) - Pod网段 + - **ServiceCIDR** (str) - 服务网段 + - **Status** (str) - 集群状态,枚举值:初始化:"INITIALIZING";启动中:"STARTING";创建失败:"CREATEFAILED";正常运行:"RUNNING";添加节点:"ADDNODE";删除节点:"DELNODE";删除中:"DELETING";删除失败:"DELETEFAILED";错误:"ERROR";升级插件:"UPDATE_PLUGIN";更新插件信息:"UPDATE_PLUGIN_INFO";异常:"ABNORMAL";升级集群中:"UPGRADING";容器运行时切换:"CONVERTING" + - **SubnetId** (str) - 所属子网 + - **VPCId** (str) - 所属VPC + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListUK8SClusterV2RequestSchema().dumps(d) + + resp = self.invoke("ListUK8SClusterV2", d, **kwargs) + return apis.ListUK8SClusterV2ResponseSchema().loads(resp)
+ +
[docs] def list_uk8s_node_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUK8SNodeGroup - 列出UK8S节点池 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - (Required) 集群ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **NodeGroupList** (list) - 见 **NodeGroupSet** 模型定义 + + **Response Model** + + **NodeGroupSet** + - **BootDiskType** (str) - 系统盘类型 + - **CPU** (int) - 虚拟CPU核数 + - **ChargeType** (str) - 付费方式 + - **DataDiskSize** (int) - 数据盘大小 + - **DataDiskType** (str) - 数据盘类型 + - **GPU** (int) - GPU卡核心数 + - **GpuType** (str) - GPU类型 + - **ImageId** (str) - 镜像ID + - **MachineType** (str) - 机型 + - **Mem** (int) - 内存大小 + - **MinimalCpuPlatform** (str) - cpu平台 + - **NodeGroupId** (str) - 节点池ID + - **NodeGroupName** (str) - 节点池名字 + - **NodeList** (list) - 节点id列表 + - **Tag** (str) - 业务组 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListUK8SNodeGroupRequestSchema().dumps(d) + + resp = self.invoke("ListUK8SNodeGroup", d, **kwargs) + return apis.ListUK8SNodeGroupResponseSchema().loads(resp)
+ +
[docs] def remove_uk8s_node_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RemoveUK8SNodeGroup - 删除UK8S节点池 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ClusterId** (str) - (Required) 集群id + - **NodeGroupId** (str) - (Required) 节点池Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RemoveUK8SNodeGroupRequestSchema().dumps(d) + + resp = self.invoke("RemoveUK8SNodeGroup", d, **kwargs) + return apis.RemoveUK8SNodeGroupResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/ulb/client.html b/_modules/ucloud/services/ulb/client.html new file mode 100644 index 00000000..0dafb9ff --- /dev/null +++ b/_modules/ucloud/services/ulb/client.html @@ -0,0 +1,1046 @@ + + + + + + + + ucloud.services.ulb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ulb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ulb.schemas import apis
+
+
+
[docs]class ULBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(ULBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_backend( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AllocateBackend - 添加ULB后端资源实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ResourceId** (str) - (Required) 所添加的后端资源的资源ID + - **ResourceType** (str) - (Required) 所添加的后端资源的类型,枚举值:UHost -> 云主机;UNI -> 虚拟网卡;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;默认值为UHost。报文转发模式不支持UDocker、UHybrid、CUBE + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **VServerId** (str) - (Required) VServer实例的ID + - **Enabled** (int) - 后端实例状态开关,枚举值: 1:启用; 0:禁用 默认为启用 + - **IsBackup** (int) - rs是否为backup,默认为00:普通rs1:backup的rs + - **Port** (int) - 所添加的后端资源服务端口,取值范围[1-65535],默认80 + - **ResourceIP** (str) - 所添加的后端服务器的资源实例IP,当ResourceType 为 UHybrid 时有效,且必填 + - **SubnetId** (str) - 所添加的后端服务器所在的子网,当ResourceType 为 UHybrid 时有效,且必填 + - **VPCId** (str) - 所添加的后端服务器所在的vpc,当ResourceType 为 UHybrid 时有效,且必填 + - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 + + **Response** + + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关),可用于 UpdateBackendAttribute/UpdateBackendAttributeBatch/ReleaseBackend + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateBackendRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateBackend", d, **kwargs) + return apis.AllocateBackendResponseSchema().loads(resp)
+ +
[docs] def allocate_backend_batch( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AllocateBackendBatch - + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) + - **ULBId** (str) - (Required) + - **VServerId** (str) - (Required) + - **ApiVersion** (int) - + - **Backends** (list) - + + **Response** + + - **BackendSet** (list) - 见 **BackendSet** 模型定义 + + **Response Model** + + **BackendSet** + - **BackendId** (str) - + - **ResourceId** (str) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateBackendBatchRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateBackendBatch", d, **kwargs) + return apis.AllocateBackendBatchResponseSchema().loads(resp)
+ +
[docs] def bind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """BindSSL - 将SSL证书绑定到VServer + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的Id + - **ULBId** (str) - (Required) 所绑定ULB实例ID + - **VServerId** (str) - (Required) 所绑定VServer实例ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindSSLRequestSchema().dumps(d) + + resp = self.invoke("BindSSL", d, **kwargs) + return apis.BindSSLResponseSchema().loads(resp)
+ +
[docs] def create_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreatePolicy - 创建VServer内容转发策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId + - **Match** (str) - (Required) 内容转发匹配字段 + - **ULBId** (str) - (Required) 需要添加内容转发策略的负载均衡实例ID + - **VServerId** (str) - (Required) 需要添加内容转发策略的VServer实例ID + - **PolicyPriority** (int) - 策略优先级,1-9999 + - **Type** (str) - 内容转发匹配字段的类型 + + **Response** + + - **PolicyId** (str) - 内容转发策略ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreatePolicyRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreatePolicy", d, **kwargs) + return apis.CreatePolicyResponseSchema().loads(resp)
+ +
[docs] def create_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLName** (str) - (Required) SSL证书的名字,默认值为空 + - **CaCert** (str) - CA证书 + - **PrivateKey** (str) - 加密证书的私钥 + - **SSLContent** (str) - SSL证书的完整内容,包括用户证书、加密证书的私钥、CA证书 + - **SSLType** (str) - 所添加的SSL证书类型,目前只支持Pem格式 + - **UserCert** (str) - 用户的证书 + + **Response** + + - **SSLId** (str) - SSL证书的Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSSLRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSSL", d, **kwargs) + return apis.CreateSSLResponseSchema().loads(resp)
+ +
[docs] def create_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateULB - 创建负载均衡实例,可以选择内网或者外网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - ULB 所属的业务组ID,如果不传则使用默认的业务组 + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费 + - **FirewallId** (str) - 防火墙ID,如果不传,则默认不绑定防火墙 + - **InnerMode** (str) - 创建的ULB是否为内网模式 + - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发。默认为RequestProxy + - **OuterMode** (str) - 创建的ULB是否为外网模式,默认即为外网模式 + - **Remark** (str) - 备注 + - **SubnetId** (str) - 内网ULB 所属的子网ID,如果不传则使用默认的子网 + - **Tag** (str) - 业务组 + - **ULBName** (str) - 负载均衡的名字,默认值为“ULB” + - **VPCId** (str) - ULB所在的VPC的ID, 如果不传则使用默认的VPC + + **Response** + + - **IPv6AddressId** (str) - IPv6地址Id + - **ULBId** (str) - 负载均衡实例的Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateULBRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateULB", d, **kwargs) + return apis.CreateULBResponseSchema().loads(resp)
+ +
[docs] def create_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVServer - 创建VServer实例,定义监听的协议和端口以及负载均衡算法 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ULBId** (str) - (Required) 负载均衡实例ID + - **ClientTimeout** (int) - ListenType为RequestProxy时表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;ListenType为PacketsTransmit时表示连接保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查域名 + - **FrontendPort** (int) - VServer后端端口,取值范围[1-65535];默认值为80 + - **ListenType** (str) - 监听器类型,枚举值,RequestProxy ,请求代理;PacketsTransmit ,报文转发。默认为RequestProxy + - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup ->主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:"Roundrobin" + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测;Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确认; None和ServerInsert: 此字段无意义; UserDefined:此字段传入自定义会话保持String + - **PersistenceType** (str) - VServer会话保持方式,默认关闭会话保持。枚举值:None -> 关闭;ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY。 + - **Protocol** (str) - VServer实例的协议,请求代理模式下有 HTTP、HTTPS、TCP,报文转发下有 TCP,UDP。默认为“HTTP" + - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 + - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 + - **VServerName** (str) - VServer实例名称,默认为"VServer" + + **Response** + + - **VServerId** (str) - VServer实例的Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVServerRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVServer", d, **kwargs) + return apis.CreateVServerResponseSchema().loads(resp)
+ +
[docs] def delete_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeletePolicy - 删除内容转发策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PolicyId** (str) - (Required) 内容转发策略ID + - **VServerId** (str) - VServer 资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeletePolicyRequestSchema().dumps(d) + + resp = self.invoke("DeletePolicy", d, **kwargs) + return apis.DeletePolicyResponseSchema().loads(resp)
+ +
[docs] def delete_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteSSL - 删除SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSSLRequestSchema().dumps(d) + + resp = self.invoke("DeleteSSL", d, **kwargs) + return apis.DeleteSSLResponseSchema().loads(resp)
+ +
[docs] def delete_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteULB - 删除负载均衡实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **ReleaseEip** (bool) - 删除ulb时是否释放绑定的EIP,false标识只解绑EIP,true表示会释放绑定的EIP,默认是false。Anycast IP 此参数无效 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteULBRequestSchema().dumps(d) + + resp = self.invoke("DeleteULB", d, **kwargs) + return apis.DeleteULBResponseSchema().loads(resp)
+ +
[docs] def delete_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVServer - 删除VServer实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **VServerId** (str) - (Required) VServer实例的ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVServerRequestSchema().dumps(d) + + resp = self.invoke("DeleteVServer", d, **kwargs) + return apis.DeleteVServerResponseSchema().loads(resp)
+ +
[docs] def describe_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeSSL - 获取SSL证书信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值,默认为20 + - **Offset** (int) - 数据偏移量,默认值为0 + - **SSLId** (str) - SSL证书的Id + + **Response** + + - **DataSet** (list) - 见 **ULBSSLSet** 模型定义 + - **TotalCount** (int) - 满足条件的SSL证书总数 + + **Response Model** + + **ULBSSLSet** + - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 + - **CreateTime** (int) - SSL证书的创建时间 + - **HashValue** (str) - SSL证书的HASH值 + - **SSLContent** (str) - SSL证书的内容 + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 + + + **SSLBindedTargetSet** + - **ULBId** (str) - VServer 所属的ULB实例的资源ID + - **ULBName** (str) - ULB实例的名称 + - **VServerId** (str) - SSL证书绑定到的VServer的资源ID + - **VServerName** (str) - 对应的VServer的名字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSSLRequestSchema().dumps(d) + + resp = self.invoke("DescribeSSL", d, **kwargs) + return apis.DescribeSSLResponseSchema().loads(resp)
+ +
[docs] def describe_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeULB - 获取ULB详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BusinessId** (str) - ULB所属的业务组ID + - **Limit** (int) - 数据分页值,默认为20 + - **Offset** (int) - 数据偏移量,默认为0 + - **SubnetId** (str) - ULB所属的子网ID + - **ULBId** (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息 + - **VPCId** (str) - ULB所属的VPC + + **Response** + + - **DataSet** (list) - 见 **ULBSet** 模型定义 + - **TotalCount** (int) - 满足条件的ULB总数 + + **Response Model** + + **ULBSet** + - **Bandwidth** (int) - 带宽 + - **BandwidthType** (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 + - **BusinessId** (str) - ULB 所属的业务组ID + - **CreateTime** (int) - ULB的创建时间,格式为Unix Timestamp + - **EnableLog** (int) - ULB是否开启日志功能。0,关闭;1,开启 + - **FirewallSet** (list) - 见 **FirewallSet** 模型定义 + - **IPSet** (list) - 见 **ULBIPSet** 模型定义 + - **IPVersion** (str) - ULB ip类型,枚举值:IPv6 / IPv4 (内部测试,暂未对外开放) + - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 + - **LogSet** (dict) - 见 **LoggerSet** 模型定义 + - **Name** (str) - 负载均衡的资源名称 + - **PrivateIP** (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 + - **Remark** (str) - 负载均衡的备注 + - **SubnetId** (str) - ULB 为 InnerMode 时,ULB 所属的子网ID,默认为空 + - **Tag** (str) - 负载均衡的业务组名称 + - **ULBId** (str) - 负载均衡的资源ID + - **ULBType** (str) - ULB 的类型 + - **VPCId** (str) - ULB所在的VPC的ID + - **VServerSet** (list) - 见 **ULBVServerSet** 模型定义 + + + **ULBIPSet** + - **Bandwidth** (int) - 弹性IP的带宽值(暂未对外开放) + - **BandwidthType** (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) + - **EIP** (str) - 弹性IP地址 + - **EIPId** (str) - 弹性IP的ID + - **OperatorName** (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP + + + **ULBVServerSet** + - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 + - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 + - **FrontendPort** (int) - VServer服务端口 + - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 + - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 + - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 + - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 + - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 + - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 + - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 + - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 + - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 + - **VServerId** (str) - VServer实例的Id + - **VServerName** (str) - VServer实例的名字 + + + **ULBBackendSet** + - **BackendId** (str) - 后端资源实例的Id + - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 + - **IsBackup** (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs + - **Port** (int) - 后端提供服务的端口 + - **PrivateIP** (str) - 后端提供服务的内网IP + - **ResourceId** (str) - 资源实例的资源Id + - **ResourceName** (str) - 资源实例的资源名称 + - **ResourceType** (str) - 资源实例的类型 + - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 + - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id + - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 + - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID + - **Weight** (int) - + + + **ULBPolicySet** + - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 + - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 + - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 + - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 + - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 + - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 + - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 + - **VServerId** (str) - 所属VServerId + + + **PolicyBackendSet** + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 + - **ObjectId** (str) - 后端资源的对象ID + - **Port** (int) - 所添加的后端资源服务端口 + - **PrivateIP** (str) - 后端资源的内网IP + - **ResourceName** (str) - 后端资源的实例名称 + - **ResourceType** (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 + - **SubResourceId** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID + - **SubResourceName** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 + - **SubResourceType** (str) - "UNI"或者为空 + + + **ULBSSLSet** + - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 + - **CreateTime** (int) - SSL证书的创建时间 + - **HashValue** (str) - SSL证书的HASH值 + - **SSLContent** (str) - SSL证书的内容 + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 + + + **SSLBindedTargetSet** + - **ULBId** (str) - VServer 所属的ULB实例的资源ID + - **ULBName** (str) - ULB实例的名称 + - **VServerId** (str) - SSL证书绑定到的VServer的资源ID + - **VServerName** (str) - 对应的VServer的名字 + + + **LoggerSet** + - **BucketName** (str) - ulb日志上传的bucket + - **TokenID** (str) - 上传到bucket使用的token的tokenid + - **TokenName** (str) - bucket的token名称 + + + **FirewallSet** + - **FirewallId** (str) - 防火墙ID + - **FirewallName** (str) - 防火墙名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeULBRequestSchema().dumps(d) + + resp = self.invoke("DescribeULB", d, **kwargs) + return apis.DescribeULBResponseSchema().loads(resp)
+ +
[docs] def describe_ulb_simple( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeULBSimple - 获取ULB信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - ULB所属的业务组ID + - **Limit** (int) - 数据分页值,默认为10000 + - **Offset** (int) - 数据偏移量,默认为0 + - **SubnetId** (str) - ULB所属的子网ID + - **ULBId** (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息 + - **VPCId** (str) - ULB所属的VPC + + **Response** + + - **DataSet** (list) - 见 **ULBSimpleSet** 模型定义 + - **TotalCount** (int) - 满足条件的ULB总数 + + **Response Model** + + **LoggerSet** + - **BucketName** (str) - ulb日志上传的bucket + - **TokenID** (str) - 上传到bucket使用的token的tokenid + - **TokenName** (str) - bucket的token名称 + + + **FirewallSet** + - **FirewallId** (str) - 防火墙ID + - **FirewallName** (str) - 防火墙名称 + + + **ULBIPSet** + - **Bandwidth** (int) - 弹性IP的带宽值(暂未对外开放) + - **BandwidthType** (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) + - **EIP** (str) - 弹性IP地址 + - **EIPId** (str) - 弹性IP的ID + - **OperatorName** (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP + + + **ULBSimpleSet** + - **Bandwidth** (int) - 带宽 + - **BandwidthType** (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 + - **BusinessId** (str) - ULB 所属的业务组ID + - **CreateTime** (int) - ULB的创建时间,格式为Unix Timestamp + - **EnableLog** (int) - ULB是否开启日志功能。0,关闭;1,开启 + - **FirewallSet** (list) - 见 **FirewallSet** 模型定义 + - **IPSet** (list) - 见 **ULBIPSet** 模型定义 + - **IPVersion** (str) - ULB提供服务的IP类型。枚举值,“IPv4”,"IPv6"。默认为“IPv4” + - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 + - **LogSet** (dict) - 见 **LoggerSet** 模型定义 + - **Name** (str) - 负载均衡的资源名称 + - **PrivateIP** (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 + - **Remark** (str) - 负载均衡的备注 + - **SubnetId** (str) - ULB 为 InnerMode 时,ULB 所属的子网ID + - **Tag** (str) - 负载均衡的业务组名称 + - **ULBId** (str) - 负载均衡的资源ID + - **ULBType** (str) - ULB 的类型(InnerMode or OuterMode) + - **VPCId** (str) - ULB所在的VPC的ID + - **VServerCount** (int) - ulb下vserver数量 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeULBSimpleRequestSchema().dumps(d) + + resp = self.invoke("DescribeULBSimple", d, **kwargs) + return apis.DescribeULBSimpleResponseSchema().loads(resp)
+ +
[docs] def describe_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVServer - 获取ULB下的VServer的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ULBId** (str) - (Required) 负载均衡实例的Id + - **Limit** (int) - 数据分页值 + - **Offset** (int) - 数据偏移量 + - **VServerId** (str) - VServer实例的Id;若指定则返回指定的VServer实例的信息; 若不指定则返回当前负载均衡实例下所有VServer的信息 + + **Response** + + - **DataSet** (list) - 见 **ULBVServerSet** 模型定义 + - **TotalCount** (int) - 满足条件的VServer总数 + + **Response Model** + + **ULBVServerSet** + - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 + - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 + - **FrontendPort** (int) - VServer服务端口 + - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 + - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 + - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 + - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 + - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 + - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 + - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 + - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 + - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 + - **VServerId** (str) - VServer实例的Id + - **VServerName** (str) - VServer实例的名字 + + + **ULBBackendSet** + - **BackendId** (str) - 后端资源实例的Id + - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 + - **IsBackup** (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs + - **Port** (int) - 后端提供服务的端口 + - **PrivateIP** (str) - 后端提供服务的内网IP + - **ResourceId** (str) - 资源实例的资源Id + - **ResourceName** (str) - 资源实例的资源名称 + - **ResourceType** (str) - 资源实例的类型 + - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 + - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id + - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 + - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID + - **Weight** (int) - + + + **ULBPolicySet** + - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 + - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 + - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 + - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 + - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 + - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 + - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 + - **VServerId** (str) - 所属VServerId + + + **PolicyBackendSet** + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 + - **ObjectId** (str) - 后端资源的对象ID + - **Port** (int) - 所添加的后端资源服务端口 + - **PrivateIP** (str) - 后端资源的内网IP + - **ResourceName** (str) - 后端资源的实例名称 + - **ResourceType** (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 + - **SubResourceId** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID + - **SubResourceName** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 + - **SubResourceType** (str) - "UNI"或者为空 + + + **ULBSSLSet** + - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 + - **CreateTime** (int) - SSL证书的创建时间 + - **HashValue** (str) - SSL证书的HASH值 + - **SSLContent** (str) - SSL证书的内容 + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 + + + **SSLBindedTargetSet** + - **ULBId** (str) - VServer 所属的ULB实例的资源ID + - **ULBName** (str) - ULB实例的名称 + - **VServerId** (str) - SSL证书绑定到的VServer的资源ID + - **VServerName** (str) - 对应的VServer的名字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVServerRequestSchema().dumps(d) + + resp = self.invoke("DescribeVServer", d, **kwargs) + return apis.DescribeVServerResponseSchema().loads(resp)
+ +
[docs] def release_backend( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReleaseBackend - 从VServer释放后端资源实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID) + - **ULBId** (str) - (Required) 负载均衡实例的ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseBackendRequestSchema().dumps(d) + + resp = self.invoke("ReleaseBackend", d, **kwargs) + return apis.ReleaseBackendResponseSchema().loads(resp)
+ +
[docs] def unbind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UnbindSSL - 从VServer解绑SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的Id + - **ULBId** (str) - (Required) 所绑定ULB实例ID + - **VServerId** (str) - (Required) 所绑定VServer实例ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnbindSSLRequestSchema().dumps(d) + + resp = self.invoke("UnbindSSL", d, **kwargs) + return apis.UnbindSSLResponseSchema().loads(resp)
+ +
[docs] def update_backend_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateBackendAttribute - 更新ULB后端资源实例(服务节点)属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BackendId** (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID) + - **ULBId** (str) - (Required) 负载均衡资源ID + - **Enabled** (int) - 后端实例状态开关 + - **IsBackup** (int) - 是否为backup0:主rs1:备rs默认为0 + - **Port** (int) - 后端资源服务端口,取值范围[1-65535] + - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateBackendAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateBackendAttribute", d, **kwargs) + return apis.UpdateBackendAttributeResponseSchema().loads(resp)
+ +
[docs] def update_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdatePolicy - 更新内容转发规则,包括转发规则后的服务节点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Match** (str) - (Required) 内容转发匹配字段 + - **ULBId** (str) - (Required) 需要添加内容转发策略的负载均衡实例ID + - **VServerId** (str) - (Required) 需要添加内容转发策略的VServer实例ID,只支持请求代理模式下,HTTP或HTTPS协议的VServer + - **BackendId** (list) - 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId,不传表示更新转发节点为空 + - **PolicyId** (str) - 转发规则的ID,当Type为Default时,可以不传或为空 + - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名转发规则;Path -> 路径转发规则;Default -> 默认转发规则,不传默认值Domain + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdatePolicyRequestSchema().dumps(d) + + resp = self.invoke("UpdatePolicy", d, **kwargs) + return apis.UpdatePolicyResponseSchema().loads(resp)
+ +
[docs] def update_ulb_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateULBAttribute - 更新ULB名字业务组备注等属性字段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) ULB资源ID + - **Name** (str) - 名字 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateULBAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateULBAttribute", d, **kwargs) + return apis.UpdateULBAttributeResponseSchema().loads(resp)
+ +
[docs] def update_vserver_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVServerAttribute - 更新VServer实例属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ULBId** (str) - (Required) 负载均衡实例ID + - **VServerId** (str) - (Required) VServer实例ID + - **ClientTimeout** (int) - 请求代理的VServer下表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;报文转发的VServer下表示回话保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 + - **Domain** (str) - MonitorType 为 Path 时指定健康检查发送请求时HTTP HEADER 里的域名 + - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup -> 主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:"Roundrobin" + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测,Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping + - **Path** (str) - MonitorType 为 Path 时指定健康检查发送请求时的路径,默认为 / + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert, 此字段无意义; UserDefined, 则此字段传入用户自定义会话保持String. 若无此字段则不做修改 + - **PersistenceType** (str) - VServer会话保持模式,若无此字段则不做修改。枚举值:None:关闭;ServerInsert:自动生成KEY;UserDefined:用户自定义KEY。 + - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 + - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 + - **VServerName** (str) - VServer实例名称,若无此字段则不做修改 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVServerAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateVServerAttribute", d, **kwargs) + return apis.UpdateVServerAttributeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/umem/client.html b/_modules/ucloud/services/umem/client.html new file mode 100644 index 00000000..cd86c9fe --- /dev/null +++ b/_modules/ucloud/services/umem/client.html @@ -0,0 +1,1709 @@ + + + + + + + + ucloud.services.umem.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.umem.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.umem.schemas import apis
+
+
+
[docs]class UMemClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UMemClient, self).__init__(config, transport, middleware, logger) + +
[docs] def check_udredis_space_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUDredisSpaceAllowance - 检查高性能UMem剩余资源,以及分片扩容前的资源预检查 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Count** (str) - (Required) 创建实例的数量,[1-10] + - **Size** (int) - (Required) 创建实例的容量大小,,扩容时的分片目标容量大小 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - 资源ID,扩缩容时的必传参数 + + **Response** + + - **Count** (int) - 创建实例资源时,表示可创建的数量;扩容资源时,返回1表示可以扩容,0表示可用区资源不足不能扩容 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckUDredisSpaceAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckUDredisSpaceAllowance", d, **kwargs) + return apis.CheckUDredisSpaceAllowanceResponseSchema().loads(resp)
+ +
[docs] def check_uredis_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckURedisAllowance - 检查主备Redis的资源是否足够创建新实例,以及主备Redis的扩容资源预检查 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Count** (int) - (Required) 创建实例的数量,[1-10] + - **Size** (int) - (Required) 创建实例的容量大小, 单位:GB 目前仅支持1/2/4/8/16/32六种规格;扩缩容时,表示实例的目标资源大小 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - 资源ID,扩容实例资源时的必传参数 + - **Protocol** (str) - + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + - **SlaveZone** (str) - + + **Response** + + - **Count** (int) - 创建实例资源时,表示可创建的数量;扩容资源时,返回1表示可以扩容,0表示可用区资源不足不能扩容 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckURedisAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckURedisAllowance", d, **kwargs) + return apis.CheckURedisAllowanceResponseSchema().loads(resp)
+ +
[docs] def create_umem_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUMemBackup - 创建分布式redis备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 请求创建备份的名称 (范围[6-63],只能包含英文、数字以及符号-和_) + - **SpaceId** (str) - (Required) 资源id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupId** (str) - 备份Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUMemBackupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUMemBackup", d, **kwargs) + return apis.CreateUMemBackupResponseSchema().loads(resp)
+ +
[docs] def create_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUMemSpace - 创建UMem内存空间 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 空间名称,长度(6<=size<=63) + - **Size** (int) - (Required) 内存大小, 单位:GB, 范围[1~1024] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic, Trial 默认: Month + - **CouponId** (str) - 使用的代金券id + - **Protocol** (str) - 协议:memcache, redis (默认redis).注意:redis无single类型 + - **Quantity** (int) - 购买时长 默认: 1 + - **SubnetId** (str) - + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + - **VPCId** (str) - + + **Response** + + - **SpaceId** (str) - 创建内存空间ID列表 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUMemSpaceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUMemSpace", d, **kwargs) + return apis.CreateUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def create_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUMemcacheGroup - 创建单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 请求创建组的名称 范围[6-60] + - **ChargeType** (str) - 计费模式,Year , Month, Dynamic 默认: Month + - **ConfigId** (str) - 配置ID,目前仅支持默认配置id 默认配置id:"9a891891-c245-4b66-bce8-67e59430d67c" + - **CouponId** (str) - 代金券ID + - **Protocol** (str) - + - **Quantity** (int) - 购买时长,默认为1 + - **Size** (int) - 每个节点的内存大小,单位GB,默认1GB 目前仅支持1/2/4/8/16/32这几档 + - **SubnetId** (str) - + - **Tag** (str) - 业务组 默认:Default + - **VPCId** (str) - + - **Version** (str) - Memcache版本信息,默认为1.4.31 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **GroupId** (str) - 创建的组ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUMemcacheGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUMemcacheGroup", d, **kwargs) + return apis.CreateUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def create_uredis_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateURedisBackup - 创建主备Redis备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_) + - **GroupId** (str) - (Required) 资源id + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupId** (str) - 备份id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateURedisBackupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateURedisBackup", d, **kwargs) + return apis.CreateURedisBackupResponseSchema().loads(resp)
+ +
[docs] def create_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateURedisGroup - 创建主备redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **HighAvailability** (str) - (Required) 是否开启高可用,enable或disable + - **Name** (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AutoBackup** (str) - 是否自动备份,enable或disable,默认disable + - **BackupId** (str) - 有此项代表从备份中创建,无代表正常创建 + - **BackupTime** (int) - 自动备份开始时间,范围[0-23],默认3点 + - **ChargeType** (str) - 计费模式,Year , Month, Dynamic 默认: Month + - **ConfigId** (str) - 配置ID,目前支持 3.0版本配置ID:"03f58ca9-b64d-4bdd-abc7-c6b9a46fd801",3.2版本配置ID:"3e45ac48-f8a2-a9q2-261d-l342dab130gf", 4.0版本配置ID:"6c9298a3-9d7f-428c-b1d0-e87ab3b8a1ea",默认版本3.0,从备份创建为必传项 + - **CouponId** (str) - 代金券ID + - **EnableIpV6** (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true + - **MasterGroupId** (str) - Master Redis Group的ID,创建只读Slave时,必须填写 + - **Password** (str) - 初始化密码,需要 base64 编码 + - **Quantity** (int) - 购买时长,默认为1 + - **Size** (int) - 每个节点的内存大小,单位GB,默认1GB,目前仅支持1/2/4/8/16/32,六种 + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **SubnetId** (str) - 子网ID + - **Tag** (str) - 业务组名称 + - **VPCId** (str) - VPC的ID + - **Version** (str) - Redis版本信息(详见DescribeURedisVersion返回结果),默认版本3.0 + + **Response** + + - **GroupId** (str) - 创建的组ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateURedisGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateURedisGroup", d, **kwargs) + return apis.CreateURedisGroupResponseSchema().loads(resp)
+ +
[docs] def delete_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUMemSpace - 删除UMem内存空间 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) UMem内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUMemSpace", d, **kwargs) + return apis.DeleteUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def delete_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUMemcacheGroup - 删除单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteUMemcacheGroup", d, **kwargs) + return apis.DeleteUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def delete_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteURedisGroup - 删除主备redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteURedisGroup", d, **kwargs) + return apis.DeleteURedisGroupResponseSchema().loads(resp)
+ +
[docs] def describe_ud_redis_proxy_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDRedisProxyInfo - 拉取udredis所有的代理信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **SpaceId** (str) - (Required) udredis实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **UDRedisProxyInfo** 模型定义 + + **Response Model** + + **UDRedisProxyInfo** + - **ProxyId** (str) - 代理id + - **ResourceId** (str) - 代理资源id + - **State** (str) - 代理状态 + - **Vip** (str) - 代理ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDRedisProxyInfoRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDRedisProxyInfo", d, **kwargs) + return apis.DescribeUDRedisProxyInfoResponseSchema().loads(resp)
+ +
[docs] def describe_ud_redis_slowlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDRedisSlowlog - 查询UDRedis慢日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **InstanceId** (str) - (Required) 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 分页显示的条目数,默认为10 + + **Response** + + - **DataSet** (list) - 见 **UDRedisSlowlogSet** 模型定义 + - **TotalCount** (int) - 总条目数 + + **Response Model** + + **UDRedisSlowlogSet** + - **BlockId** (str) - 分片id + - **Command** (str) - 查询命令 + - **SpendTime** (int) - 查询消耗的时间 + - **StartTime** (int) - 查询发生的时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDRedisSlowlogRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDRedisSlowlog", d, **kwargs) + return apis.DescribeUDRedisSlowlogResponseSchema().loads(resp)
+ +
[docs] def describe_umem( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMem - 获取UMem列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Protocol** (str) - (Required) 协议类型: memcache, redis + - **Limit** (int) - 分页显示的条目数, 默认值为20 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + - **ResourceId** (str) - 资源ID + - **ResourceType** (str) - + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemDataSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UMemDataSet** + - **Address** (list) - 见 **UMemSpaceAddressSet** 模型定义 + - **AutoBackup** (str) - 是否需要自动备份,enable,disable + - **BackupTime** (int) - 自动备份开始时间,单位小时计,范围[0-23] + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic, Trial + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 + - **DataSet** (list) - 见 **UMemSlaveDataSet** 模型定义 + - **ExpireTime** (int) - 到期时间 + - **HighAvailability** (str) - 是否开启高可用,enable,disable + - **Name** (str) - 资源名称 + - **OwnSlave** (str) - 是否拥有只读Slave“Yes” 包含“No” 不包含 + - **Protocol** (str) - 协议类型: memcache, redis + - **ResourceId** (str) - 资源ID + - **ResourceType** (str) - distributed: 分布式版Redis,或者分布式Memcache;single:主备版Redis,或者单机Memcache;performance:高性能版 + - **RewriteTime** (int) - 主备redis和分布式redis运维时间0 //0点1 //1点以此类推单机版memcache不返回该项 + - **Role** (str) - 表示实例是主库还是从库,master,slave仅主备redis返回该项参数 + - **Size** (int) - 容量单位GB + - **SlaveZone** (str) - 跨机房URedis,slave redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **State** (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中SetPasswordFail //设置密码失败 + - **SubnetId** (str) - 子网 + - **Tag** (str) - 业务组名称 + - **Type** (str) - 空间类型:single(无热备),double(热备) + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - vpc + - **Version** (str) - Redis版本信息 + - **Zone** (str) - 实例所在可用区,或者master redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + **UMemSpaceAddressSet** + - **IP** (str) - UMem实例访问IP + - **Port** (int) - UMem实例访问Port + + + **UMemSlaveDataSet** + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic, Trial + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 + - **ExpireTime** (int) - 到期时间 + - **GroupId** (str) - 资源id + - **GroupName** (str) - 资源名称 + - **MasterGroupId** (str) - 主实例id + - **MemorySize** (int) - 实力大小 + - **ModifyTime** (int) - 修改时间 + - **Name** (str) - 资源名称 + - **Port** (int) - 端口 + - **ResourceType** (str) - distributed: 分布式版Redis,或者分布式Memcache;single:主备版Redis,或者单机Memcache;performance:高性能版 + - **RewriteTime** (int) - 主备Redis返回运维时间 0//0点 1 //1点 以此类推 + - **Role** (str) - 表示实例是主库还是从库,master,slave + - **Size** (int) - 容量单位GB + - **State** (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中SetPasswordFail //设置密码失败 + - **SubnetId** (str) - 子网 + - **Tag** (str) - 业务组名称 + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - vpc + - **Version** (str) - Redis版本信息 + - **VirtualIP** (str) - + - **Zone** (str) - 实例所在可用区,或者master redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMem", d, **kwargs) + return apis.DescribeUMemResponseSchema().loads(resp)
+ +
[docs] def describe_umem_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemBackup - 查询分布式redis备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) 资源id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 分页显示的条目数, 默认值为10 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + + **Response** + + - **DataSet** (list) - 见 **UMemBackupSet** 模型定义 + + **Response Model** + + **UMemBackupSet** + - **BackupId** (str) - 空间的备份ID + - **BackupName** (str) - 备份名称 + - **BackupType** (str) - 备份类型: auto(自动) ,manual(手动) + - **BlockCount** (int) - 本次备份,分片的数量 + - **CreateTime** (int) - 创建时间 + - **State** (str) - Starting:备份中 Done:完成 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemBackupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemBackup", d, **kwargs) + return apis.DescribeUMemBackupResponseSchema().loads(resp)
+ +
[docs] def describe_umem_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemBackupURL - 获取分布式redis 备份下载链接 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (str) - (Required) 备份Id + - **SpaceId** (str) - (Required) 资源id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BlockId** (str) - 分片id + + **Response** + + - **BackupURL** (list) - 备份url,每个分片一个下载URL + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemBackupURL", d, **kwargs) + return apis.DescribeUMemBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_umem_block_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemBlockInfo - 拉取UDRedis分片信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数, 默认值为10 + - **Offset** (int) - (Required) 分页显示的起始偏移, 默认值为0 + - **SpaceId** (str) - (Required) UMem内存资源ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemBlockInfo** 模型定义 + + **Response Model** + + **UMemBlockInfo** + - **BlockId** (str) - 分片id + - **BlockPort** (int) - 分片端口 + - **BlockSize** (int) - 容量单位GB + - **BlockSlotBegin** (int) - 分片维护的键槽起始值 + - **BlockSlotEnd** (int) - 分片维护的键槽结束值 + - **BlockState** (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中 SetPasswordFail //设置密码失败 + - **BlockUsedSize** (int) - 使用量单位MB + - **BlockVip** (str) - 分片ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemBlockInfoRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemBlockInfo", d, **kwargs) + return apis.DescribeUMemBlockInfoResponseSchema().loads(resp)
+ +
[docs] def describe_umem_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemPrice - 获取UMem实例价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Size** (int) - (Required) 购买umem大小,单位:GB,范围[1~1024] + - **Type** (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - Year, Month, Dynamic 如果不指定,则一次性获取三种计费 + - **Quantity** (int) - 购买UMem的时长,默认值为1 + + **Response** + + - **DataSet** (list) - 见 **UMemPriceSet** 模型定义 + + **Response Model** + + **UMemPriceSet** + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 现价 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemPrice", d, **kwargs) + return apis.DescribeUMemPriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemSpace - 获取UMem内存空间列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **Protocol** (str) - 协议类型: memcache, redis + - **SpaceId** (str) - 内存空间ID (无ID,则获取所有) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemSpaceSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UMemSpaceSet** + - **Address** (list) - 见 **UMemSpaceAddressSet** 模型定义 + - **ChargeType** (str) - Year, Month, Dynamic, Trial + - **CreateTime** (int) - 创建时间 + - **ExpireTime** (int) - 到期时间 + - **Name** (str) - 内存空间名称 + - **Protocol** (str) - 协议类型: memcache, redis + - **RewriteTime** (int) - 运维时间0 //0点1 //1点依次类推 + - **Size** (int) - 容量单位GB + - **SpaceId** (str) - 内存空间ID + - **State** (str) - Starting:创建中 Running:运行中 Fail:失败 + - **SubnetId** (str) - + - **Tag** (str) - + - **Type** (str) - 空间类型:single(无热备),double(热备) + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + **UMemSpaceAddressSet** + - **IP** (str) - UMem实例访问IP + - **Port** (int) - UMem实例访问Port + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemSpace", d, **kwargs) + return apis.DescribeUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemUpgradePrice - 获取UMem升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Size** (int) - (Required) 购买UMem大小,单位:GB + - **SpaceId** (str) - (Required) 需要升级的空间的SpaceId + - **Type** (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 价格 + + **Response Model** + + **PriceDataSet** + - **CustomPrice** (int) - + - **PurchaseValue** (int) - + - **TotalPrice** (int) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemUpgradePrice", d, **kwargs) + return apis.DescribeUMemUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemcacheGroup - 显示Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit + - **Limit** (int) - 分页显示的条目数, 默认值为20 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemcacheGroupSet** 模型定义 + - **TotalCount** (int) - 组的总的节点个数 + + **Response Model** + + **UMemcacheGroupSet** + - **ChargeType** (str) - 计费类型:Year,Month,Dynamic 默认Dynamic + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 (UNIX时间戳) + - **ExpireTime** (int) - 过期时间 (UNIX时间戳) + - **GroupId** (str) - 组ID + - **ModifyTime** (int) - 修改时间 (UNIX时间戳) + - **Name** (str) - 组名称 + - **Port** (int) - 节点分配的服务端口 + - **Size** (int) - 容量单位GB + - **State** (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中 + - **SubnetId** (str) - + - **Tag** (str) - 业务组名称 + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - + - **Version** (str) - Memcache版本信息,默认为1.4.31 + - **VirtualIP** (str) - 节点的虚拟IP地址 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcacheGroup", d, **kwargs) + return apis.DescribeUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemcachePrice - 获取umemcache组价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 容量大小,单位:GB 取值范围[1-32] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic,默认: Dynamic 默认: 获取所有计费模式的价格 + - **Quantity** (int) - 购买umemcache的时长,默认值为1 + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + + **Response** + + - **DataSet** (list) - 见 **UMemcachePriceSet** 模型定义 + + **Response Model** + + **UMemcachePriceSet** + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic + - **ListPrice** (int) - 产品列表价 + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 总价格 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUMemcachePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcachePrice", d, **kwargs) + return apis.DescribeUMemcachePriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUMemcacheUpgradePrice - 获取umemcache升级价格信息 + + **Request** + + - **GroupId** (str) - (Required) 需要升级的空间的GroupId,请参考DescribeUMemcacheGroup接口 + - **Size** (int) - (Required) 购买umemcache大小,单位:GB + + **Response** + + - **Price** (float) - 价格,单位:元 + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeUMemcacheUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcacheUpgradePrice", d, **kwargs) + return apis.DescribeUMemcacheUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisBackup - 查询主备redis备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - 组的ID + - **Limit** (int) - 分页显示的条目数, 默认值为10 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + + **Response** + + - **DataSet** (list) - 见 **URedisBackupSet** 模型定义 + - **TotalCount** (int) - 用户名下总的备份个数 + + **Response Model** + + **URedisBackupSet** + - **BackupId** (str) - 备份ID + - **BackupName** (str) - 备份的名称 + - **BackupSize** (int) - 备份文件大小, 以字节为单位 + - **BackupTime** (int) - 备份时间 (UNIX时间戳) + - **BackupType** (str) - 备份类型: Manual 手动 Auto 自动 + - **GroupId** (str) - 对应的实例ID + - **GroupName** (str) - 组名称 + - **State** (str) - 备份的状态: Backuping 备份中 Success 备份成功 Error 备份失败 Expired 备份过期 + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisBackupRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisBackup", d, **kwargs) + return apis.DescribeURedisBackupResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisBackupURL - 获取主备Redis备份下载链接 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (str) - (Required) 备份ID + - **GroupId** (str) - 实例名称 + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - 备份文件公网的地址 + - **BackupURL** (str) - 备份文件公网的地址 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisBackupURL", d, **kwargs) + return apis.DescribeURedisBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisConfig - 查询主备Redis所有配置文件 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - (Required) 是否是跨机房URedis(默认false) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ConfigId** (str) - 配置文件ID + - **Limit** (int) - 页显示的条目数, 默认值为10 + - **Offset** (int) - 页显示的起始偏移, 默认值为0 + - **Version** (str) - Redis版本号 + + **Response** + + - **DataSet** (list) - 见 **URedisConfigSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **URedisConfigSet** + - **ConfigId** (str) - 配置ID + - **CreateTime** (int) - 创建时间 (UNIX时间戳) + - **Description** (str) - 配置描述 + - **IsModify** (str) - 置是否可以修改 + - **ModifyTime** (int) - 修改时间 (UNIX时间戳) + - **Name** (str) - 配置名称 + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + - **State** (str) - 配置所处的状态 + - **Version** (str) - 配置对应的Redis版本 + - **Zone** (str) - Zone + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisConfigRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisConfig", d, **kwargs) + return apis.DescribeURedisConfigResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisGroup - 查询主备Redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit + - **Limit** (int) - 分页显示的条目数, 默认值为20 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **URedisGroupSet** 模型定义 + - **TotalCount** (int) - 组的总的节点个数 + + **Response Model** + + **URedisGroupSet** + - **AutoBackup** (str) - 是否需要自动备份,enable,disable + - **BackupTime** (int) - 组自动备份开始时间,单位小时计,范围[0-23] + - **ChargeType** (str) - 计费类型:Year,Month,Dynamic 默认Dynamic + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 (UNIX时间戳) + - **ExpireTime** (int) - 过期时间 (UNIX时间戳) + - **GroupId** (str) - 组ID + - **GroupName** (str) - 组名称 + - **HighAvailability** (str) - 是否开启高可用,enable,disable + - **MemorySize** (int) - 容量单位GB + - **ModifyTime** (int) - 修改时间 (UNIX时间戳) + - **Name** (str) - 组名称 + - **Port** (int) - 节点分配的服务端口 + - **Protocol** (str) - 协议 + - **RewriteTime** (int) - 返回运维时间 0 //0点 1 //1点 以此类推 + - **Role** (str) - 实例类型 + - **Size** (int) - 容量单位GB + - **SlaveZone** (str) - 跨机房URedis,slave redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **State** (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败 + - **SubnetId** (str) - subnetid + - **Tag** (str) - 业务组名称 + - **Type** (str) - 空间类型:single(无热备),double(热备) + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - vpcid + - **Version** (str) - Redis版本信息 + - **VirtualIP** (str) - 节点的虚拟IP地址 + - **Zone** (str) - 实例所在可用区,或者master redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisGroup", d, **kwargs) + return apis.DescribeURedisGroupResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisPrice - 取uredis价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 量大小,单位:GB 取值范围[1-32] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic;如果不指定,则一次性获取三种计费 + - **ProductType** (str) - 产品类型:MS_Redis(标准主备版),S_Redis(从库),默认为MS_Redis + - **Quantity** (int) - 计费模式为Dynamic时,购买的时长, 默认为1 + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + + **Response** + + - **DataSet** (list) - 见 **URedisPriceSet** 模型定义 + + **Response Model** + + **URedisPriceSet** + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **ListPrice** (int) - 产品列表价 + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 总价格 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisPrice", d, **kwargs) + return apis.DescribeURedisPriceResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_slowlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisSlowlog - 查询URedis慢日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 资源ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 分页显示的条目数,默认为10 + + **Response** + + - **DataSet** (list) - 见 **URedisSlowlogSet** 模型定义 + - **TotalCount** (int) - 总条目数 + + **Response Model** + + **URedisSlowlogSet** + - **Command** (str) - 查询命令 + - **SpendTime** (int) - 查询消耗的时间 + - **StartTime** (int) - 查询发生的时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisSlowlogRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisSlowlog", d, **kwargs) + return apis.DescribeURedisSlowlogResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisUpgradePrice - 获取uredis升级价格信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 要升级的空间的GroupId,请参考DescribeURedisGroup接口 + - **Size** (int) - (Required) 购买uredis大小,单位:GB,范围是[1-32] + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Price** (float) - 扩容差价,单位: 元,保留小数点后两位有效数字 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisUpgradePrice", d, **kwargs) + return apis.DescribeURedisUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_version( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeURedisVersion - 获取主Redis可用版本 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **URedisVersionSet** 模型定义 + - **TotalCount** (int) - 总版本个数 + + **Response Model** + + **URedisVersionSet** + - **Version** (str) - Redis版本 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeURedisVersionRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisVersion", d, **kwargs) + return apis.DescribeURedisVersionResponseSchema().loads(resp)
+ +
[docs] def flushall_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """FlushallURedisGroup - 清除主备redis数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FlushType** (str) - (Required) FlushDb或FlushAll + - **GroupId** (str) - (Required) 组的ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DbNum** (int) - 清空的db,FlushType为FlushDb,此项为必传项 + - **OrganizationId** (int) - OrganizationId + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **TopOrganizationId** (int) - company_id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.FlushallURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("FlushallURedisGroup", d, **kwargs) + return apis.FlushallURedisGroupResponseSchema().loads(resp)
+ +
[docs] def get_umem_space_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUMemSpaceState - 获取UMem内存空间列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) 内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **State** (str) - Starting:创建中 Running:运行中 Fail:失败 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUMemSpaceStateRequestSchema().dumps(d) + + resp = self.invoke("GetUMemSpaceState", d, **kwargs) + return apis.GetUMemSpaceStateResponseSchema().loads(resp)
+ +
[docs] def i_solation_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ISolationURedisGroup - 打开/关闭URedis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - (Required) 组的ID + - **TransformType** (str) - (Required) UNBind(关闭)或Bind(打开) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ISolationURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("ISolationURedisGroup", d, **kwargs) + return apis.ISolationURedisGroupResponseSchema().loads(resp)
+ +
[docs] def modify_umem_space_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUMemSpaceName - 修改UMem内存空间名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 新的名称,长度(6<=size<=63) + - **SpaceId** (str) - (Required) UMem内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUMemSpaceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUMemSpaceName", d, **kwargs) + return apis.ModifyUMemSpaceNameResponseSchema().loads(resp)
+ +
[docs] def modify_uredis_group_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyURedisGroupName - 修改主备redis名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组的ID + - **Name** (str) - (Required) Redis组名称 (范围[6-63],只能包含英文、数字以及符号-和_) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyURedisGroupNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyURedisGroupName", d, **kwargs) + return apis.ModifyURedisGroupNameResponseSchema().loads(resp)
+ +
[docs] def modify_uredis_group_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyURedisGroupPassword - 修改主备密码/重置密码 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组的ID + - **Password** (str) - (Required) 新密码字符串,要求长度为6~36个字符,且只能包含英文、数字以及-和下划线;并且需要base64加密;如要取消密码,此值为空字符串, + - **ResourceType** (str) - + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyURedisGroupPasswordRequestSchema().dumps(d) + + resp = self.invoke("ModifyURedisGroupPassword", d, **kwargs) + return apis.ModifyURedisGroupPasswordResponseSchema().loads(resp)
+ +
[docs] def remove_ud_redis_data( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RemoveUDRedisData - 清除udredis实例数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RemoveUDRedisDataRequestSchema().dumps(d) + + resp = self.invoke("RemoveUDRedisData", d, **kwargs) + return apis.RemoveUDRedisDataResponseSchema().loads(resp)
+ +
[docs] def resize_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeUMemSpace - 调整内存空间容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024) + - **SpaceId** (str) - (Required) UMem 内存空间Id + - **CouponId** (str) - 使用的代金券Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUMemSpace", d, **kwargs) + return apis.ResizeUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def resize_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeURedisGroup - 通过调用CheckURedisAllowance接口,检查资源情况,根据不同情形来调整主备redis容量,其中主要包括可用区资源不足无法扩容,主备所在宿主机资源不足需要迁移完成扩容(需要主从切换,会闪断及负载升高),以及直接扩容(业务无感知) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + - **Size** (int) - (Required) 内存大小, 单位:GB (需要大于原size,且小于等于32) 目前仅支持1/2/4/8/16/32 G 六种容量规格 + - **ChargeType** (str) - + - **CouponId** (int) - 代金券ID 请参考DescribeCoupon接口 + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("ResizeURedisGroup", d, **kwargs) + return apis.ResizeURedisGroupResponseSchema().loads(resp)
+ +
[docs] def restart_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUMemcacheGroup - 重启单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组的ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("RestartUMemcacheGroup", d, **kwargs) + return apis.RestartUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def restart_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartURedisGroup - 重启主备实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("RestartURedisGroup", d, **kwargs) + return apis.RestartURedisGroupResponseSchema().loads(resp)
+ +
[docs] def shutdown_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ShutdownURedisGroup - 关闭主备实例 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - (Required) 资源ID + + **Response** + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ShutdownURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("ShutdownURedisGroup", d, **kwargs) + return apis.ShutdownURedisGroupResponseSchema().loads(resp)
+ +
[docs] def start_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartURedisGroup - 实例关闭状态下,启动实例 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **GroupId** (str) - (Required) 资源ID + + **Response** + + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("StartURedisGroup", d, **kwargs) + return apis.StartURedisGroupResponseSchema().loads(resp)
+ +
[docs] def update_uredis_backup_strategy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateURedisBackupStrategy - URedisBackupStrategy + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupTime** (str) - (Required) 备份时间,默认为0 + - **GroupId** (str) - (Required) 组的ID + - **AutoBackup** (str) - 是否打开默认备份功能。enable(打开),disable(关闭),默认enable + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateURedisBackupStrategyRequestSchema().dumps(d) + + resp = self.invoke("UpdateURedisBackupStrategy", d, **kwargs) + return apis.UpdateURedisBackupStrategyResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/unet/client.html b/_modules/ucloud/services/unet/client.html new file mode 100644 index 00000000..0bbe1a3a --- /dev/null +++ b/_modules/ucloud/services/unet/client.html @@ -0,0 +1,1285 @@ + + + + + + + + ucloud.services.unet.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.unet.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.unet.schemas import apis
+
+
+
[docs]class UNetClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UNetClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AllocateEIP - 根据提供信息, 申请弹性IP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-10000] + - **OperatorName** (str) - (Required) 弹性IP线路,枚举值:国际线路, International;BGP线路:Bgp。使用BGP线路的地域:北京二、上海金融云、上海二、广州等,其他地域均使用国际线路。 + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费,默认为按月付费。 + - **CouponId** (str) - 代金券ID, 默认不使用 + - **Name** (str) - 弹性IP的名称, 默认为 "EIP" + - **PayMode** (str) - 弹性IP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; "ShareBandwidth",共享带宽模式. 默认为 "Bandwidth".“PostAccurateBandwidth”:带宽后付费模式 + - **Quantity** (int) - 购买的时长, 默认: 1 + - **Remark** (str) - 弹性IP的备注, 默认为空 + - **ShareBandwidthId** (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效 + - **Tag** (str) - 业务组名称, 默认为 "Default" + + **Response** + + - **EIPSet** (list) - 见 **UnetAllocateEIPSet** 模型定义 + + **Response Model** + + **UnetAllocateEIPSet** + - **EIPAddr** (list) - 见 **UnetEIPAddrSet** 模型定义 + - **EIPId** (str) - 申请到的EIP资源ID + + + **UnetEIPAddrSet** + - **IP** (str) - IP地址 + - **OperatorName** (str) - 运营商信息如: 国际: International, BGP: BGP + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateEIPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateEIP", d, **kwargs) + return apis.AllocateEIPResponseSchema().loads(resp)
+ +
[docs] def allocate_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AllocateShareBandwidth - 开通共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - (Required) 付费方式:Year 按年,Month 按月,Dynamic 按时; + - **Name** (str) - (Required) 共享带宽名字 + - **ShareBandwidth** (int) - (Required) 共享带宽值 + - **IPVersion** (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4 + - **Quantity** (int) - 购买时长 + + **Response** + + - **ShareBandwidthId** (str) - 共享带宽资源Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateShareBandwidthRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateShareBandwidth", d, **kwargs) + return apis.AllocateShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def associate_eip_with_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AssociateEIPWithShareBandwidth - 将EIP加入共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 + - **EIPIds** (list) - (Required) 要加入共享带宽的EIP的资源Id + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + - **IPVersion** (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AssociateEIPWithShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("AssociateEIPWithShareBandwidth", d, **kwargs) + return apis.AssociateEIPWithShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """BindEIP - 将尚未使用的弹性IP绑定到指定的资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **ResourceId** (str) - (Required) 弹性IP请求绑定的资源ID + - **ResourceType** (str) - (Required) 弹性IP请求绑定的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:natgw;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni:虚拟网卡;cube,Cube容器。如果EIP为普通带宽计费,且带宽值高于2G,则只允许绑定在快杰型云主机和ULB + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindEIPRequestSchema().dumps(d) + + resp = self.invoke("BindEIP", d, **kwargs) + return apis.BindEIPResponseSchema().loads(resp)
+ +
[docs] def create_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateBandwidthPackage - 为非共享带宽模式下, 已绑定资源实例的带宽计费弹性IP附加临时带宽包 + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽大小(单位Mbps), 取值范围[2,800] (最大值受地域限制) + - **EIPId** (str) - (Required) 所绑定弹性IP的资源ID + - **TimeRange** (int) - (Required) 带宽包有效时长, 取值范围为大于0的整数, 即该带宽包在EnableTime到 EnableTime+TimeRange时间段内生效 + - **CouponId** (str) - 代金券ID + - **EnableTime** (int) - 生效时间, 格式为 Unix timestamp, 默认为立即开通 + + **Response** + + - **BandwidthPackageId** (str) - 所创建带宽包的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateBandwidthPackageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateBandwidthPackage", d, **kwargs) + return apis.CreateBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def create_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateFirewall - 创建防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **Name** (str) - (Required) 防火墙名称 + - **Rule** (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注,bj1不支持添加备注 + - **Remark** (str) - 防火墙描述,默认为空 + - **Tag** (str) - 防火墙业务组,默认为Default + + **Response** + + - **FWId** (str) - 防火墙ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateFirewallRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateFirewall", d, **kwargs) + return apis.CreateFirewallResponseSchema().loads(resp)
+ +
[docs] def delete_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteBandwidthPackage - 删除弹性IP上已附加带宽包 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BandwidthPackageId** (str) - (Required) 带宽包资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteBandwidthPackageRequestSchema().dumps(d) + + resp = self.invoke("DeleteBandwidthPackage", d, **kwargs) + return apis.DeleteBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def delete_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteFirewall - 删除防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteFirewallRequestSchema().dumps(d) + + resp = self.invoke("DeleteFirewall", d, **kwargs) + return apis.DeleteFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeBandwidthPackage - 获取某地域下的带宽包信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20 + - **Offset** (int) - 返回数据偏移量, 默认为0 + + **Response** + + - **DataSets** (list) - 见 **UnetBandwidthPackageSet** 模型定义 + - **TotalCount** (int) - 满足条件的带宽包总数 + + **Response Model** + + **UnetBandwidthPackageSet** + - **Bandwidth** (int) - 带宽包的临时带宽值, 单位Mbps + - **BandwidthPackageId** (str) - 带宽包的资源ID + - **CreateTime** (int) - 创建时间, 格式为 Unix Timestamp + - **DisableTime** (int) - 失效时间, 格式为 Unix Timestamp + - **EIPAddr** (list) - 见 **EIPAddrSet** 模型定义 + - **EIPId** (str) - 带宽包所绑定弹性IP的资源ID + - **EnableTime** (int) - 生效时间, 格式为 Unix Timestamp + + + **EIPAddrSet** + - **IP** (str) - 弹性IP地址 + - **OperatorName** (str) - 运营商信息, 枚举值为: BGP: BGP; International: 国际. + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeBandwidthPackageRequestSchema().dumps(d) + + resp = self.invoke("DescribeBandwidthPackage", d, **kwargs) + return apis.DescribeBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def describe_bandwidth_usage( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeBandwidthUsage - 获取带宽用量信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPIds** (list) - 弹性IP的资源Id. 如果为空, 则返回当前 Region中符合条件的所有EIP的带宽用量, n为自然数 + - **Limit** (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20 + - **OffSet** (int) - 返回数据偏移量, 默认为0 + + **Response** + + - **EIPSet** (list) - 见 **UnetBandwidthUsageEIPSet** 模型定义 + - **TotalCount** (int) - EIPSet中的元素个数 + + **Response Model** + + **UnetBandwidthUsageEIPSet** + - **CurBandwidth** (float) - 最近5分钟带宽用量, 单位Mbps + - **EIPId** (str) - 弹性IP资源ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeBandwidthUsageRequestSchema().dumps(d) + + resp = self.invoke("DescribeBandwidthUsage", d, **kwargs) + return apis.DescribeBandwidthUsageResponseSchema().loads(resp)
+ +
[docs] def describe_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeEIP - 获取弹性IP信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **EIPIds** (list) - 弹性IP的资源ID如果为空, 则返回当前 Region中符合条件的的所有EIP + - **IPs** (list) - IP地址,支持通过ip查询,如果ip与EIP都传,会取并集查询 + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **EIPSet** (list) - 见 **UnetEIPSet** 模型定义 + - **TotalBandwidth** (int) - 满足条件的弹性IP带宽总和, 单位Mbps + - **TotalCount** (int) - 满足条件的弹性IP总数 + - **UnbindCount** (int) - 未绑定的弹性IP总数 + + **Response Model** + + **UnetEIPSet** + - **Bandwidth** (int) - 弹性IP的带宽, 单位为Mbps, 当BandwidthType=1时, 该处显示为共享带宽值. 当BandwidthType=0时, 该处显示这个弹性IP的带宽. + - **BandwidthType** (int) - 带宽模式, 枚举值为: 0: 非共享带宽模式, 1: 共享带宽模式 + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按小时付费; Trial, 试用. 按小时付费和试用这两种付费模式需要开通权限. + - **CreateTime** (int) - 弹性IP的创建时间, 格式为Unix Timestamp + - **EIPAddr** (list) - 见 **UnetEIPAddrSet** 模型定义 + - **EIPId** (str) - 弹性IP的资源ID + - **Expire** (bool) - 弹性IP是否到期 + - **ExpireTime** (int) - 弹性IP的到期时间, 格式为Unix Timestamp + - **Name** (str) - 弹性IP的名称,缺省值为 "EIP" + - **PayMode** (str) - 弹性IP的计费模式, 枚举值为: "Bandwidth", 带宽计费; "Traffic", 流量计费; "ShareBandwidth",共享带宽模式. 默认为 "Bandwidth". + - **Remark** (str) - 弹性IP的备注, 缺省值为 "" + - **Resource** (dict) - 见 **UnetEIPResourceSet** 模型定义 + - **ShareBandwidthSet** (dict) - 见 **ShareBandwidthSet** 模型定义 + - **Status** (str) - 弹性IP的资源绑定状态, 枚举值为: used: 已绑定, free: 未绑定, freeze: 已冻结 + - **Tag** (str) - 弹性IP的业务组标识, 缺省值为 "Default" + - **Weight** (int) - 外网出口权重, 默认为50, 范围[0-100] + + + **UnetEIPAddrSet** + - **IP** (str) - IP地址 + - **OperatorName** (str) - 运营商信息如: 国际: International, BGP: BGP + + + **UnetEIPResourceSet** + - **EIPId** (str) - 弹性IP的资源ID + - **ResourceID** (str) - 已绑定资源的资源ID + - **ResourceName** (str) - 已绑定的资源名称 + - **ResourceType** (str) - 已绑定的资源类型, 枚举值为: uhost, 云主机;natgw:NAT网关;ulb:负载均衡器;upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;vpngw:IPSec VPN;ucdr:云灾备;dbaudit:数据库审计,uni:虚拟网卡。 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的类型。uni,虚拟网卡。 + + + **ShareBandwidthSet** + - **ShareBandwidth** (int) - 共享带宽带宽值 + - **ShareBandwidthId** (str) - 共享带宽ID + - **ShareBandwidthName** (str) - 共享带宽的资源名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeEIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeEIP", d, **kwargs) + return apis.DescribeEIPResponseSchema().loads(resp)
+ +
[docs] def describe_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeFirewall - 获取防火墙组信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **FWId** (str) - 防火墙ID,默认为返回所有防火墙 + - **Limit** (int) - 返回数据长度,默认为20,最大10000000 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceId** (str) - 绑定防火墙组的资源ID + - **ResourceType** (str) - 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:"unatgw",NAT网关; "uhost",云主机;“uni”,虚拟网卡; "upm",物理云主机; "hadoophost",hadoop节点; "fortresshost",堡垒机; "udhost",私有专区主机;"udockhost",容器;"dbaudit",数据库审计. + + **Response** + + - **DataSet** (list) - 见 **FirewallDataSet** 模型定义 + - **TotalCount** (int) - 防火墙资源数量 + + **Response Model** + + **FirewallDataSet** + - **CreateTime** (int) - 防火墙组创建时间,格式为Unix Timestamp + - **FWId** (str) - 防火墙ID + - **GroupId** (str) - 安全组ID(即将废弃) + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 防火墙备注 + - **ResourceCount** (int) - 防火墙绑定资源数量 + - **Rule** (list) - 见 **FirewallRuleSet** 模型定义 + - **Tag** (str) - 防火墙业务组 + - **Type** (str) - 防火墙组类型,枚举值为: "user defined", 用户自定义防火墙; "recommend web", 默认Web防火墙; "recommend non web", 默认非Web防火墙 + + + **FirewallRuleSet** + - **DstPort** (str) - 目标端口 + - **Priority** (str) - 优先级 + - **ProtocolType** (str) - 协议类型 + - **Remark** (str) - 防火墙规则备注 + - **RuleAction** (str) - 防火墙动作 + - **SrcIP** (str) - 源地址 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeFirewallRequestSchema().dumps(d) + + resp = self.invoke("DescribeFirewall", d, **kwargs) + return apis.DescribeFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_firewall_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeFirewallResource - 获取防火墙组所绑定资源的外网IP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **FWId** (str) - (Required) 防火墙ID + - **Limit** (int) - 返回数据长度,默认为20,最大1000 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **ResourceSet** (list) - 见 **ResourceSet** 模型定义 + - **TotalCount** (int) - 绑定资源总数 + + **Response Model** + + **ResourceSet** + - **Name** (str) - 名称 + - **PrivateIP** (str) - 内网IP + - **Remark** (str) - 备注 + - **ResourceID** (str) - 绑定该防火墙的资源id + - **ResourceType** (str) - 绑定防火墙组的资源类型。"unatgw",NAT网关; "uhost",云主机; "upm",物理云主机; "hadoophost",hadoop节点; "fortresshost",堡垒机; "udhost",私有专区主机;"udockhost",容器;"dbaudit",数据库审计,“uni”,虚拟网卡。 + - **Status** (int) - 状态 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的类型,“uni”,虚拟网卡。 + - **Tag** (str) - 业务组 + - **Zone** (int) - 可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeFirewallResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeFirewallResource", d, **kwargs) + return apis.DescribeFirewallResourceResponseSchema().loads(resp)
+ +
[docs] def describe_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeShareBandwidth - 获取共享带宽信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ShareBandwidthIds** (list) - 需要返回的共享带宽Id + + **Response** + + - **DataSet** (list) - 见 **UnetShareBandwidthSet** 模型定义 + - **TotalCount** (int) - 符合条件的共享带宽总数,大于等于返回DataSet长度 + + **Response Model** + + **UnetShareBandwidthSet** + - **ChargeType** (str) - 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需;后付费:PostPay(按月) + - **CreateTime** (int) - 创建时间, 格式为Unix Timestamp + - **EIPSet** (list) - 见 **EIPSetData** 模型定义 + - **ExpireTime** (int) - 过期时间, 格式为Unix Timestamp + - **IPVersion** (str) - 共享带宽类型 + - **Name** (str) - 共享带宽名称 + - **ShareBandwidth** (int) - 共享带宽值(预付费)/共享带宽峰值(后付费), 单位Mbps + - **ShareBandwidthId** (str) - 共享带宽的资源ID + + + **EIPSetData** + - **Bandwidth** (int) - EIP带宽值 + - **EIPAddr** (list) - 见 **EIPAddrSet** 模型定义 + - **EIPId** (str) - EIP资源Id + + + **EIPAddrSet** + - **IP** (str) - 弹性IP地址 + - **OperatorName** (str) - 运营商信息, 枚举值为: BGP: BGP; International: 国际. + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("DescribeShareBandwidth", d, **kwargs) + return apis.DescribeShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def describe_share_bandwidth_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeShareBandwidthPrice - 获取共享带宽价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - (Required) 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需; + - **ShareBandwidth** (int) - (Required) 共享带宽值 + - **OperatorName** (str) - 香港地域支持:BGPPro和International。其他地域无需填写该字段 + - **Quantity** (int) - 购买数量 + + **Response** + + - **TotalPrice** (int) - 共享带宽总价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeShareBandwidthPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeShareBandwidthPrice", d, **kwargs) + return apis.DescribeShareBandwidthPriceResponseSchema().loads(resp)
+ +
[docs] def describe_share_bandwidth_update_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeShareBandwidthUpdatePrice - 获取共享带宽升级价格 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ShareBandwidth** (int) - (Required) 共享带宽值 + - **ShareBandwidthId** (str) - (Required) 共享带宽Id + + **Response** + + - **Price** (float) - 共享带宽升降级价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeShareBandwidthUpdatePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeShareBandwidthUpdatePrice", d, **kwargs) + return apis.DescribeShareBandwidthUpdatePriceResponseSchema().loads( + resp + )
+ +
[docs] def disassociate_eip_with_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DisassociateEIPWithShareBandwidth - 将EIP移出共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 移出共享带宽后,EIP的外网带宽, 单位为Mbps. 各地域带宽范围如下: 流量计费[1-200],带宽计费[1-800] + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + - **EIPIds** (list) - EIP的资源Id;默认移出该共享带宽下所有的EIP + - **IPVersion** (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4 + - **PayMode** (str) - 移出共享带宽后,EIP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; 默认为 "Bandwidth". + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DisassociateEIPWithShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("DisassociateEIPWithShareBandwidth", d, **kwargs) + return apis.DisassociateEIPWithShareBandwidthResponseSchema().loads( + resp + )
+ +
[docs] def disassociate_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DisassociateFirewall - 解绑资源上的防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **FWId** (str) - (Required) 防火墙ID + - **ResourceId** (str) - (Required) 需要解绑的资源ID + - **ResourceType** (str) - (Required) 资源类型:ULB 表示负载均衡 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DisassociateFirewallRequestSchema().dumps(d) + + resp = self.invoke("DisassociateFirewall", d, **kwargs) + return apis.DisassociateFirewallResponseSchema().loads(resp)
+ +
[docs] def get_eip_pay_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetEIPPayMode - 获取弹性IP计费模式 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (list) - (Required) 弹性IP的资源Id + + **Response** + + - **EIPPayMode** (list) - 见 **EIPPayModeSet** 模型定义 + + **Response Model** + + **EIPPayModeSet** + - **EIPId** (str) - EIP的资源ID + - **EIPPayMode** (str) - EIP的计费模式. 枚举值为:Bandwidth, 带宽计费;Traffic, 流量计费; "ShareBandwidth",共享带宽模式 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetEIPPayModeRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPayMode", d, **kwargs) + return apis.GetEIPPayModeResponseSchema().loads(resp)
+ +
[docs] def get_eip_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetEIPPrice - 获取弹性IP价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [0-800] + - **OperatorName** (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International,泉州为移动单线cn-qz:ChinaMobile + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费; 默认为获取三种价格 + - **PayMode** (str) - 弹性IP计费方式r. 枚举值为: Traffic, 流量计费; Bandwidth, 带宽计费; "ShareBandwidth",共享带宽模式. 默认为Bandwidth + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末 + + **Response** + + - **PriceSet** (list) - 见 **EIPPriceDetailSet** 模型定义 + + **Response Model** + + **EIPPriceDetailSet** + - **ChargeType** (str) - 弹性IP付费方式 + - **OriginalPrice** (float) - 弹性IP的原价,单位“元” + - **Price** (float) - 购买弹性IP的实际价格, 单位"元" + - **PurchaseValue** (int) - 资源有效期, 以Unix Timestamp表示 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetEIPPriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPrice", d, **kwargs) + return apis.GetEIPPriceResponseSchema().loads(resp)
+ +
[docs] def get_eip_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetEIPUpgradePrice - 获取弹性IP带宽改动价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [1-800] + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + - **Price** (float) - 调整带宽后的EIP价格, 单位为"元", 如需退费此处为负值 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetEIPUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPUpgradePrice", d, **kwargs) + return apis.GetEIPUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def get_throughput_daily_billing_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetThroughputDailyBillingInfo - 获取流量计费EIP每日流量计费信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **EIPId** (str) - (Required) EIP的资源ID + - **EndTime** (int) - (Required) 查询结束时间时间戳 + - **StartTime** (int) - (Required) 查询开始时间时间戳 + + **Response** + + - **EIPId** (str) - 资源ID + - **Stats** (list) - 见 **ThroughputDailyBillingInfo** 模型定义 + - **TotalOut** (int) - 计费总流量 + + **Response Model** + + **ThroughputDailyBillingInfo** + - **BillingState** (str) - 是否已计费,“Yes”或者“No” + - **EndTime** (int) - 计费结束时间 + - **QuantityOut** (int) - 计费流量,单位“GB” + - **StartTime** (int) - 计费开始时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetThroughputDailyBillingInfoRequestSchema().dumps(d) + + resp = self.invoke("GetThroughputDailyBillingInfo", d, **kwargs) + return apis.GetThroughputDailyBillingInfoResponseSchema().loads(resp)
+ +
[docs] def grant_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GrantFirewall - 将防火墙应用到资源上 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **ResourceId** (str) - (Required) 所应用资源ID + - **ResourceType** (str) - (Required) 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:"unatgw",NAT网关; "uhost",云主机; "upm",物理云主机; "hadoophost",hadoop节点; "fortresshost",堡垒机; "udhost",私有专区主机;"udockhost",容器;"dbaudit",数据库审计,”uni“,虚拟网卡,“cube”,Cube容器实例。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GrantFirewallRequestSchema().dumps(d) + + resp = self.invoke("GrantFirewall", d, **kwargs) + return apis.GrantFirewallResponseSchema().loads(resp)
+ +
[docs] def modify_eip_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyEIPBandwidth - 调整弹性IP的外网带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 各地域的带宽值范围如下:流量计费[1-200],带宽计费[1-800] + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyEIPBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPBandwidth", d, **kwargs) + return apis.ModifyEIPBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_eip_weight( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyEIPWeight - 修改弹性IP的外网出口权重 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源ID + - **Weight** (int) - (Required) 外网出口权重, 范围[0-100] 取值为0时, 该弹性IP不会被使用. 取值为100时, 同主机下只会使用这个弹性IP,其他弹性IP不会被使用 请勿将多个绑定在同一资源的弹性IP设置为相同权重 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyEIPWeightRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPWeight", d, **kwargs) + return apis.ModifyEIPWeightResponseSchema().loads(resp)
+ +
[docs] def release_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ReleaseEIP - 释放弹性IP资源, 所释放弹性IP必须为非绑定状态. + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseEIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseEIP", d, **kwargs) + return apis.ReleaseEIPResponseSchema().loads(resp)
+ +
[docs] def release_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReleaseShareBandwidth - 关闭共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPBandwidth** (int) - (Required) 关闭共享带宽后,各EIP恢复为的带宽值 + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + - **PayMode** (str) - 默认为 Bandwidth 带宽计费 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ReleaseShareBandwidth", d, **kwargs) + return apis.ReleaseShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def resize_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeShareBandwidth - 调整共享带宽的带宽值 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ShareBandwidth** (int) - (Required) 带宽值,单位为Mb,范围 [20-5000] (最大值受地域限制) + - **ShareBandwidthId** (str) - (Required) 共享带宽的Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ResizeShareBandwidth", d, **kwargs) + return apis.ResizeShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def set_eip_pay_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetEIPPayMode - 设置弹性IP计费模式, 切换时会涉及付费/退费. + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 调整的目标带宽值, 单位Mbps. 各地域的带宽值范围如下: 流量计费[1-200],其余情况[1-800] + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **PayMode** (str) - (Required) 计费模式. 枚举值:"Traffic", 流量计费模式; "Bandwidth", 带宽计费模式 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetEIPPayModeRequestSchema().dumps(d) + + resp = self.invoke("SetEIPPayMode", d, **kwargs) + return apis.SetEIPPayModeResponseSchema().loads(resp)
+ +
[docs] def un_bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UnBindEIP - 将弹性IP从资源上解绑 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **ResourceId** (str) - (Required) 弹性IP请求解绑的资源ID + - **ResourceType** (str) - (Required) 弹性IP请求解绑的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:NAT网关;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计; + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnBindEIPRequestSchema().dumps(d) + + resp = self.invoke("UnBindEIP", d, **kwargs) + return apis.UnBindEIPResponseSchema().loads(resp)
+ +
[docs] def update_eip_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateEIPAttribute - 更新弹性IP名称,业务组,备注等属性字段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **EIPId** (str) - (Required) EIP资源ID + - **Name** (str) - 名字(Name Tag Remark都为空则报错) + - **Remark** (str) - 备注 + - **Tag** (str) - 业务 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateEIPAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateEIPAttribute", d, **kwargs) + return apis.UpdateEIPAttributeResponseSchema().loads(resp)
+ +
[docs] def update_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateFirewall - 更新防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **Rule** (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注 + + **Response** + + - **FWId** (str) - 防火墙id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateFirewallRequestSchema().dumps(d) + + resp = self.invoke("UpdateFirewall", d, **kwargs) + return apis.UpdateFirewallResponseSchema().loads(resp)
+ +
[docs] def update_firewall_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateFirewallAttribute - 更新防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **Name** (str) - 防火墙名称,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + - **Remark** (str) - 防火墙备注,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + - **Tag** (str) - 防火墙业务组,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateFirewallAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateFirewallAttribute", d, **kwargs) + return apis.UpdateFirewallAttributeResponseSchema().loads(resp)
+ + _deprecated = { + "allocate_e_ip": "allocate_eip", + "associate_e_ip_with_share_bandwidth": "associate_eip_with_share_bandwidth", + "bind_e_ip": "bind_eip", + "describe_e_ip": "describe_eip", + "disassociate_e_ip_with_share_bandwidth": "disassociate_eip_with_share_bandwidth", + "get_e_ip_pay_mode": "get_eip_pay_mode", + "get_e_ip_price": "get_eip_price", + "get_e_ip_upgrade_price": "get_eip_upgrade_price", + "modify_e_ip_bandwidth": "modify_eip_bandwidth", + "modify_e_ip_weight": "modify_eip_weight", + "release_e_ip": "release_eip", + "set_e_ip_pay_mode": "set_eip_pay_mode", + "un_bind_e_ip": "un_bind_eip", + "update_e_ip_attribute": "update_eip_attribute", + "release_v_ip": "release_vip", + "allocate_v_ip": "allocate_vip", + "describe_v_ip": "describe_vip", + } + + def __getattr__(self, item): + if item in self._deprecated: + instead_of = self._deprecated[item] + msg = ( + "the method {} is deprecated, " + "please use {} instead, " + "this method will remove after 0.5.0 version" + ) + self.logger.warning(msg.format(item, instead_of)) + return getattr(self, self._deprecated[item]) + + raise AttributeError( + ( + "'{}' object has no attribute '{}'".format( + self.__class__.__name__, item + ) + ) + )
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/unvs/client.html b/_modules/ucloud/services/unvs/client.html new file mode 100644 index 00000000..5066c5d1 --- /dev/null +++ b/_modules/ucloud/services/unvs/client.html @@ -0,0 +1,193 @@ + + + + + + + + ucloud.services.unvs.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.unvs.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.unvs.schemas import apis
+
+
+
[docs]class UNVSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UNVSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def get_mobile(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetMobile - 一键登录 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BusinessId** (str) - (Required) 业务ID + - **Token** (str) - (Required) token + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **PhoneInfo** 模型定义 + - **Message** (str) - 发生错误时表示错误字符串 + - **ReqUuid** (str) - 本次请求Uuid + + **Response Model** + + **PhoneInfo** + - **Phone** (str) - 返回的电话号码 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetMobileRequestSchema().dumps(d) + + resp = self.invoke("GetMobile", d, **kwargs) + return apis.GetMobileResponseSchema().loads(resp)
+ +
[docs] def verify_mobile( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """VerifyMobile - 号码检测 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BusinessId** (str) - (Required) 业务ID + - **Phone** (str) - (Required) 需要检测的手机号 + - **Token** (str) - (Required) token + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **VerifyInfo** 模型定义 + - **Message** (str) - 发生错误时表示错误字符串 + - **ReqUuid** (str) - 本次请求Uuid + + **Response Model** + + **VerifyInfo** + - **VerifyResult** (str) - 检测结果:PASS:一致,REJECT:不一致 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.VerifyMobileRequestSchema().dumps(d) + + resp = self.invoke("VerifyMobile", d, **kwargs) + return apis.VerifyMobileResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uphost/client.html b/_modules/ucloud/services/uphost/client.html new file mode 100644 index 00000000..64517889 --- /dev/null +++ b/_modules/ucloud/services/uphost/client.html @@ -0,0 +1,943 @@ + + + + + + + + ucloud.services.uphost.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uphost.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uphost.schemas import apis
+
+
+
[docs]class UPHostClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UPHostClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreatePHost - 指定数据中心,根据资源使用量创建指定数量的UPHost物理云主机实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - (Required) ImageId,可以通过接口 `DescribePHostImage <https://docs.ucloud.cn/api/uphost-api/api/uphost-api/describe_phost_image.html>`_ 获取 + - **Password** (str) - (Required) 密码(密码需使用base64进行编码) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - 计费模式,枚举值为:year, 按年付费; month,按月付费;默认为按月付费 + - **Cluster** (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G。智能网卡可以选择25G。 + - **CouponId** (str) - 代金券 + - **Disks** (list) - 见 **CreatePHostParamDisks** 模型定义 + - **Name** (str) - 物理机名称,默认为phost + - **Quantity** (str) - 购买时长,1-10个月或1-10年;默认值为1。月付时,此参数传0,代表购买至月末,1代表整月。 + - **Raid** (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid + - **Remark** (str) - 物理机备注,默认为空 + - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall <https://docs.ucloud.cn/api/uphost-api/api/unet-api/describe_firewall.html>`_ 。 + - **SubnetId** (str) - 子网ID,不填为默认,VPC2.0下需要填写此字段。 + - **Tag** (str) - 业务组,默认为default + - **Type** (str) - 物理机类型,默认为:db-2(基础型-SAS-V3) + - **VPCId** (str) - VPC ID,不填为默认,VPC2.0下需要填写此字段。 + - **VpcIp** (str) - 指定内网ip创建 + + **Response** + + - **PHostId** (list) - PHost的资源ID数组 + + **Request Model** + + **CreatePHostParamDisks** + - **CouponId** (str) - 裸金属机型参数->云盘代金券id。不适用于系统盘。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **IsBoot** (str) - 裸金属机型参数->是否是系统盘。枚举值: True,是系统盘。 False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Size** (int) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。 + - **Type** (str) - 裸金属机型参数->磁盘类型:枚举值:CLOUD_RSSD + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreatePHostRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreatePHost", d, **kwargs) + return apis.CreatePHostResponseSchema().loads(resp)
+ +
[docs] def create_phost_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreatePHostImage - 创建裸金属2.0用户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **PHostId** (str) - (Required) UPHost实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageDescription** (str) - 镜像描述 + + **Response** + + - **ImageId** (str) - 镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreatePHostImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreatePHostImage", d, **kwargs) + return apis.CreatePHostImageResponseSchema().loads(resp)
+ +
[docs] def describe_baremetal_machine_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeBaremetalMachineType - 获取裸金属机型的详细描述信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Type** (str) - 具体机型。若不填写,则返回全部机型 + + **Response** + + - **MachineTypes** (list) - 见 **PHostCloudMachineTypeSet** 模型定义 + + **Response Model** + + **PHostClusterSet** + - **Name** (str) - 集群名。枚举值:千兆网络集群:1G;万兆网络集群:10G;智能网卡网络:25G; + - **StockStatus** (str) - 库存状态。枚举值:有库存:Available;无库存:SoldOut + + + **PHostComponentSet** + - **Count** (int) - 组件数量 + - **Name** (str) - 组件名称 + + + **PHostCPUSet** + - **CoreCount** (int) - CPU核数 + - **Count** (int) - CPU个数 + - **Frequence** (float) - CPU主频 + - **Model** (str) - CPU型号 + + + **PHostCloudMachineTypeSet** + - **CPU** (dict) - 见 **PHostCPUSet** 模型定义 + - **Clusters** (list) - 见 **PHostClusterSet** 模型定义 + - **Components** (dict) - 见 **PHostComponentSet** 模型定义 + - **Memory** (int) - 内存大小,单位MB + - **Type** (str) - 物理云主机机型别名,全网唯一。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeBaremetalMachineTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeBaremetalMachineType", d, **kwargs) + return apis.DescribeBaremetalMachineTypeResponseSchema().loads(resp)
+ +
[docs] def describe_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePHost - 获取物理机详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 数据偏移量,默认为0 + - **PHostId** (list) - PHost资源ID,若为空,则返回当前Region所有PHost。 + - **UDiskIdForAttachment** (str) - 要挂载的云盘id,过滤返回能被UDiskId挂载的云主机。目前主要针对rssd云盘使用 + - **VPCId** (str) - ULB使用参数,获取同VPC下机器信息。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **PHostSet** (list) - 见 **PHostSet** 模型定义 + - **TotalCount** (int) - 满足条件的PHost总数 + + **Response Model** + + **PHostSet** + - **AutoRenew** (str) - 自动续费 + - **CPUSet** (dict) - 见 **PHostCPUSet** 模型定义 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费;默认为月付 + - **Cluster** (str) - 网络环境。枚举值:千兆:1G ,万兆:10G + - **Components** (str) - 组件信息(暂不支持) + - **CreateTime** (int) - 创建时间 + - **DiskSet** (list) - 见 **PHostDescDiskSet** 模型定义 + - **ExpireTime** (int) - 到期时间 + - **IPSet** (list) - 见 **PHostIPSet** 模型定义 + - **ImageName** (str) - 镜像名称 + - **IsSupportKVM** (str) - 是否支持紧急登录 + - **Memory** (int) - 内存大小,单位:MB + - **Name** (str) - 物理机名称 + - **OSType** (str) - 操作系统类型 + - **OSname** (str) - 操作系统名称 + - **PHostId** (str) - PHost资源ID + - **PHostType** (str) - 物理机类型,参见DescribePHostMachineType返回值 + - **PMStatus** (str) - 物理云主机状态。枚举值:\\ > 初始化:Initializing; \\ > 启动中:Starting; \\ > 运行中:Running;\\ > 关机中:Stopping; \\ > 安装失败:InstallFailed; \\ > 重启中:Rebooting;\\ > 关机:Stopped; \\ > 迁移中(裸金属云盘):Migrating + - **PhostClass** (str) - 物理云产品类型,枚举值:LocalDisk=>代表传统本地盘机型, CloudDisk=>云盘裸金属机型 + - **PowerState** (str) - 电源状态,on 或 off + - **RaidSupported** (str) - 是否支持Raid。枚举值:Yes:支持;No:不支持。 + - **Remark** (str) - 物理机备注 + - **SN** (str) - 物理机序列号 + - **Tag** (str) - 业务组 + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + + **PHostCPUSet** + - **CoreCount** (int) - CPU核数 + - **Count** (int) - CPU个数 + - **Frequence** (float) - CPU主频 + - **Model** (str) - CPU型号 + + + **PHostDiskSet** + - **Count** (int) - + - **IOCap** (int) - + - **Name** (str) - + - **Space** (int) - + - **Type** (str) - + + + **PHostIPSet** + - **Bandwidth** (int) - IP对应带宽,单位Mb,内网IP不显示带宽信息 + - **IPAddr** (str) - IP地址, + - **IPId** (str) - IP资源ID(内网IP无资源ID)(待废弃) + - **MACAddr** (str) - MAC地址 + - **OperatorName** (str) - 国际: Internation, BGP: BGP, 内网: Private + - **SubnetId** (str) - 子网ID + - **VPCId** (str) - VPC ID + + + **PHostDescDiskSet** + - **Count** (int) - 磁盘数量 + - **DiskId** (str) - 裸金属机型参数:磁盘ID + - **Drive** (str) - 裸金属机型参数:磁盘盘符 + - **IOCap** (int) - 磁盘IO性能,单位MB/s(待废弃) + - **IsBoot** (str) - 裸金属机型参数:是否是启动盘。True/False + - **Name** (str) - 磁盘名称,sys/data + - **Space** (int) - 单盘大小,单位GB + - **Type** (str) - 磁盘属性 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePHostRequestSchema().dumps(d) + + resp = self.invoke("DescribePHost", d, **kwargs) + return apis.DescribePHostResponseSchema().loads(resp)
+ +
[docs] def describe_phost_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePHostImage - 获取物理云主机镜像列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (list) - 镜像ID + - **ImageType** (str) - 镜像类别,枚举值,Base是基础镜像;Custom是自制镜像。 + - **Limit** (int) - 返回数据长度,默认为20 + - **MachineType** (str) - 机器型号,只支持当前zone的展示机型 + - **Offset** (int) - 数据偏移量,默认为0 + + **Response** + + - **ImageSet** (list) - 见 **PHostImageSet** 模型定义 + - **TotalCount** (int) - 满足条件的镜像总数 + + **Response Model** + + **PHostImageSet** + - **CreateTime** (int) - 裸金属2.0参数。镜像创建时间。 + - **ImageDescription** (str) - 镜像描述 + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **ImageSize** (int) - 裸金属2.0参数。镜像大小。 + - **ImageType** (str) - 枚举值:Base=>基础镜像,Custom=>自制镜像。 + - **OsName** (str) - 操作系统名称 + - **OsType** (str) - 操作系统类型 + - **State** (str) - 裸金属2.0参数。镜像当前状态。 + - **Support** (list) - 支持的机型 + - **Version** (str) - 当前版本 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePHostImageRequestSchema().dumps(d) + + resp = self.invoke("DescribePHostImage", d, **kwargs) + return apis.DescribePHostImageResponseSchema().loads(resp)
+ +
[docs] def describe_phost_machine_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePHostMachineType - 获取物理云机型的详细描述信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Type** (str) - 具体机型。若不填写,则返回全部机型 + + **Response** + + - **MachineTypes** (list) - 见 **PHostMachineTypeSet** 模型定义 + + **Response Model** + + **PHostClusterSet** + - **Name** (str) - 集群名。枚举值:千兆网络集群:1G;万兆网络集群:10G;智能网卡网络:25G; + - **StockStatus** (str) - 库存状态。枚举值:有库存:Available;无库存:SoldOut + + + **PHostComponentSet** + - **Count** (int) - 组件数量 + - **Name** (str) - 组件名称 + + + **PHostDiskSet** + - **Count** (int) - 磁盘数量 + - **IOCap** (int) - 磁盘IO性能,单位MB/s(待废弃) + - **Name** (str) - 磁盘名称,sys/data + - **Space** (int) - 单盘大小,单位GB + - **Type** (str) - 磁盘属性 + + + **PHostCPUSet** + - **CoreCount** (int) - CPU核数 + - **Count** (int) - CPU个数 + - **Frequence** (float) - CPU主频 + - **Model** (str) - CPU型号 + + + **PHostMachineTypeSet** + - **CPU** (dict) - 见 **PHostCPUSet** 模型定义 + - **Clusters** (list) - 见 **PHostClusterSet** 模型定义 + - **Components** (dict) - 见 **PHostComponentSet** 模型定义 + - **Disks** (list) - 见 **PHostDiskSet** 模型定义 + - **Memory** (int) - 内存大小,单位MB + - **RaidSupported** (str) - 是否支持Raid。枚举值:支持:YES;不支持:NO + - **Type** (str) - 物理云主机机型别名,全网唯一。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePHostMachineTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribePHostMachineType", d, **kwargs) + return apis.DescribePHostMachineTypeResponseSchema().loads(resp)
+ +
[docs] def describe_phost_tags( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePHostTags - 获取物理机tag列表(业务组) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **TagSet** (list) - 见 **PHostTagSet** 模型定义 + - **TotalCount** (int) - Tag的个数 + + **Response Model** + + **PHostTagSet** + - **Tag** (str) - 业务组名称 + - **TotalCount** (int) - 该业务组中包含的主机个数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePHostTagsRequestSchema().dumps(d) + + resp = self.invoke("DescribePHostTags", d, **kwargs) + return apis.DescribePHostTagsResponseSchema().loads(resp)
+ + def get_phost_disk_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetPHostDiskUpgradePrice - 获取物理云裸金属挂载磁盘的升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DiskSpace** (int) - (Required) 磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。 + - **PHostId** (str) - (Required) UPHost实例ID。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ReinstallTag** (bool) - 是否重装价格获取。复用此接口。扩容只能增加云盘大小。重装不限制。枚举值:true/false + - **UDiskId** (str) - 磁盘 ID。获取扩容价格必填(只能扩不能减);重装时候不需要填(根据所选盘大小决定) + + **Response** + + - **OriginalPrice** (float) - 升价差价原价。精度为小数点后2位。 + - **Price** (float) - 升级差价。精度为小数点后2位。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetPHostDiskUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetPHostDiskUpgradePrice", d, **kwargs) + return apis.GetPHostDiskUpgradePriceResponseSchema().loads(resp) + +
[docs] def get_phost_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetPHostPrice - 获取物理机价格列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - (Required) 计费模式,枚举值为: Year/Month + - **Count** (int) - (Required) 购买数量,范围[1-5] + - **Quantity** (int) - (Required) 购买时长,1-10个月或1-10年;默认值为1。月付时,此参数传0,代表购买至月末,1代表整月。 + - **Cluster** (str) - 网络环境,可选千兆:1G ;万兆:10G;25G网络:25G。 + - **Disks** (list) - 见 **GetPHostPriceParamDisks** 模型定义 + - **Type** (str) - 默认为:DB(数据库型),可以通过接口 `DescribePHostMachineType <https://docs.ucloud.cn/api/uphost-api/api/uphost-api/describe_phost_machine_type.html>`_ 获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **PriceSet** (list) - 见 **PHostPriceSet** 模型定义 + + **Request Model** + + **GetPHostPriceParamDisks** + - **IsBoot** (str) - 裸金属机型参数->枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Size** (str) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB。数据盘是20-32000G。 + - **Type** (str) - 裸金属机型参数->磁盘类型:枚举值:CLOUD_RSSD + + + **Response Model** + + **PHostPriceSet** + - **ChargeType** (str) - Year/Month + - **OriginalPrice** (float) - 原价格, 单位:元, 保留小数点后两位有效数字 + - **Price** (float) - 价格, 单位:元, 保留小数点后两位有效数字 + - **Product** (str) - 枚举值:phost=>为主机价格,如果是云盘包括了系统盘价格。cloudDisk=>所有数据盘价格,只是裸金属机型才返回此参数。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetPHostPriceRequestSchema().dumps(d) + + resp = self.invoke("GetPHostPrice", d, **kwargs) + return apis.GetPHostPriceResponseSchema().loads(resp)
+ +
[docs] def get_phost_disk_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetPhostDiskUpgradePrice - 获取物理云裸金属挂载磁盘的升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DiskId** (str) - (Required) 磁盘ID。 + - **DiskSpace** (int) - (Required) 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。 + - **PHostId** (str) - (Required) UPHost实例ID。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Price** (float) - 升级差价。精度为小数点后2位。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetPhostDiskUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetPhostDiskUpgradePrice", d, **kwargs) + return apis.GetPhostDiskUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def modify_phost_image_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyPHostImageInfo - 修改自定义镜像名称和备注 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - (Required) 镜像ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - 镜像名称 + - **Remark** (str) - 备注 + + **Response** + + - **ImageId** (str) - 镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyPHostImageInfoRequestSchema().dumps(d) + + resp = self.invoke("ModifyPHostImageInfo", d, **kwargs) + return apis.ModifyPHostImageInfoResponseSchema().loads(resp)
+ +
[docs] def modify_phost_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyPHostInfo - 更改物理机信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) 物理机资源ID + - **Name** (str) - 物理机名称,默认不更改 + - **Remark** (str) - 物理机备注,默认不更改 + - **Tag** (str) - 业务组,默认不更改 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyPHostInfoRequestSchema().dumps(d) + + resp = self.invoke("ModifyPHostInfo", d, **kwargs) + return apis.ModifyPHostInfoResponseSchema().loads(resp)
+ +
[docs] def poweroff_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffPHost - 断电物理云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.PoweroffPHostRequestSchema().dumps(d) + + resp = self.invoke("PoweroffPHost", d, **kwargs) + return apis.PoweroffPHostResponseSchema().loads(resp)
+ +
[docs] def reboot_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """RebootPHost - 重启物理机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RebootPHostRequestSchema().dumps(d) + + resp = self.invoke("RebootPHost", d, **kwargs) + return apis.RebootPHostResponseSchema().loads(resp)
+ +
[docs] def reinstall_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallPHost - 重装物理机操作系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Password** (str) - (Required) 密码 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BootDiskSpace** (int) - 裸金属机型参数->系统盘大小。 单位:GB, 范围[20,500], 步长:10 + - **ImageId** (str) - 镜像Id,参考镜像列表,默认使用原镜像 + - **Name** (str) - 物理机名称,默认不更改 + - **Raid** (str) - 不保留数据盘重装,可选Raid + - **Remark** (str) - 物理机备注,默认为不更改。 + - **ReserveDisk** (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes + - **Tag** (str) - 业务组,默认不更改。 + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReinstallPHostRequestSchema().dumps(d) + + resp = self.invoke("ReinstallPHost", d, **kwargs) + return apis.ReinstallPHostResponseSchema().loads(resp)
+ +
[docs] def reset_phost_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetPHostPassword - 重置裸金属实例的管理员密码 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) 裸金属实例ID + - **Password** (str) - (Required) PHost新密码(密码格式使用BASE64编码) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - 裸金属实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetPHostPasswordRequestSchema().dumps(d) + + resp = self.invoke("ResetPHostPassword", d, **kwargs) + return apis.ResetPHostPasswordResponseSchema().loads(resp)
+ +
[docs] def resize_phost_attached_disk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizePHostAttachedDisk - 修改裸金属物理云已经挂载的云盘容量大小 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DiskSpace** (int) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。 + - **PHostId** (str) - UPHost实例ID。 + - **UDiskId** (str) - 磁盘ID。 + + **Response** + + - **UDiskId** (str) - 改配成功的磁盘id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizePHostAttachedDiskRequestSchema().dumps(d) + + resp = self.invoke("ResizePHostAttachedDisk", d, **kwargs) + return apis.ResizePHostAttachedDiskResponseSchema().loads(resp)
+ +
[docs] def start_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """StartPHost - 启动物理机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartPHostRequestSchema().dumps(d) + + resp = self.invoke("StartPHost", d, **kwargs) + return apis.StartPHostResponseSchema().loads(resp)
+ +
[docs] def stop_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """StopPHost - 关闭物理机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopPHostRequestSchema().dumps(d) + + resp = self.invoke("StopPHost", d, **kwargs) + return apis.StopPHostResponseSchema().loads(resp)
+ +
[docs] def terminate_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminatePHost - 删除物理云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **ReleaseEIP** (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。 + - **ReleaseUDisk** (bool) - 裸金属机型参数->删除主机时是否同时删除挂载的数据盘。默认为false。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminatePHostRequestSchema().dumps(d) + + resp = self.invoke("TerminatePHost", d, **kwargs) + return apis.TerminatePHostResponseSchema().loads(resp)
+ +
[docs] def terminate_phost_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminatePHostImage - 删除裸金属2.0用户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ImageId** (str) - (Required) 自制镜像ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **ImageId** (str) - 自制镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminatePHostImageRequestSchema().dumps(d) + + resp = self.invoke("TerminatePHostImage", d, **kwargs) + return apis.TerminatePHostImageResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/usms/client.html b/_modules/ucloud/services/usms/client.html new file mode 100644 index 00000000..7b7fce4b --- /dev/null +++ b/_modules/ucloud/services/usms/client.html @@ -0,0 +1,519 @@ + + + + + + + + ucloud.services.usms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.usms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.usms.schemas import apis
+
+
+
[docs]class USMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(USMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUSMSSignature - 调用接口CreateUSMSSignature申请短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CertificateType** (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Description** (str) - (Required) 短信签名申请原因 + - **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB + - **SigContent** (str) - (Required) 签名内容 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **International** (bool) - 国内/国际短信。true:国际短信,false:国内短信,若不传值则默认该值为false + - **ProxyFile** (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项; + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **SigId** (str) - 短信签名ID(短信签名申请时的工单ID) + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUSMSSignatureRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUSMSSignature", d, **kwargs) + return apis.CreateUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def create_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUSMSTemplate - 调用接口CreateUSMSTemplate申请短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Purpose** (int) - (Required) 短信模板用途类型:1-验证码类短信模板;2-系统通知类短信模板;3-会员推广类短信模板; + - **Template** (str) - (Required) 短信模板内容,说明如下:字数不超过500,每个中文、符号、英文、数组等都计为一个字;模板中的变量填写格式:{N},其中N为大于1的整数,有多个参数时,建议N从1开始顺次,例如:{1}、{2}等;短信模板禁止仅包括变量的情况; + - **TemplateName** (str) - (Required) 短信模板名称,不超过32个字符,每个中文、符号、英文、数字等都计为1个字。 + - **International** (bool) - 标记是否为国际短信。true:国际短信,false:国内短信,若不传值则默认该值为false + - **Remark** (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。 + - **UnsubscribeInfo** (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **TemplateId** (str) - 短信模板ID(短信模板申请时的工单ID) + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUSMSTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUSMSTemplate", d, **kwargs) + return apis.CreateUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def delete_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUSMSSignature - 调用接口DeleteUSMSSignature删除短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SigIds** (list) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("DeleteUSMSSignature", d, **kwargs) + return apis.DeleteUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def delete_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUSMSTemplate - 调用接口DeleteUSMSTemplate删除短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TemplateIds** (list) - (Required) 模板ID(也即短信模板申请时的工单ID),支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1...TemplateIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("DeleteUSMSTemplate", d, **kwargs) + return apis.DeleteUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def get_usms_send_receipt( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUSMSSendReceipt - 调用接口GetUSMSSendReceipt短信发送状态信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **SessionNoSet** (list) - (Required) 发送短信时返回的SessionNo集合,SessionNoSet.0,SessionNoSet.1....格式,单次调用集合数需控制在100个以内 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (list) - 见 **ReceiptPerSession** 模型定义 + - **Message** (str) - 错误描述 + + **Response Model** + + **ReceiptPerSession** + - **ReceiptSet** (list) - 见 **ReceiptPerPhone** 模型定义 + - **SessionNo** (str) - 发送短信时返回的SessionNo + + + **ReceiptPerPhone** + - **CostCount** (int) - 消耗短信条数 + - **Phone** (str) - 手机号码 + - **ReceiptCode** (str) - 状态报告编码 + - **ReceiptDesc** (str) - 回执结果描述 + - **ReceiptResult** (str) - 回执结果,枚举值:\\ > 发送成功: 代表成功 \\ > Success: 代表成功 \\ > 发送失败: 代表失败 \\ > Fail: 代表失败 \\ > 状态未知: 代表未知 \\ > Unknow: 代表未知 + - **ReceiptTime** (int) - 回执返回时间 + - **UserId** (str) - 自定义的业务标识ID,字符串 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUSMSSendReceiptRequestSchema().dumps(d) + + resp = self.invoke("GetUSMSSendReceipt", d, **kwargs) + return apis.GetUSMSSendReceiptResponseSchema().loads(resp)
+ +
[docs] def query_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryUSMSSignature - 调用接口QueryUSMSSignature查询短信签名申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SigContent** (str) - 签名内容;签名ID和签名至少需填写1项; + - **SigId** (str) - 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项; + + **Response** + + - **Data** (dict) - 见 **OutSignature** 模型定义 + - **Message** (str) - 发生错误时,表示具体错误描述 + + **Response Model** + + **OutSignature** + - **ErrDesc** (str) - 签名审核失败原因 + - **SigContent** (str) - 签名内容 + - **SigId** (str) - 签名ID + - **Status** (int) - 签名状态。0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.QueryUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("QueryUSMSSignature", d, **kwargs) + return apis.QueryUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def query_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryUSMSTemplate - 调用接口QueryUSMSTemplate查询短信模板申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TemplateId** (str) - (Required) 模板ID + + **Response** + + - **Data** (dict) - 见 **OutTemplate** 模型定义 + - **Message** (str) - 当RetCode不为0时,Message中显示具体错误描述 + + **Response Model** + + **OutTemplate** + - **CreateTime** (int) - 创建时间 + - **ErrDesc** (str) - 审核失败原因 + - **Purpose** (int) - 模板类型,选项:1-验证码类 2-通知类 3-会员推广类 + - **Remark** (str) - 模板说明 + - **Status** (int) - 短信模板状态;状态说明:0-待审核,1-审核中,2-审核通过,3-审核未通过,4-被禁用 + - **Template** (str) - 短信模板内容 + - **TemplateId** (str) - 短信模板ID + - **TemplateName** (str) - 短信模板名称 + - **UnsubscribeInfo** (str) - 退订信息;一般填写方式“回T退订”,当purpose为3(也即会员推广类)时,为必填项 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.QueryUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("QueryUSMSTemplate", d, **kwargs) + return apis.QueryUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def send_batch_usms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendBatchUSMSMessage - 调用SendBatchUSMSMessage接口批量发送短信 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TaskContent** (str) - (Required) 批量发送内容,该参数是json数组的base64编码结果。发送内容json数组中,每个“模板+签名”组合作为一个子项,每个子项内支持多个号码,示例:发送内容json数组(base64编码前):[{"TemplateId": "UTA20212831C85C", "SigContent": "UCloud", "Target": [{"TemplateParams": ["123456"], "Phone": "18500000123", "ExtendCode": "123", "UserId": "456"} ] } ] 。json数组中各参数的定义:"TemplateId":模板ID,"SigContent"短信签名内容,"Target"具体到号码粒度的发送内容。"Target"中的具体字段有:"TemplateParams"实际发送的模板参数(若使用的是无参数模板,该参数不能传值),"Phone"手机号码, "ExtendCode"短信扩展码, "UserId"自定义业务标识ID。其中必传参数为"TemplateId", "SigContent", "Target"("Target"中必传参数为"Phone")。实际调用本接口时TaskContent传值(发送内容base64编码后)为:W3siVGVtcGxhdGVJZCI6ICJVVEEyMDIxMjgzMUM4NUMiLCAiU2lnQ29udGVudCI6ICJVQ2xvdWQiLCAiVGFyZ2V0IjogW3siVGVtcGxhdGVQYXJhbXMiOiBbIjEyMzQ1NiJdLCAiUGhvbmUiOiAiMTg1MDAwMDAxMjMiLCAiRXh0ZW5kQ29kZSI6ICIxMjMiLCAiVXNlcklkIjogIjQ1NiJ9IF0gfSBdIA== + + **Response** + + - **Action** (str) - 操作名称 + - **FailContent** (list) - 见 **BatchInfo** 模型定义 + - **Message** (str) - 发生错误时表示错误描述 + - **ReqUuid** (str) - 本次请求Uuid + - **RetCode** (int) - 返回码。0表示成功,非0表示失败。 + - **SessionNo** (str) - 本次提交发送任务的唯一ID,可根据该值查询本次发送的短信列表。注:成功提交短信数大于0时,才返回该字段 + - **SuccessCount** (int) - 成功提交短信(未拆分)条数 + + **Response Model** + + **BatchInfo** + - **FailureDetails** (str) - 未能成功发送的详情。注:模板/签名检验失败时,该字段有效 + - **SigContent** (str) - 签名 + - **Target** (list) - 见 **FailPhoneDetail** 模型定义 + - **TemplateId** (str) - 模板ID + + + **FailPhoneDetail** + - **ExtendCode** (str) - 扩展号码 + - **FailureDetails** (str) - 发送失败原因。注:若模板/签名校验失败,该字段为空 + - **Phone** (str) - 手机号 + - **TemplateParams** (list) - 模板参数 + - **UserId** (str) - 用户自定义ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendBatchUSMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendBatchUSMSMessage", d, **kwargs) + return apis.SendBatchUSMSMessageResponseSchema().loads(resp)
+ +
[docs] def send_usms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendUSMSMessage - 调用接口SendUSMSMessage发送短信 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PhoneNumbers** (list) - (Required) 电话号码数组,电话号码格式为(60)1xxxxxxxx,()中为国际长途区号(如中国为86或0086,两种格式都支持),后面为电话号码.若不传入国际区号,如1851623xxxx,则默认为国内手机号 + - **SigContent** (str) - (Required) 短信签名内容,请到 `USMS控制台 <https://console.ucloud.cn/usms>`_ 的签名管理页面查看;使用的短信签名必须是已申请并且通过审核; + - **TemplateId** (str) - (Required) 模板ID(也即短信模板申请时的工单ID),请到 `USMS控制台 <https://console.ucloud.cn/usms>`_ 的模板管理页面查看;使用的短信模板必须是已申请并通过审核; + - **ExtendCode** (str) - 短信扩展码,格式为阿拉伯数字串,默认不开通,如需开通请联系 UCloud技术支持 + - **TemplateParams** (list) - 模板可变参数,以数组的方式填写,举例,TempalteParams.0,TempalteParams.1,... 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送; + - **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符 + + **Response** + + - **Message** (str) - 发生错误时表示错误描述 + - **SessionNo** (str) - 本次提交发送的短信的唯一ID,可根据该值查询本次发送的短信列表 + - **UserId** (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendUSMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendUSMSMessage", d, **kwargs) + return apis.SendUSMSMessageResponseSchema().loads(resp)
+ +
[docs] def update_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUSMSSignature - 调用接口UpdateUSMSSignature修改未通过审核的短信签名,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigContent** (str) - (Required) 新的短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigId** (str) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **CertificateType** (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Document** (str) - 短信签名的资质证明文件URL,若未更改审核材料,则该处使用已上传审核材料的URL链接,否则使用File参数 + - **File** (str) - 短信签名的资质证明文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB。内容格式如下: [file type];[code type],[base64] 如:image/jpeg;base64,5YaF5a65 + - **ProxyDoc** (str) - 短信签名授权委托文件URL,若未更改授权委托文件,则该处填写已上传的授权委托文件的URL链接,否则使用ProxyFile参数 + - **ProxyFile** (str) - 短信签名授权委托文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;格式和File类似。 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("UpdateUSMSSignature", d, **kwargs) + return apis.UpdateUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def update_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUSMSTemplate - 调用接口UpdateUSMSTemplate修改未通过审核的短信模板,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Template** (str) - (Required) 新的模板内容。模板名称和模板内容必须提供一个,否则会报错。小于等于600个字 + - **TemplateId** (str) - (Required) 短信模板ID + - **Remark** (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。 + - **TemplateName** (str) - 新的模板名称。小于等于32个字,每个中文、英文、数组、符合都计为一个字 + + **Response** + + - **Message** (str) - 发生错误时表示错误描述 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("UpdateUSMSTemplate", d, **kwargs) + return apis.UpdateUSMSTemplateResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/utsdb/client.html b/_modules/ucloud/services/utsdb/client.html new file mode 100644 index 00000000..12b0911d --- /dev/null +++ b/_modules/ucloud/services/utsdb/client.html @@ -0,0 +1,710 @@ + + + + + + + + ucloud.services.utsdb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.utsdb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.utsdb.schemas import apis
+
+
+
[docs]class UTSDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UTSDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def check_uinfluxdb_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUInfluxdbAllowance - 检查UInfluxdb剩余资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Count** (int) - (Required) 创建实例的数量,[1-10] + - **CpuLimit** (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **MemoryLimit** (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Count** (int) - 可创建的数量 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckUInfluxdbAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckUInfluxdbAllowance", d, **kwargs) + return apis.CheckUInfluxdbAllowanceResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbDatabase - 创建Influxdb数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) Influxdb创建的数据库的名称 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AccoutName** (str) - Influxdb数据库账号 + - **Description** (str) - Influxdb数据库的描述 + - **RetentionPolicy** (str) - 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbDatabaseRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbDatabase", d, **kwargs) + return apis.CreateUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbDatabaseRP - 给指定的database创建一个保留策略,最多可以创建10个RP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 要创建RP的数据库 + - **RetentionPolicy** (str) - (Required) 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf) + - **RetentionPolicyName** (str) - (Required) 保留策略名 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbDatabaseRPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbDatabaseRP", d, **kwargs) + return apis.CreateUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbInstance - 创建UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AccountName** (str) - (Required) 默认账户 + - **ChargeType** (str) - (Required) 付费类型,后付费阶段固定为:后付费(PostPaid) + - **CpuLimit** (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **DatabaseName** (str) - (Required) 数据库名称 + - **MemoryLimit** (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Name** (str) - (Required) 实例名称,长度(6<=size<=63) + - **Password** (str) - (Required) 默认账户的密码,需要 base64 编码 + - **Quantity** (int) - (Required) 购买时长,默认值1 + - **SubnetId** (str) - (Required) 子网 id + - **VPCId** (str) - (Required) VPC id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CouponId** (str) - 使用的代金券id + - **Tag** (str) - 业务组名称 + + **Response** + + - **UInfluxdbId** (str) - 返回的实例id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbInstance", d, **kwargs) + return apis.CreateUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbDatabase - 删除Influxdb实例的数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名称 + - **UInfluxdbId** (str) - (Required) 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbDatabaseRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbDatabase", d, **kwargs) + return apis.DeleteUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbDatabaseRP - 删除指定数据库下面的一个数据保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 要删除的RP所在数据库 + - **RetentionPolicyName** (str) - (Required) 要删除的保留策略 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbDatabaseRPRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbDatabaseRP", d, **kwargs) + return apis.DeleteUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbInstance - 删除UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbInstance", d, **kwargs) + return apis.DeleteUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbDatabase - 描述UInfluxdb数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - + - **Limit** (int) - + - **Offset** (int) - + + **Response** + + - **DatabaseInfo** (list) - 见 **DatabaseInfo** 模型定义 + + **Response Model** + + **AccountInfo** + - **Account** (str) - 账户名 + - **Password** (str) - 密码 + - **Privilege** (str) - 权限 + + + **DatabaseInfo** + - **AccountInfo** (list) - 见 **AccountInfo** 模型定义 + - **DatabaseName** (str) - 数据库名 + - **Description** (str) - 数据库描述 + - **RetentionPolicy** (str) - 保留策略 + - **State** (str) - 数据库状态 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbDatabaseRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbDatabase", d, **kwargs) + return apis.DescribeUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbDatabaseRP - 获取指定数据库下面的所有保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名称 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **RpData** 模型定义 + - **Message** (str) - 如果执行失败, 失败的错误消息 + + **Response Model** + + **RpData** + - **Policy** (str) - 保留策略 + - **RetentionPolicyName** (str) - 保留策略名 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbDatabaseRPRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbDatabaseRP", d, **kwargs) + return apis.DescribeUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbInstance - 拉取UInfluxdb实例列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 分页显示数量,列表操作则指定 + - **Offset** (int) - 分页显示起始偏移位置,列表操作则指定 + - **UInfluxdbId** (str) - 指定id的话,会拉取该实例信息,否则拉取该帐号所有信息 + + **Response** + + - **DataSet** (list) - 见 **UInfluxdbDataSet** 模型定义 + + **Response Model** + + **UInfluxdbDataSet** + - **AccountName** (str) - 账户名 + - **CPULimit** (int) - 实例核数 + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 + - **CreateTime** (int) - 创建时间 + - **ExpiredTime** (int) - 修改时间 + - **MemoryLimit** (int) - 实例内存 + - **Name** (str) - 实例名称 + - **Port** (int) - 实例端口 + - **State** (str) - 实例状态 + - **SubnetId** (str) - 子网ID + - **Tag** (str) - 业务组信息 + - **UInfluxdbId** (str) - 实例id + - **UsedSize** (int) - 硬盘使用量 + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - 实例ip + - **Zone** (str) - UInfluxdb实例所在可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbInstance", d, **kwargs) + return apis.DescribeUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbPrice - 获取UInfluxdb价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) 核数 单位:个,规格[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - 付费类型,后付费。填:PostPaid (后付费) + - **MemoryLimit** (int) - 内存限制 单位:G 规格 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Quantity** (int) - 付费周期数量 + + **Response** + + - **OriginalPrice** (float) - 原价 + - **Price** (float) - 价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbPrice", d, **kwargs) + return apis.DescribeUInfluxdbPriceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbUpgradePrice - 获取UIfluxdb升降级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) 核数 + - **MemoryLimit** (int) - (Required) 容量,单位GB + - **UInfluxdbId** (str) - (Required) UInfluxdb 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **OriginalPrice** (float) - 原价 + - **TotalPrice** (float) - 升降级价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbUpgradePrice", d, **kwargs) + return apis.DescribeUInfluxdbUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def modify_uinfluxdb_database_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUInfluxdbDatabasePolicy - 更改UInfluxdb实例数据库数据保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名 + - **RetentionPolicy** (str) - (Required) 数据库数据保留策略。自定义格式如:10d(即10天),2w(即两周), + - **UInfluxdbId** (str) - (Required) Influxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUInfluxdbDatabasePolicyRequestSchema().dumps(d) + + resp = self.invoke("ModifyUInfluxdbDatabasePolicy", d, **kwargs) + return apis.ModifyUInfluxdbDatabasePolicyResponseSchema().loads(resp)
+ +
[docs] def reboot_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RebootUInfluxdbInstance - 重启UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RebootUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("RebootUInfluxdbInstance", d, **kwargs) + return apis.RebootUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def reset_uinfluxdb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetUInfluxdbInstanceName - 更改UIfluxdb实例名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NewName** (str) - (Required) 实例的新名字, 长度要求为6~63位 + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetUInfluxdbInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ResetUInfluxdbInstanceName", d, **kwargs) + return apis.ResetUInfluxdbInstanceNameResponseSchema().loads(resp)
+ +
[docs] def start_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUInfluxdbInstance - 启动UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUInfluxdbInstance", d, **kwargs) + return apis.StartUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUInfluxdbInstance - 关闭UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUInfluxdbInstance", d, **kwargs) + return apis.StopUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUInfluxdbInstance - UInfluxdb实例配置升降级 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) UInfluxdb 实例 新的核数,单位个 + - **MemoryLimit** (int) - (Required) UInfluxdb 实例 新的内存 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUInfluxdbInstance", d, **kwargs) + return apis.UpgradeUInfluxdbInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/uvms/client.html b/_modules/ucloud/services/uvms/client.html new file mode 100644 index 00000000..7fae144d --- /dev/null +++ b/_modules/ucloud/services/uvms/client.html @@ -0,0 +1,158 @@ + + + + + + + + ucloud.services.uvms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uvms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uvms.schemas import apis
+
+
+
[docs]class UVMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UVMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def send_uvms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendUVMSMessage - 向指定号码拨打电话 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CalledNumber** (str) - (Required) 被叫号码,采用 E.164 标准,格式为+[国家代码][用户号码]。例如:+8613512345678, 其中前面有一个+号 ,86为国家码,13512345678为手机号 + - **TemplateId** (str) - (Required) 模板 ID,在控制台审核通过的模板 ID。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **FromNumber** (str) - 主叫号码,号码随机时不填。专属号码时传入已购买的号码,仅支持一个号码,在控制台查看已购买的号码。 + - **TemplateParams** (list) - 模板可变参数,以数组的方式填写,举例,TemplateParams.0,TemplateParams.1,... 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送; + - **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符 + + **Response** + + - **Message** (str) - 状态码的描述 + - **ReqUuid** (str) - 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 ReqUuid。 + - **SessionNo** (str) - 本次提交发送语音的唯一ID,可根据该值查询本次发送详情 + - **UserId** (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendUVMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendUVMSMessage", d, **kwargs) + return apis.SendUVMSMessageResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/_modules/ucloud/services/vpc/client.html b/_modules/ucloud/services/vpc/client.html new file mode 100644 index 00000000..9dca03c6 --- /dev/null +++ b/_modules/ucloud/services/vpc/client.html @@ -0,0 +1,2311 @@ + + + + + + + + ucloud.services.vpc.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.vpc.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.vpc.schemas import apis
+
+
+
[docs]class VPCClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(VPCClient, self).__init__(config, transport, middleware, logger) + +
[docs] def add_snat_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddSnatRule - 对于绑定了多个EIP的NAT网关,您可以将一个子网下的某台云主机映射到某个特定的EIP上,规则生效后,则该云主机通过该特定的EIP访问互联网。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关的ID + - **SnatIp** (str) - (Required) EIP的ip地址,例如106.75.xx.xx + - **SourceIp** (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx + - **Name** (str) - snat规则名称,默认为“出口规则” + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddSnatRuleRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddSnatRule", d, **kwargs) + return apis.AddSnatRuleResponseSchema().loads(resp)
+ +
[docs] def add_vpc_network( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddVPCNetwork - 添加VPC网段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Network** (list) - (Required) 增加网段 + - **VPCId** (str) - (Required) 源VPC短ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddVPCNetworkRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddVPCNetwork", d, **kwargs) + return apis.AddVPCNetworkResponseSchema().loads(resp)
+ +
[docs] def add_white_list_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddWhiteListResource - 添加NAT网关白名单 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **ResourceIds** (list) - (Required) 可添加白名单的资源Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddWhiteListResourceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddWhiteListResource", d, **kwargs) + return apis.AddWhiteListResourceResponseSchema().loads(resp)
+ +
[docs] def allocate_secondary_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AllocateSecondaryIp - 分配ip(用于uk8s使用) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Mac** (str) - (Required) 节点mac + - **ObjectId** (str) - (Required) 资源Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Ip** (str) - 指定Ip分配 + - **SubnetId** (str) - 子网Id(若未指定,则根据zone获取默认子网进行创建) + - **VPCId** (str) - vpcId + + **Response** + + - **IpInfo** (dict) - 见 **IpInfo** 模型定义 + + **Response Model** + + **IpInfo** + - **Gateway** (str) - + - **Ip** (str) - + - **Mac** (str) - + - **Mask** (str) - + - **SubnetId** (str) - + - **VPCId** (str) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateSecondaryIpRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateSecondaryIp", d, **kwargs) + return apis.AllocateSecondaryIpResponseSchema().loads(resp)
+ +
[docs] def allocate_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AllocateVIP - 根据提供信息,申请内网VIP(Virtual IP),多用于高可用程序作为漂移IP。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域 + - **SubnetId** (str) - (Required) 子网id + - **VPCId** (str) - (Required) 指定vip所属的VPC + - **BusinessId** (str) - 业务组 + - **Count** (int) - 申请数量,默认: 1 + - **Ip** (str) - 指定ip + - **Name** (str) - vip名,默认:VIP + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称,默认为Default + - **Zone** (str) - 可用区 + + **Response** + + - **DataSet** (list) - 申请到的VIP地址 + - **VIPSet** (list) - 见 **VIPSet** 模型定义 + + **Response Model** + + **VIPSet** + - **VIP** (str) - 虚拟ip + - **VIPId** (str) - 虚拟ip id + - **VPCId** (str) - VPC id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateVIPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateVIP", d, **kwargs) + return apis.AllocateVIPResponseSchema().loads(resp)
+ +
[docs] def associate_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AssociateRouteTable - 绑定子网的路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由表资源ID + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AssociateRouteTableRequestSchema().dumps(d) + + resp = self.invoke("AssociateRouteTable", d, **kwargs) + return apis.AssociateRouteTableResponseSchema().loads(resp)
+ +
[docs] def clone_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CloneRouteTable - 将现有的路由表复制为一张新的路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 被克隆的路由表ID + + **Response** + + - **RouteTableId** (str) - 复制后新的路由表资源ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneRouteTableRequestSchema().dumps(d) + + resp = self.invoke("CloneRouteTable", d, **kwargs) + return apis.CloneRouteTableResponseSchema().loads(resp)
+ +
[docs] def create_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateNATGW - 创建NAT网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPIds** (list) - (Required) NAT网关绑定的EIPId + - **FirewallId** (str) - (Required) NAT网关绑定的防火墙Id + - **NATGWName** (str) - (Required) NAT网关名称 + - **SubnetworkIds** (list) - (Required) NAT网关绑定的子网Id + - **IfOpen** (int) - 白名单开关标记。0表示关闭,1表示开启。默认为0 + - **Remark** (str) - 备注。默认为空 + - **Tag** (str) - 业务组。默认为空 + - **VPCId** (str) - NAT网关所属的VPC Id。默认为Default VPC Id + + **Response** + + - **NATGWId** (str) - 申请到的NATGateWay Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateNATGW", d, **kwargs) + return apis.CreateNATGWResponseSchema().loads(resp)
+ +
[docs] def create_natgw_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNATGWPolicy - 添加NAT网关端口转发规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstIP** (str) - (Required) 目标IP。填写对应的目标IP地址 + - **DstPort** (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535 + - **NATGWId** (str) - (Required) NAT网关Id + - **Protocol** (str) - (Required) 协议类型。枚举值为:TCP、UDP + - **SrcEIPId** (str) - (Required) 源IP。填写对应的EIP Id + - **SrcPort** (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535 + - **PolicyName** (str) - 转发策略名称。默认为空 + + **Response** + + - **PolicyId** (str) - 创建时分配的策略Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWPolicyRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateNATGWPolicy", d, **kwargs) + return apis.CreateNATGWPolicyResponseSchema().loads(resp)
+ +
[docs] def create_network_acl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNetworkAcl - 创建网络ACL + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclName** (str) - (Required) ACL的名称 + - **VpcId** (str) - (Required) 将要创建的ACL所属VPC的ID + - **Description** (str) - ACL的描述 + + **Response** + + - **AclId** (str) - 创建的ACL的ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNetworkAclRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateNetworkAcl", d, **kwargs) + return apis.CreateNetworkAclResponseSchema().loads(resp)
+ +
[docs] def create_network_acl_association( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNetworkAclAssociation - 创建ACL的绑定关系 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AclId** (str) - (Required) ACL的ID + - **SubnetworkId** (str) - (Required) 需要绑定的子网ID + + **Response** + + - **AssociationId** (str) - 创建的绑定关系的ID + - **PrevAssociation** (dict) - 见 **AssociationInfo** 模型定义 + + **Response Model** + + **AssociationInfo** + - **AclId** (str) - ACL的ID + - **AssociationId** (str) - 绑定ID + - **CreateTime** (int) - 创建的Unix时间戳 + - **SubnetworkId** (str) - 绑定的子网ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNetworkAclAssociationRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateNetworkAclAssociation", d, **kwargs) + return apis.CreateNetworkAclAssociationResponseSchema().loads(resp)
+ +
[docs] def create_network_acl_entry( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNetworkAclEntry - 创建ACL的规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) ACL的ID + - **CidrBlock** (str) - (Required) IPv4段的CIDR表示 + - **Direction** (str) - (Required) 出向或者入向(“Ingress”, "Egress") + - **EntryAction** (str) - (Required) 规则的行为("Accept", "Reject") + - **IpProtocol** (str) - (Required) 协议规则描述 + - **PortRange** (str) - (Required) 针对的端口范围 + - **Priority** (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复 + - **Description** (str) - 描述。长度限制为不超过32字节。 + - **TargetResourceIds** (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值。 + - **TargetType** (int) - 应用目标类型。0代表“子网内全部资源”,1代表“子网内指定资源”,默认为0 + + **Response** + + - **EntryId** (str) - 创建的Entry的ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNetworkAclEntryRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateNetworkAclEntry", d, **kwargs) + return apis.CreateNetworkAclEntryResponseSchema().loads(resp)
+ +
[docs] def create_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateRouteTable - 创建路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - (Required) 所属的VPC资源ID + - **Name** (str) - 路由表名称。默认为RouteTable + - **Remark** (str) - 备注 + - **Tag** (str) - 路由表所属业务组 + + **Response** + + - **RouteTableId** (str) - 路由表ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateRouteTableRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateRouteTable", d, **kwargs) + return apis.CreateRouteTableResponseSchema().loads(resp)
+ +
[docs] def create_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSubnet - 创建子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Subnet** (str) - (Required) 子网网络地址,例如192.168.0.0 + - **VPCId** (str) - (Required) VPC资源ID + - **Netmask** (int) - 子网网络号位数,默认为24 + - **Remark** (str) - 备注 + - **SubnetName** (str) - 子网名称,默认为Subnet + - **Tag** (str) - 业务组名称,默认为Default + + **Response** + + - **SubnetId** (str) - 子网ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSubnetRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSubnet", d, **kwargs) + return apis.CreateSubnetResponseSchema().loads(resp)
+ +
[docs] def create_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateVPC - 创建VPC + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) VPC名称 + - **Network** (list) - (Required) VPC网段 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称 + + **Response** + + - **VPCId** (str) - VPC资源Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPCRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPC", d, **kwargs) + return apis.CreateVPCResponseSchema().loads(resp)
+ +
[docs] def create_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVPCIntercom - 新建VPC互通关系 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstVPCId** (str) - (Required) 目的VPC短ID + - **VPCId** (str) - (Required) 源VPC短ID + - **DstProjectId** (str) - 目的VPC项目ID。默认与源VPC同项目。 + - **DstRegion** (str) - 目的VPC所在地域,默认与源VPC同地域。 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPCIntercomRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPCIntercom", d, **kwargs) + return apis.CreateVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def delete_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteNATGW - 删除NAT网关 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **ReleaseEip** (bool) - 是否释放绑定的EIP。true:解绑并释放;false:只解绑不释放。默认为false + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGW", d, **kwargs) + return apis.DeleteNATGWResponseSchema().loads(resp)
+ +
[docs] def delete_natgw_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNATGWPolicy - 删除NAT网关端口转发规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **PolicyId** (str) - (Required) 端口转发规则Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWPolicyRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGWPolicy", d, **kwargs) + return apis.DeleteNATGWPolicyResponseSchema().loads(resp)
+ +
[docs] def delete_network_acl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNetworkAcl - 删除网络ACL + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) 需要删除的AclId + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNetworkAclRequestSchema().dumps(d) + + resp = self.invoke("DeleteNetworkAcl", d, **kwargs) + return apis.DeleteNetworkAclResponseSchema().loads(resp)
+ +
[docs] def delete_network_acl_association( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNetworkAclAssociation - 删除网络ACL绑定关系 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) 需要删除的AclId + - **SubnetworkId** (str) - (Required) 绑定的子网ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNetworkAclAssociationRequestSchema().dumps(d) + + resp = self.invoke("DeleteNetworkAclAssociation", d, **kwargs) + return apis.DeleteNetworkAclAssociationResponseSchema().loads(resp)
+ +
[docs] def delete_network_acl_entry( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNetworkAclEntry - 删除ACL的规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) Acl的ID + - **EntryId** (str) - (Required) 需要删除的EntryId + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNetworkAclEntryRequestSchema().dumps(d) + + resp = self.invoke("DeleteNetworkAclEntry", d, **kwargs) + return apis.DeleteNetworkAclEntryResponseSchema().loads(resp)
+ +
[docs] def delete_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteRouteTable - 删除自定义路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由表资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteRouteTableRequestSchema().dumps(d) + + resp = self.invoke("DeleteRouteTable", d, **kwargs) + return apis.DeleteRouteTableResponseSchema().loads(resp)
+ +
[docs] def delete_secondary_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSecondaryIp - 删除ip(用于uk8s使用) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Ip** (str) - (Required) ip + - **Mac** (str) - (Required) mac + - **SubnetId** (str) - (Required) 子网Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ObjectId** (str) - 资源Id + - **VPCId** (str) - VPCId + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSecondaryIpRequestSchema().dumps(d) + + resp = self.invoke("DeleteSecondaryIp", d, **kwargs) + return apis.DeleteSecondaryIpResponseSchema().loads(resp)
+ +
[docs] def delete_snat_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSnatRule - 删除指定的出口规则(SNAT规则) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关的ID + - **SourceIp** (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSnatRuleRequestSchema().dumps(d) + + resp = self.invoke("DeleteSnatRule", d, **kwargs) + return apis.DeleteSnatRuleResponseSchema().loads(resp)
+ +
[docs] def delete_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSubnet - 删除子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteSubnet", d, **kwargs) + return apis.DeleteSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteVPC - 删除VPC + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - (Required) VPC资源Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPCRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPC", d, **kwargs) + return apis.DeleteVPCResponseSchema().loads(resp)
+ +
[docs] def delete_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVPCIntercom - 删除VPC互通关系 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstVPCId** (str) - (Required) 目的VPC短ID + - **VPCId** (str) - (Required) 源VPC短ID + - **DstProjectId** (str) - 目的VPC所在项目ID,默认为源VPC所在项目ID + - **DstRegion** (str) - 目的VPC所在地域,默认为源VPC所在地域 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPCIntercomRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPCIntercom", d, **kwargs) + return apis.DeleteVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def delete_white_list_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteWhiteListResource - 删除NAT网关白名单列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **ResourceIds** (list) - (Required) 删除白名单的资源Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteWhiteListResourceRequestSchema().dumps(d) + + resp = self.invoke("DeleteWhiteListResource", d, **kwargs) + return apis.DeleteWhiteListResourceResponseSchema().loads(resp)
+ +
[docs] def describe_natgw( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGW - 获取NAT网关信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值。默认为20 + - **NATGWIds** (list) - NAT网关Id。默认为该项目下所有NAT网关 + - **Offset** (int) - 数据偏移量。默认为0 + + **Response** + + - **DataSet** (list) - 见 **NatGatewayDataSet** 模型定义 + - **TotalCount** (int) - 满足条件的实例的总数 + + **Response Model** + + **NatGWIPResInfo** + - **EIP** (str) - 外网IP + - **OperatorName** (str) - IP的运营商信息 + + + **NatGatewayIPSet** + - **Bandwidth** (int) - 带宽 + - **BandwidthType** (str) - EIP带宽类型 + - **EIPId** (str) - 外网IP的 EIPId + - **IPResInfo** (list) - 见 **NatGWIPResInfo** 模型定义 + - **Weight** (int) - 权重为100的为出口 + + + **NatGatewaySubnetSet** + - **Subnet** (str) - 子网网段 + - **SubnetName** (str) - 子网名字 + - **SubnetworkId** (str) - 子网id + + + **NatGatewayDataSet** + - **CreateTime** (int) - natgw创建时间 + - **FirewallId** (str) - 绑定的防火墙Id + - **IPSet** (list) - 见 **NatGatewayIPSet** 模型定义 + - **NATGWId** (str) - natgw id + - **NATGWName** (str) - natgw名称 + - **PolicyId** (list) - 转发策略Id + - **Remark** (str) - 备注 + - **SubnetSet** (list) - 见 **NatGatewaySubnetSet** 模型定义 + - **Tag** (str) - 业务组 + - **VPCId** (str) - 所属VPC Id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGW", d, **kwargs) + return apis.DescribeNATGWResponseSchema().loads(resp)
+ +
[docs] def describe_natgw_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGWPolicy - 展示NAT网关端口转发规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **Limit** (int) - 返回数据长度,默认为10000 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **DataSet** (list) - 见 **NATGWPolicyDataSet** 模型定义 + - **TotalCount** (int) - 满足条件的转发策略总数 + + **Response Model** + + **NATGWPolicyDataSet** + - **DstIP** (str) - 目的地址 + - **DstPort** (str) - 目的端口 + - **NATGWId** (str) - NAT网关Id + - **PolicyId** (str) - 转发策略Id + - **PolicyName** (str) - 转发策略名称 + - **Protocol** (str) - 协议类型 + - **SrcEIP** (str) - 端口转发前端EIP + - **SrcEIPId** (str) - 端口转发前端EIP Id + - **SrcPort** (str) - 源端口 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWPolicyRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGWPolicy", d, **kwargs) + return apis.DescribeNATGWPolicyResponseSchema().loads(resp)
+ +
[docs] def describe_network_acl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNetworkAcl - 获取网络ACL + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (str) - 列表获取的个数限制 + - **Offset** (int) - 列表偏移量 + - **VpcId** (str) - 需要获取的ACL所属的VPC的ID + + **Response** + + - **AclList** (list) - 见 **AclInfo** 模型定义 + + **Response Model** + + **TargetResourceInfo** + - **PrivateIp** (str) - 资源内网IP + - **ResourceId** (str) - 资源ID + - **ResourceName** (str) - 资源名称 + - **ResourceType** (int) - 资源类型 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (int) - 资源绑定虚拟网卡的类型 + - **SubnetworkId** (str) - 子网ID + + + **AssociationInfo** + - **AclId** (str) - ACL的ID + - **AssociationId** (str) - 绑定ID + - **CreateTime** (int) - 创建的Unix时间戳 + - **SubnetworkId** (str) - 绑定的子网ID + + + **AclEntryInfo** + - **CidrBlock** (str) - IP段的CIDR信息 + - **CreateTime** (int) - 创建的Unix时间戳 + - **Direction** (str) - 出向或者入向 + - **EntryAction** (str) - 匹配规则的动作 + - **EntryId** (str) - Entry的ID + - **IpProtocol** (str) - 针对的IP协议 + - **PortRange** (str) - Port的段信息 + - **Priority** (str) - 优先级 + - **TargetResourceCount** (int) - 应用目标资源数量。TargetType为0时不返回该值。 + - **TargetResourceList** (list) - 见 **TargetResourceInfo** 模型定义 + - **TargetType** (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 + - **UpdateTime** (int) - 更改的Unix时间戳 + + + **AclInfo** + - **AclId** (str) - ACL的ID + - **AclName** (str) - 名称 + - **Associations** (list) - 见 **AssociationInfo** 模型定义 + - **CreateTime** (int) - 创建的Unix时间戳 + - **Description** (str) - 描述 + - **Entries** (list) - 见 **AclEntryInfo** 模型定义 + - **UpdateTime** (int) - 更改的Unix时间戳 + - **VpcId** (str) - ACL所属的VPC ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNetworkAclRequestSchema().dumps(d) + + resp = self.invoke("DescribeNetworkAcl", d, **kwargs) + return apis.DescribeNetworkAclResponseSchema().loads(resp)
+ +
[docs] def describe_network_acl_association( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNetworkAclAssociation - 获取网络ACL的绑定关系列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) Acl的ID + - **Limit** (str) - 列表获取的个数限制 + - **Offset** (int) - 列表偏移量 + + **Response** + + - **AssociationList** (list) - 见 **AssociationInfo** 模型定义 + + **Response Model** + + **AssociationInfo** + - **AclId** (str) - ACL的ID + - **AssociationId** (str) - 绑定ID + - **CreateTime** (int) - 创建的Unix时间戳 + - **SubnetworkId** (str) - 绑定的子网ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNetworkAclAssociationRequestSchema().dumps(d) + + resp = self.invoke("DescribeNetworkAclAssociation", d, **kwargs) + return apis.DescribeNetworkAclAssociationResponseSchema().loads(resp)
+ +
[docs] def describe_network_acl_association_by_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNetworkAclAssociationBySubnet - 获取子网的ACL绑定信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetworkId** (str) - (Required) 子网的ID + + **Response** + + - **Association** (dict) - 见 **AssociationInfo** 模型定义 + + **Response Model** + + **AssociationInfo** + - **AclId** (str) - ACL的ID + - **AssociationId** (str) - 绑定ID + - **CreateTime** (int) - 创建的Unix时间戳 + - **SubnetworkId** (str) - 绑定的子网ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNetworkAclAssociationBySubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeNetworkAclAssociationBySubnet", d, **kwargs) + return apis.DescribeNetworkAclAssociationBySubnetResponseSchema().loads( + resp + )
+ +
[docs] def describe_network_acl_entry( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNetworkAclEntry - 获取ACL的规则信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AclId** (str) - (Required) ACL的ID + + **Response** + + - **EntryList** (list) - 见 **AclEntryInfo** 模型定义 + + **Response Model** + + **TargetResourceInfo** + - **PrivateIp** (str) - 资源内网IP + - **ResourceId** (str) - 资源ID + - **ResourceName** (str) - 资源名称 + - **ResourceType** (int) - 资源类型 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (int) - 资源绑定虚拟网卡的类型 + - **SubnetworkId** (str) - 子网ID + + + **AclEntryInfo** + - **CidrBlock** (str) - IP段的CIDR信息 + - **CreateTime** (int) - 创建的Unix时间戳 + - **Direction** (str) - 出向或者入向 + - **EntryAction** (str) - 匹配规则的动作 + - **EntryId** (str) - Entry的ID + - **IpProtocol** (str) - 针对的IP协议 + - **PortRange** (str) - Port的段信息 + - **Priority** (str) - 优先级 + - **TargetResourceCount** (int) - 应用目标资源数量。TargetType为0时不返回该值。 + - **TargetResourceList** (list) - 见 **TargetResourceInfo** 模型定义 + - **TargetType** (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 + - **UpdateTime** (int) - 更改的Unix时间戳 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNetworkAclEntryRequestSchema().dumps(d) + + resp = self.invoke("DescribeNetworkAclEntry", d, **kwargs) + return apis.DescribeNetworkAclEntryResponseSchema().loads(resp)
+ +
[docs] def describe_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeRouteTable - 获取路由表详细信息(包括路由策略) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - 业务组ID + - **Limit** (int) - 数据分页值。默认为20 + - **OffSet** (int) - 数据偏移量。默认为0 + - **RouteTableId** (str) - 路由表资源ID + - **VPCId** (str) - 所属VPC的资源ID + + **Response** + + - **RouteTables** (list) - 见 **RouteTableInfo** 模型定义 + - **TotalCount** (int) - RouteTables字段的数量 + + **Response Model** + + **RouteTableInfo** + - **CreateTime** (int) - 创建时间戳 + - **Remark** (str) - 路由表备注 + - **RouteRules** (list) - 见 **RouteRuleInfo** 模型定义 + - **RouteTableId** (str) - 路由表资源ID + - **RouteTableType** (int) - 路由表类型。1为默认路由表,0为自定义路由表 + - **SubnetCount** (int) - 绑定该路由表的子网数量 + - **Tag** (str) - 路由表所属业务组 + - **VPCId** (str) - 路由表所属的VPC资源ID + - **VPCName** (str) - 路由表所属的VPC资源名称 + + + **RouteRuleInfo** + - **AccountId** (int) - 项目ID信息 + - **DstAddr** (str) - 目的地址 + - **DstPort** (int) - 保留字段,暂未使用 + - **NexthopId** (str) - 路由下一跳资源ID + - **NexthopType** (str) - 路由表下一跳类型。LOCAL,本VPC内部通信路由;PUBLIC,公共服务路由;CNAT,外网路由;UDPN,跨域高速通道路由;HYBRIDGW,混合云路由;INSTANCE,实例路由;VNET,VPC联通路由;IPSEC VPN,指向VPN网关的路由。 + - **OriginAddr** (str) - 保留字段,暂未使用 + - **Priority** (int) - 保留字段,暂未使用 + - **Remark** (str) - 路由规则备注 + - **RouteRuleId** (str) - 规则ID + - **RouteTableId** (str) - 路由表资源ID + - **RuleType** (int) - 路由规则类型。0,系统路由规则;1,自定义路由规则 + - **SrcAddr** (str) - 保留字段,暂未使用 + - **SrcPort** (int) - 保留字段,暂未使用 + - **VNetId** (str) - 所属的VPC + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRouteTableRequestSchema().dumps(d) + + resp = self.invoke("DescribeRouteTable", d, **kwargs) + return apis.DescribeRouteTableResponseSchema().loads(resp)
+ +
[docs] def describe_secondary_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSecondaryIp - 查询SecondaryIp(uk8s使用) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网Id + - **VPCId** (str) - (Required) VPCId + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Ip** (str) - Ip + - **Mac** (str) - Mac + + **Response** + + - **DataSet** (list) - 见 **IpInfo** 模型定义 + + **Response Model** + + **IpInfo** + - **Gateway** (str) - + - **Ip** (str) - + - **Mac** (str) - + - **Mask** (str) - + - **SubnetId** (str) - + - **VPCId** (str) - + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSecondaryIpRequestSchema().dumps(d) + + resp = self.invoke("DescribeSecondaryIp", d, **kwargs) + return apis.DescribeSecondaryIpResponseSchema().loads(resp)
+ +
[docs] def describe_snat_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSnatRule - 获取Nat网关的出口规则(SNAT规则) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关的ID + - **Limit** (str) - 分页,默认为20 + - **Offset** (str) - 偏移,默认为0 + - **SnatIp** (str) - EIP的ip地址,例如106.75.xx.xx + - **SourceIp** (str) - 需要出外网的私网IP地址,例如10.9.7.xx + + **Response** + + - **DataSet** (list) - 见 **NATGWSnatRule** 模型定义 + - **TotalCount** (int) - 规则数量 + + **Response Model** + + **NATGWSnatRule** + - **Name** (str) - snat规则名称 + - **SnatIp** (str) - EIP地址,如106.76.xx.xx + - **SourceIp** (str) - 资源的内网IP地址 + - **SubnetworkId** (str) - SourceIp所属的子网id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSnatRuleRequestSchema().dumps(d) + + resp = self.invoke("DescribeSnatRule", d, **kwargs) + return apis.DescribeSnatRuleResponseSchema().loads(resp)
+ +
[docs] def describe_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSubnet - 获取子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 列表长度,默认为20 + - **Offset** (int) - 偏移量,默认为0 + - **RouteTableId** (str) - 路由表Id + - **ShowAvailableIPs** (bool) - 是否返回子网的可用IP数,true为是,false为否,默认不返回 + - **SubnetId** (str) - 子网id,适用于一次查询一个子网信息 + - **SubnetIds** (list) - 子网id数组,适用于一次查询多个子网信息 + - **Tag** (str) - 业务组名称,默认为Default + - **VPCId** (str) - VPC资源id + + **Response** + + - **DataSet** (list) - 见 **SubnetInfo** 模型定义 + - **TotalCount** (int) - 子网总数量 + + **Response Model** + + **SubnetInfo** + - **AvailableIPs** (int) - 可用IP数量 + - **CreateTime** (int) - 创建时间 + - **Gateway** (str) - 子网网关 + - **HasNATGW** (bool) - 是否有natgw + - **IPv6Network** (str) - 子网关联的IPv6网段 + - **Netmask** (str) - 子网掩码 + - **Remark** (str) - 备注 + - **RouteTableId** (str) - 路由表Id + - **Subnet** (str) - 子网网段 + - **SubnetId** (str) - 子网Id + - **SubnetName** (str) - 子网名称 + - **SubnetType** (int) - 子网类型 + - **Tag** (str) - 业务组 + - **VPCId** (str) - VPCId + - **VPCName** (str) - VPC名称 + - **Zone** (str) - 可用区名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnet", d, **kwargs) + return apis.DescribeSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_subnet_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSubnetResource - 展示子网资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网id + - **Limit** (int) - 单页返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceType** (str) - 资源类型,默认为全部资源类型。枚举值为:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP. + + **Response** + + - **DataSet** (list) - 见 **SubnetResource** 模型定义 + - **TotalCount** (int) - 总数 + + **Response Model** + + **SubnetResource** + - **IP** (str) - 资源ip + - **Name** (str) - 名称 + - **ResourceId** (str) - 资源Id + - **ResourceType** (str) - 资源类型。对应的资源类型:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,分布式消息系统;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP. + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSubnetResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnetResource", d, **kwargs) + return apis.DescribeSubnetResourceResponseSchema().loads(resp)
+ +
[docs] def describe_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVIP - 获取内网VIP详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - 业务组 + - **SubnetId** (str) - 子网id,不指定则获取VPCId下的所有vip + - **Tag** (str) - 业务组名称, 默认为 Default + - **VIPId** (str) - VIP ID + - **VPCId** (str) - vpc的id,指定SubnetId时必填 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 内网VIP地址列表 + - **TotalCount** (int) - vip数量 + - **VIPSet** (list) - 见 **VIPDetailSet** 模型定义 + + **Response Model** + + **VIPDetailSet** + - **CreateTime** (int) - 创建时间 + - **Name** (str) - VIP名称 + - **RealIp** (str) - 真实主机ip + - **Remark** (str) - VIP备注 + - **SubnetId** (str) - 子网id + - **Tag** (str) - VIP所属业务组 + - **VIP** (str) - 虚拟ip + - **VIPId** (str) - 虚拟ip id + - **VPCId** (str) - VPC id + - **Zone** (str) - 地域 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeVIP", d, **kwargs) + return apis.DescribeVIPResponseSchema().loads(resp)
+ +
[docs] def describe_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVPC - 获取VPC信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - + - **Offset** (int) - + - **Tag** (str) - 业务组名称 + - **VPCIds** (list) - VPCId + + **Response** + + - **DataSet** (list) - 见 **VPCInfo** 模型定义 + + **Response Model** + + **VPCInfo** + - **CreateTime** (int) - + - **IPv6Network** (str) - VPC关联的IPv6网段 + - **Name** (str) - + - **Network** (list) - + - **NetworkInfo** (list) - 见 **VPCNetworkInfo** 模型定义 + - **OperatorName** (str) - VPC关联的IPv6网段所属运营商 + - **SubnetCount** (int) - + - **Tag** (str) - + - **UpdateTime** (int) - + - **VPCId** (str) - VPCId + + + **VPCNetworkInfo** + - **Network** (str) - vpc地址空间 + - **SubnetCount** (int) - 地址空间中子网数量 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPCRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPC", d, **kwargs) + return apis.DescribeVPCResponseSchema().loads(resp)
+ +
[docs] def describe_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVPCIntercom - 获取VPC互通信息 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **VPCId** (str) - (Required) VPC短ID + - **DstProjectId** (str) - 目的项目ID,默认为全部项目 + - **DstRegion** (str) - 目的VPC所在地域,默认为全部地域 + + **Response** + + - **DataSet** (list) - 见 **VPCIntercomInfo** 模型定义 + + **Response Model** + + **VPCIntercomInfo** + - **AccountId** (int) - 项目Id(数字) + - **DstRegion** (str) - 所属地域 + - **Name** (str) - VPC名字 + - **Network** (list) - VPC的地址空间 + - **ProjectId** (str) - 项目Id + - **Tag** (str) - 业务组(未分组显示为 Default) + - **VPCId** (str) - VPCId + - **VPCType** (int) - vpc类型(1表示托管VPC,0表示公有云VPC) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPCIntercomRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPCIntercom", d, **kwargs) + return apis.DescribeVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def describe_white_list_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeWhiteListResource - 展示NAT网关白名单资源列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目id + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWIds** (list) - (Required) NAT网关的Id + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **DataSet** (list) - 见 **NatGWWhitelistDataSet** 模型定义 + - **TotalCount** (int) - 上述DataSet总数量 + + **Response Model** + + **DescribeWhiteListResourceObjectIPInfo** + - **GwType** (str) - natgw字符串 + - **PrivateIP** (str) - 白名单资源的内网IP + - **ResourceId** (str) - 白名单资源Id信息 + - **ResourceName** (str) - 白名单资源名称 + - **ResourceType** (str) - 白名单资源类型 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的实例ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的实例名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的类型 + - **VPCId** (str) - 白名单资源所属VPCId + + + **NatGWWhitelistDataSet** + - **IfOpen** (int) - 白名单开关标记 + - **NATGWId** (str) - NATGateWay Id + - **ObjectIPInfo** (list) - 见 **DescribeWhiteListResourceObjectIPInfo** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeWhiteListResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeWhiteListResource", d, **kwargs) + return apis.DescribeWhiteListResourceResponseSchema().loads(resp)
+ +
[docs] def enable_white_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """EnableWhiteList - 修改NAT网关白名单开关 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **IfOpen** (int) - (Required) 白名单开关标记。0:关闭;1:开启。默认为0 + - **NATGWId** (str) - (Required) NAT网关Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.EnableWhiteListRequestSchema().dumps(d) + + resp = self.invoke("EnableWhiteList", d, **kwargs) + return apis.EnableWhiteListResponseSchema().loads(resp)
+ +
[docs] def get_available_resource_for_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetAvailableResourceForPolicy - 获取NAT网关可配置端口转发规则的资源信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **DataSet** (list) - 见 **GetAvailableResourceForPolicyDataSet** 模型定义 + + **Response Model** + + **GetAvailableResourceForPolicyDataSet** + - **PrivateIP** (str) - 资源对应的内网Ip + - **ResourceId** (str) - 资源的Id + - **ResourceType** (str) - 资源类型。"uhost":云主机; "upm",物理云主机; "hadoophost":hadoop节点; "fortresshost":堡垒机: "udockhost",容器 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetAvailableResourceForPolicyRequestSchema().dumps(d) + + resp = self.invoke("GetAvailableResourceForPolicy", d, **kwargs) + return apis.GetAvailableResourceForPolicyResponseSchema().loads(resp)
+ +
[docs] def get_available_resource_for_snat_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetAvailableResourceForSnatRule - 获取可用于添加snat规则(出口规则)的资源列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **Action** (str) - 操作名称 + - **DataSet** (list) - 见 **GetAvailableResourceForSnatRuleDataSet** 模型定义 + - **RetCode** (str) - 返回值 + - **TotalCount** (int) - 总数 + + **Response Model** + + **GetAvailableResourceForSnatRuleDataSet** + - **PrivateIP** (str) - 资源内网IP + - **ResourceId** (str) - 资源ID + - **ResourceName** (str) - 资源名称 + - **ResourceType** (str) - 资源类型 + - **SubnetworkId** (str) - 资源所属VPC的ID + - **VPCId** (str) - 资源所属子网的ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetAvailableResourceForSnatRuleRequestSchema().dumps(d) + + resp = self.invoke("GetAvailableResourceForSnatRule", d, **kwargs) + return apis.GetAvailableResourceForSnatRuleResponseSchema().loads(resp)
+ +
[docs] def get_available_resource_for_white_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetAvailableResourceForWhiteList - 获取NAT网关可添加白名单的资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **DataSet** (list) - 见 **GetAvailableResourceForWhiteListDataSet** 模型定义 + - **TotalCount** (int) - 白名单资源列表的总的个数 + + **Response Model** + + **GetAvailableResourceForWhiteListDataSet** + - **PrivateIP** (str) - 资源的内网Ip + - **ResourceId** (str) - 资源类型Id + - **ResourceName** (str) - 资源名称 + - **ResourceType** (str) - 资源类型。"uhost":云主机; "upm",物理云主机; "hadoophost":hadoop节点; "fortresshost":堡垒机: "udockhost",容器 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的实例ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的实例名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的实例类型 + - **SubnetworkId** (str) - 资源所属子网Id + - **VPCId** (str) - 资源所属VPCId + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetAvailableResourceForWhiteListRequestSchema().dumps(d) + + resp = self.invoke("GetAvailableResourceForWhiteList", d, **kwargs) + return apis.GetAvailableResourceForWhiteListResponseSchema().loads(resp)
+ +
[docs] def get_network_acl_target_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetNetworkAclTargetResource - 获取ACL规则应用目标列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **SubnetworkId** (list) - (Required) 子网ID。 + + **Response** + + - **TargetResourceList** (list) - 见 **TargetResourceInfo** 模型定义 + - **TotalCount** (int) - ACL规则应用目标资源总数 + + **Response Model** + + **TargetResourceInfo** + - **PrivateIp** (str) - 资源内网IP + - **ResourceId** (str) - 资源ID + - **ResourceName** (str) - 资源名称 + - **ResourceType** (int) - 资源类型 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (int) - 资源绑定虚拟网卡的类型 + - **SubnetworkId** (str) - 子网ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetNetworkAclTargetResourceRequestSchema().dumps(d) + + resp = self.invoke("GetNetworkAclTargetResource", d, **kwargs) + return apis.GetNetworkAclTargetResourceResponseSchema().loads(resp)
+ +
[docs] def list_subnet_for_natgw( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListSubnetForNATGW - 展示NAT网关可绑定的子网列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - NAT网关所属VPC Id。默认值为Default VPC Id + + **Response** + + - **DataSet** (list) - 见 **NatgwSubnetDataSet** 模型定义 + + **Response Model** + + **NatgwSubnetDataSet** + - **HasNATGW** (bool) - 是否绑定NATGW + - **Netmask** (str) - 掩码 + - **Subnet** (str) - 子网网段 + - **SubnetId** (str) - 子网id + - **SubnetName** (str) - 子网名字 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListSubnetForNATGWRequestSchema().dumps(d) + + resp = self.invoke("ListSubnetForNATGW", d, **kwargs) + return apis.ListSubnetForNATGWResponseSchema().loads(resp)
+ +
[docs] def modify_route_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyRouteRule - 路由策略增、删、改 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteRule** (list) - (Required) 格式: RouteRuleId | 目的网段 | 下一跳类型(支持INSTANCE、VIP) | 下一跳 |优先级(保留字段,填写0即可)| 备注 | 增、删、改标志(add/delete/update) 。"添加"示例: test_id | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| add (添加的RouteRuleId填任意非空字符串) 。"删除"示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| delete (RouteRuleId来自DescribeRouteTable中) 。“修改”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-cjksa2 | 0 | Default Route Rule| update (RouteRuleId来自DescribeRouteTable中) + - **RouteTableId** (str) - (Required) 通过DescribeRouteTable拿到 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyRouteRuleRequestSchema().dumps(d) + + resp = self.invoke("ModifyRouteRule", d, **kwargs) + return apis.ModifyRouteRuleResponseSchema().loads(resp)
+ +
[docs] def release_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ReleaseVIP - 释放VIP资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **VIPId** (str) - (Required) 内网VIP的id + - **Zone** (str) - 可用区 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseVIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseVIP", d, **kwargs) + return apis.ReleaseVIPResponseSchema().loads(resp)
+ +
[docs] def set_gw_default_export( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetGwDefaultExport - 设置NAT网关的默认出口 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **ExportEipId** (str) - NAT网关绑定的EIP Id。ExportIp和ExportEipId必填一个 + - **ExportIp** (str) - NAT网关绑定的EIP。ExportIp和ExportEipId必填一个 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetGwDefaultExportRequestSchema().dumps(d) + + resp = self.invoke("SetGwDefaultExport", d, **kwargs) + return apis.SetGwDefaultExportResponseSchema().loads(resp)
+ +
[docs] def update_natgw_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateNATGWPolicy - 更新NAT网关端口转发规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstIP** (str) - (Required) 目标IP。填写对饮的目标IP地址 + - **DstPort** (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535 + - **NATGWId** (str) - (Required) NAT网关Id + - **PolicyId** (str) - (Required) 转发策略Id + - **Protocol** (str) - (Required) 协议类型。枚举值为:TCP 、 UDP + - **SrcEIPId** (str) - (Required) 源IP。填写对应的EIP Id + - **SrcPort** (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-6553 + - **PolicyName** (str) - 转发策略名称。默认为空 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateNATGWPolicyRequestSchema().dumps(d) + + resp = self.invoke("UpdateNATGWPolicy", d, **kwargs) + return apis.UpdateNATGWPolicyResponseSchema().loads(resp)
+ +
[docs] def update_natgw_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateNATGWSubnet - 更新NAT网关绑定的子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NATGWId** (str) - (Required) NAT网关Id + - **SubnetworkIds** (list) - (Required) NAT网关绑定的子网Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateNATGWSubnetRequestSchema().dumps(d) + + resp = self.invoke("UpdateNATGWSubnet", d, **kwargs) + return apis.UpdateNATGWSubnetResponseSchema().loads(resp)
+ +
[docs] def update_network_acl( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateNetworkAcl - 更改ACL + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) 需要更改的ACL ID + - **AclName** (str) - (Required) Acl的名称 + - **Description** (str) - (Required) 描述 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateNetworkAclRequestSchema().dumps(d) + + resp = self.invoke("UpdateNetworkAcl", d, **kwargs) + return apis.UpdateNetworkAclResponseSchema().loads(resp)
+ +
[docs] def update_network_acl_entry( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateNetworkAclEntry - 更新ACL的规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AclId** (str) - (Required) ACL的ID + - **CidrBlock** (str) - (Required) IPv4段的CIDR表示 + - **Direction** (str) - (Required) 出向或者入向(“Ingress”, "Egress") + - **EntryAction** (str) - (Required) 规则的行为("Accept", "Reject") + - **EntryId** (str) - (Required) 需要更新的Entry Id + - **IpProtocol** (str) - (Required) 针对的协议规则 + - **PortRange** (str) - (Required) 针对的端口范围 + - **Priority** (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复 + - **Description** (str) - 描述 + - **TargetResourceIds** (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值 + - **TargetType** (int) - 应用目标类型。0代表“子网内全部资源”, 1代表“子网内指定资源”。默认为0 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateNetworkAclEntryRequestSchema().dumps(d) + + resp = self.invoke("UpdateNetworkAclEntry", d, **kwargs) + return apis.UpdateNetworkAclEntryResponseSchema().loads(resp)
+ +
[docs] def update_route_table_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateRouteTableAttribute - 更新路由表基本信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由表ID + - **Name** (str) - 名称 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateRouteTableAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateRouteTableAttribute", d, **kwargs) + return apis.UpdateRouteTableAttributeResponseSchema().loads(resp)
+ +
[docs] def update_snat_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateSnatRule - 更新指定的出口规则(SNAT规则) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NATGWId** (str) - (Required) NAT网关的ID, + - **SnatIp** (str) - (Required) EIP的ip地址,例如106.75.xx.xx + - **SourceIp** (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx + - **Name** (str) - snat名称,即出口规则名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateSnatRuleRequestSchema().dumps(d) + + resp = self.invoke("UpdateSnatRule", d, **kwargs) + return apis.UpdateSnatRuleResponseSchema().loads(resp)
+ +
[docs] def update_subnet_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateSubnetAttribute - 更新子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网ID + - **Name** (str) - 子网名称(如果Name不填写,Tag必须填写) + - **Tag** (str) - 业务组名称(如果Tag不填写,Name必须填写) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateSubnetAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateSubnetAttribute", d, **kwargs) + return apis.UpdateSubnetAttributeResponseSchema().loads(resp)
+ +
[docs] def update_vip_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVIPAttribute - 更新VIP信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VIPId** (str) - (Required) 内网VIP的资源Id + - **Name** (str) - 内网VIP的名称 + - **Remark** (str) - 内网VIP的备注 + - **Tag** (str) - 内网VIP所属的业务组 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVIPAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateVIPAttribute", d, **kwargs) + return apis.UpdateVIPAttributeResponseSchema().loads(resp)
+ +
[docs] def update_vpc_network( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVPCNetwork - 更新VPC网段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Network** (list) - (Required) 需要保留的VPC网段。当前仅支持删除VPC网段,添加网段请参考 `AddVPCNetwork <https://docs.ucloud.cn/api/vpc2.0-api/add_vpc_network>`_ + - **VPCId** (str) - (Required) VPC的ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVPCNetworkRequestSchema().dumps(d) + + resp = self.invoke("UpdateVPCNetwork", d, **kwargs) + return apis.UpdateVPCNetworkResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/core.rst b/_sources/core.rst.txt similarity index 100% rename from docs/core.rst rename to _sources/core.rst.txt diff --git a/docs/helpers.rst b/_sources/helpers.rst.txt similarity index 100% rename from docs/helpers.rst rename to _sources/helpers.rst.txt diff --git a/docs/index.rst b/_sources/index.rst.txt similarity index 100% rename from docs/index.rst rename to _sources/index.rst.txt diff --git a/docs/quick_start.rst b/_sources/quick_start.rst.txt similarity index 100% rename from docs/quick_start.rst rename to _sources/quick_start.rst.txt diff --git a/docs/services.rst b/_sources/services.rst.txt similarity index 57% rename from docs/services.rst rename to _sources/services.rst.txt index 4141e404..3cc3d8b9 100644 --- a/docs/services.rst +++ b/_sources/services.rst.txt @@ -115,20 +115,6 @@ ISMS :members: -NLB ---- - -.. autoclass:: ucloud.services.nlb.client.NLBClient - :members: - - -STS ---- - -.. autoclass:: ucloud.services.sts.client.STSClient - :members: - - TiDB ---- @@ -136,20 +122,6 @@ TiDB :members: -UAAA ----- - -.. autoclass:: ucloud.services.uaaa.client.UAAAClient - :members: - - -UADS ----- - -.. autoclass:: ucloud.services.uads.client.UADSClient - :members: - - UBill ----- @@ -157,27 +129,6 @@ UBill :members: -UClickhouse ------------ - -.. autoclass:: ucloud.services.uclickhouse.client.UClickhouseClient - :members: - - -UCompShare ----------- - -.. autoclass:: ucloud.services.ucompshare.client.UCompShareClient - :members: - - -UDBProxy --------- - -.. autoclass:: ucloud.services.udbproxy.client.UDBProxyClient - :members: - - UDDB ---- @@ -185,20 +136,6 @@ UDDB :members: -UDI ---- - -.. autoclass:: ucloud.services.udi.client.UDIClient - :members: - - -UDNS ----- - -.. autoclass:: ucloud.services.udns.client.UDNSClient - :members: - - UDTS ---- @@ -213,13 +150,6 @@ UEC :members: -UES ---- - -.. autoclass:: ucloud.services.ues.client.UESClient - :members: - - UFS --- @@ -234,27 +164,6 @@ UFile :members: -UGN ---- - -.. autoclass:: ucloud.services.ugn.client.UGNClient - :members: - - -UHIDS ------ - -.. autoclass:: ucloud.services.uhids.client.UHIDSClient - :members: - - -UHadoop -------- - -.. autoclass:: ucloud.services.uhadoop.client.UHadoopClient - :members: - - UHub ---- @@ -269,27 +178,6 @@ UK8S :members: -UKafka ------- - -.. autoclass:: ucloud.services.ukafka.client.UKafkaClient - :members: - - -ULogService ------------ - -.. autoclass:: ucloud.services.ulogservice.client.ULogServiceClient - :members: - - -UMongoDB --------- - -.. autoclass:: ucloud.services.umongodb.client.UMongoDBClient - :members: - - UNVS ---- @@ -297,34 +185,6 @@ UNVS :members: -UPFS ----- - -.. autoclass:: ucloud.services.upfs.client.UPFSClient - :members: - - -UPgSQL ------- - -.. autoclass:: ucloud.services.upgsql.client.UPgSQLClient - :members: - - -UPhone ------- - -.. autoclass:: ucloud.services.uphone.client.UPhoneClient - :members: - - -USLK ----- - -.. autoclass:: ucloud.services.uslk.client.USLKClient - :members: - - UTSDB ----- @@ -339,23 +199,9 @@ UVMS :members: -UWSC ----- - -.. autoclass:: ucloud.services.uwsc.client.UWSCClient - :members: - - VPC --- .. autoclass:: ucloud.services.vpc.client.VPCClient :members: - -ipv6gw ------- - -.. autoclass:: ucloud.services.ipv6gw.client.ipv6gwClient - :members: - diff --git a/docs/usage.rst b/_sources/usage.rst.txt similarity index 100% rename from docs/usage.rst rename to _sources/usage.rst.txt diff --git a/_static/alabaster.css b/_static/alabaster.css new file mode 100644 index 00000000..0eddaeb0 --- /dev/null +++ b/_static/alabaster.css @@ -0,0 +1,701 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..bf18350b --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,906 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/custom.css b/_static/custom.css new file mode 100644 index 00000000..2a924f1d --- /dev/null +++ b/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..e1bfd708 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,358 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + this.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + var url = new URL(window.location); + url.searchParams.delete('highlight'); + window.history.replaceState({}, '', url); + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar : function() { + $('input[name=q]').first().focus(); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + return; + + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box, textarea, dropdown or button + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && activeElementType !== 'BUTTON') { + if (event.altKey || event.ctrlKey || event.metaKey) + return; + + if (!event.shiftKey) { + switch (event.key) { + case 'ArrowLeft': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 'ArrowRight': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + case 'Escape': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.hideSearchWords(); + return false; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case '/': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.focusSearchBar(); + return false; + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..724e3825 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'None', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/jquery-3.2.1.js b/_static/jquery-3.2.1.js new file mode 100644 index 00000000..d2d8ca47 --- /dev/null +++ b/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Core

+
+

Config

+
+
+class ucloud.core.auth.Credential(public_key: str, private_key: str, **kwargs)[source]
+

credential is the object to store credential information

+

the keys can be found on APIKey documentation

+

it can calculate signature for OpenAPI:

+
>>> cred = Credential('my_public_key', 'my_private_key')
+>>> cred.verify_ac({"foo": "bar"})
+'d4411ab30953fb0bbcb1e7313081f05e4e91a394'
+
+
+
+
Parameters
+
    +
  • public_key

  • +
  • private_key

  • +
+
+
+
+ +
+
+class ucloud.core.client.Config(region: Optional[str] = None, project_id: Optional[str] = None, base_url: str = 'https://api.ucloud.cn', user_agent: Optional[str] = None, timeout: int = 30, max_retries: int = 3, log_level: int = 20, ssl_verify: bool = True, ssl_cacert: Optional[str] = None, ssl_cert: Optional[str] = None, ssl_key: Optional[str] = None, **kwargs)[source]
+

Config is the config of ucloud sdk, use for setting up

+
+
Parameters
+
    +
  • region (str) – Region is the region of backend service, +See also Region list Documentation

  • +
  • project_id (str) – ProjectId is the unique identify of project, used for organize resources, +Most of resources should belong to a project. Sub-Account must have an project id. +See also Project list Documentation

  • +
  • base_url (str) – BaseUrl is the url of backend api

  • +
  • user_agent – UserAgent is an attribute for sdk client, used for distinguish who is using sdk. +See also User Agent +It will be appended to the end of sdk user-agent. +eg. “MyAPP/0.10.1” -> “Python/3.7.0 Python-SDK/0.1.0 MyAPP/0.10.1”

  • +
  • timeout (int) – Timeout is timeout for every request.

  • +
  • max_retries (int) – MaxRetries is the number of max retry times. +Set MaxRetries more than 0 to enable auto-retry for network and service availability problem +if auto-retry is enabled, it will enable default retry policy using exponential backoff.

  • +
  • log_level (int) – LogLevel is equal to builtin logging level, +if logLevel not be set, use INFO level as default.

  • +
+
+
+
+ +
+
+

Client

+
+
+class ucloud.core.client.Client(config: dict, transport: Optional[ucloud.core.transport.http.Transport] = None, middleware: Optional[ucloud.core.utils.middleware.Middleware] = None, logger: Optional[logging.Logger] = None)[source]
+
+
+invoke(action: str, args: Optional[dict] = None, **options) dict[source]
+

invoke will invoke the action with arguments data and options

+
+
Parameters
+
    +
  • action (str) – the api action, like CreateUHostInstance

  • +
  • args (dict) – arguments of api(action), see doc: UCloud API Documentation

  • +
+
+
Returns
+

+
+
+
+ +
+ +
+
+

Transport

+
+
+class ucloud.core.transport.RequestsTransport(max_retries: int = 3, backoff_factor: float = 0.3, status_forcelist: Tuple[int] = (500, 502, 504))[source]
+

transport is the implementation of http client, use for send a request and return a http response

+
+
Parameters
+
    +
  • max_retries (int) – max retries is the max number of transport request when occur http error

  • +
  • backoff_factor (float) – backoff factor will calculate the backoff delay during retrying, +the backoff delay = {backoff factor} * (2 ^ ({number of total retries} - 1))

  • +
  • status_forcelist (tuple) – the status code list that could be retried

  • +
+
+
+
+
+property middleware: ucloud.core.utils.middleware.Middleware
+

the middleware object, see :mod:

+
+
Returns
+

the transport middleware

+
+
+
+ +
+
+send(req: ucloud.core.transport.http.Request, **options: Any) ucloud.core.transport.http.Response[source]
+

send request and return the response

+
+
Parameters
+

req – the full http request descriptor

+
+
Returns
+

the response of http request

+
+
+
+ +
+ +
+
+

Middleware

+
+
+class ucloud.core.utils.middleware.Middleware[source]
+

middleware is the object to store request/response handlers

+
>>> middleware = Middleware()
+
+
+

Add a request handler to prepare the request

+
>>> @middleware.request
+... def prepare(req):
+...     req['Region'] = 'cn-bj2'
+...     return req
+
+
+

Add a response handler to log the response detail

+
>>> @middleware.response
+... def logged(resp):
+...     print(resp)
+...     return resp
+
+
+
>>> len(middleware.request_handlers), len(middleware.response_handlers)
+(1, 1)
+
+
+
+
+exception(handler, index=- 1)[source]
+

exception is the exception handler register to add exception handler.

+
+
Parameters
+
    +
  • handler – exception handler function, receive exception object +and raise a new exception or ignore it

  • +
  • index (int) – the position of handler in the handler list, +default is append it to end

  • +
+
+
Returns
+

+
+
+
+ +
+
+request(handler, index=- 1)[source]
+

request is the request handler register to add request handler.

+
+
Parameters
+
    +
  • handler – request handler function, receive request object +and return a new request

  • +
  • index (int) – the position of request in the handler list, +default is append it to end

  • +
+
+
Returns
+

+
+
+
+ +
+
+response(handler, index=- 1)[source]
+

response is the response handler register to add response handler.

+
+
Parameters
+
    +
  • handler – response handler function, receive response object +and return a new response

  • +
  • index (int) – the position of response in the handler list, +default is append it to end

  • +
+
+
Returns
+

+
+
+
+ +
+ +
+
+

Testing

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 5dede4aa..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SOURCEDIR = . -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/build/doctrees/core.doctree b/docs/build/doctrees/core.doctree new file mode 100644 index 00000000..77352ad3 Binary files /dev/null and b/docs/build/doctrees/core.doctree differ diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle new file mode 100644 index 00000000..376f18eb Binary files /dev/null and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/helpers.doctree b/docs/build/doctrees/helpers.doctree new file mode 100644 index 00000000..5c262f88 Binary files /dev/null and b/docs/build/doctrees/helpers.doctree differ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree new file mode 100644 index 00000000..fdde8681 Binary files /dev/null and b/docs/build/doctrees/index.doctree differ diff --git a/docs/build/doctrees/quick_start.doctree b/docs/build/doctrees/quick_start.doctree new file mode 100644 index 00000000..32a2f4a5 Binary files /dev/null and b/docs/build/doctrees/quick_start.doctree differ diff --git a/docs/build/doctrees/services.doctree b/docs/build/doctrees/services.doctree new file mode 100644 index 00000000..750ac829 Binary files /dev/null and b/docs/build/doctrees/services.doctree differ diff --git a/docs/build/doctrees/usage.doctree b/docs/build/doctrees/usage.doctree new file mode 100644 index 00000000..57a89908 Binary files /dev/null and b/docs/build/doctrees/usage.doctree differ diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo new file mode 100644 index 00000000..9f6c0e81 --- /dev/null +++ b/docs/build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 5be615145e27ec092021dca15a8c5156 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html new file mode 100644 index 00000000..38c8d578 --- /dev/null +++ b/docs/build/html/_modules/index.html @@ -0,0 +1,124 @@ + + + + + + + Overview: module code — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/core/auth/_cfg.html b/docs/build/html/_modules/ucloud/core/auth/_cfg.html new file mode 100644 index 00000000..68e996ea --- /dev/null +++ b/docs/build/html/_modules/ucloud/core/auth/_cfg.html @@ -0,0 +1,178 @@ + + + + + + + ucloud.core.auth._cfg — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.auth._cfg

+import hashlib
+from collections import OrderedDict
+from ucloud.core.typesystem import schema, fields, encoder
+
+
+class CredentialSchema(schema.Schema):
+    fields = {
+        "public_key": fields.Str(required=True),
+        "private_key": fields.Str(required=True),
+    }
+
+
+def verify_ac(private_key: str, params: dict) -> str:
+    """ calculate signature by private_key/public_key
+
+    the keys can be found on `APIKey documentation <https://console.ucloud.cn/uapi/apikey>`__
+
+    >>> verify_ac("my_private_key", {"foo": "bar"})
+    '634edc1bb957c0d65e5ab5494cf3b7784fbc87af'
+
+    >>> verify_ac("my_private_key", {"foo": "bar"})
+    '634edc1bb957c0d65e5ab5494cf3b7784fbc87af'
+
+    :param private_key: private key
+    :param params:
+    :return:
+    """
+    params = OrderedDict(sorted(params.items(), key=lambda item: item[0]))
+
+    simplified = ""
+    for key, value in params.items():
+        simplified += str(key) + encoder.encode_value(value)
+    simplified += private_key
+
+    hash_new = hashlib.sha1()
+    hash_new.update(simplified.encode("utf-8"))
+    hash_value = hash_new.hexdigest()
+    return hash_value
+
+
+
[docs]class Credential: + """ credential is the object to store credential information + + the keys can be found on `APIKey documentation <https://console.ucloud.cn/uapi/apikey>`__ + + it can calculate signature for OpenAPI: + + >>> cred = Credential('my_public_key', 'my_private_key') + >>> cred.verify_ac({"foo": "bar"}) + 'd4411ab30953fb0bbcb1e7313081f05e4e91a394' + + :param public_key: + :param private_key: + """ + + PUBLIC_KEY_NAME = "PublicKey" + + def __init__(self, public_key: str, private_key: str, **kwargs): + self.public_key = public_key + self.private_key = private_key + + def verify_ac(self, args: dict) -> str: + args[Credential.PUBLIC_KEY_NAME] = self.public_key + return verify_ac(self.private_key, args) + + @classmethod + def from_dict(cls, d: dict): + parsed = CredentialSchema().dumps(d) + return cls(**parsed) + + def to_dict(self) -> dict: + return {"public_key": self.public_key, "private_key": self.private_key}
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/core/client/_cfg.html b/docs/build/html/_modules/ucloud/core/client/_cfg.html new file mode 100644 index 00000000..464a499d --- /dev/null +++ b/docs/build/html/_modules/ucloud/core/client/_cfg.html @@ -0,0 +1,186 @@ + + + + + + + ucloud.core.client._cfg — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.client._cfg

+import logging
+
+from ucloud.core.typesystem import schema, fields
+
+
+class ConfigSchema(schema.Schema):
+    fields = {
+        "region": fields.Str(required=True),
+        "project_id": fields.Str(),
+        "base_url": fields.Str(default="https://api.ucloud.cn"),
+        "user_agent": fields.Str(),
+        "timeout": fields.Int(default=30),
+        "max_retries": fields.Int(default=3),
+        "log_level": fields.Int(default=logging.INFO),
+        "validate_request": fields.Bool(default=True),
+    }
+
+
+
[docs]class Config: + """ + Config is the config of ucloud sdk, use for setting up + + :type region: str + :param region: Region is the region of backend service, + See also `Region list Documentation <https://docs.ucloud.cn/api/summary/regionlist>`_ + :type project_id: str + :param project_id: ProjectId is the unique identify of project, used for organize resources, + Most of resources should belong to a project. Sub-Account must have an project id. + See also `Project list Documentation <https://docs.ucloud.cn/api/summary/get_project_list>`_ + :type base_url: str + :param base_url: BaseUrl is the url of backend api + :param user_agent: UserAgent is an attribute for sdk client, used for distinguish who is using sdk. + See also `User Agent <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent>`_ + It will be appended to the end of sdk user-agent. + eg. "MyAPP/0.10.1" -> "Python/3.7.0 Python-SDK/0.1.0 MyAPP/0.10.1" + :type timeout: int + :param timeout: Timeout is timeout for every request. + :type max_retries: int + :param max_retries: MaxRetries is the number of max retry times. + Set MaxRetries more than 0 to enable auto-retry for network and service availability problem + if auto-retry is enabled, it will enable default retry policy using exponential backoff. + :type log_level: int + :param log_level: LogLevel is equal to builtin logging level, + if logLevel not be set, use INFO level as default. + """ + + def __init__( + self, + region: str, + project_id: str = None, + base_url: str = "https://api.ucloud.cn", + user_agent: str = None, + timeout: int = 30, + max_retries: int = 3, + log_level: int = logging.INFO, + **kwargs + ): + self.region = region + self.project_id = project_id + self.base_url = base_url + self.user_agent = user_agent + self.timeout = timeout + self.max_retries = max_retries + self.log_level = log_level + + @classmethod + def from_dict(cls, d: dict): + parsed = ConfigSchema().dumps(d) + return cls(**parsed) + + def to_dict(self) -> dict: + return { + "region": self.region, + "project_id": self.project_id, + "base_url": self.base_url, + "user_agent": self.user_agent, + "timeout": self.timeout, + "max_retries": self.max_retries, + "log_level": self.log_level, + }
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/core/client/_client.html b/docs/build/html/_modules/ucloud/core/client/_client.html new file mode 100644 index 00000000..ca23a4a5 --- /dev/null +++ b/docs/build/html/_modules/ucloud/core/client/_client.html @@ -0,0 +1,239 @@ + + + + + + + ucloud.core.client._client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.client._client

+import typing
+import logging
+import sys
+
+from ucloud import version
+from ucloud.core.client._cfg import Config
+from ucloud.core.transport import Transport, RequestsTransport, Request
+from ucloud.core.typesystem import encoder
+from ucloud.core.utils import log
+from ucloud.core.utils.middleware import Middleware
+from ucloud.core import auth, exc
+
+default_transport = RequestsTransport()
+
+
+
[docs]class Client: + def __init__( + self, + config: dict, + transport: typing.Optional[Transport] = None, + middleware: typing.Optional[Middleware] = None, + logger: typing.Optional[logging.Logger] = None, + ): + cfg, cred = self._parse_dict_config(config) + self.config = cfg + self.credential = cred + self.transport = transport or default_transport + self.logger = logger or log.default_logger + if middleware is None: + middleware = Middleware() + middleware.response(self.logged_response_handler) + middleware.request(self.logged_request_handler) + self._middleware = middleware + +
[docs] def invoke(self, action: str, args: dict = None, **options) -> dict: + """ invoke will invoke the action with arguments data and options + + :param str action: the api action, like `CreateUHostInstance` + :param dict args: arguments of api(action), see doc: `UCloud API Documentation <https://docs.ucloud.cn/api>`__ + :return: + """ + retries = 0 + max_retries = options.get("max_retries") or self.config.max_retries + + while retries <= max_retries: + try: + return self._send(action, args or {}, **options) + except exc.UCloudException as e: + if e.retryable and retries != max_retries: + logging.info( + "Retrying {action}: {args}".format( + action=action, args=args + ) + ) + retries += 1 + continue + raise e + except Exception as e: + raise e
+ + @property + def middleware(self) -> Middleware: + return self._middleware + + def logged_request_handler(self, req): + self.logger.info("[request] {} {}".format(req.get("Action", ""), req)) + return req + + def logged_response_handler(self, resp): + self.logger.info( + "[response] {} {}".format(resp.get("Action", ""), resp) + ) + return resp + + @staticmethod + def _parse_dict_config( + config: dict + ) -> typing.Tuple[Config, auth.Credential]: + return Config.from_dict(config), auth.Credential.from_dict(config) + + def _send(self, action: str, args: dict, **options) -> dict: + args["Action"] = action + for handler in self.middleware.request_handlers: + args = handler(args) + req = self._build_http_request(args) + + max_retries = options.get("max_retries") or self.config.max_retries + timeout = options.get("timeout") or self.config.timeout + resp = self.transport.send( + req, timeout=timeout, max_retries=max_retries + ).json() + + for handler in self.middleware.response_handlers: + resp = handler(resp) + + if int(resp.get("RetCode", -1)) != 0: + raise exc.RetCodeException( + action=req.data.get("Action"), + code=int(resp.get("RetCode")), + message=resp.get("Message"), + ) + + return resp + + def _build_http_request(self, args: dict) -> Request: + config = { + "Region": self.config.region, + "ProjectId": self.config.project_id, + } + payload = {k: v for k, v in config.items() if v is not None} + payload.update({k: v for k, v in args.items() if v is not None}) + payload = encoder.encode(payload) + payload["Signature"] = self.credential.verify_ac(payload) + + return Request( + url=self.config.base_url, + method="post", + data=payload, + headers={ + "User-Agent": self._build_user_agent(), + "Content-Type": "application/x-www-form-urlencoded", + }, + ) + + def _build_user_agent(self) -> str: + python_version = "{v[0]}.{v[1]}.{v[2]}".format(v=sys.version_info) + user_agent = "Python/{python_version} Python-SDK/{sdk_version}".format( + python_version=python_version, sdk_version=version.version + ) + (self.config.user_agent or "") + return user_agent + + def __repr__(self): + return '<{}("{}")>'.format(self.__class__.__name__, self.config.region)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/core/transport/_requests.html b/docs/build/html/_modules/ucloud/core/transport/_requests.html new file mode 100644 index 00000000..c52e1f20 --- /dev/null +++ b/docs/build/html/_modules/ucloud/core/transport/_requests.html @@ -0,0 +1,210 @@ + + + + + + + ucloud.core.transport._requests — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.transport._requests

+import typing
+import requests
+from urllib3.util.retry import Retry
+from requests.adapters import HTTPAdapter
+from ucloud.core.transport import http
+from ucloud.core.transport.http import Request, Response
+from ucloud.core.utils.middleware import Middleware
+
+
+
[docs]class RequestsTransport(http.Transport): + """ transport is the implementation of http client, use for send a request and return a http response + + :type max_retries: int + :param max_retries: max retries is the max number of transport request when occur http error + :type backoff_factor: float + :param backoff_factor: backoff factor will calculate the backoff delay during retrying, + the backoff delay = {backoff factor} * (2 ^ ({number of total retries} - 1)) + :type status_forcelist: tuple + :param status_forcelist: the status code list that could be retried + """ + + def __init__( + self, + max_retries: int = 3, + backoff_factor: float = 0.3, + status_forcelist: typing.Tuple[int] = (500, 502, 504), + ): + self.max_retries = max_retries + self.backoff_factor = backoff_factor + self.status_forcelist = status_forcelist + + self._adapter = self._load_adapter(max_retries) + self._middleware = Middleware() + +
[docs] def send(self, req: Request, **options: dict) -> http.Response: + """ send request and return the response + + :param req: the full http request descriptor + :return: the response of http request + """ + for handler in self.middleware.request_handlers: + req = handler(req) + + resp = self._send(req, **options) + + for handler in self.middleware.response_handlers: + resp = handler(resp) + + return resp
+ + @property + def middleware(self) -> Middleware: + """ the middleware object, see :mod: + + :return: the transport middleware + """ + return self._middleware + + def _send(self, req: Request, **options: dict) -> requests.Response: + with requests.Session() as session: + adapter = self._load_adapter(options.get("max_retries")) + session.mount("http://", adapter=adapter) + session.mount("https://", adapter=adapter) + + session_resp = session.request( + method=req.method.upper(), + url=req.url, + json=req.json, + data=req.data, + params=req.params, + headers=req.headers, + ) + resp = self.convert_response(session_resp) + resp.request = req + return resp + + def _load_adapter( + self, max_retries: typing.Optional[int] = None + ) -> HTTPAdapter: + if max_retries is None and self._adapter is not None: + return self._adapter + + max_retries = max_retries or 0 + adapter = HTTPAdapter() + adapter.max_retries = Retry( + total=max_retries, + read=max_retries, + connect=max_retries, + backoff_factor=self.backoff_factor, + status_forcelist=self.status_forcelist, + ) + return adapter + + @staticmethod + def convert_response(r: requests.Response) -> Response: + return Response( + url=r.url, + method=r.request.method, + status_code=r.status_code, + reason=r.reason, + headers=r.headers, + content=r.content, + encoding=r.encoding or r.apparent_encoding, + )
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/core/utils/middleware.html b/docs/build/html/_modules/ucloud/core/utils/middleware.html new file mode 100644 index 00000000..51a4796d --- /dev/null +++ b/docs/build/html/_modules/ucloud/core/utils/middleware.html @@ -0,0 +1,156 @@ + + + + + + + ucloud.core.utils.middleware — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.core.utils.middleware

+
[docs]class Middleware: + """ middleware is the object to store request/response handlers + + >>> middleware = Middleware() + + Add a request handler to prepare the request + + >>> @middleware.request + ... def prepare(req): + ... req['Region'] = 'cn-bj2' + ... return req + + Add a response handler to log the response detail + + >>> @middleware.response + ... def logged(resp): + ... print(resp) + ... return resp + + >>> len(middleware.request_handlers), len(middleware.response_handlers) + (1, 1) + """ + + def __init__(self): + self.request_handlers = [] + self.response_handlers = [] + +
[docs] def request(self, handler, index=-1): + """ request is the request handler register to add request handler. + + :param handler: request handler function, receive request object + and return a new request + :param int index: the position of request in the handler list, + default is append it to end + :return: + """ + self.request_handlers.insert(index, handler) + return handler
+ +
[docs] def response(self, handler, index=-1): + """ response is the response handler register to add response handler. + + :param handler: response handler function, receive response object + and return a new response + :param int index: the position of response in the handler list, + default is append it to end + :return: + """ + self.response_handlers.insert(index, handler) + return handler
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/helpers/utils.html b/docs/build/html/_modules/ucloud/helpers/utils.html new file mode 100644 index 00000000..94ebb0b3 --- /dev/null +++ b/docs/build/html/_modules/ucloud/helpers/utils.html @@ -0,0 +1,196 @@ + + + + + + + ucloud.helpers.utils — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.helpers.utils

+import random
+import base64
+import typing
+
+_lowercase = "abcdefghijklmnopqrstuvwxyz"
+_uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+_numbers = "0123456789"
+_specials = "_"
+
+
+
[docs]def gen_password( + n: int, + lower_letters: str = _lowercase, + upper_letters: str = _uppercase, + number_letters: str = _numbers, + special_letters: str = _specials, + min_lower: int = 1, + min_upper: int = 1, + min_number: int = 1, + min_specials: int = 1, +): + """ generate password for any resource + + >>> len(gen_password(20)) + 20 + + :param int n: password total length + :param str lower_letters: all lowercase letters + :param str upper_letters: all uppercase letters + :param str number_letters: all number letters + :param str special_letters: all special letters + :param int min_lower: minimal number of lowercase letters + :param int min_upper: minimal number of uppercase letters + :param int min_number: minimal number of number letters + :param int min_specials: minimal number of special letters + :return: + """ + all_letters = "".join( + [lower_letters, upper_letters, number_letters, special_letters] + ) + minimal_total = min_lower + min_upper + min_number + min_specials + if n < minimal_total: + raise ValueError( + ( + "the length of password must be larger than " + "total minimal letters number" + ) + ) + + minimal_letters = "".join( + [ + gen_string(lower_letters, min_lower), + gen_string(upper_letters, min_upper), + gen_string(number_letters, min_number), + gen_string(special_letters, min_specials), + ] + ) + + additional_letters = random.sample(all_letters, n - minimal_total) + results = list(minimal_letters) + additional_letters + random.shuffle(results) + return "".join(results)
+ + +def gen_string(letters: str, length: int): + return "".join([random.choice(letters) for i in range(length)]) + + +def first(l: typing.List[typing.Any]) -> typing.Any: + if len(l) == 0: + return None + return l[0] + + +
[docs]def b64encode(s: str) -> str: + """ base64 encode + + :param str s: input string + :return: base64 string + """ + return base64.b64encode(s.encode()).decode()
+ + +
[docs]def b64decode(s: str) -> str: + """ base64 decode + + :param str s: base64 string + :return: output string + """ + return base64.b64decode(s.encode()).decode()
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/helpers/wait.html b/docs/build/html/_modules/ucloud/helpers/wait.html new file mode 100644 index 00000000..8c1d4927 --- /dev/null +++ b/docs/build/html/_modules/ucloud/helpers/wait.html @@ -0,0 +1,214 @@ + + + + + + + ucloud.helpers.wait — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.helpers.wait

+import time
+import typing
+import logging
+from ucloud.core import exc
+
+
+MAX_BACKOFF_INTERVAL = 10
+
+logger = logging.getLogger(__name__)
+
+
+class WaitTimeoutException(exc.UCloudException):
+    pass
+
+
+class StateConf:
+    """ StateConf is the utilities class to wait the state return by refresh function achieve the specific state,
+    the generally usage is wait the cloud resource, such as uhost, udb ... is
+    ready after created.
+    """
+
+    def __init__(
+        self,
+        pending: typing.List[str],
+        target: typing.List[str],
+        refresh: typing.Callable,
+        timeout: float,
+        startup_delay: float = 0,
+        min_backoff_interval: float = 0.1,
+        max_backoff_interval: float = MAX_BACKOFF_INTERVAL,
+    ):
+        self.pending = pending
+        self.target = target
+        self.refresh = refresh
+        self.timeout = timeout
+        self.startup_delay = startup_delay
+        self.min_backoff_interval = min_backoff_interval
+        self.max_backoff_interval = max_backoff_interval
+
+    def wait(self):
+        start_time = time.time()
+        interval = self.min_backoff_interval
+
+        # delay on start up
+        time.sleep(self.startup_delay)
+
+        # waiting for state changed to target state
+        while time.time() - start_time < self.timeout:
+            state = self.refresh()
+
+            if state in self.pending:
+                time.sleep(interval)
+                interval *= 2
+                if interval > self.max_backoff_interval:
+                    interval = self.max_backoff_interval
+                logger.info(
+                    "waiting state for {self.refresh}, got state {state}".format(
+                        self=self, state=state
+                    )
+                )
+                continue
+
+            if state in self.target:
+                return
+
+        raise WaitTimeoutException(
+            "wait timeout {self.timeout}s for {self.refresh}".format(self=self)
+        )
+
+
+
[docs]def wait_for_state( + pending: typing.List[str], + target: typing.List[str], + refresh: typing.Callable, + timeout: float, + startup_delay: float = 0, + min_backoff_interval: float = 0.1, + max_backoff_interval: float = MAX_BACKOFF_INTERVAL, +): + """ wait_for_state is a utilities function to wait the state return by refresh function achieve the specific state, + the generally usage is wait the cloud resource, such as uhost, udb ... is + ready after created. + + >>> wait_for_state( + ... pending=["pending"], + ... target=["running"], + ... refresh=lambda: "running", + ... timeout=0.5, + ... ) + + :param pending: pending is the list of pending state, the state is returned by refresh function + :param target: target is the list of target state, it is usually the terminate state, eg. running and fail + :param refresh: the customized refresh function, expect no arguments and return a state + :param timeout: timeout is the total time to wait state is achieved + :param startup_delay: the time to wait before first refresh function is called + :param min_backoff_interval: the backoff time for first refresh interval + :param max_backoff_interval: the max backoff time for refresh interval + """ + conf = StateConf( + pending=pending, + target=target, + refresh=refresh, + timeout=timeout, + startup_delay=startup_delay, + min_backoff_interval=min_backoff_interval, + max_backoff_interval=max_backoff_interval, + ) + return conf.wait()
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/cube/client.html b/docs/build/html/_modules/ucloud/services/cube/client.html new file mode 100644 index 00000000..0fc165aa --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/cube/client.html @@ -0,0 +1,364 @@ + + + + + + + + ucloud.services.cube.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.cube.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.cube.schemas import apis
+
+
+
[docs]class CubeClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(CubeClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCubePod - 创建Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Pod** (str) - (Required) base64编码的Pod的yaml + - **SubnetId** (str) - (Required) 子网Id + - **VPCId** (str) - (Required) VPCId + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Postpay, \\ 后付费;默认为后付费 + - **CpuPlatform** (str) - Cpu平台(V6、A2),默认V6 + - **Group** (str) - pod所在组 + - **Name** (str) - pod的名字 + - **Quantity** (int) - 购买时长。默认:值 1。 月付时,此参数传0,代表购买至月末。 + - **Tag** (str) - 业务组。默认:Default(Default即为未分组) + + **Response** + + - **Action** (str) - 操作名称 + - **CubeId** (str) - cube的资源Id + - **Pod** (str) - base64编码的yaml + - **RetCode** (int) - 返回码 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCubePodRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCubePod", d, **kwargs) + return apis.CreateCubePodResponseSchema().loads(resp)
+ +
[docs] def delete_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCubePod - 删除Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - cubeid和uid任意一个(必须) + - **ReleaseEIP** (bool) - 删除cube时是否释放绑定的EIP。默认为false。 + - **Uid** (str) - cubeid和uid任意一个(必须) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCubePodRequestSchema().dumps(d) + + resp = self.invoke("DeleteCubePod", d, **kwargs) + return apis.DeleteCubePodResponseSchema().loads(resp)
+ +
[docs] def get_cube_extend_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetCubeExtendInfo - 获取Cube的额外信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeIds** (str) - (Required) id列表以逗号(,)分割 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ExtendInfo** (list) - 见 **CubeExtendInfo** 模型定义 + + **Response Model** + + **EIPAddr** + + - **IP** (str) - IP地址 + - **OperatorName** (str) - 线路名称BGP或者internalation + + **EIPSet** + + - **Bandwidth** (int) - EIP带宽值 + - **BandwidthType** (int) - 带宽类型0标准普通带宽,1表示共享带宽 + - **CreateTime** (int) - EIP创建时间 + - **EIPAddr** (list) - 见 **EIPAddr** 模型定义 + - **EIPId** (str) - EIPId + - **PayMode** (str) - 付费模式,带宽付费或者流量付费 + - **Resource** (str) - EIP绑定对象的资源Id + - **Status** (str) - EIP状态,表示使用中或者空闲 + - **Weight** (int) - EIP权重 + + **CubeExtendInfo** + + - **CubeId** (str) - Cube的Id + - **Eip** (list) - 见 **EIPSet** 模型定义 + - **Expiration** (int) - 资源有效期 + - **Name** (str) - Cube的名称 + - **Tag** (str) - 业务组名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubeExtendInfoRequestSchema().dumps(d) + + resp = self.invoke("GetCubeExtendInfo", d, **kwargs) + return apis.GetCubeExtendInfoResponseSchema().loads(resp)
+ +
[docs] def get_cube_pod(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetCubePod - 获取Pod的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - CubeId和Uid任意一个 + - **Uid** (str) - CubeId和Uid任意一个 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Pod** (str) - base64编码的pod的yaml + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetCubePodRequestSchema().dumps(d) + + resp = self.invoke("GetCubePod", d, **kwargs) + return apis.GetCubePodResponseSchema().loads(resp)
+ +
[docs] def list_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListCubePod - 获取Pods列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Group** (str) - 组名称 + - **Limit** (int) - 默认20 + - **Offset** (int) - 默认0 + - **SubnetId** (str) - 子网Id + - **VPCId** (str) - VPC的Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Pods** (list) - Pod列表,每条数据都做了base64编码 + - **TotalCount** (int) - Cube的总数 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListCubePodRequestSchema().dumps(d) + + resp = self.invoke("ListCubePod", d, **kwargs) + return apis.ListCubePodResponseSchema().loads(resp)
+ +
[docs] def modify_cube_extend_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyCubeExtendInfo - 修改Cube额外信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - (Required) cube的id + - **Name** (str) - 修改的名字,规则(^[a-zA-Z0-9-_.\u4e00-\u9fa5]{1,32}) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyCubeExtendInfoRequestSchema().dumps(d) + + resp = self.invoke("ModifyCubeExtendInfo", d, **kwargs) + return apis.ModifyCubeExtendInfoResponseSchema().loads(resp)
+ +
[docs] def renew_cube_pod( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RenewCubePod - 更新Pod + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CubeId** (str) - (Required) 容器Id + - **Pod** (str) - (Required) base64编码的Pod的yaml + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Pod** (str) - base64编码过的yaml,需要解码获取信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RenewCubePodRequestSchema().dumps(d) + + resp = self.invoke("RenewCubePod", d, **kwargs) + return apis.RenewCubePodResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/iam/client.html b/docs/build/html/_modules/ucloud/services/iam/client.html new file mode 100644 index 00000000..43f06f64 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/iam/client.html @@ -0,0 +1,167 @@ + + + + + + + + ucloud.services.iam.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.iam.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.iam.schemas import apis
+
+
+
[docs]class IAMClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(IAMClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateProject - 创建项目 + + **Request** + + - **ProjectName** (str) - (Required) 项目名称,不得与现有项目重名 + + **Response** + + - **ProjectId** (str) - 所创建项目的Id + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateProject", d, **kwargs) + return apis.CreateProjectResponseSchema().loads(resp)
+ +
[docs] def delete_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteProject - 删除项目 + + **Request** + + - **ProjectID** (str) - (Required) 项目ID + + **Response** + + - **Message** (str) - 错误消息 + + """ + # build request + d = {} + req and d.update(req) + d = apis.DeleteProjectRequestSchema().dumps(d) + + resp = self.invoke("DeleteProject", d, **kwargs) + return apis.DeleteProjectResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ipsecvpn/client.html b/docs/build/html/_modules/ucloud/services/ipsecvpn/client.html new file mode 100644 index 00000000..7a3731ce --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ipsecvpn/client.html @@ -0,0 +1,238 @@ + + + + + + + ucloud.services.ipsecvpn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ipsecvpn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ipsecvpn.schemas import apis
+
+
+
[docs]class IPSecVPNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(IPSecVPNClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def describe_remote_vpn_gateway( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeRemoteVPNGateway - 获取客户VPN网关信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **RemoteVPNGatewayIds** (list) - 客户VPN网关的资源ID,例如RemoteVPNGatewayIds.0代表希望获取客户VPN网关1的信息,RemoteVPNGatewayIds.1代表客户VPN网关2,如果为空,则返回当前Region中所有客户VPN网关实例的信息 + - **Tag** (str) - 业务组名称,若指定则返回业务组下所有客户VPN网关信息 + + **Response** + + - **DataSet** (list) - 见 **RemoteVPNGatewayDataSet** 模型定义 + - **TotalCount** (int) - 符合条件的客户VPN网关总数 + + **Response Model** + + **RemoteVPNGatewayDataSet** + + - **ActiveTunnels** (str) - 活跃的隧道id + - **CreateTime** (int) - 创建时间 + - **Remark** (str) - 备注 + - **RemoteVPNGatewayAddr** (str) - 客户网关IP地址 + - **RemoteVPNGatewayId** (str) - 客户网关ID + - **RemoteVPNGatewayName** (str) - 客户网关名称 + - **Tag** (str) - 用户组 + - **TunnelCount** (int) - 活跃的隧道数量 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRemoteVPNGatewayRequestSchema().dumps(d) + + resp = self.invoke("DescribeRemoteVPNGateway", d, **kwargs) + return apis.DescribeRemoteVPNGatewayResponseSchema().loads(resp)
+ +
[docs] def describe_vpn_tunnel( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeVPNTunnel - 获取VPN隧道信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **Tag** (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息 + - **VPNTunnelIds** (list) - VPN隧道的资源ID,例如VPNTunnelIds.0代表希望获取信息的VPN隧道1,VPNTunneIds.1代表VPN隧道2,如果为空,则返回当前Region中所有的VPN隧道实例 + + **Response** + + - **DataSet** (list) - 见 **VPNTunnelDataSet** 模型定义 + - **TotalCount** (int) - VPN隧道总数 + + **Response Model** + + **IPSecData** + + - **IPSecAuthenticationAlgorithm** (str) - IPSec通道中使用的认证算法 + - **IPSecEncryptionAlgorithm** (str) - IPSec通道中使用的加密算法 + - **IPSecLocalSubnetIds** (list) - 指定VPN连接的本地子网,用逗号分隔 + - **IPSecPFSDhGroup** (str) - 是否开启PFS功能,Disable表示关闭,数字表示DH组 + - **IPSecProtocol** (str) - 使用的安全协议,ESP或AH + - **IPSecRemoteSubnets** (list) - 指定VPN连接的客户网段,用逗号分隔 + - **IPSecSALifetime** (str) - IPSec中SA的生存时间 + - **IPSecSALifetimeBytes** (str) - IPSec中SA的生存时间(以字节计) + + **IKEData** + + - **IKEAuthenticationAlgorithm** (str) - IKE认证算法 + - **IKEDhGroup** (str) - IKEDH组 + - **IKEEncryptionAlgorithm** (str) - IKE加密算法 + - **IKEExchangeMode** (str) - IKEv1协商模式 + - **IKELocalId** (str) - IKE本地ID标识 + - **IKEPreSharedKey** (str) - IKE预共享秘钥 + - **IKERemoteId** (str) - IKE对端ID标识 + - **IKESALifetime** (str) - IKE秘钥生存时间 + - **IKEVersion** (str) - IKE版本 + + **VPNTunnelDataSet** + + - **CreateTime** (int) - 创建时间 + - **IKEData** (dict) - 见 **IKEData** 模型定义 + - **IPSecData** (dict) - 见 **IPSecData** 模型定义 + - **Remark** (str) - 备注 + - **RemoteVPNGatewayId** (str) - 对端网关Id + - **RemoteVPNGatewayName** (str) - 对端网关名字 + - **Tag** (str) - 用户组 + - **VPCId** (str) - 所属VPCId + - **VPCName** (str) - 所属VOC名字 + - **VPNGatewayId** (str) - 所属VPN网关id + - **VPNGatewayName** (str) - VPN网关名字 + - **VPNTunnelId** (str) - 隧道id + - **VPNTunnelName** (str) - 隧道名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPNTunnelRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPNTunnel", d, **kwargs) + return apis.DescribeVPNTunnelResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/isms/client.html b/docs/build/html/_modules/ucloud/services/isms/client.html new file mode 100644 index 00000000..a4b9fc92 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/isms/client.html @@ -0,0 +1,436 @@ + + + + + + + + ucloud.services.isms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.isms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.isms.schemas import apis
+
+
+
[docs]class ISMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(ISMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateISMSSignature - 调用接口CreateISMSSignature申请视频短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CertificateType** (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Description** (str) - (Required) 短信签名申请原因 + - **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB + - **SigContent** (str) - (Required) 短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **ProxyFile** (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项; + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **SigId** (str) - 短信签名ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateISMSSignatureRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateISMSSignature", d, **kwargs) + return apis.CreateISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def create_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateISMSTemplate - 申请视频短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Content** (str) - (Required) 视频短信模板内容。json数组的字符串格式。如:[{name:"0.txt",type:"txt",content:"北京是一座美丽的城市,我爱北京!",index:0},{name:"1.jpg",type:"jpg",content:"jpg文件字节的base64编码字符串",index:1},{name:”2.mp4”,type:"mp4",content:"mp4文件字节的base64编码字符串",index:2}]。name: 文件名,name中不能出现中文,必须要带上和type相同的后缀;type:文件类型,不能为空,文本为txt,图片为jpg、gif或png,音频为mp3,视频为mp4;content:文件内容,由文本、图片、音频、视频组成,文本使用txt文件,图片使用 jpg、gif、png 格式,音频使用 mp3 格式,视频使用mp4(视频只允许一个),文本、图片、音频、视频文件合计大小不可超过2M;index: 在视频短信中的位置。从0开始。 + - **MsgSignature** (str) - (Required) 视频短信签名 + - **MsgTitle** (str) - (Required) 视频短信标题 + - **Remark** (str) - (Required) 备注 + - **TemplateName** (str) - (Required) 视频短信模板名称 + - **UnsubscribeInfo** (str) - (Required) 退订信息,如:“回T退订” + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - API接口调用出错时表示错误信息 + - **ReqUuid** (str) - 本次接口调用请求Id,用于问题排查。 + - **TemplateId** (str) - 申请的模板Id。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateISMSTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateISMSTemplate", d, **kwargs) + return apis.CreateISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def delete_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteISMSSignature - 调用接口DeleteISMSSignature删除视频短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigIds** (list) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("DeleteISMSSignature", d, **kwargs) + return apis.DeleteISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def delete_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteISMSTemplate - 调用接口DeleteISMSTemplate删除视频短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TemplateIds** (list) - (Required) 模板ID,支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1...TemplateIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteISMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("DeleteISMSTemplate", d, **kwargs) + return apis.DeleteISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def get_isms_send_receipt( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetISMSSendReceipt - 获取视频短信发送记录的状态回执 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TaskIdSet** (list) - (Required) 发送记录TaskId集合。调用SendUSMSVideoMessage时返回的TaskId的集合。以TaskIdSet.0、TaskIdSet.1...TaskIdSet.N的形式传入。每次请求最多支持100个 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (list) - 见 **ReceiptPerTask** 模型定义 + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + + **Response Model** + + **ReceiptPerTask** + - **ReceiptSet** (list) - 见 **ReceiptPerPhone** 模型定义 + - **TaskId** (str) - 发送短信时返回的TaskId + + + **ReceiptPerPhone** + - **Phone** (str) - 手机号码 + - **ReceiptCode** (str) - 回执码 + - **ReceiptDesc** (str) - 回执结果描述 + - **ReceiptResult** (str) - 回执结果(发送成功、发送失败、状态未知) + - **ReceiptTime** (int) - 回执返回时间 + - **SessionId** (str) - SessionId + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetISMSSendReceiptRequestSchema().dumps(d) + + resp = self.invoke("GetISMSSendReceipt", d, **kwargs) + return apis.GetISMSSendReceiptResponseSchema().loads(resp)
+ +
[docs] def query_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryISMSSignature - 调用接口QueryISMSSignature查询视频短信签名申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigId** (str) - (Required) 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项; + - **SigContent** (str) - 签名内容;签名ID和签名至少需填写1项; + + **Response** + + - **Data** (dict) - 见 **OutSignature** 模型定义 + - **Message** (str) - 发生错误时,表示具体错误描述 + + **Response Model** + + **OutSignature** + - **ErrDesc** (str) - 短信签名未通过审核原因 + - **SigContent** (str) - 短信签名内容 + - **SigId** (str) - 短信签名ID + - **Status** (int) - 签名状态,0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.QueryISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("QueryISMSSignature", d, **kwargs) + return apis.QueryISMSSignatureResponseSchema().loads(resp)
+ +
[docs] def query_isms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """QueryISMSTemplate - 查询模板状态信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **TemplateId** (str) - (Required) 模板Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **OutTemplate** 模型定义 + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + + **Response Model** + + **OutTemplate** + - **CreateTime** (int) - 创建时间,时间戳格式1629357838 + - **ExpireTime** (int) - 截止有效时间,时间戳格式1629357838 + - **Purpose** (int) - 视频短信类型(3-会员营销) + - **Remark** (str) - 备注信息 + - **StatusDesc** (str) - 状态描述。json格式,给出运营商维度的审核状态信息,示例:{"telecom_status":2,"telecom_desc":"审核通过","unicom_status":2,"unicom_desc":"审核通过","mobile_status":2,"mobile_desc":"审核通过"}。状态枚举值:0-创建模板时未向该运营商报备 1->审核中 2->审核通过 3->审核未通过 4->禁用 7->过期 11->待审核 + - **TemplateId** (str) - 模板ID + - **TemplateName** (str) - 模板名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.QueryISMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("QueryISMSTemplate", d, **kwargs) + return apis.QueryISMSTemplateResponseSchema().loads(resp)
+ +
[docs] def send_isms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendISMSMessage - 发送视频短信 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **PhoneSet** (list) - (Required) 手机号码列表。暂时只支持中国大陆号码。若号码中带区号,需要将区号使用小括号包含,放在号码前面。如: (86)1851623xxxx + - **TemplateId** (str) - (Required) 视频短信模板Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 错误信息 + - **ReqUuid** (str) - 本次请求uuid + - **TaskId** (str) - 本次调用TaskId,使用该字段查询回执信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendISMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendISMSMessage", d, **kwargs) + return apis.SendISMSMessageResponseSchema().loads(resp)
+ +
[docs] def update_isms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateISMSSignature - 调用接口UpdateISMSSignature修改未通过审核的视频短信签名,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SigContent** (str) - (Required) 新的短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigId** (str) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **CertificateType** (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Document** (str) - 短信签名的资质证明文件URL,若未更改审核材料,则该处使用已上传审核材料的URL链接,否则使用File参数 + - **File** (str) - 短信签名的资质证明文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB。内容格式如下: [file type];[code type],[base64] 如:image/jpeg;base64,5YaF5a65 + - **ProxyDoc** (str) - 短信签名授权委托文件URL,若未更改授权委托文件,则该处填写已上传的授权委托文件的URL链接,否则使用ProxyFile参数 + - **ProxyFile** (str) - 短信签名授权委托文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;格式和File类似。 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateISMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("UpdateISMSSignature", d, **kwargs) + return apis.UpdateISMSSignatureResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/pathx/client.html b/docs/build/html/_modules/ucloud/services/pathx/client.html new file mode 100644 index 00000000..8718bb8f --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/pathx/client.html @@ -0,0 +1,295 @@ + + + + + + + ucloud.services.pathx.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.pathx.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.pathx.schemas import apis
+
+
+
[docs]class PathXClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(PathXClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateGlobalSSHInstance - 创建GlobalSSH实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Area** (str) - (Required) 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填一个 + - **AreaCode** (str) - (Required) AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个 + - **Port** (int) - (Required) SSH端口,1-65535且不能使用80,443端口 + - **TargetIP** (str) - (Required) 被SSH访问的IP + - **ChargeType** (str) - 支付方式,如按月、按年、按时 + - **CouponId** (str) - 使用代金券可冲抵部分费用 + - **Quantity** (int) - 购买数量 + - **Remark** (str) - 备注信息 + + **Response** + + - **AcceleratingDomain** (str) - 加速域名,访问该域名可就近接入 + - **InstanceId** (str) - 实例ID,资源唯一标识 + - **Message** (str) - 提示信息 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.CreateGlobalSSHInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateGlobalSSHInstance", d, **kwargs) + return apis.CreateGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteGlobalSSHInstance - 删除GlobalSSH实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceId** (str) - (Required) 实例Id,资源的唯一标识 + + **Response** + + - **Message** (str) - 提示信息 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.DeleteGlobalSSHInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteGlobalSSHInstance", d, **kwargs) + return apis.DeleteGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_global_ssh_area( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeGlobalSSHArea - 获取GlobalSSH覆盖的地区列表 用于控制显示哪些机房地域可以使用SSH特性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 机房地域代号,如hk、 us-ca、 us-ws等。不填默认为空,返回所有支持地区。 + + **Response** + + - **AreaSet** (list) - 见 **GlobalSSHArea** 模型定义 + - **Message** (str) - 提示信息 + + **Response Model** + + **GlobalSSHArea** + + - **Area** (str) - GlobalSSH覆盖的地区,如香港、东京、洛杉矶等 + - **AreaCode** (str) - 地区代号,以地区AirPort Code + - **RegionSet** (list) - ucloud机房代号构成的数组,如["hk","us-ca"] + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeGlobalSSHAreaRequestSchema().dumps(d) + + resp = self.invoke("DescribeGlobalSSHArea", d, **kwargs) + return apis.DescribeGlobalSSHAreaResponseSchema().loads(resp)
+ +
[docs] def describe_global_ssh_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeGlobalSSHInstance - 获取GlobalSSH实例列表(传实例ID获取单个实例信息,不传获取项目下全部实例) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceId** (str) - 实例ID,资源唯一标识 + + **Response** + + - **InstanceSet** (list) - 见 **GlobalSSHInfo** 模型定义 + + **Response Model** + + **GlobalSSHInfo** + + - **AcceleratingDomain** (str) - 加速域名 + - **Area** (str) - 被SSH访问的IP所在地区 + - **ChargeType** (str) - 支付周期,如Month,Year等 + - **CreateTime** (int) - 资源创建时间戳 + - **ExpireTime** (int) - 资源过期时间戳 + - **InstanceId** (str) - 实例ID,资源唯一标识 + - **Port** (int) - SSH登陆端口 + - **Remark** (str) - 备注信息 + - **TargetIP** (str) - 被SSH访问的EIP + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.DescribeGlobalSSHInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeGlobalSSHInstance", d, **kwargs) + return apis.DescribeGlobalSSHInstanceResponseSchema().loads(resp)
+ +
[docs] def modify_global_ssh_port( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyGlobalSSHPort - 修改GlobalSSH端口 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceId** (str) - (Required) 实例ID,资源唯一标识 + - **Port** (int) - (Required) 调整后的SSH登陆端口 + + **Response** + + - **Message** (str) - 提示信息 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.ModifyGlobalSSHPortRequestSchema().dumps(d) + + resp = self.invoke("ModifyGlobalSSHPort", d, **kwargs) + return apis.ModifyGlobalSSHPortResponseSchema().loads(resp)
+ +
[docs] def modify_global_ssh_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyGlobalSSHRemark - 修改GlobalSSH备注 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,如org-xxxx。请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **InstanceId** (str) - (Required) 实例ID,资源唯一标识 + - **Remark** (str) - 备注信息,不填默认为空字符串 + + **Response** + + - **Message** (str) - 接口返回消息 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.ModifyGlobalSSHRemarkRequestSchema().dumps(d) + + resp = self.invoke("ModifyGlobalSSHRemark", d, **kwargs) + return apis.ModifyGlobalSSHRemarkResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/stepflow/client.html b/docs/build/html/_modules/ucloud/services/stepflow/client.html new file mode 100644 index 00000000..404c33ac --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/stepflow/client.html @@ -0,0 +1,204 @@ + + + + + + + ucloud.services.stepflow.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.stepflow.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.stepflow.schemas import apis
+
+
+
[docs]class StepFlowClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(StepFlowClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_sf_workflow_from_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateSFWorkflowFromTemplate - 导入工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Namespace** (str) - (Required) 需要创建的工作流namespace + - **Workflow** (str) - (Required) 描述工作流定义的base64字符串 + - **WorkflowName** (str) - (Required) 需要创建的工作流名称 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 创建的工作流版本号 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateSFWorkflowFromTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSFWorkflowFromTemplate", d, **kwargs) + return apis.CreateSFWorkflowFromTemplateResponseSchema().loads(resp)
+ +
[docs] def get_sf_workflow_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetSFWorkflowTemplate - 导出工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **WorkflowId** (str) - (Required) 被导出工作流的Id + - **WorkflowVersion** (int) - 被导出工作流的版本号。取值范围:WorkflowVersion >= 1;默认会获取发布版本对应的workflow;超过最大版本会返回错误 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 导出工作流的版本号 + - **Workflow** (dict) - 见 **WorkflowTemplate** 模型定义 + - **WorkflowId** (str) - 导出工作流的Id + + **Response Model** + + **Param** + + - **Name** (str) - 参数名称 + - **Type** (str) - 参数类型 + - **Value** (str) - 参数值 + + **ActivityTemplate** + + - **Input** (dict) - Activity的输入 + - **Name** (str) - Activity的名字 + - **Next** (str) - 下一个Activity的名字 + - **Output** (list) - Activity的输出,详见Param + - **RetryTimes** (str) - Activity的重试次数 + - **Timeout** (str) - Activity的超时时间 + - **Type** (str) - Activity的类型 + + **WorkflowTemplate** + + - **Activites** (list) - 见 **ActivityTemplate** 模型定义 + - **Input** (list) - 见 **Param** 模型定义 + - **Output** (list) - 见 **Param** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetSFWorkflowTemplateRequestSchema().dumps(d) + + resp = self.invoke("GetSFWorkflowTemplate", d, **kwargs) + return apis.GetSFWorkflowTemplateResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/tidb/client.html b/docs/build/html/_modules/ucloud/services/tidb/client.html new file mode 100644 index 00000000..2c2d4bf8 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/tidb/client.html @@ -0,0 +1,226 @@ + + + + + + + + ucloud.services.tidb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.tidb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.tidb.schemas import apis
+
+
+
[docs]class TiDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(TiDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_ti_db_service( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateTiDBService - 创建TiDB服务 + + **Request** + + - **ProjectId** (str) - (Config) 项目 ID + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Name** (str) - (Required) 服务名称, 长度不超过64 + - **Password** (str) - (Required) 服务root账号的密码, 长度不超过32 + - **SubnetId** (str) - (Required) 子网 ID + - **VPCId** (str) - (Required) VPC ID + - **DTType** (str) - 容灾类型:10:同可用区,20:跨可用区,默认是同可用区 + - **Ip** (str) - ipv4 + - **Port** (str) - 端口 + - **TikvMemoryHardTh** (str) - 实例类型: 0: 旗舰版,30: 体验版,60: 轻量版 + + **Response** + + - **Data** (dict) - 见 **ServiceID** 模型定义 + - **Message** (str) - 返回信息 + - **ServiceId** (str) - 服务ID + + **Response Model** + + **ServiceID** + - **Id** (str) - 服务ID + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateTiDBServiceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateTiDBService", d, **kwargs) + return apis.CreateTiDBServiceResponseSchema().loads(resp)
+ +
[docs] def delete_ti_db_service( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteTiDBService - 删除一个服务 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Id** (str) - (Required) 资源ID + + **Response** + + - **Message** (str) - 返回信息 + - **ServiceId** (str) - ServiceId + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteTiDBServiceRequestSchema().dumps(d) + + resp = self.invoke("DeleteTiDBService", d, **kwargs) + return apis.DeleteTiDBServiceResponseSchema().loads(resp)
+ +
[docs] def set_ti_db_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetTiDBConfig - 设置TiDB服务实例参数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Id** (str) - (Required) 资源Id + - **Configs** (list) - 见 **SetTiDBConfigParamConfigs** 模型定义 + + **Response** + + - **ServiceId** (str) - ServiceId + + **Request Model** + + **SetTiDBConfigParamConfigs** + - **Name** (str) - 修改的参数名: proxysql_mysql-max_connections:类型:string, 描述: 所有用户总共的最大连接数 。proxysql_max_connections: 类型:string, 描述: 每个用户的最大连接数。tidb_gc: 类型:string, 描述: tikv_gc_life_time。 + - **Value** (str) - 对应修改的参数值: string + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetTiDBConfigRequestSchema().dumps(d) + + resp = self.invoke("SetTiDBConfig", d, **kwargs) + return apis.SetTiDBConfigResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uaccount/client.html b/docs/build/html/_modules/ucloud/services/uaccount/client.html new file mode 100644 index 00000000..a4f67583 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uaccount/client.html @@ -0,0 +1,298 @@ + + + + + + + ucloud.services.uaccount.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uaccount.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uaccount.schemas import apis
+
+
+
[docs]class UAccountClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UAccountClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateProject - 创建项目 + + **Request** + + - **ProjectName** (str) - (Required) 项目名称 + + **Response** + + - **ProjectId** (str) - 所创建项目的Id + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateProjectRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateProject", d, **kwargs) + return apis.CreateProjectResponseSchema().loads(resp)
+ +
[docs] def get_project_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetProjectList - 获取项目列表 + + **Request** + + - **IsFinance** (str) - 是否是财务账号 + + **Response** + + - **ProjectCount** (int) - 项目总数 + - **ProjectSet** (list) - 见 **ProjectListInfo** 模型定义 + + **Response Model** + + **ProjectListInfo** + + - **CreateTime** (int) - 创建时间(Unix时间戳) + - **IsDefault** (bool) - 是否为默认项目 + - **MemberCount** (int) - 项目下成员数量 + - **ParentId** (str) - 父项目ID + - **ParentName** (str) - 父项目名称 + - **ProjectId** (str) - 项目ID + - **ProjectName** (str) - 项目名称 + - **ResourceCount** (int) - 项目下资源数量 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetProjectListRequestSchema().dumps(d) + + resp = self.invoke("GetProjectList", d, **kwargs) + return apis.GetProjectListResponseSchema().loads(resp)
+ +
[docs] def get_region(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ GetRegion - 获取用户在各数据中心的权限等信息 + + **Request** + + + **Response** + + - **Regions** (list) - 见 **RegionInfo** 模型定义 + + **Response Model** + + **RegionInfo** + + - **BitMaps** (str) - 用户在此数据中心的权限位 + - **IsDefault** (bool) - 是否用户当前默认数据中心 + - **Region** (str) - 地域名字,如cn-bj + - **RegionId** (int) - 数据中心ID + - **RegionName** (str) - 数据中心名称 + - **Zone** (str) - 可用区名字,如cn-bj-01 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetRegionRequestSchema().dumps(d) + + resp = self.invoke("GetRegion", d, **kwargs) + return apis.GetRegionResponseSchema().loads(resp)
+ +
[docs] def get_user_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUserInfo - 获取用户信息 + + **Request** + + + **Response** + + - **DataSet** (list) - 见 **UserInfo** 模型定义 + + **Response Model** + + **UserInfo** + + - **Admin** (int) - 是否超级管理员 0:否 1:是 + - **Administrator** (str) - 管理员 + - **AuthState** (str) - 实名认证状态 + - **City** (str) - 城市 + - **CompanyName** (str) - 公司名称 + - **Finance** (int) - 是否有财务权限 0:否 1:是 + - **IndustryType** (int) - 所属行业 + - **PhonePrefix** (str) - 国际号码前缀 + - **Province** (str) - 省份 + - **UserAddress** (str) - 公司地址 + - **UserEmail** (str) - 用户邮箱 + - **UserId** (int) - 用户Id + - **UserName** (str) - 称呼 + - **UserPhone** (str) - 用户手机 + - **UserType** (int) - 会员类型 + - **UserVersion** (int) - 是否子帐户(大于100为子帐户) + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUserInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUserInfo", d, **kwargs) + return apis.GetUserInfoResponseSchema().loads(resp)
+ +
[docs] def modify_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyProject - 修改项目 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ProjectName** (str) - (Required) 新的项目名称 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.ModifyProjectRequestSchema().dumps(d) + + resp = self.invoke("ModifyProject", d, **kwargs) + return apis.ModifyProjectResponseSchema().loads(resp)
+ +
[docs] def terminate_project( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ TerminateProject - 删除项目 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.TerminateProjectRequestSchema().dumps(d) + + resp = self.invoke("TerminateProject", d, **kwargs) + return apis.TerminateProjectResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ubill/client.html b/docs/build/html/_modules/ucloud/services/ubill/client.html new file mode 100644 index 00000000..89bf6916 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ubill/client.html @@ -0,0 +1,175 @@ + + + + + + + + ucloud.services.ubill.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ubill.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ubill.schemas import apis
+
+
+
[docs]class UBillClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UBillClient, self).__init__(config, transport, middleware, logger) + +
[docs] def get_balance(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetBalance - 获取账户余额 + + **Request** + + + **Response** + + - **AccountInfo** (dict) - 见 **AccountInfo** 模型定义 + + **Response Model** + + **AccountInfo** + - **Amount** (str) - 账户余额 + - **AmountAvailable** (str) - 账户可用余额 + - **AmountCredit** (str) - 信用账户余额 + - **AmountFree** (str) - 赠送账户余额 + - **AmountFreeze** (str) - 冻结账户金额 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetBalanceRequestSchema().dumps(d) + + resp = self.invoke("GetBalance", d, **kwargs) + return apis.GetBalanceResponseSchema().loads(resp)
+ +
[docs] def get_bill_data_file_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetBillDataFileUrl - 生成账单数据文件下载的 url + + **Request** + + - **BillPeriod** (int) - (Required) 账期(时间戳格式) + - **BillType** (int) - (Required) 账单类型,传 0 时获取账单总览报表,传 1 获取账单明细报表 + - **PaidType** (int) - 获取账单总览报表时,账单的支付状态,传 0 时获取待支付账单,传 1 时获取已支付账单。获取账单明细报表时该参数无效 + - **RequireVersion** (str) - 如需求其他语言版本的账单则使用此参数。默认中文。如 RequireVersion = "EN",则提供英文版本账单。 + + **Response** + + - **FileUrl** (str) - 交易账单数据下载URL + - **IsValid** (str) - 生成的 URL是否有效,即有对应数据文件 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetBillDataFileUrlRequestSchema().dumps(d) + + resp = self.invoke("GetBillDataFileUrl", d, **kwargs) + return apis.GetBillDataFileUrlResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ucdn/client.html b/docs/build/html/_modules/ucloud/services/ucdn/client.html new file mode 100644 index 00000000..a0a598ea --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ucdn/client.html @@ -0,0 +1,787 @@ + + + + + + + ucloud.services.ucdn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ucdn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ucdn.schemas import apis
+
+
+
[docs]class UCDNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UCDNClient, self).__init__(config, transport, middleware, logger) + +
[docs] def batch_describe_new_ucdn_domain( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ BatchDescribeNewUcdnDomain - 批量获取加速域名配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ChannelType** (str) - 渠道ucdn、ufile、uvideo + - **DomainId** (list) - 域名id,创建域名时生成的资源id,默认获取账号下的所有域名信息,n为自然数 + - **Limit** (int) - 返回数据长度,如果制定了Offset,则默认20,否则默认全部,非负整数 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **Arrearage** (list) - 标识欠费的数组,数组含有下列元素值, 1=国内流量有欠费 2=国外流量有欠费 3=国内带宽有欠费 4=国外带宽有欠费 + - **ChargeType** (int) - 当前计费方式,10=流量付费 20=带宽日峰值 30=按月后付费 + - **DomainList** (list) - 见 **DomainInfo** 模型定义 + - **LastChargeType** (int) - 表示最后一次切换的计费方式,10=流量付费 20=带宽日峰值 30=按月后付费 40=未选择计费方式 + - **MaxDomainNum** (int) - 最大域名数量,默认20 + - **TotalCount** (int) - 满足条件的域名个数 + - **Vip** (str) - vip标示,yes-是 no-否 + + **Response Model** + + **AccessConf** + + - **IpBlacklist** (str) - 多个ip用逗号隔开 + + **CacheConf** + + - **CacheBehavior** (bool) - 是否缓存,true为缓存,false为不缓存。为false的情况下,CacheTTL和CacheUnit强制不生效 + - **CacheTTL** (int) - 缓存时间 + - **CacheUnit** (str) - 缓存时间的单位。sec(秒),min(分钟),hour(小时),day(天) + - **Description** (str) - 缓存规则描述 + - **FollowOriginRule** (bool) - 是否优先遵循源站头部缓存策略,false为不优先遵循源站,true为优先遵循源站缓存头部。默认为false + - **HttpCodePattern** (str) - 状态码默认情况只缓存200类状态码,支持正则 + - **IgnoreQueryString** (bool) - 是否忽略参数缓存(false为不忽略,true为忽略,默认为false) + - **PathPattern** (str) - 路径模式,支持正则 + + **DomainInfo** + + - **AccessConf** (dict) - 见 **AccessConf** 模型定义 + - **AreaCode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **CacheConf** (list) - 见 **CacheConf** 模型定义 + - **CacheHost** (str) - 缓存Host,不同的域名可以配置为同一个CacheHost来实现缓存共享,默认为加速域名 + - **CdnProtocol** (str) - 加速类型http,http|https + - **CdnType** (str) - 加速域名的业务类型,web代表网站,stream代表视频,download代表下载。 + - **CertName** (str) - 证书名称 + - **Cname** (str) - cdn域名。创建加速域名生成的cdn域名,用于设置CNAME记录 + - **CreateTime** (int) - 域名创建的时间。格式:时间戳 + - **Domain** (str) - 域名,用户创建加速的域名 + - **DomainId** (str) - 域名id,创建域名时生成的id + - **HttpsStatusAbroad** (str) - 国外https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **HttpsStatusCn** (str) - 国内https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 + - **NullRefer** (bool) - ReferType为白名单时,NullRefer为false代表不允许NULL refer访问,为true代表允许Null refer访问 + - **OriginHost** (str) - 回源Http请求头部Host,默认是加速域名 + - **OriginIp** (list) - 源站ip即cdn服务器回源访问的ip地址。支持多个源站ip,多个源站ip,可表述为如:[1.1.1.1,2.2.2.2] + - **OriginPort** (int) - 回源端口 + - **OriginProtocol** (str) - 源站协议http,http|https 默认http + - **ReferList** (list) - Refer列表,支持正则表达式 + - **ReferStatus** (bool) - refer配置开关,true打开,false关闭 + - **ReferType** (int) - 0白名单,1黑名单 + - **Status** (str) - 创建的加速域名的当前的状态。check代表审核中,checkSuccess代表审核通过,checkFail代表审核失败,enable代表加速中,disable代表停止加速,delete代表删除加速 enableing代表正在开启加速,disableing代表正在停止加速中,deleteing代表删除中 + - **Tag** (str) - 业务组,默认为Default + - **TestUrl** (str) - 测试url,用于域名创建加速时的测试 + - **ValidTime** (int) - 开始分配Cname时间。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.BatchDescribeNewUcdnDomainRequestSchema().dumps(d) + + resp = self.invoke("BatchDescribeNewUcdnDomain", d, **kwargs) + return apis.BatchDescribeNewUcdnDomainResponseSchema().loads(resp)
+ +
[docs] def describe_new_ucdn_prefetch_cache_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeNewUcdnPrefetchCacheTask - 获取预取任务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Limit** (int) - 返回数据长度,默认全部,自然数 + - **Offset** (int) - 数据偏移量,默认为0,自然数 + - **Status** (str) - 需要获取的内容预热的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态 + - **TaskId** (list) - 提交任务时返回的任务ID + + **Response** + + - **TaskList** (list) - 见 **TaskInfo** 模型定义 + - **TotalCount** (int) - 预热任务的总数 + + **Response Model** + + **UrlProgressInfo** + + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **FinishTime** (int) - 任务完成时间。格式为Unix Timestamp + - **Progress** (int) - 刷新进度,单位% + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **Url** (str) - 刷新的单条url + + **TaskInfo** + + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **TaskId** (str) - 提交任务时返回的任务ID + - **Type** (str) - file/dir 刷新任务会返回Type,预取任务没有 + - **UrlLists** (list) - 见 **UrlProgressInfo** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.DescribeNewUcdnPrefetchCacheTaskRequestSchema().dumps(d) + + resp = self.invoke("DescribeNewUcdnPrefetchCacheTask", d, **kwargs) + return apis.DescribeNewUcdnPrefetchCacheTaskResponseSchema().loads(resp)
+ +
[docs] def describe_new_ucdn_refresh_cache_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeNewUcdnRefreshCacheTask - 获取域名刷新任务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Limit** (int) - 返回数据长度,默认全部,自然数 + - **Offset** (int) - 数据偏移量,默认为0,自然数 + - **Status** (str) - 需要获取的内容刷新的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态 + - **TaskId** (list) - 提交任务时返回的任务ID + + **Response** + + - **TaskList** (list) - 见 **TaskInfo** 模型定义 + - **TotalCount** (int) - 刷新任务的总数 + + **Response Model** + + **UrlProgressInfo** + + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **FinishTime** (int) - 任务完成时间。格式为Unix Timestamp + - **Progress** (int) - 刷新进度,单位% + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **Url** (str) - 刷新的单条url + + **TaskInfo** + + - **CreateTime** (int) - 刷新任务创建的时间。格式为Unix Timestamp + - **Status** (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 + - **TaskId** (str) - 提交任务时返回的任务ID + - **Type** (str) - file/dir 刷新任务会返回Type,预取任务没有 + - **UrlLists** (list) - 见 **UrlProgressInfo** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.DescribeNewUcdnRefreshCacheTaskRequestSchema().dumps(d) + + resp = self.invoke("DescribeNewUcdnRefreshCacheTask", d, **kwargs) + return apis.DescribeNewUcdnRefreshCacheTaskResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetNewUcdnDomainBandwidth - 获取域名带宽数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **BandwidthList** (list) - 见 **BandwidthInfo** 模型定义 + - **Traffic** (str) - 从起始时间到结束时间内的所使用的CDN总流量,单位GB + + **Response Model** + + **BandwidthInfo** + + - **CdnBandwidth** (str) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps(如果请求参数Type为0,则Value是五分钟粒度的带宽值,如果Type为1,则Value是1小时的带宽峰值,如果Type为2,则Value是一天内的带宽峰值) + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetNewUcdnDomainBandwidthRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainBandwidth", d, **kwargs) + return apis.GetNewUcdnDomainBandwidthResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_hit_rate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetNewUcdnDomainHitRate - 获取域名命中率 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **HitRateList** (list) - 见 **HitRateInfo** 模型定义 + + **Response Model** + + **HitRateInfo** + + - **FlowHitRate** (float) - 流量命中率,单位% + - **RequestHitRate** (float) - 请求数命中率,单位% + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetNewUcdnDomainHitRateRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHitRate", d, **kwargs) + return apis.GetNewUcdnDomainHitRateResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_http_code( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetNewUcdnDomainHttpCode - 获取域名状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **HttpCodeDetail** (list) - 见 **HttpCodeInfo** 模型定义 + + **Response Model** + + **HttpCodeInfo** + + - **HttpFiveXX** (int) - 5xx数量 + - **HttpFourXX** (int) - 4xx数量 + - **HttpOneXX** (int) - 1xx数量 + - **HttpThreeXX** (int) - 3xx数量 + - **HttpTwoXX** (int) - 2xx数量 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetNewUcdnDomainHttpCodeRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHttpCode", d, **kwargs) + return apis.GetNewUcdnDomainHttpCodeResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_http_code_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetNewUcdnDomainHttpCodeV2 - 获取域名详细状态码监控 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp。 + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp。 + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **HttpCodeV2Detail** (list) - 见 **HttpCodeV2Detail** 模型定义 + + **Response Model** + + **HttpCodeV2Detail** + + - **Http100** (int) - http100数量 + - **Http101** (int) - http101数量 + - **Http102** (int) - http102数量 + - **Http200** (int) - http200数量 + - **Http201** (int) - http201数量 + - **Http202** (int) - http202数量 + - **Http203** (int) - http203数量 + - **Http204** (int) - http204数量 + - **Http205** (int) - http205数量 + - **Http206** (int) - http206数量 + - **Http207** (int) - http207数量 + - **Http300** (int) - http300数量 + - **Http301** (int) - http301数量 + - **Http302** (int) - http302数量 + - **Http303** (int) - http303数量 + - **Http304** (int) - http304数量 + - **Http305** (int) - http305数量 + - **Http306** (int) - http306数量 + - **Http307** (int) - http307数量 + - **Http400** (int) - http400数量 + - **Http401** (int) - http401数量 + - **Http402** (int) - http402数量 + - **Http403** (int) - http403数量 + - **Http404** (int) - http404数量 + - **Http405** (int) - http405数量 + - **Http406** (int) - http406数量 + - **Http407** (int) - http407数量 + - **Http408** (int) - http408数量 + - **Http409** (int) - http409数量 + - **Http410** (int) - http410数量 + - **Http411** (int) - http411数量 + - **Http412** (int) - http412数量 + - **Http413** (int) - http413数量 + - **Http414** (int) - http414数量 + - **Http415** (int) - http415数量 + - **Http416** (int) - http416数量 + - **Http417** (int) - http417数量 + - **Http418** (int) - http418数量 + - **Http421** (int) - http421数量 + - **Http422** (int) - http422数量 + - **Http423** (int) - http423数量 + - **Http424** (int) - http424数量 + - **Http425** (int) - http425数量 + - **Http426** (int) - http426数量 + - **Http449** (int) - http449数量 + - **Http451** (int) - http451数量 + - **Http500** (int) - http500数量 + - **Http501** (int) - http501数量 + - **Http502** (int) - http502数量 + - **Http503** (int) - http503数量 + - **Http504** (int) - http504数量 + - **Http505** (int) - http505数量 + - **Http506** (int) - http506数量 + - **Http507** (int) - http507数量 + - **Http509** (int) - http509数量 + - **Http510** (int) - http510数量 + - **Time** (int) - 时间 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetNewUcdnDomainHttpCodeV2RequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainHttpCodeV2", d, **kwargs) + return apis.GetNewUcdnDomainHttpCodeV2ResponseSchema().loads(resp)
+ +
[docs] def get_new_ucdn_domain_request_num( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetNewUcdnDomainRequestNum - 获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **RequestList** (list) - 见 **RequestInfo** 模型定义 + + **Response Model** + + **RequestInfo** + + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **OriginRequest** (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetNewUcdnDomainRequestNumRequestSchema().dumps(d) + + resp = self.invoke("GetNewUcdnDomainRequestNum", d, **kwargs) + return apis.GetNewUcdnDomainRequestNumResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnDomainLog - 获取加速域名原始日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。 + - **DomainId** (list) - 域名ID,创建加速域名时生成。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + - **Type** (int) - 查询粒度 0=default(没有粒度) 1=按小时 2=按天 + + **Response** + + - **LogSet** (list) - 见 **LogSetList** 模型定义 + + **Response Model** + + **LogSetInfo** + + - **AbroadLog** (list) - 国外日志url列表 + - **CnLog** (list) - 国内日志url列表 + - **Time** (int) - 日志时间UnixTime + + **LogSetList** + + - **Domain** (str) - 域名 + - **Logs** (list) - 见 **LogSetInfo** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnDomainLogRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainLog", d, **kwargs) + return apis.GetUcdnDomainLogResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_prefetch_enable( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnDomainPrefetchEnable - 获取域名预取开启状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **DomainId** (str) - (Required) 域名ID,创建加速域名时生成。 + + **Response** + + - **Enable** (int) - 0表示该域名未开启预取,1表示该域名已开启预取 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnDomainPrefetchEnableRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainPrefetchEnable", d, **kwargs) + return apis.GetUcdnDomainPrefetchEnableResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_request_num_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnDomainRequestNumV2 - 获取域名请求数 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BeginTime** (int) - (Required) 查询的起始时间,格式为Unix Timestamp + - **EndTime** (int) - (Required) 查询的结束时间,格式为Unix Timestamp + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟) + - **Areacode** (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + + **Response** + + - **RequestList** (list) - 见 **RequestInfo** 模型定义 + + **Response Model** + + **RequestInfo** + + - **CdnRequest** (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 + - **OriginRequest** (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 + - **Time** (int) - 带宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnDomainRequestNumV2RequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainRequestNumV2", d, **kwargs) + return apis.GetUcdnDomainRequestNumV2ResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_domain_traffic( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnDomainTraffic - 获取加速域名流量使用信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Areacode** (str) - 查询流量区域 cn代表国内 abroad代表海外,默认全部区域。 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。 + - **DomainId** (list) - 域名ID,创建加速域名时生成。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **TrafficSet** (list) - 见 **UcdnDomainTrafficSet** 模型定义 + + **Response Model** + + **UcdnDomainTrafficSet** + + - **Time** (int) - 流量获取的时间点,格式为Unix Timestamp + - **Value** (float) - 查询每日流量总值,单位:GB + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnDomainTrafficRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnDomainTraffic", d, **kwargs) + return apis.GetUcdnDomainTrafficResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_pass_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnPassBandwidth - 获取回源带宽数据(cdn回客户源站部分) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度) + - **Areacode** (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内 + - **BeginTime** (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。 + - **DomainId** (list) - 域名id,创建域名时生成的id。默认全部域名 + - **EndTime** (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。 + + **Response** + + - **BandwidthDetail** (list) - 见 **BandwidthInfoDetail** 模型定义 + + **Response Model** + + **BandwidthInfoDetail** + + - **Bandwidth** (float) - 返回值带宽值数据。 + - **Time** (int) - 宽获取的时间点。格式:时间戳 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnPassBandwidthRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnPassBandwidth", d, **kwargs) + return apis.GetUcdnPassBandwidthResponseSchema().loads(resp)
+ +
[docs] def get_ucdn_traffic( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUcdnTraffic - 获取流量信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + + **Response** + + - **TrafficSet** (list) - 见 **TrafficSet** 模型定义 + + **Response Model** + + **TrafficSet** + + - **Areacode** (str) - 购买流量的区域, cn: 国内; abroad: 国外 + - **TrafficLeft** (str) - Areacode区域内总剩余流量, 单位GB + - **TrafficTotal** (str) - Areacode区域内总购买流量, 单位GB + - **TrafficUsed** (str) - Areacode区域内总使用流量, 单位GB + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.GetUcdnTrafficRequestSchema().dumps(d) + + resp = self.invoke("GetUcdnTraffic", d, **kwargs) + return apis.GetUcdnTrafficResponseSchema().loads(resp)
+ +
[docs] def prefetch_new_ucdn_domain_cache( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ PrefetchNewUcdnDomainCache - 提交预取任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **UrlList** (list) - (Required) 预热URL列表,n从自然数0开始。UrlList.n字段必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名 + + **Response** + + - **TaskId** (str) - 本次提交url对应的任务id + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.PrefetchNewUcdnDomainCacheRequestSchema().dumps(d) + + resp = self.invoke("PrefetchNewUcdnDomainCache", d, **kwargs) + return apis.PrefetchNewUcdnDomainCacheResponseSchema().loads(resp)
+ +
[docs] def refresh_new_ucdn_domain_cache( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RefreshNewUcdnDomainCache - 刷新缓存 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Type** (str) - (Required) 刷新类型,file代表文件刷新,dir 代表路径刷新 + - **UrlList** (list) - (Required) 刷新多个URL列表时,一次最多提交30个。必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名 + + **Response** + + - **TaskId** (str) - 本次提交url对应的任务id + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.RefreshNewUcdnDomainCacheRequestSchema().dumps(d) + + resp = self.invoke("RefreshNewUcdnDomainCache", d, **kwargs) + return apis.RefreshNewUcdnDomainCacheResponseSchema().loads(resp)
+ +
[docs] def switch_ucdn_charge_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ SwitchUcdnChargeType - 切换账号计费方式 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ChargeType** (str) - (Required) 计费方式。traffic代表按流量包计费,bandwidth按带宽付费 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.SwitchUcdnChargeTypeRequestSchema().dumps(d) + + resp = self.invoke("SwitchUcdnChargeType", d, **kwargs) + return apis.SwitchUcdnChargeTypeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ucloudstack/client.html b/docs/build/html/_modules/ucloud/services/ucloudstack/client.html new file mode 100644 index 00000000..c0753fb5 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ucloudstack/client.html @@ -0,0 +1,3459 @@ + + + + + + + + ucloud.services.ucloudstack.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ucloudstack.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ucloudstack.schemas import apis
+
+
+
[docs]class UCloudStackClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UCloudStackClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def allocate_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AllocateEIP - 申请外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Bandwidth** (int) - (Required) 带宽,默认值1,默认范围1~100 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Name** (str) - (Required) 名称 + - **OperatorName** (str) - (Required) 线路。目前支持Bgp + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **IP** (str) - 指定IP + - **IPVersion** (str) - IP版本,默认值IPv4,支持值:IPv4\IPv6 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **EIPID** (str) - 申请的EIP的ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AllocateEIPRequestSchema().dumps(d) + + resp = self.invoke("AllocateEIP", d, **kwargs) + return apis.AllocateEIPResponseSchema().loads(resp)
+ +
[docs] def attach_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AttachDisk - 绑定硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **ResourceType** (str) - (Required) 绑定的资源类型,枚举值:VM,标识虚拟机 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AttachDiskRequestSchema().dumps(d) + + resp = self.invoke("AttachDisk", d, **kwargs) + return apis.AttachDiskResponseSchema().loads(resp)
+ +
[docs] def attach_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """AttachNIC - 绑定UCloudStack网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 网卡ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.AttachNICRequestSchema().dumps(d) + + resp = self.invoke("AttachNIC", d, **kwargs) + return apis.AttachNICResponseSchema().loads(resp)
+ +
[docs] def bind_alarm_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindAlarmTemplate - 绑定告警模板 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **ResourceIDs** (list) - (Required) 【数组】告警模板ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关;EIP:弹性IP + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindAlarmTemplateRequestSchema().dumps(d) + + resp = self.invoke("BindAlarmTemplate", d, **kwargs) + return apis.BindAlarmTemplateResponseSchema().loads(resp)
+ +
[docs] def bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """BindEIP - 绑定外网 IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindEIPRequestSchema().dumps(d) + + resp = self.invoke("BindEIP", d, **kwargs) + return apis.BindEIPResponseSchema().loads(resp)
+ +
[docs] def bind_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindPhysicalIP - 绑定物理 IP ,被绑定的资源必须处于运行中或有效状态。 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindPhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("BindPhysicalIP", d, **kwargs) + return apis.BindPhysicalIPResponseSchema().loads(resp)
+ +
[docs] def bind_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindSecurityGroup - 绑定安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ResourceID** (str) - (Required) 绑定的资源ID。调用方式举例:ResourceID=“one-id”。 + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **NICType** (str) - 网卡类型,玫举值:WAN,外网;LAN,内网,默认为WAN + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.BindSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("BindSecurityGroup", d, **kwargs) + return apis.BindSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def clone_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CloneDisk - 克隆硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Name** (str) - (Required) 名称 + - **SrcID** (str) - (Required) 源硬盘ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 克隆出的硬盘ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CloneDiskRequestSchema().dumps(d) + + resp = self.invoke("CloneDisk", d, **kwargs) + return apis.CloneDiskResponseSchema().loads(resp)
+ +
[docs] def create_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCertificate - 创建证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Certificate** (str) - (Required) 证书内容 + - **CertificateType** (str) - (Required) 证书类型,枚举值["ServerCrt","CACrt"]。分别表示服务器证书和CA证书。只有在双向认证的时候才需要CA证书 + - **Name** (str) - (Required) 证书名称 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PrivateKey** (str) - 私钥内容,服务器证书必传,CA证书不用传递 + - **Remark** (str) - 证书描述 + + **Response** + + - **CertificateID** (str) - 证书ID + - **Message** (str) - 错误描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCertificateRequestSchema().dumps(d) + + resp = self.invoke("CreateCertificate", d, **kwargs) + return apis.CreateCertificateResponseSchema().loads(resp)
+ +
[docs] def create_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateCustomImage - 创建自制镜像 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ImageName** (str) - (Required) 镜像名称 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **ImageDescription** (str) - 镜像描述。 + + **Response** + + - **ImageID** (str) - 创建的自制镜像ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateCustomImageRequestSchema().dumps(d) + + resp = self.invoke("CreateCustomImage", d, **kwargs) + return apis.CreateCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateDisk - 创建硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DiskSpace** (int) - (Required) 磁盘大小 + - **Name** (str) - (Required) 磁盘名称 + - **SetType** (str) - (Required) 磁盘类型。例如:Normal,SSD + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 创建的磁盘ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateDiskRequestSchema().dumps(d) + + resp = self.invoke("CreateDisk", d, **kwargs) + return apis.CreateDiskResponseSchema().loads(resp)
+ +
[docs] def create_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateLB - 创建负载均衡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **LBType** (str) - (Required) 枚举值。LAN:内网,WAN:外网 + - **Name** (str) - (Required) 名称。 + - **SubnetID** (str) - (Required) LB 实例所在的子网 ID 。 + - **VMType** (str) - (Required) 运行负载均衡实例的主机机型。枚举值:如 Normal ,表示普通机型; SSD,表示 SSD 机型。(机型由平台管理员修改和指定,可参考获取主机机型接口) + - **VPCID** (str) - (Required) LB实例所在的 VPC ID 。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **EIPID** (str) - 外网IP的ID,创建外网LB时为必需 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + - **Remark** (str) - 描述。 + - **SGID** (str) - 安全组ID,创建外网LB时为必需 + + **Response** + + - **LBID** (str) - 返回创建的负载均衡ID + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateLBRequestSchema().dumps(d) + + resp = self.invoke("CreateLB", d, **kwargs) + return apis.CreateLBResponseSchema().loads(resp)
+ +
[docs] def create_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateNATGW - 创建NAT网关 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **EIPID** (str) - (Required) 外网IP的ID + - **Name** (str) - (Required) 名称。 + - **SGID** (str) - (Required) 安全组ID + - **SubnetID** (str) - (Required) NAT网关实例所在的子网 ID + - **VMType** (str) - (Required) 运行NAT网关实例的主机机型。枚举值:如 Normal ,表示普通机型; SSD,表示 SSD 机型。(机型由平台管理员修改和指定,可参考获取主机机型接口) + - **VPCID** (str) - (Required) NAT网关实例所在的 VPC ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + - **Remark** (str) - 描述 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **NATGWID** (str) - 返回创建的NAT网关ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWRequestSchema().dumps(d) + + resp = self.invoke("CreateNATGW", d, **kwargs) + return apis.CreateNATGWResponseSchema().loads(resp)
+ +
[docs] def create_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateNATGWRule - 添加NAT网关白名单 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BindResourceID** (str) - (Required) 绑定的虚拟机资源ID + - **NATGWID** (str) - (Required) NAT网关ID + - **NATGWType** (str) - (Required) NAT的类型。枚举值:SNAT,DNAT + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + - **RuleID** (str) - 白名单ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("CreateNATGWRule", d, **kwargs) + return apis.CreateNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def create_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateNIC - 创建网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Name** (str) - (Required) 名称 + - **SubnetID** (str) - (Required) Subnet ID + - **VPCID** (str) - (Required) VPC ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **IP** (str) - 指定IP + - **SGID** (str) - 安全组 ID + + **Response** + + - **Message** (str) - 返回信息描述。 + - **NICID** (str) - 创建的网卡 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateNICRequestSchema().dumps(d) + + resp = self.invoke("CreateNIC", d, **kwargs) + return apis.CreateNICResponseSchema().loads(resp)
+ +
[docs] def create_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreatePhysicalIP - 创建物理 IP ,需确保平台已配置物理 IP 线路相关信息及物理网络联通性。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Name** (str) - (Required) 物理IP名称,限制字符长度30 + - **OperatorName** (str) - (Required) 物理IP线路 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述 + + **Response** + + - **Message** (str) - 返回信息描述 + - **PhysicalIPID** (str) - 返回创建的物理IP的ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreatePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("CreatePhysicalIP", d, **kwargs) + return apis.CreatePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def create_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateRS - 为负载均衡的 VServer 添加后端服务节点。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BindResourceID** (str) - (Required) 服务节点的资源 ID ,仅支持添加与 LB 相同 VPC 的虚拟机资源 + - **LBID** (str) - (Required) 负载均衡ID + - **Port** (int) - (Required) 服务节点暴露的服务端口号 + - **VSID** (str) - (Required) VServer的ID + - **Weight** (int) - (Required) 服务节点的权重 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + - **RSID** (str) - 返回创建的RSID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateRSRequestSchema().dumps(d) + + resp = self.invoke("CreateRS", d, **kwargs) + return apis.CreateRSResponseSchema().loads(resp)
+ +
[docs] def create_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSecurityGroup - 创建安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Rule** (list) - (Required) 【数组】安全组规则。输入有效的规则,调用方式举例:Rule.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1”、Rule.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1” + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SGID** (str) - 创建的安全组ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("CreateSecurityGroup", d, **kwargs) + return apis.CreateSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def create_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSecurityGroupRule - 创建安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Rules** (list) - (Required) 【数组】安全组规则。输入有效的规则,调用方式举例:Rule.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1”、Rule.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1” + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SGRuleID** (str) - 创建的安全组规则ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("CreateSecurityGroupRule", d, **kwargs) + return apis.CreateSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def create_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSnapshot - 创建硬盘快照 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **DiskID** (str) - (Required) 硬盘ID,输入“有效”状态的ID + - **Name** (str) - (Required) 快照名称,限制字符长度30 + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Remark** (str) - 描述,限制字符长度100 + + **Response** + + - **Message** (str) - 返回信息描述 + - **SnapshotID** (str) - 创建的快照ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSnapshotRequestSchema().dumps(d) + + resp = self.invoke("CreateSnapshot", d, **kwargs) + return apis.CreateSnapshotResponseSchema().loads(resp)
+ +
[docs] def create_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateSubnet - 创建子网 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Network** (str) - (Required) 网段。列如:10.0.0.0/16; + - **VPCID** (str) - (Required) 所属VPCID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **SubnetID** (str) - 创建Subnet的ID; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateSubnetRequestSchema().dumps(d) + + resp = self.invoke("CreateSubnet", d, **kwargs) + return apis.CreateSubnetResponseSchema().loads(resp)
+ +
[docs] def create_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateUser - 管理员添加账号 + + **Request** + + - **PassWord** (str) - (Required) 账号密码。 + - **UserEmail** (str) - (Required) 账号邮箱。 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **UserID** (int) - 账户ID + + """ + # build request + d = {} + req and d.update(req) + d = apis.CreateUserRequestSchema().dumps(d) + + resp = self.invoke("CreateUser", d, **kwargs) + return apis.CreateUserResponseSchema().loads(resp)
+ +
[docs] def create_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVMInstance - 创建虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域或数据中心。枚举值:cn,表示中国; + - **BootDiskSetType** (str) - (Required) 系统盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **CPU** (int) - (Required) CPU个数,如1,2,4,8,16,32,64等。 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DataDiskSetType** (str) - (Required) 数据盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **ImageID** (str) - (Required) 镜像 ID。基础镜像 ID 或者自制镜像 ID。如:cn-image-centos-74。 + - **Memory** (int) - (Required) 内存容量,如1024,2048,4096,8192,16384,32768,65535等。 + - **Name** (str) - (Required) 虚拟机名称。可输入如:myVM。名称只能包含中英文、数字以及- _ .且1-30个字符。 + - **Password** (str) - (Required) 密码。可输入如:ucloud.cn。密码长度限6-30个字符;需要同时包含两项或以上(大写字母/小写字母/数字/特殊符号);windows不能包含用户名(administrator)中超过2个连续字符的部分。 + - **SubnetID** (str) - (Required) 虚拟机所属子网 ID。 + - **VMType** (str) - (Required) 虚拟机所在宿主机的集群类型,代表不同架构、不同型号的 CPU 或硬件特征。枚举值:Normal,表示普通;SSD,表示SSD。 + - **VPCID** (str) - (Required) 虚拟机所属 VPC ID。 + - **WANSGID** (str) - (Required) 外网安全组 ID。输入“有效”状态的安全组的ID。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Bandwidth** (str) - 创建虚拟机同时绑定外网 IP 的带宽。 + - **DataDiskSpace** (int) - 数据盘大小,单位 GB。默认值为0。范围:【0,8000】,步长10。 + - **GPU** (int) - GPU 卡核心的占用个数。枚举值:【1,2,4】。GPU与CPU、内存大小关系:CPU个数>=4*GPU个数,同时内存与CPU规格匹配. + - **IPVersion** (str) - 创建虚拟机同时绑定外网 IP 的 IP 版本。枚举值:IPv4 & IPv6,默认为 IPv4 + - **InternalIP** (str) - 指定内网IP。输入有效的指定内网 IP,不指定时系统将自动从子网分配 IP 地址。 + - **InternetIP** (str) - 手动指定虚拟机绑定外网 IP 的地址,IP地址必须包含在网段内。 + - **LANSGID** (str) - 内网安全组 ID。输入“有效”状态的安全组的ID。 + - **OperatorName** (str) - 创建虚拟机同时绑定外网 IP 的网段,可由管理员自定义。 + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **DiskID** (str) - 返回同时创建的数据盘 ID + - **EIPID** (str) - 返回同时创建的外网IP ID + - **Message** (str) - 返回信息描述。 + - **VMID** (str) - 返回创建的虚拟机 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("CreateVMInstance", d, **kwargs) + return apis.CreateVMInstanceResponseSchema().loads(resp)
+ +
[docs] def create_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateVPC - 创建VPC + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **Network** (str) - (Required) 网段。例如:10.0.0.0/16; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述; + - **VPCID** (str) - 创建的VPCID; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVPCRequestSchema().dumps(d) + + resp = self.invoke("CreateVPC", d, **kwargs) + return apis.CreateVPCResponseSchema().loads(resp)
+ +
[docs] def create_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """CreateVS - 创建负载均衡VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **HealthcheckType** (str) - (Required) 健康检查类型,枚举值,Port:端口,Path:域名。TCP和UDP协议只支持Port类型。 + - **LBID** (str) - (Required) 负载均衡ID + - **Port** (int) - (Required) VServer 的监听端口。端口范围为 1~65535 ,其中 323、9102、9103、9104、9105、60909、60910 被系统占用。 + - **Protocol** (str) - (Required) VServer 的监听协议。枚举值:支持 TCP、UDP、HTTP、HTTPS 四种协议转发。 + - **Scheduler** (str) - (Required) 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名,仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。 + - **Path** (str) - HTTP 健康检查的路径,健康检查类型为 HTTP 检查时为必填项。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,会话保持类型为Manual时为必填项,仅当 VServer 协议为 HTTP 时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值不生效,会话保持和选择的调度算法相关;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **SSLMode** (str) - SSL认证模式,HTTPS协议下必传,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份,仅当 VServer监听协议为 HTTPS时有效。 + + **Response** + + - **Action** (str) - 操作名称 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + - **VSID** (str) - 返回创建的VSID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVSRequestSchema().dumps(d) + + resp = self.invoke("CreateVS", d, **kwargs) + return apis.CreateVSResponseSchema().loads(resp)
+ +
[docs] def create_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateVSPolicy - 创建七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSIDs** (list) - (Required) 【数组】内容转发规则应用的服务节点的 ID,来源于 VServer 中添加的服务节点。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。域名和路径至少需要指定一项,且域名和路径的组合在一个 VServer 中必须唯一。 + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。域名和路径至少需要指定一项,且域名和路径的组合在一个 VServer 中必须唯一。 + + **Response** + + - **Message** (str) - 返回信息描述。 + - **PolicyID** (str) - 返回创建的内容转发规则ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("CreateVSPolicy", d, **kwargs) + return apis.CreateVSPolicyResponseSchema().loads(resp)
+ +
[docs] def delete_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCertificate - 删除证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CertificateID** (str) - (Required) 证书ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCertificateRequestSchema().dumps(d) + + resp = self.invoke("DeleteCertificate", d, **kwargs) + return apis.DeleteCertificateResponseSchema().loads(resp)
+ +
[docs] def delete_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteCustomImage - 删除自制镜像 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ImageID** (str) - (Required) 自制镜像ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteCustomImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteCustomImage", d, **kwargs) + return apis.DeleteCustomImageResponseSchema().loads(resp)
+ +
[docs] def delete_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteDisk - 删除硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 被删除的硬盘ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteDiskRequestSchema().dumps(d) + + resp = self.invoke("DeleteDisk", d, **kwargs) + return apis.DeleteDiskResponseSchema().loads(resp)
+ +
[docs] def delete_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteLB - 删除负载均衡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteLBRequestSchema().dumps(d) + + resp = self.invoke("DeleteLB", d, **kwargs) + return apis.DeleteLBResponseSchema().loads(resp)
+ +
[docs] def delete_natgw(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteNATGW - 删除NAT网关 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NATGWID** (str) - (Required) NAT网关ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGW", d, **kwargs) + return apis.DeleteNATGWResponseSchema().loads(resp)
+ +
[docs] def delete_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteNATGWRule - 删除NAT网关白名单 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NATGWID** (str) - (Required) nat网关ID + - **RuleID** (str) - (Required) 白名单ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("DeleteNATGWRule", d, **kwargs) + return apis.DeleteNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def delete_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteNIC - 删除网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 被删除的网卡 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteNICRequestSchema().dumps(d) + + resp = self.invoke("DeleteNIC", d, **kwargs) + return apis.DeleteNICResponseSchema().loads(resp)
+ +
[docs] def delete_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeletePhysicalIP - 删除物理IP + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回状态描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeletePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("DeletePhysicalIP", d, **kwargs) + return apis.DeletePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def delete_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteRS - 移除负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteRSRequestSchema().dumps(d) + + resp = self.invoke("DeleteRS", d, **kwargs) + return apis.DeleteRSResponseSchema().loads(resp)
+ +
[docs] def delete_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSecurityGroup - 删除安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteSecurityGroup", d, **kwargs) + return apis.DeleteSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def delete_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSecurityGroupRule - 删除安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **SGID** (str) - (Required) 安全组ID + - **SGRuleID** (str) - (Required) 安全组规则ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("DeleteSecurityGroupRule", d, **kwargs) + return apis.DeleteSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def delete_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSnapshot - 删除快照,仅支持状态为正常的快照进行删除操作。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **SnapshotID** (str) - (Required) 快照ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DeleteSnapshot", d, **kwargs) + return apis.DeleteSnapshotResponseSchema().loads(resp)
+ +
[docs] def delete_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteSubnet - 删除子网 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **SubnetID** (str) - (Required) SubnetID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteSubnet", d, **kwargs) + return apis.DeleteSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVMInstance - 删除虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。 枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID。输入有效的虚拟机 ID。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteVMInstance", d, **kwargs) + return apis.DeleteVMInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteVPC - 删除VPC + + **Request** + + - **Region** (str) - (Config) 地域。 + - **VPCID** (str) - (Required) ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVPCRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPC", d, **kwargs) + return apis.DeleteVPCResponseSchema().loads(resp)
+ +
[docs] def delete_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DeleteVS - 删除VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **VSID** (str) - (Required) 负载均衡VServer监听器ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVSRequestSchema().dumps(d) + + resp = self.invoke("DeleteVS", d, **kwargs) + return apis.DeleteVSResponseSchema().loads(resp)
+ +
[docs] def delete_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteVSPolicy - 删除七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **PolicyID** (str) - (Required) 内容转发规则ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("DeleteVSPolicy", d, **kwargs) + return apis.DeleteVSPolicyResponseSchema().loads(resp)
+ +
[docs] def describe_certificate( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeCertificate - 查询证书 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CertificateIDs** (list) - 证书ID列表 + - **CertificateType** (str) - 证书类型,枚举值["ServerCrt","CACrt"]。分别表示服务器证书和CA证书。 + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **Infos** (list) - 见 **CertificateInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 证书总个数 + + **Response Model** + + **BindVSInfo** + + - **LBID** (str) - LB ID + - **LBName** (str) - LB名称 + - **Port** (int) - VS的端口 + - **Protocol** (str) - VS的协议 + - **VSID** (str) - VS ID + + **CertificateInfo** + + - **CertificateContent** (str) - 证书内容 + - **CertificateID** (str) - 证书ID + - **CertificateType** (str) - 证书类型,枚举值["ServerCrt","CACrt"] + - **CommonName** (str) - 主域名 + - **CreateTime** (int) - 创建时间(平台创建时间) + - **ExpireTime** (int) - 证书内容的过期时间 + - **Fingerprint** (str) - 证书指纹 + - **Name** (str) - 证书名 + - **Privatekey** (str) - 私钥内容 + - **Region** (str) - 地域 + - **Remark** (str) - 证书描述 + - **SubjectAlternativeNames** (list) - 备域名 + - **VSInfos** (list) - 见 **BindVSInfo** 模型定义 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeCertificateRequestSchema().dumps(d) + + resp = self.invoke("DescribeCertificate", d, **kwargs) + return apis.DescribeCertificateResponseSchema().loads(resp)
+ +
[docs] def describe_disk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeDisk - 获取硬盘信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **DiskIDs** (list) - 【数组】磁盘的 ID。输入有效的 ID。调用方式举例:DiskIDs.0=“one-id”、DiskIDs.1=“two-id”。 + - **DiskType** (str) - 硬盘用途类型,默认空返回虚拟机所有硬盘,支持值:Boot(系统盘)、Data(数据盘) + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **DiskInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回磁盘总个数。 + + **Response Model** + + **DiskInfo** + + - **AttachResourceID** (str) - 绑定资源ID + - **ChargeType** (str) - 硬盘计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间。时间戳 + - **DiskID** (str) - 硬盘ID + - **DiskStatus** (str) - 硬盘状态。Creating:创建中,BeingCloned:正在被克隆中,Unbound:已解绑,Unbounding:解绑中,Bounding:绑定中,Bound:已绑定,Upgrading:升级中,Deleting:删除中,Deleted:已删除,Releasing:销毁中,Released:已销毁;Snapshoting(快照中);Rollbacking(回滚中) + - **DiskType** (str) - 硬盘用途类型,Boot(系统盘)、Data(数据盘) + - **ExpireTime** (int) - 过期时间。时间戳 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SetType** (str) - 磁盘类型。例如:Normal,SSD + - **Size** (int) - 大小。单位GB + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeDiskRequestSchema().dumps(d) + + resp = self.invoke("DescribeDisk", d, **kwargs) + return apis.DescribeDiskResponseSchema().loads(resp)
+ +
[docs] def describe_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeEIP - 获取外网IP的信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **BindResourceID** (str) - 绑定资源ID,查询该资源绑定的所有 EIP + - **EIPIDs** (list) - 【数组】外网的 ID。输入有效的 ID。调用方式举例:EIPIDs.0=“one-id”、EIPIDs.1=“two-id” + - **IPVersion** (str) - 版本,支持IPv4、IPv6 + - **Limit** (str) - 返回数据长度,默认为20,最大100。 + - **Offset** (str) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **EIPInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **Totalcount** (int) - 返回现有外网IP总数 + + **Response Model** + + **EIPInfo** + + - **Bandwidth** (int) - 带宽大小 + - **BindResourceID** (str) - 绑定资源ID + - **BindResourceType** (str) - 绑定资源类型 + - **CanDefaultGW** (int) - 所处线路是否为默认路由,1代表所处线路是默认路由;默认路由的可以设置成出口 + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间。时间戳 + - **EIPID** (str) - ID + - **ExpireTime** (int) - 过期时间。时间戳 + - **IP** (str) - 外网IP + - **IPVersion** (str) - IP版本,支持值:IPv4\IPv6 + - **ISDefaultGW** (int) - 是否为默认出口,1代表该IP地址为默认出口 + - **Name** (str) - 名称 + - **OperatorName** (str) - 线路 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **Status** (str) - 状态。Allocating:申请中,Free:未绑定,Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Deleted:已删除,Releasing:销毁中,Released:已销毁,BandwidthChanging:带宽修改中 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeEIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeEIP", d, **kwargs) + return apis.DescribeEIPResponseSchema().loads(resp)
+ +
[docs] def describe_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeImage - 获取镜像信息,包括默认镜像和自制镜像。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **ImageIDs** (list) - 【数组】镜像的 ID。输入有效的 ID。调用方式举例:ImageIDs.0=“one-id”、ImageIDs.1=“two-id”。 + - **ImageType** (str) - 镜像类型。枚举值:Base(基础镜像,平台默认提供的镜像),Custom(自制镜像,通过虚拟机导出的镜像) 。若该值为空,默认查询所有镜像。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Action** (str) - 操作名称 + - **Infos** (list) - 见 **ImageInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + - **TotalCount** (int) - 返回镜像的总个数。 + + **Response Model** + + **ImageInfo** + + - **CreateTime** (int) - 创建时间。时间戳。 + - **ImageID** (str) - 镜像ID + - **ImageStatus** (str) - 镜像状态。枚举类型:Making(创建中),Terminating(销毁中),Used(可用),Deleting(删除中),Deleted(已删除), Uploading(导入中), Failed(导入失败) + - **ImageType** (str) - 镜像类型。枚举类型:Base(基础镜像),Custom(自制镜像)。 + - **Name** (str) - 镜像名称 + - **OSDistribution** (str) - 镜像系统发行版本。例如:Centos, Ubuntu, Windows等 + - **OSName** (str) - 系统名称。例如:CentOS 7.4 x86_64 + - **OSType** (str) - 系统类型。例如:Linux, Windows,Kylin + - **Region** (str) - 地域 + - **SetArch** (str) - 架构名称。例如:x86_64 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeImage", d, **kwargs) + return apis.DescribeImageResponseSchema().loads(resp)
+ +
[docs] def describe_lb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeLB - 获取负载均衡信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **LBIDs** (list) - 【数组】负载均衡的 ID。调用方式举例:LBIDs.0=“one-id”、LBIDs.1=“two-id”。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetID** (str) - 子网ID + - **VPCID** (str) - VPCID + + **Response** + + - **Infos** (list) - 见 **LBInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回负载均衡总个数。 + + **Response Model** + + **LBInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **ChargeType** (str) - 虚拟机计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间,时间戳 + - **ExpireTime** (int) - 过期时间,时间戳 + - **LBID** (str) - 负载均衡ID + - **LBStatus** (str) - 状态。Creating:创建中,Running:运行中,Deleting:删除中,Deleted:已删除 + - **LBType** (str) - 负载均衡类型,枚举值,WAN:外网负载均衡,LAN:内网负载均衡。 + - **Name** (str) - 名称 + - **PrivateIP** (str) - 负载均衡的内网 IP 地址,当LB为外网类型时,该值为空。 + - **PublicIP** (str) - 负载均衡的外网 IP 地址,当LB为内网类型时,该值为空。 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **SGID** (str) - 安全组 ID ,当LB为内网类型时,该值为空。 + - **SubnetID** (str) - 子网ID + - **VPCID** (str) - VPCID + - **VSCount** (int) - VServer的数量 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeLBRequestSchema().dumps(d) + + resp = self.invoke("DescribeLB", d, **kwargs) + return apis.DescribeLBResponseSchema().loads(resp)
+ +
[docs] def describe_metric( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeMetric - 获取资源监控信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BeginTime** (str) - (Required) 开始时间。使用unix时间戳 + - **EndTime** (str) - (Required) 结束时间。使用Unix时间戳 + - **MetricName** (list) - (Required) 监控指标。1. 获取虚拟机监控信息调用举例,MetricName.0="CPUUtilization"、MetricName.0="MemUsage"。虚拟机监控指标枚举值:BlockProcessCount,表示阻塞进程数;CPUUtilization,表示CPU使用率;DiskReadOps,表示磁盘读次数;DiskWriteOps,表示磁盘写次数;IORead,表示磁盘读吞吐;IOWrite,表示磁盘写吞吐;LoadAvg,表示平均负载1分钟;MemUsage,表示内存使用率;NetPacketIn,表示网卡入包量;NetPacketOut,表示网卡出包量;NICIn,表示网卡入带宽;NICOut,表示网卡出带宽;SpaceUsage,表示空间使用率;TCPConnectCount,表示TCP连接数;2. EIP监控指标:NetPacketIn:入包量;NetPacketOut:出包量;NICIn:入带宽;NICOut:出带宽;NICOutUsage:出带宽使用率; + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机;EIP:弹性IP + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,中国; + + **Response** + + - **Infos** (list) - 见 **MetricInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回监控信息条数 + + **Response Model** + + **MetricSet** + + - **Timestamp** (int) - 监控时间 + - **Value** (float) - 监控值 + + **MetricInfo** + + - **Infos** (list) - 见 **MetricSet** 模型定义 + - **MetricName** (str) - 监控指标。虚拟机的监控指标枚举值为:BlockProcessCount,表示阻塞进程数;CPUUtilization,表示CPU使用率;DiskReadOps,表示磁盘读次数;DiskWriteOps,表示磁盘写次数;IORead,表示磁盘读吞吐;IOWrite,表示磁盘写吞吐;LoadAvg,表示平均负载1分钟;MemUsage,表示内存使用率;NetPacketIn,表示网卡入包量;NetPacketOut,表示网卡出包量;NICIn,表示网卡入带宽;NICOut,表示网卡出带宽;SpaceUsage,表示空间使用率;TCPConnectCount,表示TCP连接数; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeMetricRequestSchema().dumps(d) + + resp = self.invoke("DescribeMetric", d, **kwargs) + return apis.DescribeMetricResponseSchema().loads(resp)
+ +
[docs] def describe_natgw( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGW - 获取NAT网关信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **NATGWIDs** (list) - 【数组】NAT网关的 ID。调用方式举例:NATGWIDs.0=“one-id”、NATGWIDs.1=“two-id”。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **NATGWInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回NAT网关总个数 + + **Response Model** + + **NATGWInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 创建时间,时间戳 + - **EIP** (str) - 虚拟IP + - **ExpireTime** (int) - 过期时间,时间戳 + - **NATGWID** (str) - NAT网关ID + - **NATGWStatus** (str) - 状态。Creating:创建中, Running:运行中, Deleting:删除中, Deleted:已删除 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SGID** (str) - NAT网关绑定的安全组ID + - **SubnetID** (str) - NAT网关实例所在的子网 ID + - **VPCID** (str) - NAT网关实例所在的 VPC ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGW", d, **kwargs) + return apis.DescribeNATGWResponseSchema().loads(resp)
+ +
[docs] def describe_natgw_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeNATGWRule - 获取NAT网关白名单信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **NATGWID** (str) - (Required) NAT网关ID + - **NATGWType** (str) - (Required) NAT类型。枚举值:SNAT,DNAT + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **BindResourceIDs** (list) - 【数组】NAT网关白名单资源ID。调用方式举例:NATGWRules.0=“one-id”、NATGWRules.1=“two-id”。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **RuleIDs** (list) - 【数组】NAT网关白名单ID。调用方式举例:NATGWRules.0=“one-id”、NATGWRules.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **NATGWRuleInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回NAT网关白名单资源总个数。 + + **Response Model** + + **NATGWRuleInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **BindResourceType** (str) - 绑定资源的类型 + - **CreateTime** (int) - 创建时间,时间戳。 + - **IP** (str) - 白名单资源的内网IP地址 + - **NATGWID** (str) - NAT网关ID + - **NATGWType** (str) - nat网关类型 + - **Name** (str) - 添加的白名单资源名称 + - **RuleID** (str) - 白名单ID + - **RuleStatus** (str) - 状态。Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Unbound:已解绑 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNATGWRuleRequestSchema().dumps(d) + + resp = self.invoke("DescribeNATGWRule", d, **kwargs) + return apis.DescribeNATGWRuleResponseSchema().loads(resp)
+ +
[docs] def describe_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeNIC - 获取网卡信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **NICIDs** (list) - 【数组】网卡的 ID。输入有效的 ID。调用方式举例:NICIDs.0=“one-id”、NICIDs.1=“two-id”。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **NICInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回网卡总个数。 + + **Response Model** + + **NICInfo** + + - **BindResourceID** (str) - 绑定资源ID + - **CreateTime** (int) - 创建时间。时间戳 + - **IP** (str) - IP + - **MAC** (str) - mac 地址 + - **NICID** (str) - 网卡ID + - **NICStatus** (str) - 网卡状态。枚举值。Creating:创建中,Free:未绑定,Unbounding:解绑中,Bounding:绑定中,Bound:已绑定,BindSGing:绑定安全组中,UnbindSGing:解绑安全组中,UpdateSGing:更新安全组中,Deleting:删除中,Deleted:已删除,Releasing:销毁中,Released:已销毁 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **SGID** (str) - 安全组ID + - **SubnetID** (str) - Subnet ID + - **VPCID** (str) - VPC ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeNICRequestSchema().dumps(d) + + resp = self.invoke("DescribeNIC", d, **kwargs) + return apis.DescribeNICResponseSchema().loads(resp)
+ +
[docs] def describe_op_logs( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeOPLogs - 查询操作日志 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BeginTime** (int) - (Required) 开始时间 + - **EndTime** (int) - (Required) 结束时间 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **IsSuccess** (str) - 是否操作成功 + - **Limit** (int) - + - **Offset** (int) - + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型 + + **Response** + + - **Infos** (list) - 见 **OPLogInfo** 模型定义 + - **Message** (str) - 错误信息 + - **TotalCount** (int) - 总数 + + **Response Model** + + **OPLogInfo** + + - **CreateTime** (int) - 创建时间 + - **IsSuccess** (str) - 是否操作成功, Yes, No + - **OPLogsID** (str) - 日志ID + - **OPName** (str) - API + - **OPTime** (int) - 操作时间 + - **OpMessage** (str) - 错误信息 + - **Region** (str) - + - **ResourceID** (str) - 资源ID + - **ResourceType** (int) - 资源类型 + - **RetCode** (int) - 状态码 + - **UserEmail** (str) - 账号邮箱 + - **Zone** (str) - + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeOPLogsRequestSchema().dumps(d) + + resp = self.invoke("DescribeOPLogs", d, **kwargs) + return apis.DescribeOPLogsResponseSchema().loads(resp)
+ +
[docs] def describe_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribePhysicalIP - 获取物理IP信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (str) - 返回数据长度,默认为20,最大100。 + - **Offset** (str) - 列表起始位置偏移量,默认为0。 + - **PhysicalIPIDs** (list) - 【数组】物理IP的 ID。输入有效的 ID。调用方式举例:PhysicalIPIDs.0=“one-id”、PhysicalIPIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **PhysicalIPInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回现有物理IP总数 + + **Response Model** + + **PhysicalIPInfo** + + - **BindResourceID** (str) - 绑定资源ID + - **BindResourceType** (str) - 绑定资源类型 + - **CreateTime** (int) - 创建时间。时间戳 + - **IP** (str) - 物理IP + - **Name** (str) - 名称 + - **OperatorName** (str) - 线路 + - **PhysicalIPID** (str) - 物理IP的ID + - **Region** (str) - 地域 + - **Remark** (str) - 备注 + - **Status** (str) - 状态。Allocating:申请中,Free:未绑定,Bounding:绑定中,Bound:已绑定,Unbounding:解绑中,Deleted:已删除,Releasing:销毁中,Released:已销毁 + - **UpdateTime** (int) - 过期时间。时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribePhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("DescribePhysicalIP", d, **kwargs) + return apis.DescribePhysicalIPResponseSchema().loads(resp)
+ +
[docs] def describe_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeRS - 获取负载均衡服务的服务节点信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **RSIDs** (list) - 【数组】RServer的 ID。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + - **VSID** (str) - VServer的ID + + **Response** + + - **Infos** (list) - 见 **RSInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回该负载均衡下VServer的总个数。 + + **Response Model** + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRSRequestSchema().dumps(d) + + resp = self.invoke("DescribeRS", d, **kwargs) + return apis.DescribeRSResponseSchema().loads(resp)
+ +
[docs] def describe_recycled_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeRecycledResource - 查询回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **ResourceIDs** (list) - 【数组】资源ID,输入“有效”的ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **RecycledResourceInfo** 模型定义 + - **TotalCount** (int) - 返回回收站资源的总个数 + + **Response Model** + + **RecycledResourceInfo** + + - **CreateTime** (int) - 创建时间 + - **DeleteTime** (int) - 删除时间 + - **Description** (str) - 描述 + - **ExpireTime** (int) - 过期时间 + - **IsAutoTerminated** (bool) - 是否自动销户 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型:VM:虚拟机,Disk:硬盘,EIP:外网IP,PIP:物理IP,MySQL:数据库,Redis:缓存 + - **Status** (str) - 资源状态 + - **WillTerminateTime** (int) - 销毁时间 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeRecycledResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeRecycledResource", d, **kwargs) + return apis.DescribeRecycledResourceResponseSchema().loads(resp)
+ +
[docs] def describe_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSecurityGroup - 查询安全组信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SGIDs** (list) - 【数组】安全组的 ID。输入有效的 ID。调用方式举例:SGIDs.0=“one-id”、SGIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **SGInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 安全组的总数 + + **Response Model** + + **SGRuleInfo** + + - **DstPort** (str) - 端口号 + - **IsIn** (str) - 方向。1:入,0:出 + - **Priority** (str) - 优先级。HIGH:高,MEDIUM:中,LOW:低 + - **ProtocolType** (str) - 协议 + - **RuleAction** (str) - 动作。ACCEPT:接受,DROP:拒绝 + - **RuleID** (str) - 规则ID + - **SrcIP** (str) - IP或者掩码/段形式。10.0.0.2,10.0.10.10/16 + + **SGInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **ResourceCount** (int) - 资源绑定数量 + - **Rule** (list) - 见 **SGRuleInfo** 模型定义 + - **RuleCount** (int) - 规则数量 + - **SGID** (str) - 安全组ID + - **Status** (str) - 状态。Creating:创建中,Updating:更新中,Available:有效,Deleted:已删除,Terminating:销毁中,Terminated:已销毁 + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeSecurityGroup", d, **kwargs) + return apis.DescribeSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def describe_security_group_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSecurityGroupResource - 查询安全组绑定的资源信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **Infos** (list) - 见 **SGResourceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回资源总个数。 + + **Response Model** + + **SGResourceInfo** + + - **Name** (str) - 资源名称 + - **Region** (str) - 地域 + - **ResourceID** (str) - 资源ID + - **ResourceType** (str) - 资源类型 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSecurityGroupResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeSecurityGroupResource", d, **kwargs) + return apis.DescribeSecurityGroupResourceResponseSchema().loads(resp)
+ +
[docs] def describe_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSnapshot - 查询硬盘快照信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **DiskID** (str) - 硬盘ID,输入“有效”状态的ID + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SnapshotIDs** (list) - 【数组】快照ID,输入“有效”的ID。调用方式举例:SnapshotIDs.0=“one-id”、SnapshotIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **SnapshotInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回快照总个数 + + **Response Model** + + **SnapshotInfo** + + - **CreateTime** (int) - 快照创建时间 + - **DiskID** (str) - 快照对应的硬盘 ID + - **DiskType** (str) - 硬盘类型。枚举值:Boot,表示系统盘;Data,表示数据盘; + - **Name** (str) - 快照名称 + - **Region** (str) - 地域。枚举值: cn,表示中国; + - **Remark** (str) - 描述 + - **SnapshotID** (str) - 快照ID + - **SnapshotStatus** (str) - 快照状态。枚举值:Createing,表示制作中;Normal,表示正常;RollBacking,表示回滚中;Deleting,表示删除中;Deleted,表示已删除; + - **Zone** (str) - 可用区。枚举值:zone-01,表示中国; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DescribeSnapshot", d, **kwargs) + return apis.DescribeSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_storage_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeStorageType - 查询存储类型 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Infos** (list) - 见 **StorageTypeInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 存储类型的总数 + + **Response Model** + + **StorageTypeInfo** + + - **Region** (str) - 地域 + - **SetArch** (str) - 架构 + - **StorageType** (str) - 存储类型 + - **StorageTypeAlias** (str) - 存储类型别名 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeStorageTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeStorageType", d, **kwargs) + return apis.DescribeStorageTypeResponseSchema().loads(resp)
+ +
[docs] def describe_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeSubnet - 查询子网信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetIDs** (list) - 【数组】子网 ID。调用方式举例:SubnetIDs.0=“one-id”、SubnetIDs.1=“two-id” + - **VPCID** (str) - VPCID + + **Response** + + - **Infos** (list) - 见 **SubnetInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 子网的总数 + + **Response Model** + + **SubnetInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Deleting:删除中,Deleted:已删除 + - **SubnetID** (str) - ID + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnet", d, **kwargs) + return apis.DescribeSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_user( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUser - 查询租户信息 + + **Request** + + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **UserIDs** (list) - 【数组】租户的 ID。输入有效的 ID。调用方式举例:UserIDs.0=123”、UserIDs.1=456 + + **Response** + + - **Infos** (list) - 见 **UserInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回现有租户总数 + + **Response Model** + + **UserInfo** + + - **Amount** (float) - 账户余额 + - **CreateTime** (int) - 账户创建时间。时间戳 + - **Email** (str) - 租户名称 + - **PrivateKey** (str) - 私钥 + - **PublicKey** (str) - 公钥 + - **Status** (str) - 用户状态。USER_STATUS_AVAILABLE:正常,USER_STATUS_FREEZE:冻结 + - **UpdateTime** (int) - 更新时间。时间戳 + - **UserID** (int) - 租户ID. + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeUserRequestSchema().dumps(d) + + resp = self.invoke("DescribeUser", d, **kwargs) + return apis.DescribeUserResponseSchema().loads(resp)
+ +
[docs] def describe_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVMInstance - 查询虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域或数据中心。枚举值: cn,表示中国; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **SubnetID** (str) - 子网 ID。输入“有效”状态的子网 ID。 + - **VMIDs** (list) - 【数组】虚拟机的 ID。输入有效的 ID。调用方式举例:PrivateIp.0=“one-id”、PrivateIp.1=“two-id”。 + - **VPCID** (str) - VPC ID。输入“有效”状态的VPC ID。 + + **Response** + + - **Infos** (list) - 见 **VMInstanceInfo** 模型定义 + - **Message** (str) - 返回信息描述 + - **TotalCount** (int) - 返回虚拟机总个数 + + **Response Model** + + **VMDiskInfo** + + - **DiskID** (str) - 磁盘 ID + - **Drive** (str) - 磁盘盘符 + - **IsElastic** (str) - 是否是弹性磁盘。枚举值为:Y,表示是;N,表示否; + - **Name** (str) - 磁盘名称 + - **Size** (int) - 磁盘大小,单位 GB + - **Type** (str) - 磁盘类型。枚举值:Boot,表示系统盘;Data,表示数据盘; + + **VMIPInfo** + + - **IP** (str) - IP 值 + - **IPVersion** (str) - IP版本,支持值:IPv4\IPv6 + - **InterfaceID** (str) - 网卡 ID,IP 地址绑定的网卡 ID + - **IsElastic** (str) - 是否是弹性网卡。枚举值:Y,表示是;N,表示否; + - **MAC** (str) - MAC 地址值 + - **SGID** (str) - 安全组 ID + - **SGName** (str) - 安全组名称 + - **SubnetID** (str) - 子网 ID,IP 为外网 IP 时为空; + - **SubnetName** (str) - 子网名称,IP 为外网 IP 时为空; + - **Type** (str) - IP 类型。枚举值:Private,表示内网;Public,表示外网。 + - **VPCID** (str) - VPC ID,IP 为外网 IP 时为空; + - **VPCName** (str) - VPC 名称,IP 为外网 IP 时为空; + + **VMInstanceInfo** + + - **CPU** (int) - CPU 个数 + - **ChargeType** (str) - 虚拟机计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **CreateTime** (int) - 虚拟机创建时间 + - **DiskInfos** (list) - 见 **VMDiskInfo** 模型定义 + - **ExpireTime** (int) - 虚拟机过期时间 + - **IPInfos** (list) - 见 **VMIPInfo** 模型定义 + - **ImageID** (str) - 镜像 ID + - **Memory** (int) - 内存大小,单位 M + - **Name** (str) - 虚拟机名称 + - **OSName** (str) - 操作系统名称 + - **OSType** (str) - 操作系统类型 + - **Region** (str) - Region + - **Remark** (str) - 备注 + - **State** (str) - 虚拟机状态。枚举值:Initializing,表示初始化;Starting,表示启动中;Restarting,表示重启中;Running,表示运行;Stopping,表示关机中;Stopped,表示关机;Deleted,表示已删除;Resizing,表示修改配置中;Terminating,表示销毁中;Terminated,表示已销毁;Migrating,表示迁移中;WaitReinstall,表示等待重装系统;Reinstalling,表示重装中;Poweroffing,表示断电中;ChangeSGing,表示修改防火墙中; + - **SubnetID** (str) - 子网 ID + - **SubnetName** (str) - 子网 名称 + - **VMID** (str) - 虚拟机 ID + - **VMType** (str) - 虚拟机所在宿主机的集群类型 ID + - **VMTypeAlias** (str) - 虚拟机所在宿主机的集群类型名称 + - **VPCID** (str) - VPC ID + - **VPCName** (str) - VPC 名称 + - **Zone** (str) - Zone + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeVMInstance", d, **kwargs) + return apis.DescribeVMInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_vm_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVMType - 查询主机机型 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Infos** (list) - 见 **VMTypeInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - 主机机型的总数 + + **Response Model** + + **VMTypeInfo** + + - **Region** (str) - 地域 + - **SetArch** (str) - 架构 + - **VMType** (str) - 机型 + - **VMTypeAlias** (str) - 机型别名 + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVMTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeVMType", d, **kwargs) + return apis.DescribeVMTypeResponseSchema().loads(resp)
+ +
[docs] def describe_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVPC - 查询VPC信息 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Zone** (str) - (Required) 可用区。 + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **VPCIDs** (list) - 【数组】VPC的 ID。调用方式举例:VPCIDs.0=“one-id”、VPCIDs.1=“two-id” + + **Response** + + - **Infos** (list) - 见 **VPCInfo** 模型定义 + - **Message** (str) - 返回信息描述; + - **TotalCount** (int) - VPC的总数 + + **Response Model** + + **SubnetInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段 + - **Region** (str) - 地域 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Deleting:删除中,Deleted:已删除 + - **SubnetID** (str) - ID + - **UpdateTime** (int) - 更新时间,时间戳 + - **Zone** (str) - 可用区 + + **VPCInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Name** (str) - 名称 + - **Network** (str) - 网段,比如10.0.0.0/16 + - **Region** (str) - 地域。 + - **Remark** (str) - 描述 + - **State** (str) - 状态;Allocating:申请中,Available:有效,Terminating:销毁中,Terminated:已销毁 + - **SubnetCount** (int) - 该VPC下拥有的子网数目 + - **SubnetInfos** (list) - 见 **SubnetInfo** 模型定义 + - **UpdateTime** (int) - 修改时间,时间戳 + - **VPCID** (str) - VPC的ID + - **Zone** (str) - 可用区 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVPCRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPC", d, **kwargs) + return apis.DescribeVPCResponseSchema().loads(resp)
+ +
[docs] def describe_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DescribeVS - 获取负载均衡 VServer 信息 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **VSIDs** (list) - 【数组】VServer的 ID。调用方式举例:VSIDs.0=“one-id”、VSIDs.1=“two-id”。 + + **Response** + + - **Infos** (list) - 见 **VSInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回当前负载均衡 VServer 总个数。 + + **Response Model** + + **VSPolicyInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **LBID** (str) - 负载均衡ID + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **PolicyID** (str) - 内容转发规则ID + - **PolicyStatus** (str) - 状态,枚举值,Available:有效,Deleted:已删除 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServerID + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + **VSInfo** + + - **AlarmTemplateID** (str) - 告警模板ID + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名。仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **HealthcheckType** (str) - 负载均衡的健康检查类型。枚举值:Port:端口检查;Path: HTTP检查 。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。当 VServer 协议为 UDP 时,该值为空。 + - **LBID** (str) - VServer 所属的负载均衡 ID + - **Path** (str) - HTTP 健康检查的路径。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,仅当 VServer 协议为 HTTP 且会话保持为手动时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值为空;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **Port** (int) - 端口 + - **Protocol** (str) - 协议 + - **RSHealthStatus** (str) - 健康检查状态,枚举值,Empty:全部异常,Parts:部分异常,All:正常 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **SSLMode** (str) - SSL认证模式,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **Scheduler** (str) - 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份。仅当 VServer监听协议为 HTTPS 时有效。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServer的ID + - **VSPolicyInfos** (list) - 见 **VSPolicyInfo** 模型定义 + - **VSStatus** (str) - VServer 的资源状态。枚举值,Available:可用,Updating:更新中,Deleted:已删除 。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVSRequestSchema().dumps(d) + + resp = self.invoke("DescribeVS", d, **kwargs) + return apis.DescribeVSResponseSchema().loads(resp)
+ +
[docs] def describe_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeVSPolicy - 获取七层负载均衡内容转发规则信息,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Limit** (int) - 返回数据长度,默认为20,最大100。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + - **PolicyIDs** (list) - 【数组】七层负载均衡内容转发规则的 ID。调用方式举例:PolicyIDs.0=“one-id”、PolicyIDs.1=“two-id” + - **VSID** (str) - VServerID + + **Response** + + - **Infos** (list) - 见 **VSPolicyInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + - **TotalCount** (int) - 返回内容转发规则的总个数。 + + **Response Model** + + **RSInfo** + + - **BindResourceID** (str) - 绑定的资源ID + - **CreateTime** (int) - 创建时间,时间戳 + - **IP** (str) - 服务节点的内网 IP 地址 + - **LBID** (str) - 服务节点所属的负载均衡 ID + - **Name** (str) - 服务节点的资源名称 + - **Port** (int) - 服务节点暴露的服务端口号 + - **RSID** (str) - 服务节点的 ID + - **RSMode** (str) - 节点模式。枚举值,Enabling:开启中,Enable:已启用,Disabling:禁用中,Disable:已禁用 + - **RSStatus** (str) - RSStatus 的描述修改为:状态,枚举值,Creating:创建中,Inactive:无效,Active:有效,Updating:更新中,Deleting:删除中,Deleted:已删除。其中有效代表节点服务健康,无效代表节点服务异常。 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - 服务节点所属的 VServer ID + - **Weight** (int) - 服务节点的权重 + + **VSPolicyInfo** + + - **CreateTime** (int) - 创建时间,时间戳 + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **LBID** (str) - 负载均衡ID + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **PolicyID** (str) - 内容转发规则ID + - **PolicyStatus** (str) - 状态,枚举值,Available:有效,Deleted:已删除 + - **RSInfos** (list) - 见 **RSInfo** 模型定义 + - **UpdateTime** (int) - 更新时间,时间戳 + - **VSID** (str) - VServerID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("DescribeVSPolicy", d, **kwargs) + return apis.DescribeVSPolicyResponseSchema().loads(resp)
+ +
[docs] def detach_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DetachDisk - 解绑硬盘 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DetachDiskRequestSchema().dumps(d) + + resp = self.invoke("DetachDisk", d, **kwargs) + return apis.DetachDiskResponseSchema().loads(resp)
+ +
[docs] def detach_nic(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DetachNIC - 解绑UClouStack网卡 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **NICID** (str) - (Required) 网卡ID + - **ResourceID** (str) - (Required) 绑定的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DetachNICRequestSchema().dumps(d) + + resp = self.invoke("DetachNIC", d, **kwargs) + return apis.DetachNICResponseSchema().loads(resp)
+ +
[docs] def disable_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """DisableRS - 禁用负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.DisableRSRequestSchema().dumps(d) + + resp = self.invoke("DisableRS", d, **kwargs) + return apis.DisableRSResponseSchema().loads(resp)
+ +
[docs] def enable_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """EnableRS - 启用负载均衡的单个服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.EnableRSRequestSchema().dumps(d) + + resp = self.invoke("EnableRS", d, **kwargs) + return apis.EnableRSResponseSchema().loads(resp)
+ +
[docs] def get_disk_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetDiskPrice - 获取硬盘价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DiskSpace** (int) - (Required) 磁盘大小 + - **SetType** (str) - (Required) 磁盘类型 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetDiskPriceRequestSchema().dumps(d) + + resp = self.invoke("GetDiskPrice", d, **kwargs) + return apis.GetDiskPriceResponseSchema().loads(resp)
+ +
[docs] def get_eip_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetEIPPrice - 获取外网IP价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **Bandwidth** (int) - (Required) 带宽,默认值1,默认范围1~100 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **OpertatorName** (str) - (Required) 线路。目前支持Bgp + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetEIPPriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPrice", d, **kwargs) + return apis.GetEIPPriceResponseSchema().loads(resp)
+ +
[docs] def get_vm_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetVMInstancePrice - 获取虚拟机价格 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **BootDiskSetType** (str) - (Required) 系统盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **CPU** (int) - (Required) CPU 个数,目前只能输入数据库配置指定规格参数,如:1核2048M、2核4096M、4核8192M、8核16384M、16核32768M。 + - **ChargeType** (str) - (Required) 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **DataDiskSetType** (str) - (Required) 数据盘类型。枚举值:Normal,表示普通;SSD,表示SSD; + - **DataDiskSpace** (int) - (Required) 数据盘大小,单位 GB。默认值为0。范围:【0,8000】,步长10。 + - **ImageID** (str) - (Required) 镜像 ID。基础镜像 ID 或者自制镜像 ID。如:cn-image-centos-74。 + - **Memory** (int) - (Required) 内存大小,单位 M。目前只能输入数据库配置指定规格参数,如:1核2048M、2核4096M、4核8192M、8核16384M、16核32768M。 + - **OSType** (str) - (Required) 系统类型。 + - **VMType** (str) - (Required) 机型。枚举值:Normal,表示普通;SSD,表示SSD; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **GPU** (int) - GPU 卡核心的占用个数。枚举值:【1,2,4】。GPU与CPU、内存大小关系:CPU个数>=4*GPU个数,同时内存与CPU规格匹配. + - **Quantity** (int) - 购买时长。默认值1。小时不生效,月范围【1,11】,年范围【1,5】。 + + **Response** + + - **Infos** (list) - 见 **PriceInfo** 模型定义 + - **Message** (str) - 返回信息描述。 + + **Response Model** + + **PriceInfo** + + - **ChargeType** (str) - 计费模式。枚举值:Dynamic,表示小时;Month,表示月;Year,表示年; + - **Price** (float) - 价格 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetVMInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("GetVMInstancePrice", d, **kwargs) + return apis.GetVMInstancePriceResponseSchema().loads(resp)
+ +
[docs] def modify_eip_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyEIPBandwidth - 调整外网IP带宽 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **Bandwidth** (int) - (Required) 调整后的带宽 + - **EIPID** (str) - (Required) 外网IP的ID + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyEIPBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPBandwidth", d, **kwargs) + return apis.ModifyEIPBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_name_and_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyNameAndRemark - 修改资源名称和备注 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Name** (str) - (Required) 名称; + - **ResourceID** (str) - (Required) 资源ID; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Remark** (str) - 描述; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyNameAndRemarkRequestSchema().dumps(d) + + resp = self.invoke("ModifyNameAndRemark", d, **kwargs) + return apis.ModifyNameAndRemarkResponseSchema().loads(resp)
+ +
[docs] def poweroff_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffVMInstance - 断电虚拟机,可能导致丢失数据甚至损坏操作系统,仅适用于虚拟机死机及级端测试场景。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.PoweroffVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("PoweroffVMInstance", d, **kwargs) + return apis.PoweroffVMInstanceResponseSchema().loads(resp)
+ +
[docs] def recharge(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """Recharge - 管理员给租户充值 + + **Request** + + - **Amount** (int) - (Required) 充值金额。最少100,最大500000 + - **FromType** (str) - (Required) 充值来源。INPOUR_FROM_ALIPAY:支付宝,INPOUR_FROM_OFFLINE:银行转账,INPOUR_FROM_SINPAY:新浪支付,INPOUR_FROM_WECHAT_PAY:微信转账。 + - **SerialNo** (str) - (Required) 充值单号。充值方式为“账户余额”时为必要参数。 + - **UserID** (int) - (Required) 租户的账户ID。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = {} + req and d.update(req) + d = apis.RechargeRequestSchema().dumps(d) + + resp = self.invoke("Recharge", d, **kwargs) + return apis.RechargeResponseSchema().loads(resp)
+ +
[docs] def reinstall_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallVMInstance - 重装系统,关机的虚拟机才可以重装系统 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ImageID** (str) - (Required) 镜像ID + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReinstallVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("ReinstallVMInstance", d, **kwargs) + return apis.ReinstallVMInstanceResponseSchema().loads(resp)
+ +
[docs] def release_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ReleaseEIP - 删除外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国 + + **Response** + + - **Message** (str) - 返回状态描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ReleaseEIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseEIP", d, **kwargs) + return apis.ReleaseEIPResponseSchema().loads(resp)
+ +
[docs] def renew_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RenewResource - 续费回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **ResourceID** (str) - (Required) 待续续的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + - **Quantity** (int) - 购买时长,默认为 1。按小时(Dynamic)付费的资源无需此参数,按月付费的资源传 0 时,代表购买至月末。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RenewResourceRequestSchema().dumps(d) + + resp = self.invoke("RenewResource", d, **kwargs) + return apis.RenewResourceResponseSchema().loads(resp)
+ +
[docs] def reset_vm_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetVMInstancePassword - 重置虚拟机密码,主机必须开机才可以重置密码 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Password** (str) - (Required) 密码 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetVMInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ResetVMInstancePassword", d, **kwargs) + return apis.ResetVMInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def resize_vm_config( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResizeVMConfig - 修改虚拟机配置 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **CPU** (int) - (Required) CPU 个数,如 1、2、4、8、16、32、64。 + - **Memory** (int) - (Required) 内存容量,如 2048、4096、8192、16384、32768、65536、131072。 + - **VMID** (str) - (Required) 虚拟机ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResizeVMConfigRequestSchema().dumps(d) + + resp = self.invoke("ResizeVMConfig", d, **kwargs) + return apis.ResizeVMConfigResponseSchema().loads(resp)
+ +
[docs] def restart_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartVMInstance - 重启虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机ID; + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartVMInstance", d, **kwargs) + return apis.RestartVMInstanceResponseSchema().loads(resp)
+ +
[docs] def rollback_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RollbackResource - 恢复回收站资源 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **ResourceID** (str) - (Required) 待恢复的资源ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RollbackResourceRequestSchema().dumps(d) + + resp = self.invoke("RollbackResource", d, **kwargs) + return apis.RollbackResourceResponseSchema().loads(resp)
+ +
[docs] def rollback_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RollbackSnapshot - 将某个快照内的数据回滚到原云硬盘,仅支持正常状态的快照进行回滚操作,回滚时硬盘必须处于未绑定或其挂载的主机为关机状态。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:如 cn,表示中国。 + - **DiskID** (str) - (Required) 对应的云硬盘 ID; + - **SnapshotID** (str) - (Required) 快照ID + - **Zone** (str) - (Required) 可用区。枚举值:如 zone-01,表示可用区1。 + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.RollbackSnapshotRequestSchema().dumps(d) + + resp = self.invoke("RollbackSnapshot", d, **kwargs) + return apis.RollbackSnapshotResponseSchema().loads(resp)
+ +
[docs] def start_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartVMInstance - 开启虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartVMInstance", d, **kwargs) + return apis.StartVMInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_vm_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopVMInstance - 关闭虚拟机 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **VMID** (str) - (Required) 虚拟机 ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + - **VMID** (str) - 虚拟机 ID + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopVMInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopVMInstance", d, **kwargs) + return apis.StopVMInstanceResponseSchema().loads(resp)
+ +
[docs] def terminate_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """TerminateResource - 销毁资源 + + **Request** + + - **Region** (str) - (Config) 地域。 + - **ResourceID** (str) - (Required) 资源id + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.TerminateResourceRequestSchema().dumps(d) + + resp = self.invoke("TerminateResource", d, **kwargs) + return apis.TerminateResourceResponseSchema().loads(resp)
+ +
[docs] def un_bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UnBindEIP - 解绑外网IP + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国;中国 + - **EIPID** (str) - (Required) 外网IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnBindEIPRequestSchema().dumps(d) + + resp = self.invoke("UnBindEIP", d, **kwargs) + return apis.UnBindEIPResponseSchema().loads(resp)
+ +
[docs] def un_bind_security_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnBindSecurityGroup - 解绑安全组 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **ResourceID** (str) - (Required) 解绑的资源ID。调用方式举例:ResourceID=“one-id”。 + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnBindSecurityGroupRequestSchema().dumps(d) + + resp = self.invoke("UnBindSecurityGroup", d, **kwargs) + return apis.UnBindSecurityGroupResponseSchema().loads(resp)
+ +
[docs] def unbind_alarm_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnbindAlarmTemplate - 解绑告警模板 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **ResourceIDs** (list) - (Required) 【数组】资源的 ID。调用方式举例:ResourceIDs.0=“one-id”、ResourceIDs.1=“two-id”。 + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机, LB:负载均衡, NATGW:nat网关;EIP:弹性网卡 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnbindAlarmTemplateRequestSchema().dumps(d) + + resp = self.invoke("UnbindAlarmTemplate", d, **kwargs) + return apis.UnbindAlarmTemplateResponseSchema().loads(resp)
+ +
[docs] def unbind_physical_ip( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnbindPhysicalIP - 解绑物理IP + + **Request** + + - **Region** (str) - (Config) 地域。 + - **PhysicalIPID** (str) - (Required) 物理IP的ID + - **ResourceID** (str) - (Required) 资源ID + - **ResourceType** (str) - (Required) 资源类型。VM:虚拟机 + - **Zone** (str) - (Required) 可用区。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UnbindPhysicalIPRequestSchema().dumps(d) + + resp = self.invoke("UnbindPhysicalIP", d, **kwargs) + return apis.UnbindPhysicalIPResponseSchema().loads(resp)
+ +
[docs] def update_alarm_template_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateAlarmTemplateRule - 更新告警模板规则 + + **Request** + + - **Region** (str) - (Config) 地域 + - **AlarmStrategy** (str) - (Required) 瘦脸策略 + - **AlarmTemplateID** (str) - (Required) 告警模板ID + - **AlarmTemplateRuleID** (str) - (Required) 告警规则ID + - **Compare** (str) - (Required) 对比方式 + - **ContactGroupID** (str) - (Required) 通知组ID + - **MetricName** (str) - (Required) 监控指标名称 + - **ResourceType** (str) - (Required) 资源类型 + - **Threshold** (str) - (Required) 告警阈值 + - **TriggerCount** (str) - (Required) 连续触发次数 + - **Zone** (str) - (Required) 可用区 + + **Response** + + - **Message** (str) - 返回描述信息 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateAlarmTemplateRuleRequestSchema().dumps(d) + + resp = self.invoke("UpdateAlarmTemplateRule", d, **kwargs) + return apis.UpdateAlarmTemplateRuleResponseSchema().loads(resp)
+ +
[docs] def update_rs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpdateRS - 修改负载均衡的服务节点 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **RSID** (str) - (Required) RServer的ID + - **VSID** (str) - (Required) RServer所属的VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Port** (int) - 端口号 + - **Weight** (int) - 权重 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateRSRequestSchema().dumps(d) + + resp = self.invoke("UpdateRS", d, **kwargs) + return apis.UpdateRSResponseSchema().loads(resp)
+ +
[docs] def update_security_group_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateSecurityGroupRule - 修改安全组规则 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值: cn,表示中国; + - **Rules** (list) - (Required) 【数组】规则。输入有效的 规则。调用方式举例:Rules.0=“TCP|23|0.0.0.0/0|ACCEPT|HIGH|1|sg_rule-wefvg34f”、Rules.1=“TCP|55|0.0.0.0/0|ACCEPT|HIGH|1|sg_rule-wefvggf” + - **SGID** (str) - (Required) 安全组ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Message** (str) - 返回信息描述; + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateSecurityGroupRuleRequestSchema().dumps(d) + + resp = self.invoke("UpdateSecurityGroupRule", d, **kwargs) + return apis.UpdateSecurityGroupRuleResponseSchema().loads(resp)
+ +
[docs] def update_vs(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpdateVS - 修改负载均衡VServer + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) VServer 监听器所属的负载均衡 ID + - **VSID** (str) - (Required) 需要更新的VSID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **CACertificateID** (str) - CA证书ID,用于验证客户端证书的签名,仅当VServer监听协议为 HTTPS 且 SSLMode 为双向认证时有效。 + - **Domain** (str) - HTTP 健康检查时校验请求的 HOST 字段中的域名。当健康检查类型为端口检查时,该值为空。 + - **HealthcheckType** (str) - 负载均衡的健康检查类型。枚举值:Port:端口检查;Path: HTTP检查 。仅当 VServer 协议类型为 HTTP 时,才可进行 HTTP 检查。 + - **KeepaliveTimeout** (int) - 负载均衡的连接空闲超时时间,单位为秒,默认值为 60s 。当 VServer 协议为 UDP 时,该值为空。 + - **Path** (str) - HTTP 健康检查的路径,健康检查类型为 HTTP 检查时为必填项。当健康检查类型为端口检查时,该值为空。 + - **PersistenceKey** (str) - 会话保持KEY,会话保持类型为Manual时为必填项,仅当 VServer 协议为 HTTP 时有效。 + - **PersistenceType** (str) - 会话保持类型。枚举值:None:关闭;Auto:自动生成;Manual:手动生成 。当协议为 TCP 时,该值不生效,会话保持和选择的调度算法相关;当协议为 UDP 时 Auto 表示开启会话保持 。 + - **Port** (int) - VServer 监听端口 + - **SSLMode** (str) - SSL认证模式,HTTPS协议下必传,取值范围["simplex","duplex"]分别表示单向认证和双向认证。 + - **Scheduler** (str) - 负载均衡的调度算法。枚举值:wrr:加权轮训;least_conn:最小连接数;hash:原地址,四层lb使用。ip_hash:七层lb使用 + - **ServerCertificateID** (str) - 服务器证书ID,用于证明服务器的身份,仅当 VServer监听协议为 HTTPS 时有效。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVSRequestSchema().dumps(d) + + resp = self.invoke("UpdateVS", d, **kwargs) + return apis.UpdateVSResponseSchema().loads(resp)
+ +
[docs] def update_vs_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateVSPolicy - 更新七层负载均衡内容转发规则,仅当 VServer 的监听协议为 HTTP 时有效。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **LBID** (str) - (Required) 负载均衡ID + - **PolicyID** (str) - (Required) 内容转发规则ID + - **VSID** (str) - (Required) VServer的ID + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + - **Domain** (str) - 内容转发规则关联的请求域名,值可为空,即代表仅匹配路径。 + - **Path** (str) - 内容转发规则关联的请求访问路径,如 "/" 。 + - **RSIDs** (list) - 【数组】RServer的 ID。调用方式举例:RSIDs.0=“one-id”、RSIDs.1=“two-id”。 + + **Response** + + - **Message** (str) - 返回信息描述。 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateVSPolicyRequestSchema().dumps(d) + + resp = self.invoke("UpdateVSPolicy", d, **kwargs) + return apis.UpdateVSPolicyResponseSchema().loads(resp)
+ +
[docs] def upgrade_disk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """UpgradeDisk - 扩容硬盘,为保证数据完整性,容量扩容前建议暂停对当前硬盘的所有文件系统读写操作,并进入操作系统进行 `umount ` 或`脱机` 操作。 + + **Request** + + - **Region** (str) - (Config) 地域。枚举值:cn,表示中国; + - **DiskID** (str) - (Required) 硬盘ID + - **DiskSpace** (int) - (Required) 硬盘升级后的容量, 不能小于原硬盘容量,单位为 GB 。 + - **Zone** (str) - (Required) 可用区。枚举值:zone-01,表示中国; + + **Response** + + - **Action** (str) - 操作名称 + - **Message** (str) - 返回信息描述。 + - **RetCode** (int) - 返回码 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeDiskRequestSchema().dumps(d) + + resp = self.invoke("UpgradeDisk", d, **kwargs) + return apis.UpgradeDiskResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/udb/client.html b/docs/build/html/_modules/ucloud/services/udb/client.html new file mode 100644 index 00000000..1ed9bedc --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/udb/client.html @@ -0,0 +1,1629 @@ + + + + + + + ucloud.services.udb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udb.schemas import apis
+
+
+
[docs]class UDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def backup_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ BackupUDBInstance - 备份UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份名称 + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **BackupMethod** (str) - 使用的备份方式。(快照备份即物理备份。注意只有SSD版本的mysql实例支持设置为snapshot) + - **Blacklist** (str) - 备份黑名单列表,以 ; 分隔。注意:只有逻辑备份下备份黑名单才生效,快照备份备份黑名单下无效 + - **ForceBackup** (bool) - true表示逻辑备份时是使用 --force 参数,false表示不使用 --force 参数。物理备份此参数无效。 + - **UseBlacklist** (bool) - 是否使用黑名单备份,默认false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BackupUDBInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("BackupUDBInstance", d, **kwargs) + return apis.BackupUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_binlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ BackupUDBInstanceBinlog - 备份UDB指定时间段的binlog列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupFile** (str) - (Required) 需要备份文件,可通过DescribeUDBInstanceBinlog获得 如果要传入多个文件名,以空格键分割,用单引号包含. + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **BackupName** (str) - DB备份文件名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BackupUDBInstanceBinlogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceBinlog", d, **kwargs) + return apis.BackupUDBInstanceBinlogResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_error_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ BackupUDBInstanceErrorLog - 备份UDB指定时间段的errorlog + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份名称 + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BackupUDBInstanceErrorLogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceErrorLog", d, **kwargs) + return apis.BackupUDBInstanceErrorLogResponseSchema().loads(resp)
+ +
[docs] def backup_udb_instance_slow_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ BackupUDBInstanceSlowLog - 备份UDB指定时间段的slowlog分析结果 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupName** (str) - (Required) 备份文件名称 + - **BeginTime** (int) - (Required) 过滤条件:起始时间(时间戳) + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **EndTime** (int) - (Required) 过滤条件:结束时间(时间戳) + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BackupUDBInstanceSlowLogRequestSchema().dumps(d) + + resp = self.invoke("BackupUDBInstanceSlowLog", d, **kwargs) + return apis.BackupUDBInstanceSlowLogResponseSchema().loads(resp)
+ +
[docs] def check_recover_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CheckRecoverUDBInstance - 核查db是否可以使用回档功能 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SrcDBId** (str) - (Required) 源实例的Id(只支持普通版DB不支持高可用) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **LastestTime** (int) - 核查成功返回值为可以回档到的最近时刻,核查失败不返回 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CheckRecoverUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("CheckRecoverUDBInstance", d, **kwargs) + return apis.CheckRecoverUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def check_udb_instance_to_ha_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CheckUDBInstanceToHAAllowance - 核查db是否可以升级为高可用 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + + **Response** + + - **Allowance** (str) - Yes ,No ,Yes即可以升级,No为不可以升级 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CheckUDBInstanceToHAAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckUDBInstanceToHAAllowance", d, **kwargs) + return apis.CheckUDBInstanceToHAAllowanceResponseSchema().loads(resp)
+ +
[docs] def clear_udb_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ClearUDBLog - 清除UDB实例的log + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取 + - **LogType** (int) - (Required) 日志类型,10-error(暂不支持)、20-slow(暂不支持 )、30-binlog + - **BeforeTime** (int) - 删除时间点(至少前一天)之前log,采用时间戳(秒),默认当 前时间点前一天 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ClearUDBLogRequestSchema().dumps(d) + + resp = self.invoke("ClearUDBLog", d, **kwargs) + return apis.ClearUDBLogResponseSchema().loads(resp)
+ +
[docs] def create_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBInstance - 创建UDB实例(包括创建mysql master节点、mongodb primary/configsvr节点和从备份恢复实例) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminPassword** (str) - (Required) 管理员密码 + - **DBTypeId** (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6,14:postgresql-10.4 + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 3000G + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M + - **Name** (str) - (Required) 实例名称,至少6位 + - **ParamGroupId** (int) - (Required) DB实例使用的配置参数组id + - **Port** (int) - (Required) 端口号,mysql默认3306,mongodb默认27017,postgresql默认5432 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupCount** (int) - 备份策略,每周备份数量,默认7次 + - **BackupDuration** (int) - 备份策略,备份时间间隔,单位小时计,默认24小时 + - **BackupId** (int) - 备份id,如果指定,则表明从备份恢复实例 + - **BackupTime** (int) - 备份策略,备份开始时间,单位小时计,默认1点 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CPU** (int) - cpu核数 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Month + - **ClusterRole** (str) - 当DB类型(DBTypeId)为mongodb时,需要指定mongo的角色,可选值为configsrv (配置节点),shardsrv (数据节点) + - **CouponId** (str) - 使用的代金券id + - **DisableSemisync** (bool) - 是否开启异步高可用,默认不填,可置为true + - **HAArch** (str) - 高可用架构:1) haproxy(默认): 当前仅支持mysql。2) sentinel: 基于vip和哨兵节点的架构,当前支持mysql和pg。 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 默认是"Normal" + - **InstanceType** (str) - UDB数据库机型 + - **Quantity** (int) - 购买时长,默认值1 + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **SubnetId** (str) - 子网ID + - **Tag** (str) - 实例所在的业务组名称 + - **UDBCId** (str) - 专区ID信息(如果这个参数存在这说明是在专区中创建DB) + - **UseSSD** (bool) - 是否使用SSD,默认为false。目前主要可用区、海外机房、新机房只提供SSD资源,非SSD资源不再提供。 + - **VPCId** (str) - VPC的ID + + **Response** + + - **DBId** (str) - BD实例id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBInstance", d, **kwargs) + return apis.CreateUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_instance_by_recovery( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBInstanceByRecovery - 创建db,将新创建的db恢复到指定db某个指定时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **RecoveryTime** (int) - (Required) 恢复到某个时间点的时间戳(UTC时间格式,默认单位秒) + - **SrcDBId** (str) - (Required) 源实例的Id + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长,默认值1 + - **SubnetId** (str) - 子网ID + - **UDBCId** (str) - 专区的Id + - **UseSSD** (bool) - 指定是否是否使用SSD,默认使用主库的配置 + - **VPCId** (str) - VPC的ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - db实例id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBInstanceByRecoveryRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBInstanceByRecovery", d, **kwargs) + return apis.CreateUDBInstanceByRecoveryResponseSchema().loads(resp)
+ +
[docs] def create_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBParamGroup - 从已有配置文件创建新配置文件 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBTypeId** (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6 + - **Description** (str) - (Required) 参数组描述 + - **GroupName** (str) - (Required) 新配置参数组名称 + - **SrcGroupId** (int) - (Required) 源参数组id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - 是否是地域级别的配置文件,默认是false + + **Response** + + - **GroupId** (int) - 新配置参数组id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBParamGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBParamGroup", d, **kwargs) + return apis.CreateUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def create_udb_replication_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBReplicationInstance - 创建MongoDB的副本节点(包括仲裁) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **SrcId** (str) - (Required) primary节点的DBId,该值可以通过DescribeUDBInstance获取 + - **CouponId** (str) - 使用的代金券id + - **IsArbiter** (bool) - 是否是仲裁节点,默认false,仲裁节点按最小机型创建 + - **Port** (int) - 端口号,默认27017,取值范围3306至65535。 + - **UseSSD** (bool) - 是否使用SSD,默认不使用 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - 创建从节点的DBId + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBReplicationInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBReplicationInstance", d, **kwargs) + return apis.CreateUDBReplicationInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_route_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBRouteInstance - 创建mongos实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ConfigsvrId** (list) - (Required) 配置服务器的dbid,允许一个或者三个。 + - **DBTypeId** (str) - (Required) DB类型id,mongodb按版本细分有1:mongodb-2.4,2:mongodb-2.6,3:mongodb-3.0,4:mongodb-3.2 + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 600M/1500M/3000M /6000M/15000M/30000M + - **Name** (str) - (Required) 实例名称,至少6位 + - **ParamGroupId** (int) - (Required) DB实例使用的配置参数组id + - **Port** (int) - (Required) 端口号,mongodb默认27017 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Month + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长,默认值1 + - **UseSSD** (bool) - 是否使用SSD,默认为false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - db实例id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBRouteInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBRouteInstance", d, **kwargs) + return apis.CreateUDBRouteInstanceResponseSchema().loads(resp)
+ +
[docs] def create_udb_slave( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDBSlave - 创建UDB实例的slave + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称,至少6位 + - **SrcId** (str) - (Required) master实例的DBId,该值可以通过DescribeUDBInstance获取 + - **CouponId** (str) - 使用的代金券id + - **DiskSpace** (int) - 磁盘空间(GB), 暂时支持20G - 3000G(API支持,前端暂时只开放内存定制) + - **InstanceMode** (str) - UDB实例部署模式,可选值如下:Normal: 普通单点实例HA: 高可用部署实例 + - **InstanceType** (str) - UDB实例类型:Normal和SATA_SSD + - **IsLock** (bool) - 是否锁主库,默认为true + - **MemoryLimit** (int) - 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M + - **Port** (int) - 端口号,mysql默认3306 + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **UseSSD** (bool) - 是否使用SSD,默认为false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DBId** (str) - 创建slave的DBId + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDBSlaveRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDBSlave", d, **kwargs) + return apis.CreateUDBSlaveResponseSchema().loads(resp)
+ +
[docs] def delete_udb_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUDBBackup - 删除UDB实例备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 备份id,可通过DescribeUDBBackup获得 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区,参见[可用区列表] + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDBBackupRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBBackup", d, **kwargs) + return apis.DeleteUDBBackupResponseSchema().loads(resp)
+ +
[docs] def delete_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUDBInstance - 删除UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取 + - **UDBCId** (str) - 专区ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBInstance", d, **kwargs) + return apis.DeleteUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_udb_log_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUDBLogPackage - 删除UDB日志包 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 日志包id,可通过DescribeUDBLogPackage获得 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDBLogPackageRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBLogPackage", d, **kwargs) + return apis.DeleteUDBLogPackageResponseSchema().loads(resp)
+ +
[docs] def delete_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUDBParamGroup - 删除配置参数组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (int) - (Required) 参数组id,可通过DescribeUDBParamGroup获取 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RegionFlag** (bool) - 是否属于地域级别 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDBParamGroup", d, **kwargs) + return apis.DeleteUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBBackup - 列表UDB实例备份信息.Zone不填表示多可用区,填代表单可用区 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数,列表操作则指定 + - **Offset** (int) - (Required) 分页显示的起始偏移,列表操作则指定 + - **BackupId** (int) - 如果填了BackupId, 那么只拉取这个备份的记录 + - **BackupType** (int) - 备份类型,取值为0或1,0表示自动,1表示手动 + - **BeginTime** (int) - 过滤条件:起始时间(Unix时间戳) + - **ClassType** (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver) + - **DBId** (str) - DB实例Id,如果指定,则只获取该db的备份信息 该值可以通过DescribeUDBInstance获取 + - **EndTime** (int) - 过滤条件:结束时间(Unix时间戳) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBBackupSet** 模型定义 + - **TotalCount** (int) - 满足条件备份总数,如果指定dbid,则是该db备份总数 + + **Response Model** + + **UDBBackupSet** + + - **BackupEndTime** (int) - 备份完成时间(Unix时间戳) + - **BackupId** (int) - 备份id + - **BackupName** (str) - 备份名称 + - **BackupSize** (int) - 备份文件大小(字节) + - **BackupTime** (int) - 备份时间(Unix时间戳) + - **BackupType** (int) - 备份类型,取值为0或1,0表示自动,1表示手动 + - **BackupZone** (str) - 跨机房高可用备库所在可用区 + - **DBId** (str) - dbid + - **DBName** (str) - 对应的db名称 + - **ErrorInfo** (str) - 备份错误信息 + - **State** (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 + - **Zone** (str) - 备份所在可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBBackupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBackup", d, **kwargs) + return apis.DescribeUDBBackupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_backup_blacklist( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBBackupBlacklist - 获取UDB实例的备份黑名单 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Blacklist** (str) - DB的黑名单列表, db.%为指定库 dbname.tablename为指定表 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBBackupBlacklistRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBackupBlacklist", d, **kwargs) + return apis.DescribeUDBBackupBlacklistResponseSchema().loads(resp)
+ +
[docs] def describe_udb_binlog_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBBinlogBackupURL - 获取UDB的Binlog备份地址 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) DB实例binlog备份ID,可以从DescribeUDBLogPackage结果当中获得 + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - DB实例备份文件的公网地址 + - **InnerBackupPath** (str) - DB实例备份文件的内网地址 + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBBinlogBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBBinlogBackupURL", d, **kwargs) + return apis.DescribeUDBBinlogBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstance - 获取UDB实例信息,支持两类操作:(1)指定DBId用于获取该db的信息;(2)指定ClassType、Offset、Limit用于列表操作,查询某一个类型db。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClassType** (str) - DB种类,如果是列表操作,则需要指定,不区分大小写,其取值如下:mysql: SQL;mongo: NOSQL;postgresql: postgresql + - **DBId** (str) - DB实例id,如果指定则获取单个db实例的描述,否则为列表操作。 指定DBId时无需填写ClassType、Offset、Limit + - **IncludeSlaves** (bool) - 当只获取这个特定DBId的信息时,如果有该选项,那么把这个DBId实例的所有从库信息一起拉取并返回 + - **IsInUDBC** (bool) - 是否查看专区里面DB + - **Limit** (int) - 分页显示数量,列表操作时必填 + - **Offset** (int) - 分页显示起始偏移位置,列表操作时必填 + - **UDBCId** (str) - IsInUDBC为True,UDBCId为空,说明查看整个可用区的专区的db,如果UDBId不为空则只查看此专区下面的db + - **Zone** (str) - 可用区,不填时默认全部可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBInstanceSet** 模型定义 + - **TotalCount** (int) - 用户db组的数量,对于 mysql: 主从结对数量,没有slave,则只有master mongodb: 副本集数量 + + **Response Model** + + **UDBSlaveInstanceSet** + + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupBeginTime** (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 + - **BackupBlacklist** (str) - 备份策略,备份黑名单,mongodb则不适用 + - **BackupCount** (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 + - **BackupDate** (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 + - **BackupDuration** (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **ClusterRole** (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 + - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 + - **DBId** (str) - DB实例id + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + - **DataFileSize** (float) - DB实例数据文件大小,单位GB + - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 + - **DiskUsedSize** (float) - DB实例磁盘已使用空间,单位GB + - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例;"HA": 高可用版UDB实例 + - **InstanceType** (str) - UDB数据库机型 + - **InstanceTypeId** (int) - UDB数据库机型ID + - **LogFileSize** (float) - DB实例日志文件大小,单位GB + - **MemoryLimit** (int) - 内存限制(MB),默认根据配置机型 + - **ModifyTime** (int) - DB实例修改时间,采用UTC计时时间戳 + - **Name** (str) - 实例名称,至少6位 + - **ParamGroupId** (int) - DB实例使用的配置参数组id + - **Port** (int) - 端口号,mysql默认3306,mongodb默认27017 + - **Role** (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 + - **SSDType** (str) - SSD类型,SATA/PCI-E + - **SrcDBId** (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id + - **State** (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 + - **SubnetId** (str) - 子网ID + - **SystemFileSize** (float) - DB实例系统文件大小,单位GB + - **Tag** (str) - 获取资源其他信息 + - **UseSSD** (bool) - 是否使用SSD + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - DB实例虚ip + - **VirtualIPMac** (str) - DB实例虚ip的mac地址 + - **Zone** (str) - 可用区 + + **UDBInstanceSet** + + - **AdminUser** (str) - 管理员帐户名,默认root + - **BackupBeginTime** (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 + - **BackupBlacklist** (str) - 备份策略,备份黑名单,mongodb则不适用 + - **BackupCount** (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 + - **BackupDate** (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 + - **BackupDuration** (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **CluserRole** (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 + - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 + - **DBId** (str) - DB实例id + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + - **DataFileSize** (float) - DB实例数据文件大小,单位GB + - **DataSet** (list) - 见 **UDBSlaveInstanceSet** 模型定义 + - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 + - **DiskUsedSize** (float) - DB实例磁盘已使用空间,单位GB + - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 + - **InstanceType** (str) - UDB数据库机型 + - **InstanceTypeId** (int) - UDB数据库机型ID + - **LogFileSize** (float) - DB实例日志文件大小,单位GB + - **MemoryLimit** (int) - 内存限制(MB),默认根据配置机型 + - **ModifyTime** (int) - DB实例修改时间,采用UTC计时时间戳 + - **Name** (str) - 实例名称,至少6位 + - **ParamGroupId** (int) - DB实例使用的配置参数组id + - **Port** (int) - 端口号,mysql默认3306,mongodb默认27017 + - **Role** (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 + - **SSDType** (str) - SSD类型,SATA/PCI-E + - **SrcDBId** (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id + - **State** (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 + - **SubnetId** (str) - 子网ID + - **SystemFileSize** (float) - DB实例系统文件大小,单位GB + - **Tag** (str) - 获取资源其他信息 + - **UseSSD** (bool) - 是否使用SSD + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - DB实例虚ip + - **VirtualIPMac** (str) - DB实例虚ip的mac地址 + - **Zone** (str) - DB实例所在可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstance", d, **kwargs) + return apis.DescribeUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_backup_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceBackupState - 获取UDB实例备份状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 备份记录ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区,参见[可用区列表] + + **Response** + + - **BackupEndTime** (int) - + - **BackupSize** (int) - + - **State** (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceBackupStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBackupState", d, **kwargs) + return apis.DescribeUDBInstanceBackupStateResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceBackupURL - 获取UDB备份下载地址 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) DB实例备份ID,该值可以通过DescribeUDBBackup获取 + - **DBId** (str) - (Required) DB实例Id,该值可通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - DB实例备份文件公网的地址 + - **InnerBackupPath** (str) - DB实例备份文件内网的地址 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBackupURL", d, **kwargs) + return apis.DescribeUDBInstanceBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_binlog( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceBinlog - 获取UDB指定时间段的binlog列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BeginTime** (int) - (Required) 过滤条件:起始时间(时间戳) + - **DBId** (str) - (Required) DB实例Id + - **EndTime** (int) - (Required) 过滤条件:结束时间(时间戳) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBInstanceBinlogSet** 模型定义 + + **Response Model** + + **UDBInstanceBinlogSet** + + - **BeginTime** (int) - Binlog文件生成时间(时间戳) + - **EndTime** (int) - Binlog文件结束时间(时间戳) + - **Name** (str) - Binlog文件名 + - **Size** (int) - Binlog文件大小 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceBinlogRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBinlog", d, **kwargs) + return apis.DescribeUDBInstanceBinlogResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_binlog_backup_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceBinlogBackupState - 获取udb实例备份状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) 备份记录ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + + **Response** + + - **BackupSize** (int) - 备份文件大小(字节) + - **State** (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceBinlogBackupStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceBinlogBackupState", d, **kwargs) + return apis.DescribeUDBInstanceBinlogBackupStateResponseSchema().loads( + resp + )
+ +
[docs] def describe_udb_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstancePrice - 获取UDB实例价格信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBTypeId** (str) - (Required) UDB实例的DB版本字符串 + - **DiskSpace** (int) - (Required) 磁盘空间(GB),暂时支持20(GB) - 3000(GB), 输入不带单位 + - **MemoryLimit** (int) - (Required) 内存限制(MB),单位为MB.目前支持:1000-96000 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year,按年付费; Month,按月付费 Dynamic,按需付费(需开启权限) Trial,试用(需开启权限)默认为月付 + - **Count** (int) - 购买DB实例数量,最大数量为10台, 默认为1台 + - **InstanceMode** (str) - 实例的部署类型。可选值为:Normal: 普通单点实例,Slave: 从库实例,HA: 高可用部署实例,默认是Normal + - **Quantity** (int) - DB购买多少个"计费时间单位",默认值为1。比如:买2个月,Quantity就是2。如果计费单位是“按月”,并且Quantity为0,表示“购买到月底” + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必填 + - **UseSSD** (str) - 是否使用SSD,只能填true或false,默认为false + + **Response** + + - **DataSet** (list) - 见 **UDBInstancePriceSet** 模型定义 + + **Response Model** + + **UDBInstancePriceSet** + + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **Price** (int) - 价格,单位为分 + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstancePrice", d, **kwargs) + return apis.DescribeUDBInstancePriceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceState - 获取UDB实例状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **State** (str) - DB状态标记 Init:初始化中;Fail:安装失败; Starting:启动中; Running : 运行 ;Shutdown:关闭中; Shutoff :已关闭; Delete:已删除; Upgrading:升级中; Promoting: 提升为独库进行中; Recovering: 恢复中; Recover fail:恢复失败。 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceStateRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceState", d, **kwargs) + return apis.DescribeUDBInstanceStateResponseSchema().loads(resp)
+ +
[docs] def describe_udb_instance_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBInstanceUpgradePrice - 获取UDB实例升降级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G + - **MemoryLimit** (int) - (Required) 内存限制(MB) + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **UseSSD** (bool) - 是否使用SSD,默认为false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Price** (int) - 价格,单位为分 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBInstanceUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBInstanceUpgradePrice", d, **kwargs) + return apis.DescribeUDBInstanceUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_udb_log_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBLogBackupURL - 获取UDB的slowlog备份地址 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (int) - (Required) DB实例备份ID + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - 备份外网URL + - **UsernetPath** (str) - 备份用户网URL + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBLogBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBLogBackupURL", d, **kwargs) + return apis.DescribeUDBLogBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_udb_log_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBLogPackage - 列表UDB实例binlog或slowlog或errorlog备份信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数,列表操作则指定 + - **Offset** (int) - (Required) 分页显示的起始偏移,列表操作则指定 + - **BeginTime** (int) - 过滤条件:起始时间(时间戳) + - **DBId** (str) - DB实例Id,如果指定,则只获取该db的备份信息 + - **EndTime** (int) - 过滤条件:结束时间(时间戳) + - **Type** (int) - 需要列出的备份文件类型,每种文件的值如下 2 : BINLOG\_BACKUP 3 : SLOW\_QUERY\_BACKUP 4 : ERRORLOG\_BACKUP + - **Types** (list) - Types作为Type的补充,支持多值传入,可以获取多个类型的日志记录,如:Types.0=2&Types.1=3 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **LogPackageDataSet** 模型定义 + - **TotalCount** (int) - 备份总数,如果指定dbid,则是该db备份总数 + + **Response Model** + + **LogPackageDataSet** + + - **BackupId** (int) - 备份id + - **BackupName** (str) - 备份名称 + - **BackupSize** (int) - 备份文件大小 + - **BackupTime** (int) - 备份时间 + - **BackupType** (int) - 备份类型,包括2-binlog备份,3-slowlog备份 + - **BackupZone** (str) - 跨可用区高可用备库所在可用区 + - **DBId** (str) - dbid + - **DBName** (str) - 对应的db名称 + - **State** (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 + - **Zone** (str) - 所在可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBLogPackageRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBLogPackage", d, **kwargs) + return apis.DescribeUDBLogPackageResponseSchema().loads(resp)
+ +
[docs] def describe_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBParamGroup - 获取参数组详细参数信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - (Required) 分页显示的条目数,列表操作则指定 + - **Offset** (int) - (Required) 分页显示的起始偏移,列表操作则指定 + - **ClassType** (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver) + - **GroupId** (int) - 参数组id,如果指定则获取描述,否则是列表操作,需要 指定Offset/Limit + - **IsInUDBC** (bool) - 是否选取专区中配置 + - **RegionFlag** (bool) - 当请求没有填写Zone时,如果指定为true,表示只拉取跨可用区的相关配置文件,否则,拉取所有机房的配置文件(包括每个单可用区和跨可用区) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDBParamGroupSet** 模型定义 + - **TotalCount** (int) - 参数组总数,列表操作时才会有该参数 + + **Response Model** + + **UDBParamMemberSet** + + - **AllowedVal** (str) - 允许的值(根据参数类型,用分隔符表示) + - **ApplyType** (int) - 参数值应用类型,取值范围为{0,10,20},各值代表 意义为0-unknown、10-static、20-dynamic + - **FormatType** (int) - 允许值的格式类型,取值范围为{0,10,20},意义分 别为PVFT_UNKOWN=0,PVFT_RANGE=10, PVFT_ENUM=20 + - **Key** (str) - 参数名称 + - **Modifiable** (bool) - 是否可更改,默认为false + - **Value** (str) - 参数值 + - **ValueType** (int) - 参数值应用类型,取值范围为{0,10,20,30},各值 代表意义为 0-unknown、10-int、20-string、 30-bool + + **UDBParamGroupSet** + + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6 7:percona-5.6 + - **Description** (str) - 参数组描述 + - **GroupId** (int) - 参数组id + - **GroupName** (str) - 参数组名称 + - **Modifiable** (bool) - 参数组是否可修改 + - **ParamMember** (list) - 见 **UDBParamMemberSet** 模型定义 + - **RegionFlag** (bool) - + - **Zone** (str) - + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBParamGroup", d, **kwargs) + return apis.DescribeUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def describe_udb_type( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDBType - 获取UDB支持的类型信息 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupZone** (str) - 跨可用区高可用DB的备库所在区域,仅当该可用区支持跨可用区高可用时填入。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBClusterType** (str) - DB实例类型,如mysql,sqlserver,mongo,postgresql + - **DiskType** (str) - 返回支持某种磁盘类型的DB类型。如果没传,则表示任何磁盘类型均可。 + - **InstanceMode** (str) - 返回支持某种实例类型的DB类型。如果没传,则表示任何实例类型均可。normal:单点,ha:高可用,sharded_cluster:分片集群 + + **Response** + + - **Action** (str) - 操作名称 + - **DataSet** (list) - 见 **UDBTypeSet** 模型定义 + - **RetCode** (int) - 返回码 + + **Response Model** + + **UDBTypeSet** + + - **DBTypeId** (str) - DB类型id,mysql/mongodb按版本细分各有一个id, 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDBTypeRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDBType", d, **kwargs) + return apis.DescribeUDBTypeResponseSchema().loads(resp)
+ +
[docs] def edit_udb_backup_blacklist( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ EditUDBBackupBlacklist - 编辑UDB实例的备份黑名单 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Blacklist** (str) - (Required) 黑名单,规范示例,指定库mysql.%;test.%; 指定表city.address; + - **DBId** (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.EditUDBBackupBlacklistRequestSchema().dumps(d) + + resp = self.invoke("EditUDBBackupBlacklist", d, **kwargs) + return apis.EditUDBBackupBlacklistResponseSchema().loads(resp)
+ +
[docs] def fetch_udb_instance_earliest_recover_time( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ FetchUDBInstanceEarliestRecoverTime - 获取UDB最早可回档的时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) DB实例Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **EarliestTime** (int) - 获取最早可回档时间点 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.FetchUDBInstanceEarliestRecoverTimeRequestSchema().dumps(d) + + resp = self.invoke("FetchUDBInstanceEarliestRecoverTime", d, **kwargs) + return apis.FetchUDBInstanceEarliestRecoverTimeResponseSchema().loads( + resp + )
+ +
[docs] def modify_udb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUDBInstanceName - 重命名UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Name** (str) - (Required) 实例的新名字, 长度要求为6~63位 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUDBInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDBInstanceName", d, **kwargs) + return apis.ModifyUDBInstanceNameResponseSchema().loads(resp)
+ +
[docs] def modify_udb_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUDBInstancePassword - 修改DB实例的管理员密码 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的ID,该值可以通过DescribeUDBInstance获取 + - **Password** (str) - (Required) 实例的新密码 + - **AccountName** (str) - sqlserver帐号,仅在sqlserver的情况下填该参数 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUDBInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDBInstancePassword", d, **kwargs) + return apis.ModifyUDBInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def promote_udb_instance_to_ha( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ PromoteUDBInstanceToHA - 普通db升级为高可用(只针对mysql5.5及以上版本) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.PromoteUDBInstanceToHARequestSchema().dumps(d) + + resp = self.invoke("PromoteUDBInstanceToHA", d, **kwargs) + return apis.PromoteUDBInstanceToHAResponseSchema().loads(resp)
+ +
[docs] def promote_udb_slave( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ PromoteUDBSlave - 从库提升为独立库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **IsForce** (bool) - 是否强制(如果从库落后可能会禁止提升),默认false 如果落后情况下,强制提升丢失数据 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.PromoteUDBSlaveRequestSchema().dumps(d) + + resp = self.invoke("PromoteUDBSlave", d, **kwargs) + return apis.PromoteUDBSlaveResponseSchema().loads(resp)
+ +
[docs] def resize_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeUDBInstance - 修改(升级和降级)UDB实例的配置,包括内存和磁盘的配置,对于内存升级无需关闭实例,其他场景需要事先关闭实例。两套参数可以配置升降机:1.配置UseSSD和SSDType 2.配置InstanceType,不需要配置InstanceMode。这两套第二套参数的优先级更高 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id + - **DiskSpace** (int) - (Required) 磁盘空间(GB), 暂时支持20G-3000G + - **MemoryLimit** (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/ 12000M/16000M/ 24000M/32000M/ 48000M/64000M/96000M。 + - **CouponId** (str) - 使用的代金券id + - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 默认是"Normal" + - **InstanceType** (str) - UDB数据库机型: "Normal": "标准机型" , "SATA_SSD": "SSD机型" , "PCIE_SSD": "SSD高性能机型" , "Normal_Volume": "标准大容量机型", "SATA_SSD_Volume": "SSD大容量机型" , "PCIE_SSD_Volume": "SSD高性能大容量机型" + - **SSDType** (str) - SSD类型,可选值为"SATA"、"PCI-E",如果UseSSD为true ,则必选 + - **StartAfterUpgrade** (bool) - DB关闭状态下升降级,升降级后是否启动DB,默认为false + - **UDBCId** (str) - 专区的ID,如果有值表示专区中的DB配置升降级 + - **UseSSD** (bool) - 是否使用SSD,默认为false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUDBInstance", d, **kwargs) + return apis.ResizeUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def restart_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RestartUDBInstance - 重启UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RestartUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartUDBInstance", d, **kwargs) + return apis.RestartUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def start_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ StartUDBInstance - 启动UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.StartUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUDBInstance", d, **kwargs) + return apis.StartUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_udb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ StopUDBInstance - 关闭UDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **ForceToKill** (bool) - 是否使用强制手段关闭DB,默认是false + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.StopUDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUDBInstance", d, **kwargs) + return apis.StopUDBInstanceResponseSchema().loads(resp)
+ +
[docs] def switch_udb_instance_to_ha( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ SwitchUDBInstanceToHA - 普通UDB切换为高可用,原db状态为WaitForSwitch时,调用该api + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取 + - **ChargeType** (str) - Year, Month, Dynamic,Trial,不填则按现在单点计费执行 + - **Quantity** (str) - 购买时长,需要和 ChargeType 搭配使用,否则使用单点计费策略的值 + - **Tag** (str) - 业务组 + + **Response** + + - **DBId** (str) - 切换后高可用db实例的Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.SwitchUDBInstanceToHARequestSchema().dumps(d) + + resp = self.invoke("SwitchUDBInstanceToHA", d, **kwargs) + return apis.SwitchUDBInstanceToHAResponseSchema().loads(resp)
+ +
[docs] def update_udb_instance_backup_strategy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateUDBInstanceBackupStrategy - 修改UDB自动备份策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DBId** (str) - (Required) 主节点的Id + - **BackupDate** (str) - 备份时期标记位。共7位,每一位为一周中一天的备份情况,0表示关闭当天备份,1表示打开当天备份。最右边的一位为星期天的备份开关,其余从右到左依次为星期一到星期六的备份配置开关,每周必须至少设置两天备份。例如:1100000表示打开星期六和星期五的备份功能 + - **BackupMethod** (str) - 选择默认的备份方式,可选 snapshot 表示使用快照/物理备份,填 logic 表示使用逻辑备份。需要同时设置BackupDate字段。(注意现在只有SSD 版本的 MySQL实例支持物理备份) + - **BackupTime** (int) - 备份的整点时间,范围[0,23] + - **ForceDump** (bool) - 当导出某些数据遇到问题后,是否强制导出其他剩余数据默认是false需要同时设置BackupDate字段 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateUDBInstanceBackupStrategyRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBInstanceBackupStrategy", d, **kwargs) + return apis.UpdateUDBInstanceBackupStrategyResponseSchema().loads(resp)
+ +
[docs] def update_udb_instance_slave_backup_switch( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateUDBInstanceSlaveBackupSwitch - 开启或者关闭UDB从库备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupSwitch** (int) - (Required) 从库的备份开关,范围[0,1],0表示从库备份功能关闭,1 表示从库备份开关打开。 + - **MasterDBId** (str) - (Required) 主库的Id + - **SlaveDBId** (str) - 从库的Id,如果从库备份开关设定为打开,则必须赋值。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateUDBInstanceSlaveBackupSwitchRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBInstanceSlaveBackupSwitch", d, **kwargs) + return apis.UpdateUDBInstanceSlaveBackupSwitchResponseSchema().loads( + resp + )
+ +
[docs] def update_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateUDBParamGroup - 更新UDB配置参数项 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (int) - (Required) 配置参数组id,使用DescribeUDBParamGroup获得 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Description** (str) - 配置文件的描述,不传时认为不修改 + - **Key** (str) - 参数名称(与Value配合使用) + - **Name** (str) - 配置文件的名字,不传时认为不修改名字,传了则不能为空 + - **RegionFlag** (bool) - 该配置文件是否是地域级别配置文件,默认是false + - **Value** (str) - 参数值(与Key配合使用) + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateUDBParamGroupRequestSchema().dumps(d) + + resp = self.invoke("UpdateUDBParamGroup", d, **kwargs) + return apis.UpdateUDBParamGroupResponseSchema().loads(resp)
+ +
[docs] def upload_udb_param_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UploadUDBParamGroup - 导入UDB配置 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Content** (str) - (Required) 配置内容,导入的配置内容采用base64编码 + - **DBTypeId** (str) - (Required) DB类型id,DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6 + - **Description** (str) - (Required) 参数组描述 + - **GroupName** (str) - (Required) 配置参数组名称 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ParamGroupTypeId** (int) - 配置文件子类型 0-未知, 1-Shardsvr-MMAPv1, 2-Shardsvr-WiredTiger, 3-Configsvr-MMAPv1, 4-Configsvr-WiredTiger, 5-Mongos + - **RegionFlag** (bool) - 该配置文件是否是地域级别配置文件,默认是false + + **Response** + + - **GroupId** (int) - 配置参数组id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UploadUDBParamGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("UploadUDBParamGroup", d, **kwargs) + return apis.UploadUDBParamGroupResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uddb/client.html b/docs/build/html/_modules/ucloud/services/uddb/client.html new file mode 100644 index 00000000..f1129813 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uddb/client.html @@ -0,0 +1,562 @@ + + + + + + + + ucloud.services.uddb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uddb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uddb.schemas import apis
+
+
+
[docs]class UDDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def change_uddb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ChangeUDDBInstanceName - 修改分布式数据库中间件名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **NewName** (str) - (Required) 名称 + - **UDDBId** (str) - (Required) UDDB实例Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ChangeUDDBInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ChangeUDDBInstanceName", d, **kwargs) + return apis.ChangeUDDBInstanceNameResponseSchema().loads(resp)
+ +
[docs] def change_uddb_slave_count( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ChangeUDDBSlaveCount - 改变分布式数据库数据节点的只读实例个数每一个UDDB的数据节点负责处理所有的写入请求。与此同时,每一个数据节点可以配置若干个该节点的只读实例。当主节点的数据写入完毕后,只读实例把这次的写入操作进行更新,从而和数据节点保持一致。只读实例可以使得数据由多份复制,在数据节点和只读实例之间,可以做请求的读写分离, 也就是说, 主节点写入数据之后, 数据的读操作可以由数据只读实例进行分担, 这样减少主节点的压力, 增加性能当改变了数据节点的只读实例个数之后,对于现有的和以后的每一个数据节点都采用这个配置。如果UDDB实例有现有的数据节点, 那么它会根据新配置的参数,自动创建或删除数据节点的只读实例如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成"ChangingSlaveCount"; 如果返回失败, UDDB实例状态保持不变 当UDDB更改数据分区的只读实例个数成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果更改过程中出现异常, 状态变成"Abnormal"(异常运行中)或者"Error"(运行错误) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SlaveCount** (str) - (Required) 每个数据节点的只读实例个数, 取值必须>=0 + - **UDDBId** (str) - (Required) UDDB资源id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ChangeUDDBSlaveCountRequestSchema().dumps(d) + + resp = self.invoke("ChangeUDDBSlaveCount", d, **kwargs) + return apis.ChangeUDDBSlaveCountResponseSchema().loads(resp)
+ +
[docs] def create_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDDBInstance - 创建创建分布式数据库UDDB实例, 简称UDDB实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminPassword** (str) - (Required) 管理员密码, 密码需要使用base64加密 + - **DBTypeId** (str) - (Required) UDDB的数据库版本,支持版本如下:mysql-5.6 mysql-5.7. 如果不填,则默认为mysql-5.6 + - **DataNodeCount** (int) - (Required) 初始的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **Name** (str) - (Required) 实例名称,至少6位 + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AdminUser** (str) - 管理员帐户名,默认root + - **ChargeType** (str) - 付费类型,可选值如下:Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic + - **CouponId** (str) - 使用的代金券id + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Port** (int) - 端口号,mysql默认端口为3306 + - **Quantity** (int) - 购买时长,默认值1 + - **SubnetId** (str) - 子网ID + - **VPCId** (str) - VPC的ID + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **UDDBId** (str) - UDDB实例ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUDDBInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDDBInstance", d, **kwargs) + return apis.CreateUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUDDBInstance - 删除UDDB实例。如下状态的UDDB实例可以进行这个操作:InitFail: 初始化失败Shutoff: 已关闭当请求返回成功之后,UDDB实例就已经被删除, 列表上看不到对应的UDDB实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDDBInstance", d, **kwargs) + return apis.DeleteUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstance - 获取分布式数据库UDDB的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **DataSetUDDB** 模型定义 + - **Message** (str) - 如果执行失败, 失败的错误消息 + + **Response Model** + + **SlaveInfo** + - **DataNodeId** (str) - 对应数据节点的ID + - **Id** (str) - 只读实例ID + - **State** (str) - 只读实例状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中 + + + **DataNodeInfo** + - **CreateTime** (str) - 节点的创建时间 + - **DiskSpace** (str) - 数据节点的磁盘大小配置. 单位: GB + - **Id** (str) - 数据节点ID + - **LastTransTaskId** (str) - 最近一次数据迁移任务id + - **Memory** (str) - 数据节点的内存配置, 单位:MB + - **SlaveCount** (str) - 数据节点的只读实例个数. + - **SlaveInfos** (list) - 见 **SlaveInfo** 模型定义 + - **State** (str) - 数据分片状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中 + + + **DataSetUDDB** + - **AdminUser** (str) - 管理员帐户名,默认root + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 + - **CreateTime** (str) - UDDB实例创建时间,采用UTC计时时间戳 + - **DBTypeId** (str) - UDDB的数据库版本 + - **DataNodeCount** (str) - 数据节点个数 + - **DataNodeDiskSpace** (str) - 数据节点的磁盘大小配置. 单位: GB + - **DataNodeList** (list) - 见 **DataNodeInfo** 模型定义 + - **DataNodeMemory** (str) - 数据节点的内存配置, 单位:MB + - **DataNodeSlaveCount** (str) - 每个数据节点的只读实例个数. + - **ExpiredTime** (str) - UDDB实例过期时间,采用UTC计时时间戳 + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Name** (str) - UDDB实例名称 + - **Port** (str) - UDDB实例访问的端口号 + - **RefQps** (int) - 参考QPS。 免费版: 15000; 畅享版: 30000 - 100000 (根据节点数而定); 专享版: 节点数 * 10w qps + - **RouterNodeNum** (int) - 各版本下的节点个数。体验版: 固定为2节点; 畅享版:固定为4节点(后续可通过管理API调整);专享版:物理机台数 + - **RouterVersion** (str) - UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **State** (str) - UDDB状态, 状态列表如下: Init: 初始化中 InitFail: 初始化失败 Starting: 启动中 Running: 系统正常运行中 Abnormal: 系统运行中, 有异常, 还能提供服务 Error: 系统运行中, 但不能正常提供服务 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 UpgradingUDDB: 升降级UDDB配置中 UpgradingDataNode: 升降级UDDB节点配置中 ChangingSlaveCount: 改变只读实例数量中 ScalingOutUDDB: 水平扩展中 + - **UDDBId** (str) - UDDB实例ID + - **VirtualIP** (str) - UDDB实例访问的虚IP + - **Zone** (str) - UDDB实例对应的可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstance", d, **kwargs) + return apis.DescribeUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstancePrice - 获取分布式数据库UDDB价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeCount** (int) - (Required) 初始的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (str) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点个数。一台物理机有2个节点 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + - **Quantity** (int) - 购买时长,默认值1 + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **PriceInfo** (dict) - 见 **PriceDetailInfo** 模型定义 + + **Response Model** + + **PriceDetailInfo** + - **DataNodePrice** (float) - 存储节点费用 + - **DataNodeSlavePrice** (float) - 只读实例费用 + - **MiddlewarePrice** (float) - 中间件路由节点费用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstancePrice", d, **kwargs) + return apis.DescribeUDDBInstancePriceResponseSchema().loads(resp)
+ +
[docs] def describe_uddb_instance_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUDDBInstanceUpgradePrice - 升级UDDB时,获取升级后的价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点的个数。一台物理机有2个节点 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeCount** (int) - 新的数据节点个数 取值必须>0. + - **DataNodeDiskSpace** (int) - 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值. + - **DataNodeSlaveCount** (int) - 每个数据节点的只读实例个数, 取值必须>=0. + - **InstanceMode** (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA + - **InstanceType** (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + - **PriceInfo** (dict) - 见 **PriceInfo** 模型定义 + + **Response Model** + + **PriceInfo** + - **DataNodePrice** (float) - 存储节点费用 + - **DataNodeSlavePrice** (float) - 只读实例费用 + - **MiddlewarePrice** (float) - 中间件路由节点费用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUDDBInstanceUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDDBInstanceUpgradePrice", d, **kwargs) + return apis.DescribeUDDBInstanceUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def restart_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUDDBInstance - 重启UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成"Starting"(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在重启过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果启动过程中出现异常, 状态变成"Abnormal"(异常运行中), 或者"Shutoff"(已关闭 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RestartUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("RestartUDDBInstance", d, **kwargs) + return apis.RestartUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def start_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUDDBInstance - 启动UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成"Starting"(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在启动过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成"Running"(正常运行中); 如果启动过程中出现异常, 状态变成"Abnormal"(异常运行中), 或者"Shutoff"(已关闭) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUDDBInstance", d, **kwargs) + return apis.StartUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUDDBInstance - 关闭UDDB实例,停止提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成"Shutdown"(关闭中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在关闭过程中, 当UDDB实例关闭成功之后, UDDB实例的状态变成"Shutoff"(已关闭); 如果关闭过程中出现异常, 根据UDDB实例的情况, 状态变成"Abnormal"(异常运行中), 或者"Running"(正常运行中) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDDBId** (str) - (Required) UDDB实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUDDBInstance", d, **kwargs) + return apis.StopUDDBInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_uddb_data_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUDDBDataNode - 升降级分布式数据库数据节点的配置, 提高/降低数据节点的数据容量和内存所有数据节点以及其所挂载的只读实例的配置都受到影响升降级数据节点的配置之后之后, 会按照数据节点新的磁盘和内存大小重新计费如下状态的数据节点实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成"UpgradingDataNode",相关数据节点的状态变成"Upgrading"; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级结束之后, UDDB实例的状态变成"Shutoff" + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DataNodeDiskSpace** (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值. + - **DataNodeMemory** (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值 + - **UDDBId** (str) - (Required) UDDB实例ID + - **CouponId** (str) - 使用的代金券id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUDDBDataNodeRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUDDBDataNode", d, **kwargs) + return apis.UpgradeUDDBDataNodeResponseSchema().loads(resp)
+ +
[docs] def upgrade_uddb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUDDBInstance - 升降级分布式数据库中间件的配置, 提高/降低请求处理的并发性修改请求处理节点个数之后, 按照所有请求处理节点的总内存容量和CPU核数重新计费如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成"UpgradingUDDB"; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级成功之后, UDDB实例的状态变成"Running"; 如果更改过程中出现异常, 状态变成"Abnormal", 或者"Error" + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouterNodeNum** (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数 + - **RouterVersion** (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 + - **UDDBId** (str) - (Required) UDDB实例ID + - **CouponId** (str) - 使用的代金券id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUDDBInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUDDBInstance", d, **kwargs) + return apis.UpgradeUDDBInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/udisk/client.html b/docs/build/html/_modules/ucloud/services/udisk/client.html new file mode 100644 index 00000000..70508c1f --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/udisk/client.html @@ -0,0 +1,633 @@ + + + + + + + ucloud.services.udisk.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udisk.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udisk.schemas import apis
+
+
+
[docs]class UDiskClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDiskClient, self).__init__(config, transport, middleware, logger) + +
[docs] def attach_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ AttachUDisk - 将一个可用的UDisk挂载到某台主机上,当UDisk挂载成功后,还需要在主机内部进行文件系统操作 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要挂载的UDisk实例ID. + - **UHostId** (str) - (Required) UHost实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **MultiAttach** (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes ) + + **Response** + + - **UDiskId** (str) - 挂载的UDisk实例ID + - **UHostId** (str) - 挂载的UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AttachUDiskRequestSchema().dumps(d) + + resp = self.invoke("AttachUDisk", d, **kwargs) + return apis.AttachUDiskResponseSchema().loads(resp)
+ +
[docs] def clone_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CloneUDisk - 从UDisk创建UDisk克隆 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称 + - **SourceId** (str) - (Required) 克隆父Disk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay 默认: Dynamic + - **Comment** (str) - Disk注释 + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长 默认: 1 + - **UDataArkMode** (str) - 方舟是否开启,"Yes":开启,"No":关闭;默认为"No" + + **Response** + + - **UDiskId** (list) - 创建UDisk Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CloneUDiskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CloneUDisk", d, **kwargs) + return apis.CloneUDiskResponseSchema().loads(resp)
+ +
[docs] def clone_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CloneUDiskSnapshot - 从快照创建UDisk克隆 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称 + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限。 + - **SourceId** (str) - (Required) 克隆父Snapshot的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic,Postpay 默认: Dynamic + - **Comment** (str) - Disk注释 + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长 默认: 1 + - **UDataArkMode** (str) - 是否开启数据方舟 默认:No + + **Response** + + - **UDiskId** (list) - 创建UDisk Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CloneUDiskSnapshotRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CloneUDiskSnapshot", d, **kwargs) + return apis.CloneUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def create_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreateUDisk - 创建UDisk磁盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 实例名称 + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,普通盘: 范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限;SSD盘: 范围[1~4000]。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic, Postpay, Trial 默认: Dynamic + - **CmkId** (str) - 加密需要的cmk id,UKmsMode为Yes时,必填 + - **CouponId** (str) - 使用的代金券id + - **DiskType** (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),默认值(DataDisk) + - **Quantity** (int) - 购买时长 默认: 1 + - **Tag** (str) - 业务组 默认:Default + - **UDataArkMode** (str) - 是否开启数据方舟 + - **UKmsMode** (str) - 是否加密。Yes:加密,No:不加密,默认值(No) + + **Response** + + - **UDiskId** (list) - UDisk实例Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDiskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDisk", d, **kwargs) + return apis.CreateUDiskResponseSchema().loads(resp)
+ +
[docs] def create_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUDiskSnapshot - 创建snapshot快照 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 快照名称 + - **UDiskId** (str) - (Required) 快照的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year , Month, Dynamic 默认: Dynamic + - **Comment** (str) - 快照描述 + - **Quantity** (int) - 购买时长 默认: 1 + + **Response** + + - **SnapshotId** (list) - 快照Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUDiskSnapshotRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDiskSnapshot", d, **kwargs) + return apis.CreateUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def delete_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DeleteUDisk - 删除UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 要删除的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDiskRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDisk", d, **kwargs) + return apis.DeleteUDiskResponseSchema().loads(resp)
+ +
[docs] def delete_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUDiskSnapshot - 删除Snapshot + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SnapshotId** (str) - 快照Id(填写后不能填写UDisk Id) + - **UDiskId** (str) - UDisk Id,删除该盘所创建出来的所有快照(填写后不能填写SnapshotId) + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUDiskSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DeleteUDiskSnapshot", d, **kwargs) + return apis.DeleteUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDisk - 获取UDisk实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DiskType** (str) - ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:"CLOUD_NORMAL",IsBoot:"False"; 普通系统盘:DiskType:"CLOUD_NORMAL",IsBoot:"True";SSD数据盘:DiskType:"CLOUD_SSD",IsBoot:"False";SSD系统盘:DiskType:"CLOUD_SSD",IsBoot:"True";RSSD数据盘:DiskType:"CLOUD_RSSD",IsBoot:"False";为空拉取所有。ProtocolVersion字段为0或没有该字段时,可设为以下几个值:普通数据盘:DataDisk;普通系统盘;SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;为空拉取所有。 + - **IsBoot** (str) - ProtocolVersion字段为1且DiskType不为空时,必须设置,设置规则请参照DiskType;ProtocolVersion字段为1且DiskType为空时,该字段无效。ProtocolVersion字段为0或没有该字段时,该字段无效。 + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **ProtocolVersion** (int) - 请求协议版本,建议升级为1,为1时DiskType与UHost磁盘类型定义一致;默认为0 + - **UDiskId** (str) - UDisk Id(留空返回全部) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDiskDataSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UDiskDataSet** + + - **ArkSwitchEnable** (int) - 是否支持开启方舟,1支持 ,0不支持 + - **ChargeType** (str) - Year,Month,Dynamic,Trial,Postpay + - **CloneEnable** (int) - 是否支持克隆,1支持 ,0不支持 + - **CmkId** (str) - 该盘的cmk id + - **CmkIdAlias** (str) - cmk id 别名 + - **CmkIdStatus** (str) - 该盘cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) + - **CreateTime** (int) - 创建时间 + - **DataKey** (str) - 该盘的密文密钥 + - **DeviceName** (str) - 挂载的设备名称 + - **DiskType** (str) - 请求中的ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:"CLOUD_NORMAL",IsBoot:"False"; 普通系统盘:DiskType:"CLOUD_NORMAL",IsBoot:"True";SSD数据盘:DiskType:"CLOUD_SSD",IsBoot:"False";SSD系统盘:DiskType:"CLOUD_SSD",IsBoot:"True";RSSD数据盘:DiskType:"CLOUD_RSSD",IsBoot:"False"。请求中的ProtocolVersion字段为0或没有该字段时,云硬盘类型参照如下:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk。 + - **ExpiredTime** (int) - 过期时间 + - **IsBoot** (str) - 是否是系统盘,是:"True", 否:"False" + - **IsExpire** (str) - 资源是否过期,过期:"Yes", 未过期:"No" + - **Name** (str) - 实例名称 + - **Size** (int) - 容量单位GB + - **SnapEnable** (int) - 是否支持快照,1支持 ,0不支持 + - **SnapshotCount** (int) - 该盘快照个数 + - **SnapshotLimit** (int) - 该盘快照上限 + - **Status** (str) - 状态:Available(可用),Attaching(挂载中), InUse(已挂载), Detaching(卸载中), Initializating(分配中), Failed(创建失败),Cloning(克隆中),Restoring(恢复中),RestoreFailed(恢复失败), + - **Tag** (str) - 业务组名称 + - **UDataArkMode** (str) - 是否开启数据方舟,开启:"Yes", 不支持:"No" + - **UDiskId** (str) - UDisk实例Id + - **UHostIP** (str) - 挂载的UHost的IP + - **UHostId** (str) - 挂载的UHost的Id + - **UHostName** (str) - 挂载的UHost的Name + - **UKmsMode** (str) - 是否是加密盘,是:"Yes", 否:"No" + - **Version** (str) - 是否支持数据方舟,支持:"2.0", 不支持:"1.0" + - **Zone** (str) - 可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDiskRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDisk", d, **kwargs) + return apis.DescribeUDiskResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDiskPrice - 获取UDisk实例价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,范围[1~1000] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic + - **DiskType** (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDDataDisk(RSSD数据盘),默认值(DataDisk) + - **Quantity** (int) - 购买UDisk的时长,默认值为1 + - **UDataArkMode** (str) - 是否打开数据方舟, 打开"Yes",关闭"No", 默认关闭 + + **Response** + + - **DataSet** (list) - 见 **UDiskPriceDataSet** 模型定义 + + **Response Model** + + **UDiskPriceDataSet** + + - **ChargeName** (str) - "UDataArk","UDisk" + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **OriginalPrice** (int) - 用户折后价 + - **Price** (int) - 价格 (单位: 分) + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDiskPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskPrice", d, **kwargs) + return apis.DescribeUDiskPriceResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_snapshot( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDiskSnapshot - 获取UDisk快照 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **SnapshotId** (str) - 快照id,SnapshotId , UDiskId 同时传SnapshotId优先 + - **UDiskId** (str) - UDiskId,返回该盘所做快照.(必须同时传Zone) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDiskSnapshotSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UDiskSnapshotSet** + + - **CmkId** (str) - 该快照的cmk id + - **CmkIdAlias** (str) - cmk id 别名 + - **CmkIdStatus** (str) - 该快照cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) + - **Comment** (str) - 快照描述 + - **CreateTime** (int) - 创建时间 + - **DataKey** (str) - 该快照的密文密钥 + - **DiskType** (int) - 磁盘类型,0:数据盘,1:系统盘 + - **ExpiredTime** (int) - 过期时间 + - **IsUDiskAvailable** (bool) - 对应磁盘是否处于可用状态 + - **Name** (str) - 快照名称 + - **Size** (int) - 容量单位GB + - **SnapshotId** (str) - 快照Id + - **Status** (str) - 快照状态,Normal:正常,Failed:失败,Creating:制作中 + - **UDiskId** (str) - 快照的源UDisk的Id + - **UDiskName** (str) - 快照的源UDisk的Name + - **UHostId** (str) - 对应磁盘制作快照时所挂载的主机 + - **UKmsMode** (str) - 是否是加密盘快照,是:"Yes", 否:"No" + - **Version** (str) - 快照版本 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDiskSnapshotRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskSnapshot", d, **kwargs) + return apis.DescribeUDiskSnapshotResponseSchema().loads(resp)
+ +
[docs] def describe_udisk_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDiskUpgradePrice - 获取UDisk升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 购买UDisk大小,单位:GB,范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限。 + - **SourceId** (str) - (Required) 升级目标UDisk ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DiskType** (str) - 磁盘类型,SSDDataDisk:ssd数据盘,DataDisk:普通数据盘,SystemDisk:普通系统盘,SSDSystemDisk:ssd系统盘。默认为DataDisk + - **UDataArkMode** (str) - 是否打开数据方舟, 打开"Yes",关闭"No", 默认关闭 + + **Response** + + - **OriginalPrice** (int) - 用户折后价 + - **Price** (int) - 价格 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDiskUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDiskUpgradePrice", d, **kwargs) + return apis.DescribeUDiskUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def detach_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DetachUDisk - 卸载某个已经挂载在指定UHost实例上的UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要卸载的UDisk实例ID + - **UHostId** (str) - (Required) UHost实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UDiskId** (str) - 卸载的UDisk实例ID + - **UHostId** (str) - 卸载的UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DetachUDiskRequestSchema().dumps(d) + + resp = self.invoke("DetachUDisk", d, **kwargs) + return apis.DetachUDiskResponseSchema().loads(resp)
+ +
[docs] def rename_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ RenameUDisk - 重命名UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 重命名的UDisk的Id + - **UDiskName** (str) - (Required) 重命名UDisk的name + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RenameUDiskRequestSchema().dumps(d) + + resp = self.invoke("RenameUDisk", d, **kwargs) + return apis.RenameUDiskResponseSchema().loads(resp)
+ +
[docs] def resize_udisk(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ ResizeUDisk - 调整UDisk容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 调整后大小, 单位:GB, 范围[1~2000],权限位控制可达8000,若需要请申请开通相关权限。 + - **UDiskId** (str) - (Required) UDisk Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CouponId** (str) - 使用的代金券id + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeUDiskRequestSchema().dumps(d) + + resp = self.invoke("ResizeUDisk", d, **kwargs) + return apis.ResizeUDiskResponseSchema().loads(resp)
+ +
[docs] def restore_udisk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RestoreUDisk - 从备份恢复数据至UDisk + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDiskId** (str) - (Required) 需要恢复的盘id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SnapshotId** (str) - 从指定的快照恢复 + - **SnapshotTime** (int) - 指定从方舟恢复的备份时间点 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RestoreUDiskRequestSchema().dumps(d) + + resp = self.invoke("RestoreUDisk", d, **kwargs) + return apis.RestoreUDiskResponseSchema().loads(resp)
+ +
[docs] def set_udisk__udataark_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ SetUDiskUDataArkMode - 设置UDisk数据方舟的状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDataArkMode** (str) - (Required) 是否开启数据方舟,开启:"Yes", 不支持:"No" + - **UDiskId** (str) - (Required) 需要设置数据方舟的UDisk的Id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.SetUDiskUDataArkModeRequestSchema().dumps(d) + + resp = self.invoke("SetUDiskUDataArkMode", d, **kwargs) + return apis.SetUDiskUDataArkModeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/udpn/client.html b/docs/build/html/_modules/ucloud/services/udpn/client.html new file mode 100644 index 00000000..86e5481f --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/udpn/client.html @@ -0,0 +1,322 @@ + + + + + + + ucloud.services.udpn.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udpn.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udpn.schemas import apis
+
+
+
[docs]class UDPNClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDPNClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_udpn( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AllocateUDPN - 分配一条 UDPN 专线 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽 + - **Peer1** (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **Peer2** (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **ChargeType** (str) - 计费类型,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费 + - **CouponId** (str) - 代金劵 + - **Quantity** (int) - 计费时长,默认 1 + + **Response** + + - **UDPNId** (str) - 资源名称 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateUDPNRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateUDPN", d, **kwargs) + return apis.AllocateUDPNResponseSchema().loads(resp)
+ +
[docs] def describe_udpn( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUDPN - 描述 UDPN + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度,默认为 20 + - **Offset** (int) - 列表起始位置偏移量,默认为 0 + - **UDPNId** (str) - 申请到的 UDPN 资源 ID。若为空,则查询该用户在机房所有的专线信息。非默认项目资源,需填写ProjectId + + **Response** + + - **DataSet** (list) - 见 **UDPNData** 模型定义 + - **TotalCount** (int) - 查询到的总数量 + + **Response Model** + + **UDPNData** + + - **Bandwidth** (int) - 带宽 + - **ChargeType** (str) - 计费类型 + - **CreateTime** (int) - unix 时间戳 创建时间 + - **ExpireTime** (int) - unix 时间戳 到期时间 + - **Peer1** (str) - 可用区域 1 + - **Peer2** (str) - 可用区域 2 + - **UDPNId** (str) - UDPN 资源短 ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUDPNRequestSchema().dumps(d) + + resp = self.invoke("DescribeUDPN", d, **kwargs) + return apis.DescribeUDPNResponseSchema().loads(resp)
+ +
[docs] def get_udpn_line_list( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUDPNLineList - 获取当前支持的专线线路列表 + + **Request** + + - **ProjectId** (str) - (Config) + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UDPNLineSet** 模型定义 + - **TotalCount** (int) - DataSet中的元素个数 + + **Response Model** + + **UDPNLineSet** + + - **BandwidthUpperLimit** (int) - 线路带宽上限,单位 M + - **LocalRegion** (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky + - **RemoteRegion** (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUDPNLineListRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNLineList", d, **kwargs) + return apis.GetUDPNLineListResponseSchema().loads(resp)
+ +
[docs] def get_udpn_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUDPNPrice - 获取 UDPN 价格 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽信息 + - **Peer1** (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **Peer2** (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky + - **ChargeType** (str) - 计费类型 + - **Quantity** (int) - 购买时长 + + **Response** + + - **Price** (float) - 专线价格 + - **PurchaseValue** (int) - 资源有效期 unix 时间戳 + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.GetUDPNPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNPrice", d, **kwargs) + return apis.GetUDPNPriceResponseSchema().loads(resp)
+ +
[docs] def get_udpn_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUDPNUpgradePrice - 获取专线升级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 带宽 + - **UDPNId** (str) - (Required) 专线带宽资源 Id + + **Response** + + - **Price** (float) - 升级后的价格 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUDPNUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUDPNUpgradePrice", d, **kwargs) + return apis.GetUDPNUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def modify_udpn_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUDPNBandwidth - 修改带宽值 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 调整后专线带宽, 单位为Mbps,取值范围为大于等于2且小于等于1000([2-1000])的整数 + - **UDPNId** (str) - (Required) UDPN Id + - **CouponId** (str) - 代金劵 ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUDPNBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyUDPNBandwidth", d, **kwargs) + return apis.ModifyUDPNBandwidthResponseSchema().loads(resp)
+ +
[docs] def release_udpn(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ ReleaseUDPN - 释放 UDPN + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UDPNId** (str) - (Required) UDPN 资源 Id + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReleaseUDPNRequestSchema().dumps(d) + + resp = self.invoke("ReleaseUDPN", d, **kwargs) + return apis.ReleaseUDPNResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/udts/client.html b/docs/build/html/_modules/ucloud/services/udts/client.html new file mode 100644 index 00000000..a5463272 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/udts/client.html @@ -0,0 +1,516 @@ + + + + + + + + ucloud.services.udts.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.udts.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.udts.schemas import apis
+
+
+
[docs]class UDTSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UDTSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def check_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUDTSTask - 对UDTS 任务提供预检查功能 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **MaxRetryCount** (str) - (Required) 重试次数,最大为 5。 默认为0 + - **Name** (str) - (Required) task 名称,长度不能超过 128 + - **Type** (str) - (Required) 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。 + - **Query** (str) - 废弃 + - **Source** (list) - 见 **CheckUDTSTaskParamSource** 模型定义 + - **Target** (dict) - 见 **CheckUDTSTaskParamTarget** 模型定义 + + **Response** + + - **Action** (str) - 操作名称 + - **Data** (dict) - 见 **CheckUDTSTaskResult** 模型定义 + - **Message** (str) - 返回消息 + - **RetCode** (str) - 返回码 + + **Request Model** + + **CheckUDTSTaskParamSourceMySQLNodeSyncData** + - **BinlogGTID** (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogName** (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogPos** (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **ServerID** (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值 + + + **CheckUDTSTaskParamSourceMySQLNodeQueryData** + - **DBName** (str) - 数据集成时需要迁移的 DB 名 + - **NewDBName** (str) - 数据集成时迁移后的 DB 名 + + + **CheckUDTSTaskParamTargetMySQLNode** + - **DataRegion** (str) - 目标数据库地域,比如 cn-bj2 + - **Host** (str) - 目标数据库地址, 比如 10.9.37.212 + - **Password** (str) - 目标数据库密码 + - **Port** (int) - 目标数据库端口,比如 3306 + - **SubnetId** (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq + - **User** (str) - 目标数据库用户名,比如 root + - **VPCId** (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte + + + **CheckUDTSTaskParamSourceMySQLNode** + - **DataRegion** (str) - 数据库地域,比如 cn-bj2 + - **Database** (str) - 需要迁移的 DB 名称 + - **Host** (str) - 源数据库地址, 比如 10.9.37.200 + - **Password** (str) - 源 MySQL 密码 + - **Port** (int) - 源 MySQL 端口,如 3306 + - **QueryData** (list) - 见 **CheckUDTSTaskParamSourceMySQLNodeQueryData** 模型定义 + - **SubnetId** (str) - 子网 ID + - **SyncData** (dict) - 见 **CheckUDTSTaskParamSourceMySQLNodeSyncData** 模型定义 + - **Table** (str) - 需要迁移的 table 名 + - **User** (str) - 源 MySQL 用户名,如 root + - **VPCId** (str) - VPC + + + **CheckUDTSTaskParamTarget** + - **DataType** (str) - 目标数据库类型,比如 mysql + - **MySQLNode** (dict) - 见 **CheckUDTSTaskParamTargetMySQLNode** 模型定义 + - **NWType** (str) - 目标 db 网络类型,目前进支持 user + + + **CheckUDTSTaskParamSource** + - **DataType** (str) - 数据库类型 + - **Mode** (str) - // 任务类型,值可以是 full, incremental, full+incremental, bidirectional + - **MySQLNode** (dict) - 见 **CheckUDTSTaskParamSourceMySQLNode** 模型定义 + - **NWType** (str) - 源网络类型,可以是 public,user,dedicated_line + + + **Response Model** + + **CheckResultItem** + - **ErrMessage** (str) - + - **State** (str) - 状态 + + + **CheckResult** + - **Config** (dict) - 见 **CheckResultItem** 模型定义 + - **Connection** (dict) - 见 **CheckResultItem** 模型定义 + - **Privileges** (dict) - 见 **CheckResultItem** 模型定义 + + + **CheckUDTSTaskResult** + - **Source** (dict) - 见 **CheckResult** 模型定义 + - **Target** (dict) - 见 **CheckResult** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CheckUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("CheckUDTSTask", d, **kwargs) + return apis.CheckUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def create_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUDTSTask - 创建UDTS任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) task 名称,长度不能超过 128 + - **Type** (str) - (Required) 任务类型,transfer(数据传输) 或 integration(数据集成) + - **IsUnidirection** (str) - 暂时未使用该字段 + - **MaxRetryCount** (str) - 重试次数,最大为 5。 默认为0 + - **Query** (str) - 暂时未使用该字段 + - **Remark** (str) - 备注信息,长度不能大于 255 + - **Source** (list) - 见 **CreateUDTSTaskParamSource** 模型定义 + - **Target** (dict) - 见 **CreateUDTSTaskParamTarget** 模型定义 + + **Response** + + - **Data** (dict) - + - **Message** (str) - 返回消息 + + **Request Model** + + **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData** + - **ExcludeTables** (bool) - 暂时未使用该字段 + - **TableNames** (str) - 暂时未使用该字段 + + + **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps** + - **NewTableName** (str) - 数据集成时迁移后的 Table 名 + - **TableName** (str) - 数据集成时需要迁移的 Table 名 + + + **CreateUDTSTaskParamSourceMySQLNodeSyncData** + - **BinlogGTID** (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogName** (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **BinlogPos** (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 + - **ServerID** (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值 + + + **CreateUDTSTaskParamSourceMySQLNodeQueryData** + - **DBName** (str) - 数据集成时需要迁移的 DB 名 + - **NewDBName** (str) - 数据集成时迁移后的 DB 名 + - **TableData** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData** 模型定义 + - **TableMaps** (list) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps** 模型定义 + + + **CreateUDTSTaskParamSourceMySQLNode** + - **DataRegion** (str) - 数据库地域,比如 cn-bj2 + - **Database** (str) - 需要迁移的 DB 名称 + - **DupAction** (str) - 重复数据处理规则,数据集成时该参数才有效,值为 ignore或者replace + - **Host** (str) - 源数据库地址 + - **KeepExistData** (bool) - 是否保留原有数据,只有数据集成时该参数才有效 + - **Password** (str) - 源数据库密码 + - **Port** (int) - 源数据库端口 + - **QueryData** (list) - 见 **CreateUDTSTaskParamSourceMySQLNodeQueryData** 模型定义 + - **SubnetId** (str) - 源数据库子网 ID,当网络类型为 user 时需要填写 + - **SyncData** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNodeSyncData** 模型定义 + - **Table** (str) - 需要迁移的 table 名 + - **User** (str) - 源数据库用户名 + - **VPCId** (str) - 源数据库 VPC ID,当网络类型为 user 时需要填写 + + + **CreateUDTSTaskParamTargetMySQLNode** + - **DataRegion** (str) - 目标数据库地域,比如 cn-bj2 + - **Host** (str) - 目标数据库地址, 比如 10.9.37.212 + - **NoBinlog** (bool) - 是否在全量过程中,临时禁用目标 MySQL 产生 binlog,在目标磁盘空间不足,或者需要获取更快的迁移速度时可以使用,该参数会破坏目标 MySQL 的高可用 + - **Password** (str) - 目标数据库密码 + - **Port** (int) - 目标数据库端口,比如 3306 + - **SubnetId** (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq + - **User** (str) - 目标数据库用户名,比如 root + - **VPCId** (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte + + + **CreateUDTSTaskParamSource** + - **BandwidthLimit** (int) - 源端限速值,单位为 MB/s + - **DataType** (str) - 数据库类型,比如 mysql + - **Mode** (str) - 任务类型,值可以是 full, incremental, full+incremental, bidirectional + - **MySQLNode** (dict) - 见 **CreateUDTSTaskParamSourceMySQLNode** 模型定义 + - **NWType** (str) - 源网络类型,可以是 public,user,dedicated_line + + + **CreateUDTSTaskParamTarget** + - **BandwidthLimit** (str) - 目标端限速,单位为 MB/s + - **DataType** (str) - 目标数据库类型,比如 mysql + - **Mode** (str) - + - **MySQLNode** (dict) - 见 **CreateUDTSTaskParamTargetMySQLNode** 模型定义 + - **NWType** (str) - 目标 db 网络类型,目前仅支持 user + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUDTSTaskRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUDTSTask", d, **kwargs) + return apis.CreateUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def get_udts_task_history( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDTSTaskHistory - 获取任务历史状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **TaskId** (str) - (Required) 任务短 id + - **Type** (str) - 任务类型 + + **Response** + + - **Data** (list) - 见 **TaskHistoryItem** 模型定义 + + **Response Model** + + **TaskHistoryItem** + - **AntID** (str) - 任务 ID + - **AntState** (str) - 任务状态 + - **CreateTime** (int) - 事件时间,值为 timestamp + - **CreateTimeH** (str) - 事件时间,为可读的日期时间 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUDTSTaskHistoryRequestSchema().dumps(d) + + resp = self.invoke("GetUDTSTaskHistory", d, **kwargs) + return apis.GetUDTSTaskHistoryResponseSchema().loads(resp)
+ +
[docs] def get_udts_task_status( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUDTSTaskStatus - 查看服务状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **TaskId** (str) - (Required) 任务ID + - **Type** (str) - 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。 + + **Response** + + - **Data** (dict) - 见 **StatusData** 模型定义 + - **Message** (str) - 返回信息 + + **Response Model** + + **SyncData** + - **BinlogGTID** (str) - GTID + - **BinlogName** (str) - Binlog 文件名, 长度不超过128字符 + - **BinlogPos** (int) - Binlog Pos + - **ServerId** (int) - 分配给UDTS task的server ID, 必须在MySQL集群中唯一 + + + **Progress** + - **CurCount** (int) - 已迁移条目数 + - **CurDuration** (int) - 已耗时间(单位秒) + - **Percentage** (float) - 完成进度 + - **TotalCount** (int) - 总条目数 + - **TotalDuration** (int) - 估算总耗时间(单位秒) + + + **StatusData** + - **CurRetryCount** (int) - 当前失败重试次数 + - **FailedMessage** (str) - 当Status为Failed时, 显示失败原因 + - **MaxRetryCount** (int) - 用户设置的最大失败重试次数 + - **Progress** (dict) - 见 **Progress** 模型定义 + - **Status** (str) - 任务状态, 状态有 Created:已创建,Checking:检查中,Dumping:转储中,Loading:加载中,Syncing:同步中,Synced:已同步,Done:完成,Failed:失败,Stopping:停止中,Stopped:停止,RetryPending:重试等待中,Starting:启动中,FailedUnrecoverable:异常,StoppedUnrecoverable:异常,Success:成功,Started:已启动 + - **Sync** (dict) - 见 **SyncData** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUDTSTaskStatusRequestSchema().dumps(d) + + resp = self.invoke("GetUDTSTaskStatus", d, **kwargs) + return apis.GetUDTSTaskStatusResponseSchema().loads(resp)
+ +
[docs] def list_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUDTSTask - 获取用户创建的 Task 信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (str) - 请求数量,默认为 20 + - **Offset** (str) - 偏移量,默认为 0 + - **Type** (str) - 任务类型 + + **Response** + + - **Data** (list) - 见 **ListDataItem** 模型定义 + - **Message** (str) - 返回信息 + + **Response Model** + + **Progress** + - **CurCount** (int) - 已迁移条目数 + - **CurDuration** (int) - 已耗时间(单位秒) + - **Percentage** (float) - 完成进度 + - **TotalCount** (int) - 总条目数 + - **TotalDuration** (int) - 估算总耗时间(单位秒) + + + **ListDataItem** + - **CreateTime** (int) - 创建时间 + - **CurRetryCount** (int) - 当前失败重试次数 + - **MaxRetryCount** (int) - 最大失败重试次数 + - **Name** (str) - 任务名称 + - **Progress** (dict) - 见 **Progress** 模型定义 + - **Status** (str) - 任务状态 + - **TaskId** (str) - 任务 ID + - **Type** (str) - 任务类型, full全量, incremental增量,full+incremental全量+增量。 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ListUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("ListUDTSTask", d, **kwargs) + return apis.ListUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def start_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUDTSTask - 启动UDTS服务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TaskId** (str) - (Required) 任务ID + - **Type** (str) - 任务类型 + + **Response** + + - **Message** (str) - 返回信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StartUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("StartUDTSTask", d, **kwargs) + return apis.StartUDTSTaskResponseSchema().loads(resp)
+ +
[docs] def stop_udts_task( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUDTSTask - 停止UDTS任务 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TaskId** (str) - (Required) 任务 ID + - **Type** (str) - 任务类型 + + **Response** + + - **Message** (str) - 返回信息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StopUDTSTaskRequestSchema().dumps(d) + + resp = self.invoke("StopUDTSTask", d, **kwargs) + return apis.StopUDTSTaskResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uec/client.html b/docs/build/html/_modules/ucloud/services/uec/client.html new file mode 100644 index 00000000..c284ebf3 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uec/client.html @@ -0,0 +1,1579 @@ + + + + + + + + ucloud.services.uec.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uec.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uec.schemas import apis
+
+
+
[docs]class UECClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UECClient, self).__init__(config, transport, middleware, logger) + +
[docs] def bind_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """BindUEcFirewall - 绑定防火墙,应用防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **ResourceId** (str) - (Required) 虚拟机资源Id或容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.BindUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("BindUEcFirewall", d, **kwargs) + return apis.BindUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcFirewall - 创建外网防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 防火墙名称 + - **Remark** (str) - 描述 + - **Rule** (list) - 见 **CreateUEcFirewallParamRule** 模型定义 + + **Response** + + - **FirewallId** (str) - 防火墙Id + + **Request Model** + + **CreateUEcFirewallParamRule** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcFirewallRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcFirewall", d, **kwargs) + return apis.CreateUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcHolder - 创建容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CpuCore** (float) - (Required) 容器组Cpu总核数 + - **IdcId** (str) - (Required) 机房id + - **MemSize** (int) - (Required) 容器组总内存,单位MB + - **SubnetId** (str) - (Required) 子网ID + - **Bandwidth** (int) - 外网绑定的带宽(单位M,默认0,只有当ElasticIp为yes时,默认1) + - **ChargeQuantity** (int) - 月数或者年数(默认值:1,当为按月计费时,0表示计费到月底,默认值为0) + - **ChargeType** (int) - 付费方式(2按月、3按年。默认2,默认月付) + - **ElasticIp** (str) - 绑定外网ip(yes-绑定,no-不绑定,默认no) + - **FirewallId** (str) - 防火墙ID + - **Image** (list) - 见 **CreateUEcHolderParamImage** 模型定义 + - **Name** (str) - 容器组名称(默认default) + - **Pack** (list) - 见 **CreateUEcHolderParamPack** 模型定义 + - **ProductType** (str) - 机型(normal-标准型,hf-高性能型,默认normal) + - **RestartStrategy** (int) - 重启策略(0总是,1失败是,2永不,默认0) + - **Storage** (list) - 见 **CreateUEcHolderParamStorage** 模型定义 + + **Response** + + - **ResourceId** (str) - 容器组资源id + + **Request Model** + + **CreateUEcHolderParamPack** + - **Args** (str) - 容器参数(多个用;隔开) + - **Cmd** (str) - 开启容器的命令 + - **ConfigDict** (str) - 容器配置字典(多个用;隔开,如:/data1:resId1;/data2:resId2) + - **CpuCore** (float) - 容器Cpu核数 + - **Environment** (str) - 容器环境变量(多个用;隔开,如:key1:value1;key2:value2) + - **ImageName** (str) - 容器镜像名称 + - **MemSize** (int) - 容器内存,单位MB + - **Name** (str) - 容器名称 + - **WorkDir** (str) - 容器工作目录 + + + **CreateUEcHolderParamImage** + - **Message** (str) - 镜像用户名和密码(如镜像名:密码) + - **StoreAddress** (str) - 镜像仓库地址 + + + **CreateUEcHolderParamStorage** + - **Path** (str) - 存储卷挂载路径 + - **ResourceId** (str) - 存储卷资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcHolderRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcHolder", d, **kwargs) + return apis.CreateUEcHolderResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcSubnet - 创建子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CIDR** (str) - (Required) 子网cidr + - **IdcId** (str) - (Required) 机房ID + - **Comment** (str) - 备注 + - **SubnetName** (str) - 子网名称 + + **Response** + + - **SubnetId** (str) - 子网ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcSubnetRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcSubnet", d, **kwargs) + return apis.CreateUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def create_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUEcVHost - 创建虚拟机v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **CpuCore** (int) - (Required) cpu核心数 + - **DiskSize** (int) - (Required) 数据盘大小,单位GB + - **IdcId** (str) - (Required) 机房id + - **ImageId** (str) - (Required) 镜像ID + - **MemSize** (int) - (Required) 内存大小,单位GB + - **NetLimit** (int) - (Required) 节点带宽限制,单位Mbs + - **AccountName** (str) - 账户名,默认root + - **ChargeQuantity** (int) - 月数或者年数,0计费到月底, 默认0 + - **ChargeType** (int) - 付费方式,1按时,2按月,3按年,默认2 + - **FirewallId** (str) - 外网防护墙规则组,默认 + - **IsNeedOuterIp** (str) - (已废弃)是否需要外网ip(yes-是,no-否) + - **Isp** (list) - 运营商(1-电信,2-联通,4移动) + - **NodeCount** (int) - 创建节点数量,默认1 + - **NodeName** (str) - 节点名称 + - **PassWord** (str) - 密码 + - **ProductType** (str) - 产品类型:normal(标准型),hf(高频型) + - **SubnetId** (str) - 子网ID + - **SysDiskSize** (int) - 系统盘大小,单位GB, 默认20GB + + **Response** + + - **NodeList** (list) - 见 **NodeList** 模型定义 + + **Response Model** + + **NodeList** + - **NodeId** (str) - 虚拟机资源id + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateUEcVHostRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUEcVHost", d, **kwargs) + return apis.CreateUEcVHostResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcCustomImage - 删除UEDN客户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **IdcId** (str) - 机房ID,带机房ID表示只删除指定机房镜像 + + **Response** + + - **ImageId** (int) - 镜像ID + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcCustomImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcCustomImage", d, **kwargs) + return apis.DeleteUEcCustomImageResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcHolder - 删除容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **HolderId** (list) - (Required) 容器组资源id,n为0,1,2... + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcHolder", d, **kwargs) + return apis.DeleteUEcHolderResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcSubnet - 删除子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcSubnet", d, **kwargs) + return apis.DeleteUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUEcVHost - 删除vhost虚拟机 v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("DeleteUEcVHost", d, **kwargs) + return apis.DeleteUEcVHostResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcFirewall - 获取防火墙信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - 防火墙ID,默认为返回所有防火墙 + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceId** (str) - 绑定防火墙组的虚拟机资源ID + + **Response** + + - **FirewallSet** (list) - 见 **FirewallInfo** 模型定义 + - **TotalCount** (int) - 满足条件的节点总数 + + **Response Model** + + **RuleInfo** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + **FirewallInfo** + - **CreateTime** (int) - 创建时间 + - **FirewallId** (str) - 防火墙Id + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 描述 + - **ResourceCount** (int) - 防火墙绑定资源数量 + - **Rule** (list) - 见 **RuleInfo** 模型定义 + - **Type** (str) - 防火墙组类型,枚举值为: "user defined", 用户自定义防火墙; "recommend web", 默认Web防火墙; "recommend non web", 默认非Web防火墙 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcFirewall", d, **kwargs) + return apis.DescribeUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_firewall_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcFirewallResource - 防火墙绑定的资源列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + + **Response** + + - **ResourceSet** (list) - 见 **ResourceInfo** 模型定义 + - **TotalCount** (int) - 资源总数 + + **Response Model** + + **ResourceInfo** + - **Name** (str) - 节点名称 + - **PublicIpList** (list) - 节点公网Ip列表 + - **Remark** (str) - 节点备注 + - **ResourceId** (str) - 资源Id + - **State** (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcFirewallResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcFirewallResource", d, **kwargs) + return apis.DescribeUEcFirewallResourceResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcHolder - 获得容器组信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **HolderId** (list) - 容器组资源id + - **Limit** (int) - 返回数据长度,默认为20,非负整数 + - **Offset** (int) - 列表起始位置偏移量,默认为0。非负整数 + + **Response** + + - **HolderList** (list) - 见 **HolderList** 模型定义 + - **TotalCount** (int) - 满足条件的容器组总数 + + **Response Model** + + **CfgDictList** + - **MountPath** (str) - 挂载路径 + - **Name** (str) - 名称 + - **ResourceId** (str) - 资源id + + + **EnvList** + - **Key** (str) - 环境变量key值 + - **Value** (str) - 环境变量Value值 + + + **StorVolumeInfo** + - **DiskSize** (int) - 容量(单位GB) + - **MountPoint** (str) - 挂载点 + - **Name** (str) - 名称 + - **ResourceId** (str) - 资源id + + + **DockerInfo** + - **Args** (str) - 参数 + - **CfgDictList** (list) - 见 **CfgDictList** 模型定义 + - **Command** (str) - 命令 + - **CpuCores** (float) - CPU核数(/核)精度0.1核 + - **EnvList** (list) - 见 **EnvList** 模型定义 + - **ImageName** (str) - 镜像名称 + - **MemSize** (float) - 内存大小(Gi) + - **Name** (str) - 容器名称 + - **State** (int) - 容器状态,0:初始化;1:拉取镜像;2:拉取镜像失败;3:启动中;4:运行中;5:正在停止;6:已停止;7:已删除;8:镜像拉取成功;9:启动失败;99:异常 + - **WorkDir** (str) - 工作目录 + + + **ImageList** + - **ImageKey** (str) - 镜像密钥 + - **StoreAddr** (str) - 仓库地址 + - **UserName** (str) - 用户名称 + + + **IpList** + - **Ip** (str) - 外网ip + - **Isp** (str) - 运营商 + + + **HolderList** + - **City** (str) - 城市名称 + - **CreateTime** (int) - 创建时间 + - **DockerCount** (int) - 容器数量 + - **DockerInfo** (list) - 见 **DockerInfo** 模型定义 + - **ExpireTime** (int) - 过期时间 + - **FirewallId** (str) - 外网防火墙id + - **HolderName** (str) - 容器组名称 + - **IdcId** (str) - 机房id + - **ImageList** (list) - 见 **ImageList** 模型定义 + - **InnerIp** (str) - 容器组内网ip + - **IpList** (list) - 见 **IpList** 模型定义 + - **NetLimit** (int) - 外网绑定的带宽 + - **OcName** (str) - 机房名称 + - **ProductType** (str) - 机器类型(normal通用型,hf高性能型) + - **Province** (str) - 省份名称 + - **ResourceId** (str) - 容器组资源id + - **RestartStrategy** (int) - 0:总是;1:失败是;2:永不 + - **State** (int) - 容器组运行状态0:初始化;1:拉取镜像;2:启动中;3:运行中;4:错误;5:正在重启;6:正在删除;7:已经删除;8:容器运行错误;9:启动失败;99:异常 + - **StorVolumeCount** (int) - 存储卷数量 + - **StorVolumeInfo** (list) - 见 **StorVolumeInfo** 模型定义 + - **SubnetId** (str) - 容器组子网id + - **Type** (int) - 线路类型(运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通) + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcHolder", d, **kwargs) + return apis.DescribeUEcHolderResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_holder_idc( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcHolderIDC - 获取容器组机房信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Cpu** (float) - (Required) 容器组Cpu核数 + - **Memory** (int) - (Required) 容器组内存大小(单位MB) + - **IdcId** (list) - Idc机房id。默认全部机房 + - **ProductType** (str) - 产品类型,normal标准型,hf高性能型 + - **Type** (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + **Response** + + - **IdcList** (list) - 见 **IdcInfo** 模型定义 + + **Response Model** + + **IdcInfo** + - **City** (str) - 城市 + - **IdcId** (str) - 机房ID + - **Isp** (str) - 运营商 + - **MaxNodeCnt** (int) - 机房可创建节点最大数量 + - **Name** (str) - 机房名称 + - **Province** (str) - 省份 + - **Type** (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcHolderIDCRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcHolderIDC", d, **kwargs) + return apis.DescribeUEcHolderIDCResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_idc( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcIDC - 获取IDC机房列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Cpu** (int) - (Required) 节点cpu核数 + - **Memory** (int) - (Required) 节点内存大小, 单位GB + - **IdcId** (list) - Idc机房id。默认全部机房 + - **ProductType** (str) - 产品类型:normal(通用型),hf(高主频型) + - **Type** (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + **Response** + + - **Action** (str) - 操作名称 + - **IdcList** (list) - 见 **IdcInfo** 模型定义 + - **RetCode** (int) - 返回码 + + **Response Model** + + **IdcInfo** + - **City** (str) - 城市 + - **IdcId** (str) - 机房ID + - **Isp** (str) - 运营商 + - **MaxNodeCnt** (int) - 机房可创建节点最大数量 + - **Name** (str) - 机房名称 + - **Province** (str) - 省份 + - **Type** (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcIDCRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcIDC", d, **kwargs) + return apis.DescribeUEcIDCResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcSubnet - 获取子网列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **IdcId** (str) - 机房ID + - **SubnetId** (str) - 子网ID + + **Response** + + - **SubnetList** (list) - 见 **SubnetInfo** 模型定义 + + **Response Model** + + **SubnetInfo** + - **AvailableIPCnt** (int) - 可用ip数 + - **CIDR** (str) - 子网cidr + - **Comment** (str) - 备注 + - **CreateTime** (int) - 创建时间 + - **IdcId** (str) - 机房ID + - **SubnetId** (str) - 子网ID + - **SubnetName** (str) - 子网名称 + - **TotalIpCnt** (int) - 总ip数 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcSubnet", d, **kwargs) + return apis.DescribeUEcSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcVHost - 获取虚拟机列表 2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **IdcId** (list) - Idc机房id。默认全部机房 + - **Limit** (int) - 返回数据长度, 默认20,非负整数 + - **NodeId** (list) - 节点id,创建节点时生成的id。默认全部节点 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **NodeList** (list) - 见 **NodeInfo** 模型定义 + - **TotalCount** (int) - 满足条件的节点总数 + + **Response Model** + + **NodeIpList** + - **Ip** (str) - 外网ip + - **Isp** (str) - 运营商 + - **IspName** (str) - 运营商名称 + + + **NodeInfo** + - **ChargeType** (int) - 付费类型:1按时, 2按月,3按年 + - **City** (str) - 城市 + - **CoreNum** (int) - Cpu核数 + - **CreateTime** (int) - 创建时间 + - **DiskSize** (int) - 数据盘大小, 单位GB + - **ExpiredTime** (int) - 过期时间 + - **FirewallId** (str) - 防火墙Id + - **IdcId** (str) - 机房ID + - **ImageName** (str) - 镜像名称 + - **MemSize** (int) - 节点内存大小,单位GB + - **NetLimit** (int) - 节点带宽限制, 单位Mbs + - **NodeId** (str) - 节点ID + - **NodeIpList** (list) - 见 **NodeIpList** 模型定义 + - **NodeName** (str) - 节点名称 + - **OcName** (str) - 机房名称 + - **ProductType** (str) - 机器类型 + - **Province** (str) - 省份 + - **State** (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常 + - **SysDiskSize** (int) - 系统盘大小, 单位GB + - **Type** (int) - 运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DescribeUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcVHost", d, **kwargs) + return apis.DescribeUEcVHostResponseSchema().loads(resp)
+ +
[docs] def describe_u_ec_v_host_isp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUEcVHostISP - 获取虚拟机运营商信息 + + **Request** + + - **City** (str) - 城市 + - **IspName** (str) - 运营商名称 + - **Province** (str) - 省份 + + **Response** + + - **NodeIspList** (list) - 见 **NodeIspList** 模型定义 + + **Response Model** + + **NodeIspList** + - **City** (str) - 城市 + - **IdcName** (str) - 机房名称 + - **IspName** (str) - 机房运营商名称 + - **LineType** (str) - 线路类型 + - **Province** (str) - 省份 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.DescribeUEcVHostISPRequestSchema().dumps(d) + + resp = self.invoke("DescribeUEcVHostISP", d, **kwargs) + return apis.DescribeUEcVHostISPResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_holder_log( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcHolderLog - 获取单个容器日志 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **PackName** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + - **Data** (str) - 返回的日志数据 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcHolderLogRequestSchema().dumps(d) + + resp = self.invoke("GetUEcHolderLog", d, **kwargs) + return apis.GetUEcHolderLogResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_holder_metrics( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcHolderMetrics - 获取容器(CPU利用率,带宽,内存)数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **PackName** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + - **Type** (list) - (Required) n为0 CPU利用率, 1内存使用率, 2网卡出带宽, 3网卡入带宽, 4网卡出包数, 5网卡入包数 + - **EndTime** (int) - 结束时间 + - **StartTime** (int) - 开始时间 + + **Response** + + - **DataSets** (dict) - 见 **MetricisDataSet** 模型定义 + + **Response Model** + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + **MetricisDataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcHolderMetricsRequestSchema().dumps(d) + + resp = self.invoke("GetUEcHolderMetrics", d, **kwargs) + return apis.GetUEcHolderMetricsResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_idc_cut_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcIDCCutInfo - 获取机房割接信息 + + **Request** + + + **Response** + + - **IDCCutInfo** (list) - 见 **IDCCutInfo** 模型定义 + - **TotalCount** (int) - 满足条件的机房总数 + + **Response Model** + + **ResourceSet** + - **NodeId** (str) - 节点id + - **OuterIps** (list) - 机器外网ip集合 + + + **IDCCutInfo** + - **City** (str) - 城市 + - **CutType** (str) - 割接类型(中断、抖动、断电) + - **EndTime** (int) - 割接结束时间 + - **IDCName** (str) - 机房名称 + - **Province** (str) - 省份 + - **ResourceSet** (list) - 见 **ResourceSet** 模型定义 + - **StartTime** (int) - 割接开始时间 + + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcIDCCutInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUEcIDCCutInfo", d, **kwargs) + return apis.GetUEcIDCCutInfoResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_idcv_host_data( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcIDCVHostData - 获取机房虚拟机监控数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点资源id;n为0,1,2... + - **Type** (list) - (Required) 监控数据类型;n为0,1,2,3,4...,9 + - **BeginTime** (int) - 开始时间戳 + - **EndTime** (int) - 结束时间戳 + + **Response** + + - **DataSets** (dict) - 见 **DataSet** 模型定义 + + **Response Model** + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + **DataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **DiskReadOps** (list) - 见 **MonitorInfo** 模型定义 + - **DiskWriteOps** (list) - 见 **MonitorInfo** 模型定义 + - **IORead** (list) - 见 **MonitorInfo** 模型定义 + - **IOWrite** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcIDCVHostDataRequestSchema().dumps(d) + + resp = self.invoke("GetUEcIDCVHostData", d, **kwargs) + return apis.GetUEcIDCVHostDataResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcImage - uec2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageType** (str) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像 + - **Limit** (int) - 返回数据长度, 默认20,非负整数 + - **Offset** (int) - 数据偏移量,默认0,非负整数 + + **Response** + + - **ImageList** (list) - 见 **ImageInfo** 模型定义 + - **TotalCount** (int) - 镜像总数 + + **Response Model** + + **DeployImageInfo** + - **IdcId** (str) - 机房ID + - **State** (int) - 镜像状态 1-可用, 2-不可用, 3-获取中, 4-转换中, 5-部署中 + + + **ImageInfo** + - **CreateTime** (int) - 镜像创建时间戳 + - **DeployInfoList** (list) - 见 **DeployImageInfo** 模型定义 + - **ImageDesc** (str) - 镜像描述 + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **ImageSize** (int) - 镜像大小,单位GB + - **ImageType** (int) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像 + - **OcType** (str) - 系统类型:unix, windows + - **State** (int) - 镜像状态:镜像状态 1可用,2不可用 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcImageRequestSchema().dumps(d) + + resp = self.invoke("GetUEcImage", d, **kwargs) + return apis.GetUEcImageResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_pod_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcPodPrice - 获得容器组价格 + + **Request** + + - **IdcId** (str) - (Required) 机房id + - **Bandwidth** (int) - 绑定的带宽,默认0,当绑定外网IP时默认1(单位M) + - **ChargeQuantity** (int) - 月数或年数(默认值:1,当支付类型为按月时,默认值为0) + - **ChargeType** (int) - 支付类型(2按月,3按年,默认2) + - **CpuCore** (float) - 容器组总Cpu核心数 + - **ElasticIp** (str) - 是否绑定外网IP(yes:是,no:否,默认:no) + - **MemSize** (int) - 容器组总内存大小(单位M) + - **ProductType** (str) - 产品类型(normal:标准型,hf:高性能型,默认:normal) + + **Response** + + - **HolderPrice** (float) - 容器组价格 + - **IpPrice** (float) - IP和带宽价格 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcPodPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcPodPrice", d, **kwargs) + return apis.GetUEcPodPriceResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcUpgradePrice - 获取虚拟机调整差价 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (str) - (Required) 虚拟机资源ID + - **CpuCore** (int) - cpu核心数 + - **DiskSize** (int) - 数据盘大小,单位GB + - **MemSize** (int) - 内存大小,单位GB + - **NetLimit** (int) - 节点带宽限制,单位Mbs + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + - **Price** (int) - 规格调整差价 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcUpgradePrice", d, **kwargs) + return apis.GetUEcUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_v_host_data( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcVHostData - 获取虚拟机监控数据 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (str) - (Required) 节点id + - **Type** (list) - (Required) 0CPU使用率, 1内存使用率, 2 网卡出流量, 3网卡入流量, 4网卡出包量, 5网卡入包量, 6磁盘读流量, 7磁盘写流量, 8磁盘读次数, 9磁盘写次数 + - **BeginTime** (int) - 查询起始时间 + - **EndTime** (int) - 查询结束时间 + + **Response** + + - **Action** (str) - 操作名称 + - **DataSets** (dict) - 见 **DataSet** 模型定义 + - **RetCode** (int) - 返回码 + + **Response Model** + + **MonitorInfo** + - **TimeStamp** (int) - 时间戳 + - **Value** (int) - 值 + + + **DataSet** + - **CPUUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **DiskReadOps** (list) - 见 **MonitorInfo** 模型定义 + - **DiskWriteOps** (list) - 见 **MonitorInfo** 模型定义 + - **IORead** (list) - 见 **MonitorInfo** 模型定义 + - **IOWrite** (list) - 见 **MonitorInfo** 模型定义 + - **MemUtilization** (list) - 见 **MonitorInfo** 模型定义 + - **NICIn** (list) - 见 **MonitorInfo** 模型定义 + - **NICOut** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketIn** (list) - 见 **MonitorInfo** 模型定义 + - **NetPacketOut** (list) - 见 **MonitorInfo** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUEcVHostDataRequestSchema().dumps(d) + + resp = self.invoke("GetUEcVHostData", d, **kwargs) + return apis.GetUEcVHostDataResponseSchema().loads(resp)
+ +
[docs] def get_u_ec_v_host_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUEcVHostPrice - 获取虚拟机价格 + + **Request** + + - **IdcId** (str) - (Required) 机房Id + - **ChargeQuantity** (int) - 月数或者年数,0计费到月底, 默认0 + - **ChargeType** (int) - 付费方式,1按时,2按月,3按年,默认2 + - **CpuCore** (int) - CPU核数 + - **DiskSize** (int) - 数据盘大小,单位GB + - **IpCount** (int) - 外网IP的数量,默认1 + - **MemSize** (int) - 内存大小,单位GB + - **NetLimit** (int) - 网络带宽限速,单位Mbs + - **NodeCount** (int) - 节点数量,默认1 + - **ProductType** (str) - 产品类型:normal(标准型),hf(高频型),默认normal + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + - **IpPrice** (float) - Ip和带宽价格 + - **NodePrice** (float) - 节点价格 + + """ + # build request + d = {} + req and d.update(req) + d = apis.GetUEcVHostPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUEcVHostPrice", d, **kwargs) + return apis.GetUEcVHostPriceResponseSchema().loads(resp)
+ +
[docs] def import_u_ec_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ImportUEcCustomImage - 导入自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Format** (str) - 镜像格式,可选RAW、qcow2, 不带镜像ID时必填 + - **IdcId** (list) - 镜像需要导入机房,默认分发到所有机房 + - **ImageDesc** (str) - 镜像描述 + - **ImageId** (str) - 镜像Id,不传参表示新导入镜像,传参表示已有镜像分发到指定机房 + - **ImageName** (str) - 镜像名称,不带镜像ID时必填 + - **OsType** (str) - 操作系统平台,linux、windows(当前版本暂不支持windows),不带镜像ID时必填 + - **UFileUrl** (str) - UFile镜像文件下载地址,不带镜像ID时必填 + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ImportUEcCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ImportUEcCustomImage", d, **kwargs) + return apis.ImportUEcCustomImageResponseSchema().loads(resp)
+ +
[docs] def login_u_ec_docker( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """LoginUEcDocker - 登录容器 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 容器名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + - **Link** (str) - 登录地址 + - **LinkPort** (int) - 登录端口 + - **SessionId** (str) - 返回的token + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.LoginUEcDockerRequestSchema().dumps(d) + + resp = self.invoke("LoginUEcDocker", d, **kwargs) + return apis.LoginUEcDockerResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcBandwidth - 修改节点带宽限制 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NetLimit** (str) - (Required) 节点带宽限制,单位Mbs + - **NodeId** (str) - (Required) 节点Id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcBandwidth", d, **kwargs) + return apis.ModifyUEcBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_holder_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcHolderName - 修改容器组名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Name** (str) - (Required) 容器组名称 + - **ResourceId** (str) - (Required) 容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcHolderNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcHolderName", d, **kwargs) + return apis.ModifyUEcHolderNameResponseSchema().loads(resp)
+ +
[docs] def modify_u_ec_image_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUEcImageName - 修改镜像名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **ImageName** (str) - (Required) 镜像名称 + - **ImageDesc** (str) - 镜像描述 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ModifyUEcImageNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUEcImageName", d, **kwargs) + return apis.ModifyUEcImageNameResponseSchema().loads(resp)
+ +
[docs] def poweroff_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """PoweroffUEcVHost - 虚拟机断电 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.PoweroffUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("PoweroffUEcVHost", d, **kwargs) + return apis.PoweroffUEcVHostResponseSchema().loads(resp)
+ +
[docs] def reinstall_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ReinstallUEcVHost - 虚拟机重装系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ImageId** (str) - (Required) 镜像ID + - **NodeId** (str) - (Required) 虚拟机资源ID + - **KeepData** (int) - 是否保留数据盘数据, 0-不保留,1-保留,默认为1 + - **Password** (str) - 节点密码 + - **SysDiskSize** (int) - 系统盘大小,单位GB + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.ReinstallUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("ReinstallUEcVHost", d, **kwargs) + return apis.ReinstallUEcVHostResponseSchema().loads(resp)
+ +
[docs] def restart_u_ec_holder( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUEcHolder - 重启容器组 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **ResourceId** (list) - (Required) 容器组资源id,n为0,1,2... + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RestartUEcHolderRequestSchema().dumps(d) + + resp = self.invoke("RestartUEcHolder", d, **kwargs) + return apis.RestartUEcHolderResponseSchema().loads(resp)
+ +
[docs] def restart_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RestartUEcVHost - 重启虚拟机v2.0 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 节点id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.RestartUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("RestartUEcVHost", d, **kwargs) + return apis.RestartUEcVHostResponseSchema().loads(resp)
+ +
[docs] def start_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUEcVHost - 启动UEC虚拟机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StartUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("StartUEcVHost", d, **kwargs) + return apis.StartUEcVHostResponseSchema().loads(resp)
+ +
[docs] def stop_u_ec_v_host( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUEcVHost - 停止UEC虚拟机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **NodeId** (list) - (Required) 虚拟机资源ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.StopUEcVHostRequestSchema().dumps(d) + + resp = self.invoke("StopUEcVHost", d, **kwargs) + return apis.StopUEcVHostResponseSchema().loads(resp)
+ +
[docs] def un_bind_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UnBindUEcFirewall - 解绑防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **ResourceId** (str) - (Required) 节点Id或容器组资源id + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UnBindUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("UnBindUEcFirewall", d, **kwargs) + return apis.UnBindUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcFirewall - 更新防火墙信息,新增和删除规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **Rule** (list) - 见 **UpdateUEcFirewallParamRule** 模型定义 + + **Response** + + + **Request Model** + + **UpdateUEcFirewallParamRule** + - **Action** (str) - ACCEPT(接受)和DROP(拒绝) + - **Port** (str) - 端口,范围用"-"符号分隔,如:1-65535 + - **Priority** (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) + - **ProtocolType** (str) - 协议,可选值:TCP,UDP,ICMP + - **Remark** (str) - 备注 + - **SrcIp** (str) - 源ip + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcFirewallRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcFirewall", d, **kwargs) + return apis.UpdateUEcFirewallResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_firewall_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcFirewallAttribute - 更新防火墙名称及描述 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **FirewallId** (str) - (Required) 防火墙Id + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 描述 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcFirewallAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcFirewallAttribute", d, **kwargs) + return apis.UpdateUEcFirewallAttributeResponseSchema().loads(resp)
+ +
[docs] def update_u_ec_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUEcSubnet - 更新子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **SubnetId** (str) - (Required) 子网ID + - **Comment** (str) - 备注 + - **SubnetName** (str) - 子网名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateUEcSubnetRequestSchema().dumps(d) + + resp = self.invoke("UpdateUEcSubnet", d, **kwargs) + return apis.UpdateUEcSubnetResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ufile/client.html b/docs/build/html/_modules/ucloud/services/ufile/client.html new file mode 100644 index 00000000..ffd17172 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ufile/client.html @@ -0,0 +1,553 @@ + + + + + + + + ucloud.services.ufile.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ufile.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ufile.schemas import apis
+
+
+
[docs]class UFileClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UFileClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateBucket - 创建Bucket + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BucketName** (str) - (Required) 待创建Bucket的名称,具有全局唯一性 + - **Type** (str) - Bucket访问类型,public或private; 默认为private + + **Response** + + - **BucketId** (str) - 已创建Bucket的ID + - **BucketName** (str) - 已创建Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateBucketRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateBucket", d, **kwargs) + return apis.CreateBucketResponseSchema().loads(resp)
+ +
[docs] def create_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUFileToken - 创建US3令牌 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenName** (str) - (Required) 令牌名称 + - **AllowedBuckets** (list) - 令牌允许操作的bucket,默认*表示全部 + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ]。默认TOKEN_ALLOW_NONE + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀,默认*表示全部 + - **ExpireTime** (int) - Unix 时间戳,精确到秒,为令牌过期时间点。默认过期时间为一天(即当前Unix时间戳+86400);注意:过期时间不能超过 4102416000 + + **Response** + + - **TokenId** (str) - 创建令牌的token_id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUFileTokenRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUFileToken", d, **kwargs) + return apis.CreateUFileTokenResponseSchema().loads(resp)
+ +
[docs] def delete_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteBucket - 删除Bucket + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BucketName** (str) - (Required) 待删除Bucket的名称 + + **Response** + + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteBucketRequestSchema().dumps(d) + + resp = self.invoke("DeleteBucket", d, **kwargs) + return apis.DeleteBucketResponseSchema().loads(resp)
+ +
[docs] def delete_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUFileToken - 删除令牌 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenId** (str) - (Required) 令牌ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("DeleteUFileToken", d, **kwargs) + return apis.DeleteUFileTokenResponseSchema().loads(resp)
+ +
[docs] def describe_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeBucket - 获取Bucket的描述信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 如果提供此参数,则获取相应地域下所有空间的空间名称(只返回空间名称信息) + - **BucketName** (str) - 待获取Bucket的名称,若不提供,则获取所有Bucket + - **Limit** (int) - 获取所有Bucket列表的限制数目,默认为20 + - **Offset** (int) - 获取所有Bucket列表的偏移数目,默认为0 + + **Response** + + - **DataSet** (list) - 见 **UFileBucketSet** 模型定义 + + **Response Model** + + **UFileDomainSet** + - **Cdn** (list) - UCDN加速域名 + - **CustomCdn** (list) - 用户自定义CDN加速域名 + - **CustomSrc** (list) - 用户自定义源站域名 + - **Src** (list) - 源站域名 + + + **UFileBucketSet** + - **Biz** (str) - Bucket所属业务, general或vod或udb general: 普通业务; vod: 视频云业务; udb: 云数据库业务 + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket名称 + - **CdnDomainId** (list) - 与Bucket关联的CND加速域名的ID列表 + - **CreateTime** (int) - Bucket的创建时间 + - **Domain** (dict) - 见 **UFileDomainSet** 模型定义 + - **HasUserDomain** (int) - 是否存在自定义域名。0不存在,1存在,2错误 + - **ModifyTime** (int) - Bucket的修改时间 + - **Region** (str) - Bucket所属地域 + - **Tag** (str) - 所属业务组 + - **Type** (str) - Bucket访问类型 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeBucketRequestSchema().dumps(d) + + resp = self.invoke("DescribeBucket", d, **kwargs) + return apis.DescribeBucketResponseSchema().loads(resp)
+ +
[docs] def describe_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUFileToken - 获取令牌信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Display** (int) - 0表示显示部分token信息;不传递和其他情况表示显示全部token信息 + - **TokenId** (str) - 令牌ID,只返回指定ID信息,否则拉取所有令牌 + - **TokenName** (str) - 令牌名称,只返回指定令牌名称信息,否则拉取所有令牌 + + **Response** + + - **DataSet** (list) - 见 **UFileTokenSet** 模型定义 + + **Response Model** + + **UFileTokenSet** + - **AllowedBuckets** (list) - 令牌允许操作的bucket + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ] + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀 + - **CreateTime** (int) - 创建时间 + - **ExpireTime** (int) - 令牌的超时时间点 + - **ModifyTime** (int) - 修改时间 + - **PrivateKey** (str) - 令牌私钥 + - **PublicKey** (str) - 令牌公钥 + - **Region** (str) - 所属地区 + - **TokenId** (str) - 令牌ID + - **TokenName** (str) - 令牌名称 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("DescribeUFileToken", d, **kwargs) + return apis.DescribeUFileTokenResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuota - 查看配额状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **QuotaType** (str) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count + + **Response** + + - **LeftQuota** (float) - 剩余的配额数值 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetUFileQuotaRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuota", d, **kwargs) + return apis.GetUFileQuotaResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuotaInfo - 获取配额信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **QuotaType** (list) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count + + **Response** + + - **DataSet** (list) - 见 **UFileQuotaDataSetItem** 模型定义 + + **Response Model** + + **UFileQuotaLeft** + - **Left** (float) - 配额剩余量 + + + **UFileQuotaDataSetItem** + - **DownloadFlow** (dict) - 见 **UFileQuotaLeft** 模型定义 + - **Owe** (int) - 是否欠费:1表示欠费;0表示未欠费 + - **Region** (str) - 可用地域 + - **RequestCnt** (dict) - 见 **UFileQuotaLeft** 模型定义 + - **Storage** (dict) - 见 **UFileQuotaLeft** 模型定义 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileQuotaInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuotaInfo", d, **kwargs) + return apis.GetUFileQuotaInfoResponseSchema().loads(resp)
+ +
[docs] def get_ufile_quota_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileQuotaPrice - 根据US3的购买配额,查询需要支付的价格。 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DownloadTraffic** (int) - 下载流量,单位: GB,范围: [0, 60 000],步长:1GB + - **RequestCount** (int) - 请求次数,单位:万次,范围:[0, 1 000 000],步长:1万次 + - **StorageVolume** (int) - 存储容量,单位: GB*天,范围: [0, 30 000 000],步长:100GB*天 + + **Response** + + - **Price** (float) - 待支付价格,单位:分 + + """ + # build request + d = { + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileQuotaPriceRequestSchema().dumps(d) + + resp = self.invoke("GetUFileQuotaPrice", d, **kwargs) + return apis.GetUFileQuotaPriceResponseSchema().loads(resp)
+ +
[docs] def get_ufile_report( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """GetUFileReport - 查看配额使用报表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EndTime** (int) - (Required) 查询结束时间 + - **StartTime** (int) - (Required) 查询开始时间 + + **Response** + + - **DataSet** (list) - 见 **UFileReportSet** 模型定义 + + **Response Model** + + **UFileReportSet** + - **DownloadTraffic** (float) - 配额消费当日使用的下载流量,单位:GB + - **RequestCount** (float) - 配额消费当日使用的请求次数,单位:万次 + - **StorageVolume** (float) - 配额消费当日使用的存储容量,单位:GB*天 + - **Time** (int) - 配额消费时间,unix时间戳,精确到日期 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetUFileReportRequestSchema().dumps(d) + + resp = self.invoke("GetUFileReport", d, **kwargs) + return apis.GetUFileReportResponseSchema().loads(resp)
+ +
[docs] def set_ufile_referer( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SetUFileReferer - 设置对象存储防盗链 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BucketName** (str) - (Required) 存储空间名称 + - **RefererStatus** (str) - (Required) 开启关闭referer防盗链;关闭防盗链会清空防盗链参数设置,开启防盗链必须指定 RefererType、Referers;开启:on, 关闭:off; + - **RefererAllowNull** (bool) - RefererType为白名单时,RefererAllowNull为false代表不允许空referer访问,为true代表允许空referer访问;此参数默认为 true; + - **RefererType** (int) - 防盗链Referer类型,支持两种类型,黑名单和白名单; 1黑名单,2白名单;RefererStatus为"on"时此参数必填; + - **Referers** (list) - 防盗链Referer规则,支持正则表达式(不支持符号';') + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SetUFileRefererRequestSchema().dumps(d) + + resp = self.invoke("SetUFileReferer", d, **kwargs) + return apis.SetUFileRefererResponseSchema().loads(resp)
+ +
[docs] def update_bucket( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateBucket - 更改Bucket的属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **BucketName** (str) - (Required) 待修改Bucket的名称 + - **Type** (str) - (Required) Bucket访问类型;public或private + + **Response** + + - **BucketId** (str) - Bucket的ID + - **BucketName** (str) - Bucket的名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateBucketRequestSchema().dumps(d) + + resp = self.invoke("UpdateBucket", d, **kwargs) + return apis.UpdateBucketResponseSchema().loads(resp)
+ +
[docs] def update_ufile_token( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpdateUFileToken - 更新令牌的操作权限,可操作key的前缀,可操作bucket和令牌超时时间点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TokenId** (str) - (Required) 令牌ID + - **AllowedBuckets** (list) - 令牌允许操作的bucket + - **AllowedOps** (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ] + - **AllowedPrefixes** (list) - 令牌允许操作的key前缀 + - **ExpireTime** (int) - 令牌的超时时间点(时间戳);注意:过期时间不能超过 4102416000 + - **TokenName** (str) - 令牌名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpdateUFileTokenRequestSchema().dumps(d) + + resp = self.invoke("UpdateUFileToken", d, **kwargs) + return apis.UpdateUFileTokenResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ufs/client.html b/docs/build/html/_modules/ucloud/services/ufs/client.html new file mode 100644 index 00000000..9e7d73af --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ufs/client.html @@ -0,0 +1,261 @@ + + + + + + + ucloud.services.ufs.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ufs.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ufs.schemas import apis
+
+
+
[docs]class UFSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UFSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUFSVolume - 创建文件系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ProtocolType** (str) - (Required) 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 + - **Size** (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB + - **StorageType** (str) - (Required) 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限) 默认为Dynamic + - **CouponId** (str) - 使用的代金券id + - **Quantity** (int) - 购买时长 默认: 1 + - **Remark** (str) - 备注 + - **Tag** (str) - 文件系统所属业务组 + - **VolumeName** (str) - 文件系统名称 + + **Response** + + - **VolumeId** (str) - 文件系统ID + - **VolumeName** (str) - 文件系统名称 + - **VolumeStatus** (str) - 文件系统挂载点状态 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUFSVolumeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUFSVolume", d, **kwargs) + return apis.CreateUFSVolumeResponseSchema().loads(resp)
+ +
[docs] def describe_ufs_volume_2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUFSVolume2 - 获取文件系统列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 文件列表长度 + - **Offset** (int) - 文件列表起始 + - **VolumeId** (str) - 文件系统ID + + **Response** + + - **DataSet** (list) - 见 **UFSVolumeInfo2** 模型定义 + - **TotalCount** (int) - 文件系统总数 + + **Response Model** + + **UFSVolumeInfo2** + + - **CreateTime** (int) - 文件系统创建时间(unix时间戳) + - **ExpiredTime** (int) - 文件系统过期时间(unix时间戳) + - **IsExpired** (str) - 是否过期 + - **MaxMountPointNum** (int) - 文件系统允许创建的最大挂载点数目 + - **ProtocolType** (str) - 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 + - **Remark** (str) - 文件系统备注信息 + - **Size** (int) - 文件系统大小,单位GB + - **StorageType** (str) - 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 + - **Tag** (str) - 文件系统所属业务组 + - **TotalMountPointNum** (int) - 当前文件系统已创建的挂载点数目 + - **UsedSize** (int) - 文件系统当前使用容量,单位GB + - **VolumeId** (str) - 文件系统ID + - **VolumeName** (str) - 文件系统名称 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUFSVolume2RequestSchema().dumps(d) + + resp = self.invoke("DescribeUFSVolume2", d, **kwargs) + return apis.DescribeUFSVolume2ResponseSchema().loads(resp)
+ +
[docs] def extend_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ExtendUFSVolume - 文件系统扩容 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB + - **VolumeId** (str) - (Required) 文件系统ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ExtendUFSVolumeRequestSchema().dumps(d) + + resp = self.invoke("ExtendUFSVolume", d, **kwargs) + return apis.ExtendUFSVolumeResponseSchema().loads(resp)
+ +
[docs] def remove_ufs_volume( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RemoveUFSVolume - 删除UFS文件系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VolumeId** (str) - (Required) 文件系统ID + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RemoveUFSVolumeRequestSchema().dumps(d) + + resp = self.invoke("RemoveUFSVolume", d, **kwargs) + return apis.RemoveUFSVolumeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uhost/client.html b/docs/build/html/_modules/ucloud/services/uhost/client.html new file mode 100644 index 00000000..fa504f5b --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uhost/client.html @@ -0,0 +1,979 @@ + + + + + + + ucloud.services.uhost.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uhost.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uhost.schemas import apis
+
+
+
[docs]class UHostClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UHostClient, self).__init__(config, transport, middleware, logger) + +
[docs] def copy_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CopyCustomImage - 复制自制镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SourceImageId** (str) - (Required) 源镜像Id, 参见 DescribeImage + - **TargetProjectId** (str) - (Required) 目标项目Id, 参见 GetProjectList + - **TargetImageDescription** (str) - 目标镜像描述 + - **TargetImageName** (str) - 目标镜像名称 + - **TargetRegion** (str) - 目标地域,不跨地域不用填 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **TargetImageId** (str) - 目标镜像Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CopyCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CopyCustomImage", d, **kwargs) + return apis.CopyCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateCustomImage - 从指定UHost实例,生成自定义镜像。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **ImageDescription** (str) - 镜像描述 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateCustomImage", d, **kwargs) + return apis.CreateCustomImageResponseSchema().loads(resp)
+ +
[docs] def create_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUHostInstance - 创建UHost实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ 获取 + - **LoginMode** (str) - (Required) 主机登陆模式。密码(默认选项): Password。 + - **Password** (str) - (Required) UHost密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AlarmTemplateId** (int) - 告警模板id,如果传了告警模板id,且告警模板id正确,则绑定告警模板。绑定告警模板失败只会在后台有日志,不会影响创建主机流程,也不会在前端报错。 + - **BootDiskSpace** (int) - 【待废弃,不建议调用】系统盘大小。 单位:GB, 范围[20,100], 步长:10 + - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。 + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时付费 \\ 默认为月付 + - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **DiskPassword** (str) - 【待废弃,不建议调用】加密盘的密码。若输入此字段,自动选择加密盘。加密盘需要权限位。 + - **DiskSpace** (int) - 【待废弃,不建议调用】数据盘大小。 单位:GB, 范围[0,8000], 步长:10, 默认值:20,云盘支持0-8000;本地普通盘支持0-2000;本地SSD盘(包括所有GPU机型)支持100-1000 + - **Disks** (list) - 见 **CreateUHostInstanceParamDisks** 模型定义 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与UHostType相关) + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100"] + - **HostType** (str) - 【已废弃】宿主机类型,N2,N1 + - **HotplugFeature** (bool) - 是否开启热升级特性。True为开启,False为未开启,默认False。 + - **InstallAgent** (str) - 【暂不支持】是否安装UGA。'yes': 安装;其他或者不填:不安装。 + - **IsolationGroup** (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。 + - **KeyPair** (str) - 【暂不支持】Keypair公钥,LoginMode为KeyPair时此项必须 + - **MachineType** (str) - 云主机机型(V2.0),枚举值["N", "C", "G", "O"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **MaxCount** (int) - 【批量创建主机时必填】最大创建主机数量,取值范围是[1,100]; + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192 + - **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake"。 + - **Name** (str) - UHost实例名称。默认:UHost。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定实例名称。 + - **NetCapability** (str) - 网络增强。枚举值:Normal(默认),不开启; Super,开启网络增强1.0; Ultra,开启网络增强2.0(仅支持部分可用区,请参考控制台) + - **NetworkId** (str) - 【已废弃】网络ID(VPC2.0情况下无需填写)。VPC1.0情况下,若不填写,代表优先选择基础网络; 若填写,代表选择子网。参见DescribeSubnet。 + - **NetworkInterface** (list) - 见 **CreateUHostInstanceParamNetworkInterface** 模型定义 + - **PrivateIp** (list) - 【数组】创建云主机时指定内网IP。若不传值,则随机分配当前子网下的IP。调用方式举例:PrivateIp.0=x.x.x.x。当前只支持一个内网IP。 + - **PrivateMac** (str) - 【批量创建该参数无效】【内部字段】创建云主机时指定Mac。调用方式举例:PrivateMac="xx:xx:xx:xx:xx:xx"。 + - **Quantity** (int) - 购买时长。默认:值 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表购买至月末。 + - **ResourceType** (int) - 【内部参数】资源类型 + - **SecurityGroupId** (str) - 防火墙Id,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeSecurityGroup <https://docs.ucloud.cn/api/unet-api/describe_security_group.html>`_ 。 + - **SetId** (int) - + - **StorageType** (str) - 【待废弃,不建议调用】磁盘类型,同时设定系统盘和数据盘的磁盘类型。枚举值为:LocalDisk,本地磁盘; UDisk,云硬盘;默认为LocalDisk。仅部分可用区支持云硬盘方式的主机存储方式,具体请查询控制台。 + - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 + - **Tag** (str) - 业务组。默认:Default(Default即为未分组)。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定业务组。 + - **TimemachineFeature** (str) - 【待废弃,不建议调用】是否开启方舟特性。Yes为开启方舟,No为关闭方舟。目前仅选择普通本地盘+普通本地盘 或 SSD云盘+普通云盘的组合支持开启方舟。 + - **UHostType** (str) - 【建议后续不再使用】云主机机型V1.0。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **UserDataScript** (str) - 【暂不支持】cloudinit方式下,用户初始化脚本 + - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 + + **Response** + + - **IPs** (list) - 【批量创建不会返回】IP信息 + - **UHostIds** (list) - UHost实例Id集合 + + **Request Model** + + **CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH** + + - **Area** (str) - 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填一个 + - **AreaCode** (str) - GlobalSSH的。AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个 + - **Port** (int) - SSH端口,1-65535且不能使用80,443端口 + + **CreateUHostInstanceParamNetworkInterfaceEIP** + + - **Bandwidth** (int) - 【如果绑定EIP这个参数必填】弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-800] + - **CouponId** (str) - 当前EIP代金券id。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **GlobalSSH** (dict) - 见 **CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH** 模型定义 + - **OperatorName** (str) - 【如果绑定EIP这个参数必填】弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International + - **PayMode** (str) - 弹性IP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; "ShareBandwidth",共享带宽模式. "Free":免费带宽模式.默认为 "Bandwidth". + - **ShareBandwidthId** (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效 + + **CreateUHostInstanceParamDisks** + + - **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ 当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ + - **CouponId** (str) - 云盘代金券id。不适用于系统盘/本地盘。请通过DescribeCoupon接口查询,或登录用户中心查看 + - **Encrypted** (bool) - 【功能仅部分可用区开放,详询技术支持】磁盘是否加密。加密:true, 不加密: false加密必须传入对应的的KmsKeyId + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **KmsKeyId** (str) - 【功能仅部分可用区开放,详询技术支持】kms key id。选择加密盘时必填。 + - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Type** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + + **CreateUHostInstanceParamNetworkInterface** + + - **EIP** (dict) - 见 **CreateUHostInstanceParamNetworkInterfaceEIP** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUHostInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUHostInstance", d, **kwargs) + return apis.CreateUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeImage - 获取指定数据中心镜像列表,用户可通过指定操作系统类型,镜像Id进行过滤。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (str) - 镜像Id + - **ImageType** (str) - 镜像类型。标准镜像:Base,镜像市场:Business, 自定义镜像:Custom,默认返回所有类型 + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **OsType** (str) - 操作系统类型:Linux, Windows 默认返回所有类型 + - **PriceSet** (int) - 是否返回价格:1返回,0不返回;默认不返回 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ImageSet** (list) - 见 **UHostImageSet** 模型定义 + - **TotalCount** (int) - 满足条件的镜像总数 + + **Response Model** + + **UHostImageSet** + + - **CreateTime** (int) - 创建时间,格式为Unix时间戳 + - **Features** (list) - 特殊状态标识, 目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra](网络增强2.0) + - **FuncType** (str) - 行业镜像类型(仅行业镜像将返回这个值) + - **ImageDescription** (str) - 镜像描述 + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **ImageSize** (int) - 镜像大小 + - **ImageType** (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom + - **IntegratedSoftware** (str) - 集成软件名称(仅行业镜像将返回这个值) + - **Links** (str) - 介绍链接(仅行业镜像将返回这个值) + - **MinimalCPU** (str) - 默认值为空'''。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell” + - **OsName** (str) - 操作系统名称 + - **OsType** (str) - 操作系统类型:Liunx,Windows + - **State** (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable + - **Vendor** (str) - 供应商(仅行业镜像将返回这个值) + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ | + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeImage", d, **kwargs) + return apis.DescribeImageResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUHostInstance - 获取主机或主机列表信息,并可根据数据中心,主机ID等参数进行过滤。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **IsolationGroup** (str) - 硬件隔离组id。通过硬件隔离组筛选主机。 + - **LifeCycle** (int) - 1:普通云主机;2:抢占型云主机;如不传此参数,默认全部获取 + - **Limit** (int) - 返回数据长度,默认为20,最大100 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **SubnetId** (str) - 子网id。通过子网筛选主机。北京一地域无效。 + - **Tag** (str) - 要查询的业务组名称 + - **UHostIds** (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。 + - **VPCId** (str) - vpc id。通过VPC筛选主机。北京一地域无效。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **TotalCount** (int) - UHostInstance总数 + - **UHostSet** (list) - 见 **UHostInstanceSet** 模型定义 + + **Response Model** + + **UHostDiskSet** + + - **BackupType** (str) - 备份方案。若开通了数据方舟,则为DataArk + - **DiskId** (str) - 磁盘ID + - **DiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Drive** (str) - 磁盘盘符 + - **Encrypted** (bool) - true: 加密盘 false:非加密盘 + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Name** (str) - UDisk名字(仅当磁盘是UDisk时返回) + - **Size** (int) - 磁盘大小,单位: GB + - **Type** (str) - 【建议不再使用】磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk + + **UHostIPSet** + + - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) + - **Default** (str) - 是否默认的弹性网卡的信息。true: 是默认弹性网卡;其他值:不是。 + - **IP** (str) - IP地址 + - **IPId** (str) - IP资源ID (内网IP无对应的资源ID) + - **SubnetId** (str) - IP地址对应的子网 ID(北京一当前字段为空) + - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private + - **VPCId** (str) - IP地址对应的VPC ID(北京一当前字段为空) + + **UHostInstanceSet** + + - **AutoRenew** (str) - 是否自动续费,自动续费:“Yes”,不自动续费:“No” + - **BasicImageId** (str) - 基础镜像ID(指当前自定义镜像的来源镜像) + - **BasicImageName** (str) - 基础镜像名称(指当前自定义镜像的来源镜像) + - **BootDiskState** (str) - 系统盘状态 Normal表示初始化完成;Initializing表示在初始化。仍在初始化的系统盘无法制作镜像。 + - **CPU** (int) - 虚拟CPU核数,单位: 个 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); + - **CreateTime** (int) - 创建时间,格式为Unix时间戳 + - **DiskSet** (list) - 见 **UHostDiskSet** 模型定义 + - **ExpireTime** (int) - 到期时间,格式为Unix时间戳 + - **GPU** (int) - GPU个数 + - **HostType** (str) - 【建议不再使用】主机系列:N2,表示系列2;N1,表示系列1 + - **HotplugFeature** (bool) - true: 开启热升级; false,未开启热升级 + - **IPSet** (list) - 见 **UHostIPSet** 模型定义 + - **ImageId** (str) - 【建议不再使用】主机的系统盘ID。 + - **IsolationGroup** (str) - 隔离组id,不在隔离组则返回"" + - **LifeCycle** (str) - 主机的生命周期类型。目前仅支持Normal:普通; + - **MachineType** (str) - 云主机机型(新)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type#主机概念20版本>`_ 。 + - **Memory** (int) - 内存大小,单位: MB + - **Name** (str) - UHost实例名称 + - **NetCapability** (str) - 网络增强。Normal: 无;Super: 网络增强1.0; Ultra: 网络增强2.0 + - **NetworkState** (str) - 【建议不再使用】网络状态。 连接:Connected, 断开:NotConnected + - **OsName** (str) - 创建主机的最初来源镜像的操作系统名称(若直接通过基础镜像创建,此处返回和BasicImageName一致) + - **OsType** (str) - 操作系统类别。返回"Linux"或者"Windows" + - **Remark** (str) - 备注 + - **State** (str) - 实例状态,枚举值:\\ >初始化: Initializing; \\ >启动中: Starting; \\> 运行中: Running; \\> 关机中: Stopping; \\ >关机: Stopped \\ >安装失败: Install Fail; \\ >重启中: Rebooting + - **StorageType** (str) - 【建议不再使用】主机磁盘类型。 枚举值为:\\ > LocalDisk,本地磁盘; \\ > UDisk 云盘。\\只要有一块磁盘为本地盘,即返回LocalDisk。 + - **SubnetType** (str) - 【建议不再使用】仅北京A的云主机会返回此字段。基础网络模式:Default;子网模式:Private + - **Tag** (str) - 业务组名称 + - **TimemachineFeature** (str) - 【建议不再使用】数据方舟模式。枚举值:\\ > Yes: 开启方舟; \\ > no,未开启方舟 + - **TotalDiskSpace** (int) - 总的数据盘存储空间。 + - **UHostId** (str) - UHost实例ID + - **UHostType** (str) - 【建议不再使用】云主机机型(旧)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUHostInstance", d, **kwargs) + return apis.DescribeUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uhost_tags( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUHostTags - 获取指定数据中心的业务组列表。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **TagSet** (list) - 见 **UHostTagSet** 模型定义 + - **TotalCount** (int) - 已有主机的业务组总个数 + + **Response Model** + + **UHostTagSet** + + - **Tag** (str) - 业务组名称 + - **TotalCount** (int) - 该业务组中包含的主机个数 + - **Zone** (str) - 可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUHostTagsRequestSchema().dumps(d) + + resp = self.invoke("DescribeUHostTags", d, **kwargs) + return apis.DescribeUHostTagsResponseSchema().loads(resp)
+ +
[docs] def get_uhost_instance_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUHostInstancePrice - 根据UHost实例配置,获取UHost实例的价格。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CPU** (int) - (Required) CPU核数。可选参数:1-64。可选范围参照控制台。默认值: 4 + - **Count** (int) - (Required) 购买台数,范围[1,5] + - **ImageId** (str) - (Required) 镜像Id,可通过 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ 获取镜像ID + - **Memory** (int) - (Required) 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参照好控制台)。默认值:8192 + - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时付费 \\ 默认为月付。 + - **DiskSpace** (int) - 【待废弃】数据盘大小,单位: GB,范围[0,1000],步长: 10,默认值: 0 + - **Disks** (list) - 见 **GetUHostInstancePriceParamDisks** 模型定义 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段。 + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100"] + - **LifeCycle** (int) - 【未支持】1:普通云主机;2:抢占性云主机;默认普通 + - **MachineType** (str) - 云主机机型(V2版本概念)。枚举值["N", "C", "G", "O"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **NetCapability** (str) - 网络增强。枚举值:Normal,不开启; Super,开启网络增强1.0。 默认值为Normal。 + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **StorageType** (str) - 【待废弃】磁盘类型,同时设定系统盘和数据盘, 枚举值为:LocalDisk,本地磁盘; UDisk,云硬盘; 默认为LocalDisk 仅部分可用区支持云硬盘方式的主机存储方式,具体请查询控制台。 + - **TimemachineFeature** (str) - 【待废弃】方舟机型。No,Yes。默认是No。 + - **UHostType** (str) - 【待废弃】云主机机型(V1版本概念)。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PriceSet** (list) - 见 **UHostPriceSet** 模型定义 + + **Request Model** + + **GetUHostInstancePriceParamDisks** + + - **BackupType** (str) - 磁盘备份方案。枚举值:\\ > NONE,无备份 \\ > DATAARK,数据方舟 \\ 当前磁盘支持的备份模式参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ + - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 + - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **Type** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + + **Response Model** + + **UHostPriceSet** + + - **ChargeType** (str) - 计费类型。Year,Month,Dynamic + - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUHostInstancePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUHostInstancePrice", d, **kwargs) + return apis.GetUHostInstancePriceResponseSchema().loads(resp)
+ +
[docs] def get_uhost_instance_vnc_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUHostInstanceVncInfo - 获取指定UHost实例的管理VNC配置详细信息。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + - **VncIP** (str) - Vnc登录IP + - **VncPassword** (str) - Vnc 登录密码 + - **VncPort** (int) - Vnc登录端口 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUHostInstanceVncInfoRequestSchema().dumps(d) + + resp = self.invoke("GetUHostInstanceVncInfo", d, **kwargs) + return apis.GetUHostInstanceVncInfoResponseSchema().loads(resp)
+ +
[docs] def get_uhost_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUHostUpgradePrice - 获取UHost实例升级配置的价格。可选配置范围请参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID。 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 。 + - **BootDiskSpace** (int) - 【待废弃】系统大小,单位: GB,范围[20,100],步长: 10。 + - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(可选范围参考控制台)。默认值为当前实例的CPU核数。 + - **DiskSpace** (int) - 【待废弃】数据盘大小,单位: GB,范围[0,1000],步长: 10, 默认值是该主机当前数据盘大小。 + - **HostType** (str) - 【待废弃】主机系列,目前支持N1,N2 + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值为当前实例的内存大小。 + - **NetCapValue** (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变) + - **TimemachineFeature** (str) - 方舟机型。No,Yes。默认是No。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Price** (float) - 规格调整差价。精确到小数点后2位。 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUHostUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetUHostUpgradePrice", d, **kwargs) + return apis.GetUHostUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def import_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ImportCustomImage - 把UFile的镜像文件导入到UHost,生成自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Auth** (bool) - (Required) 是否授权。必须填true + - **Format** (str) - (Required) 镜像格式,可选RAW、VHD、VMDK、qcow2 + - **ImageName** (str) - (Required) 镜像名称 + - **OsName** (str) - (Required) 操作系统详细版本,请参考控制台的镜像版本;OsType为Other时,输入参数为Other + - **OsType** (str) - (Required) 操作系统平台,比如CentOS、Ubuntu、Windows、RedHat等,请参考控制台的镜像版本;若导入控制台上没有的操作系统,参数为Other + - **UFileUrl** (str) - (Required) UFile私有空间地址 + - **ImageDescription** (str) - 镜像描述 + + **Response** + + - **ImageId** (str) - 镜像Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ImportCustomImageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("ImportCustomImage", d, **kwargs) + return apis.ImportCustomImageResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUHostInstanceName - 修改指定UHost实例名称,需要给出数据中心,UHostId,及新的实例名称。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Name** (str) - UHost实例名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUHostInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceName", d, **kwargs) + return apis.ModifyUHostInstanceNameResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_remark( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUHostInstanceRemark - 修改指定UHost实例备注信息。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Remark** (str) - 备注 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUHostInstanceRemarkRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceRemark", d, **kwargs) + return apis.ModifyUHostInstanceRemarkResponseSchema().loads(resp)
+ +
[docs] def modify_uhost_instance_tag( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUHostInstanceTag - 修改指定UHost实例业务组标识。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Tag** (str) - 业务组名称 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUHostInstanceTagRequestSchema().dumps(d) + + resp = self.invoke("ModifyUHostInstanceTag", d, **kwargs) + return apis.ModifyUHostInstanceTagResponseSchema().loads(resp)
+ +
[docs] def poweroff_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ PoweroffUHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.PoweroffUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("PoweroffUHostInstance", d, **kwargs) + return apis.PoweroffUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reboot_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RebootUHostInstance - 重新启动UHost实例,需要指定数据中心及UHostID两个参数的值。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **DiskPassword** (str) - 加密盘密码 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RebootUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("RebootUHostInstance", d, **kwargs) + return apis.RebootUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reinstall_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ReinstallUHostInstance - 重新安装指定UHost实例的操作系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例资源ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **BootDiskSpace** (int) - 系统盘大小。 单位:GB, 范围[20,100], 步长:10 + - **DNSServers** (list) - 针对非私有子网主机,可自定义DNS。n可为0-2 + - **ImageId** (str) - 镜像Id,默认使用原镜像 参见 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ + - **Password** (str) - 如果创建UHost实例时LoginMode为Password,则必须填写,如果LoginMode为KeyPair,不需要填写 (密码格式使用BASE64编码;LoginMode不可变更) + - **ReserveDisk** (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes;如果是从Windows重装为Linux或反之,则无法保留数据盘 + - **ResourceType** (int) - 云灾备指明191 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReinstallUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("ReinstallUHostInstance", d, **kwargs) + return apis.ReinstallUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def reset_uhost_instance_password( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResetUHostInstancePassword - 重置UHost实例的管理员密码。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Password** (str) - (Required) UHost新密码(密码格式使用BASE64编码) + - **UHostId** (str) - (Required) UHost实例ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResetUHostInstancePasswordRequestSchema().dumps(d) + + resp = self.invoke("ResetUHostInstancePassword", d, **kwargs) + return apis.ResetUHostInstancePasswordResponseSchema().loads(resp)
+ +
[docs] def resize_attached_disk( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeAttachedDisk - 修改挂载的磁盘大小,包含系统盘和数据盘 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DiskId** (str) - (Required) 磁盘ID。参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 返回值中的DiskSet。 + - **DiskSpace** (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。 + - **UHostId** (str) - (Required) UHost实例ID。 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ 。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DiskId** (str) - 改配成功的磁盘id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeAttachedDiskRequestSchema().dumps(d) + + resp = self.invoke("ResizeAttachedDisk", d, **kwargs) + return apis.ResizeAttachedDiskResponseSchema().loads(resp)
+ +
[docs] def resize_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeUHostInstance - 修改指定UHost实例的资源配置,如CPU核心数,内存容量大小,网络增强等。可选配置范围请参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **BootDiskSpace** (int) - 【待废弃】系统盘大小,单位:GB,范围[20,100],步长:10,系统盘不支持缩容,因此不允许输入比当前实例系统盘小的值 + - **CPU** (int) - 虚拟CPU核数。可选参数:1-32(可选范围与UHostType相关)。默认值为当前实例的CPU核数 + - **DiskSpace** (int) - 【待废弃】数据盘大小,单位:GB,范围[10,1000]; SSD机型,单位:GB,范围[100,500];步长:10,默认值为当前实例的数据盘大小,数据盘不支持缩容,因此不允许输入比当前实例数据盘大小的值 + - **Memory** (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围与UHostType相关)。默认值为当前实例的内存大小。 + - **NetCapValue** (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUHostInstance", d, **kwargs) + return apis.ResizeUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def start_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ StartUHostInstance - 启动处于关闭状态的UHost实例,需要指定数据中心及UHostID两个参数的值。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **DiskPassword** (str) - 加密盘密码 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.StartUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUHostInstance", d, **kwargs) + return apis.StartUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ StopUHostInstance - 指停止处于运行状态的UHost实例,需指定数据中心及UhostID。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost实例ID 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **UhostId** (str) - UHost实例ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.StopUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUHostInstance", d, **kwargs) + return apis.StopUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def terminate_custom_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ TerminateCustomImage - 删除用户自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (str) - (Required) 自制镜像ID 参见 `DescribeImage <https://docs.ucloud.cn/api/uhost-api/describe_image.html>`_ + + **Response** + + - **ImageId** (str) - 自制镜像Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.TerminateCustomImageRequestSchema().dumps(d) + + resp = self.invoke("TerminateCustomImage", d, **kwargs) + return apis.TerminateCustomImageResponseSchema().loads(resp)
+ +
[docs] def terminate_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ TerminateUHostInstance - 删除指定数据中心的UHost实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostId** (str) - (Required) UHost资源Id 参见 `DescribeUHostInstance <https://docs.ucloud.cn/api/uhost-api/describe_uhost_instance.html>`_ + - **Destroy** (int) - 是否直接删除,0表示按照原来的逻辑(有回收站权限,则进入回收站),1表示直接删除 + - **ReleaseEIP** (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。 + - **ReleaseUDisk** (bool) - 是否删除挂载的数据盘。true删除,其他不删除。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **InRecycle** (str) - 放入回收站:"Yes", 彻底删除:“No” + - **UHostId** (str) - UHost 实例 Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.TerminateUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("TerminateUHostInstance", d, **kwargs) + return apis.TerminateUHostInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_to_ark_uhost_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpgradeToArkUHostInstance - 普通升级为方舟机型 + + **Request** + + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **UHostIds** (list) - (Required) UHost主机的资源ID,例如UHostIds.0代表希望升级的主机1,UHostIds.1代表主机2。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CouponId** (str) - 代金券ID 请参考DescribeCoupon接口 + + **Response** + + - **UHostSet** (list) - UHost主机的资源ID数组 + + """ + # build request + d = {"Region": self.config.region} + req and d.update(req) + d = apis.UpgradeToArkUHostInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeToArkUHostInstance", d, **kwargs) + return apis.UpgradeToArkUHostInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uhub/client.html b/docs/build/html/_modules/ucloud/services/uhub/client.html new file mode 100644 index 00000000..490ab788 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uhub/client.html @@ -0,0 +1,334 @@ + + + + + + + ucloud.services.uhub.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uhub.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uhub.schemas import apis
+
+
+
[docs]class UHubClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UHubClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreateRepo - 创建镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 仓库名称,不可修改 + - **Description** (str) - 仓库备注 + - **IsShared** (bool) - 镜像仓库是否公开,公开为true、不公开为false;默认为false + + **Response** + + - **Message** (str) - 有错误时返回内容 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.CreateRepoRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateRepo", d, **kwargs) + return apis.CreateRepoResponseSchema().loads(resp)
+ +
[docs] def delete_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DeleteRepo - 删除镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteRepoRequestSchema().dumps(d) + + resp = self.invoke("DeleteRepo", d, **kwargs) + return apis.DeleteRepoResponseSchema().loads(resp)
+ +
[docs] def delete_repo_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteRepoImage - 删除镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **RepoName** (str) - (Required) 镜像仓库名称 + - **TagName** (str) - 不指定tag则删除全部tag + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.DeleteRepoImageRequestSchema().dumps(d) + + resp = self.invoke("DeleteRepoImage", d, **kwargs) + return apis.DeleteRepoImageResponseSchema().loads(resp)
+ +
[docs] def get_image_tag( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetImageTag - 获取镜像tag + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **ImageName** (str) - (Required) 镜像名称 + - **RepoName** (str) - (Required) 镜像仓库名称 + - **Limit** (int) - 每次获取数量,默认为20 + - **Offset** (int) - 偏移量,默认0 + - **TagName** (str) - 默认不写,如果填写,代表查询该tag,否则查全部tag + + **Response** + + - **TagSet** (list) - 见 **TagSet** 模型定义 + - **TotalCount** (int) - tag总数 + + **Response Model** + + **TagSet** + + - **TagName** (str) - Tag名称 + - **UpdateTime** (str) - 镜像更新时间 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetImageTagRequestSchema().dumps(d) + + resp = self.invoke("GetImageTag", d, **kwargs) + return apis.GetImageTagResponseSchema().loads(resp)
+ +
[docs] def get_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ GetRepo - 获取镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Limit** (int) - 数量,默认20 + - **Offset** (int) - 偏移量,默认0 + - **Type** (str) - private私有仓库,public公共仓库,默认public + + **Response** + + - **RepoSet** (list) - 见 **RepoSet** 模型定义 + - **TotalCount** (int) - 总的仓库数量 + + **Response Model** + + **RepoSet** + + - **CreateTime** (str) - 仓库创建时间 + - **Description** (str) - 镜像仓库描述 + - **IsOutSide** (str) - 镜像仓库是否外网可以访问,可以为ture,不可以为false + - **IsShared** (str) - 镜像仓库类型,false为私有;true为公有 + - **RepoName** (str) - 镜像仓库名称 + - **UpdateTime** (str) - 仓库更新时间 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetRepoRequestSchema().dumps(d) + + resp = self.invoke("GetRepo", d, **kwargs) + return apis.GetRepoResponseSchema().loads(resp)
+ +
[docs] def get_repo_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetRepoImage - 获取镜像仓库下的镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称 + - **Limit** (int) - 显示数量,默认为20 + - **Offset** (int) - 偏移量,默认0 + + **Response** + + - **ImageSet** (list) - 见 **ImageSet** 模型定义 + - **TotalCount** (int) - + + **Response Model** + + **ImageSet** + + - **CreateTime** (str) - 创建时间 + - **ImageName** (str) - 镜像名称 + - **LatestTag** (str) - 最新push的Tag + - **PullCount** (int) - 镜像被下载次数 + - **RepoName** (str) - 镜像仓库名称 + - **UpdateTime** (str) - 修改时间 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.GetRepoImageRequestSchema().dumps(d) + + resp = self.invoke("GetRepoImage", d, **kwargs) + return apis.GetRepoImageResponseSchema().loads(resp)
+ +
[docs] def update_repo(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ UpdateRepo - 更新镜像仓库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **RepoName** (str) - (Required) 镜像仓库名称,不可修改 + - **Description** (str) - 备注 + - **IsShared** (str) - false设置为私有;true设置为公有。默认false + + **Response** + + - **Message** (str) - 错误的时候返回 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + } + req and d.update(req) + d = apis.UpdateRepoRequestSchema().dumps(d) + + resp = self.invoke("UpdateRepo", d, **kwargs) + return apis.UpdateRepoResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uk8s/client.html b/docs/build/html/_modules/ucloud/services/uk8s/client.html new file mode 100644 index 00000000..b5214ccb --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uk8s/client.html @@ -0,0 +1,521 @@ + + + + + + + + ucloud.services.uk8s.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uk8s.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uk8s.schemas import apis
+
+
+
[docs]class UK8SClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UK8SClient, self).__init__(config, transport, middleware, logger) + +
[docs] def add_uk8s_existing_uhost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SExistingUHost - 将预先创建好的云主机加入到UK8S集群,需要注意的是,该云主机依然会执行重装系统的操作。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **UHostId** (str) - (Required) 云主机Id,为了保证节点正常运行,该主机配置不得低于2C4G。 + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **SubnetId** (str) - 该云主机所属子网Id。 + - **UserData** (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SExistingUHostRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SExistingUHost", d, **kwargs) + return apis.AddUK8SExistingUHostResponseSchema().loads(resp)
+ +
[docs] def add_uk8s_phost_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SPHostNode - 为UK8S集群添加一台或多台物理云主机类型的节点。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - (Required) 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ 默认为月付 + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Count** (int) - (Required) 最大创建Node节点数量,取值范围是[1,10]。 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **NIC** (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G。 + - **Quantity** (int) - 购买时长。默认: 1。月付时,此参数传0,代表了购买至月末。 + - **Raid** (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid + - **SubnetId** (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。 + - **Type** (str) - 物理机类型,默认为:db-2(基础型-SAS-V3) + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SPHostNodeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SPHostNode", d, **kwargs) + return apis.AddUK8SPHostNodeResponseSchema().loads(resp)
+ +
[docs] def add_uk8s_uhost_node( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """AddUK8SUHostNode - 为UK8S集群添加一台Node节点,机型类型为云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **CPU** (int) - (Required) 虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。 + - **ChargeType** (str) - (Required) 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\ 默认为月付 + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **Count** (int) - (Required) 最大创建Node节点数量,取值范围是[1,10]。 + - **Mem** (int) - (Required) 内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192 + - **Password** (str) - (Required) Node节点密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BootDiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **DataDiskSize** (str) - 数据磁盘大小,单位GB。默认0。范围 :[20, 1000] + - **DataDiskType** (str) - 磁盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **DisableSchedule** (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 "true" 表示禁用,传入其它或不传表示不禁用 + - **GPU** (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关) + - **GpuType** (str) - GPU类型,枚举值["K80", "P40", "V100",],MachineType为G时必填 + - **ImageId** (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。 + - **InitScript** (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。 + - **IsolationGroup** (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。 + - **Labels** (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game + - **MachineType** (str) - 云主机机型。枚举值["N", "C", "G", "O", "OS"]。参考 `云主机机型说明 <https://docs.ucloud.cn/api/uhost-api/uhost_type>`_ 。 + - **MaxPods** (int) - 默认110,生产环境建议小于等于110。 + - **MinmalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake";"Intel/CascadelakeR"; “Amd/Epyc2”,"Amd/Auto"],默认值是"Intel/Auto" + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **SubnetId** (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。 + - **UserData** (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。 + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + - **NodeIds** (list) - Node实例Id集合 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.AddUK8SUHostNodeRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddUK8SUHostNode", d, **kwargs) + return apis.AddUK8SUHostNodeResponseSchema().loads(resp)
+ +
[docs] def create_uk8s_cluster_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUK8SClusterV2 - 创建UK8S集群 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterName** (str) - (Required) 集群名称 + - **MasterCPU** (int) - (Required) Master节点的虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。 + - **MasterMachineType** (str) - (Required) Master节点的云主机机型(V2.0),如["N", "C", "O", "OS"],具体请参照云主机机型。 + - **MasterMem** (int) - (Required) Master节点的内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。 + - **Password** (str) - (Required) 集群节点密码,包括Master和Node。密码需包含最少一个大写字母,请使用base64进行编码,举例如下:# echo -n Password1 | base64 + - **ServiceCIDR** (str) - (Required) Service 网段,用于分配ClusterIP,如172.17.0.0/16。该网段不能与集群所属VPC网段重叠。 + - **SubnetId** (str) - (Required) 集群Node及Pod所属子网 + - **VPCId** (str) - (Required) 集群Node及Pod所属VPC + - **ChargeType** (str) - 集群所有节点的付费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限),默认按月。 + - **ExternalApiServer** (str) - 是否允许外网访问apiserver,开启:Yes 不开启:No。默认为No。 + - **ImageId** (str) - Master节点和Node节点的镜像 ID,不填则随机选择可用的基础镜像。支持用户自定义镜像。 + - **InitScript** (str) - 用户自定义脚本,与UserData不同,自定义脚本将在集群安装完毕后执行。注意:1、总数据量大小不超多16K;2、使用base64编码。 + - **K8sVersion** (str) - k8s集群的版本,版本信息请参考UK8S集群创建页,不指定的话默认为当前支持的最高版本。 + - **KubeProxy** (dict) - 见 **CreateUK8SClusterV2ParamKubeProxy** 模型定义 + - **Master** (list) - 见 **CreateUK8SClusterV2ParamMaster** 模型定义 + - **MasterBootDiskType** (str) - Master节点系统盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **MasterDataDiskSize** (int) - Master节点的数据盘大小,单位GB,默认为0。范围 :[20, 1000] + - **MasterDataDiskType** (str) - Master节点数据盘类型。请参考 `磁盘类型 <https://docs.ucloud.cn/api/uhost-api/disk_type>`_ 。默认为SSD云盘 + - **MasterIsolationGroup** (str) - 【无效,已删除】当前将自动为Master节点创建隔离组,确保Master节点归属于不同物理机。 + - **MasterMinmalCpuPlatform** (str) - Master节点的最低cpu平台,不选则随机。枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake"。 + - **Nodes** (list) - 见 **CreateUK8SClusterV2ParamNodes** 模型定义 + - **Quantity** (int) - 购买时长。默认为1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 + - **UserData** (str) - 用户自定义数据。注意:1、总数据量大小不超多16K;2、使用base64编码。 + + **Response** + + - **ClusterId** (str) - 集群ID + + **Request Model** + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUK8SClusterV2RequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUK8SClusterV2", d, **kwargs) + return apis.CreateUK8SClusterV2ResponseSchema().loads(resp)
+ +
[docs] def del_uk8s_cluster( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DelUK8SCluster - 删除UK8S集群 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) 集群id + - **ReleaseUDisk** (bool) - 是否删除节点挂载的数据盘。枚举值[true:删除,false: 不删除],默认不删除 + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DelUK8SClusterRequestSchema().dumps(d) + + resp = self.invoke("DelUK8SCluster", d, **kwargs) + return apis.DelUK8SClusterResponseSchema().loads(resp)
+ +
[docs] def del_uk8s_cluster_node_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DelUK8SClusterNodeV2 - 删除集群中的Node节点,删除前务必先将其中的Pod驱逐。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。 + - **NodeId** (str) - (Required) Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda。**非云主机或物理云主机资源Id** + - **ReleaseDataUDisk** (bool) - 删除节点时是否释放数据盘。 枚举值[true:释放,false: 不释放],默认为true。 + + **Response** + + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DelUK8SClusterNodeV2RequestSchema().dumps(d) + + resp = self.invoke("DelUK8SClusterNodeV2", d, **kwargs) + return apis.DelUK8SClusterNodeV2ResponseSchema().loads(resp)
+ +
[docs] def describe_uk8s_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUK8SImage - 获取UK8S支持的Node节点操作系统,可基于该操作系统制定自定义镜像 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **ImageSet** (list) - 见 **ImageInfo** 模型定义 + - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。 + - **PHostImageSet** (list) - 见 **ImageInfo** 模型定义 + + **Response Model** + + **ImageInfo** + + - **ImageId** (str) - 镜像 Id + - **ImageName** (str) - 镜像名称 + - **NotSupportGPU** (bool) - 该镜像是否支持GPU机型,枚举值[true:不支持,false:支持]。 + - **ZoneId** (int) - 可用区 Id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUK8SImageRequestSchema().dumps(d) + + resp = self.invoke("DescribeUK8SImage", d, **kwargs) + return apis.DescribeUK8SImageResponseSchema().loads(resp)
+ +
[docs] def list_uk8s_cluster_node_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUK8SClusterNodeV2 - 获取UK8S集群节点信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - (Required) UK8S集群ID + + **Response** + + - **NodeSet** (list) - 见 **NodeInfoV2** 模型定义 + - **TotalCount** (int) - 满足条件的节点数量,包括Master。 + + **Response Model** + + **UHostIPSet** + + - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) + - **Default** (str) - 是否默认的弹性网卡的信息。true: 是默认弹性网卡;其他值:不是。 + - **IP** (str) - IP地址 + - **IPId** (str) - IP资源ID (内网IP无对应的资源ID) + - **Mac** (str) - Mac地址 + - **SubnetId** (str) - IP地址对应的子网 ID + - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private + - **VPCId** (str) - IP地址对应的VPC ID + + **KubeProxy** + + - **Mode** (str) - KubeProxy模式,枚举值为[ipvs,iptables] + + **NodeInfoV2** + + - **AsgId** (str) - 节点所属伸缩组ID,非伸缩组创建出来的节点,伸缩组ID为Default。 + - **CPU** (int) - Node节点CPU核数,单位: 个。 + - **CreateTime** (int) - 节点创建时间 + - **ExpireTime** (int) - 节点计费到期时间 + - **GPU** (int) - 节点的GPU颗数。 + - **IPSet** (list) - 见 **UHostIPSet** 模型定义 + - **InstanceId** (str) - 资源ID,如uhost-xxxx,或uphost-xxxxx。 + - **InstanceName** (str) - 资源名称,初始值等于NodeId,用户可在UHost或UPHost处修改。 + - **InstanceType** (str) - Node节点的资源类型,枚举值为UHost或UPHost。 + - **KubeProxy** (dict) - 见 **KubeProxy** 模型定义 + - **MachineType** (str) - 机型类别,分别对应Uhost的MachineType或PHost的PHostType。 + - **Memory** (int) - 内存大小,单位: MB。 + - **NodeId** (str) - NodeId,Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda + - **NodeRole** (str) - node角色,枚举值为master、node + - **NodeStatus** (str) - Node的状态 + - **OsName** (str) - Node节点的镜像名称。 + - **OsType** (str) - Node节点的操作系统类别,如Linux或Windows。 + - **Unschedulable** (bool) - 是否允许Pod调度到该节点,枚举值为true或false。 + - **Zone** (str) - Node所在可用区 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListUK8SClusterNodeV2RequestSchema().dumps(d) + + resp = self.invoke("ListUK8SClusterNodeV2", d, **kwargs) + return apis.ListUK8SClusterNodeV2ResponseSchema().loads(resp)
+ +
[docs] def list_uk8s_cluster_v2( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ListUK8SClusterV2 - 获取UK8S集群列表信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ClusterId** (str) - UK8S集群ID + - **Limit** (int) - 返回数据长度,默认为20。 + - **Offset** (int) - 列表起始位置偏移量,默认为0。 + + **Response** + + - **ClusterCount** (int) - 满足条件的集群数量 + - **ClusterSet** (list) - 见 **ClusterSet** 模型定义 + + **Response Model** + + **ClusterSet** + + - **ApiServer** (str) - 集群apiserver地址 + - **ClusterId** (str) - 集群ID + - **ClusterName** (str) - 资源名字 + - **CreateTime** (int) - 创建时间 + - **ExternalApiServer** (str) - 集群外部apiserver地址 + - **K8sVersion** (str) - 集群版本 + - **MasterCount** (int) - Master 节点数量 + - **NodeCount** (int) - Node节点数量 + - **PodCIDR** (str) - Pod网段 + - **ServiceCIDR** (str) - 服务网段 + - **Status** (str) - 状态 + - **SubnetId** (str) - 所属子网 + - **VPCId** (str) - 所属VPC + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ListUK8SClusterV2RequestSchema().dumps(d) + + resp = self.invoke("ListUK8SClusterV2", d, **kwargs) + return apis.ListUK8SClusterV2ResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/ulb/client.html b/docs/build/html/_modules/ucloud/services/ulb/client.html new file mode 100644 index 00000000..5d6350de --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/ulb/client.html @@ -0,0 +1,837 @@ + + + + + + + ucloud.services.ulb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.ulb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.ulb.schemas import apis
+
+
+
[docs]class ULBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(ULBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_backend( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AllocateBackend - 添加ULB后端资源实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ResourceId** (str) - (Required) 所添加的后端资源的资源ID + - **ResourceType** (str) - (Required) 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器,默认值为“UHost” + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **VServerId** (str) - (Required) VServer实例的ID + - **Enabled** (int) - 后端实例状态开关,枚举值: 1:启用; 0:禁用 默认为启用 + - **Port** (int) - 所添加的后端资源服务端口,取值范围[1-65535],默认80 + - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 + + **Response** + + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关),可用于 UpdateBackendAttribute/UpdateBackendAttributeBatch/ReleaseBackend + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateBackendRequestSchema().dumps(d) + + resp = self.invoke("AllocateBackend", d, **kwargs) + return apis.AllocateBackendResponseSchema().loads(resp)
+ +
[docs] def allocate_backend_batch( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AllocateBackendBatch - 批量添加VServer后端节点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Backends** (list) - (Required) 用| 分割字段,格式:ResourceId| ResourceType| Port| Enabled|IP| Weight。ResourceId:所添加的后端资源的资源ID;ResourceType:所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器,默认值为“UHost”;Port:所添加的后端资源服务端口,取值范围[1-65535];Enabled:后端实例状态开关,枚举值: 1:启用; 0:禁用;IP:后端资源内网ip;Weight:所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **VServerId** (str) - (Required) VServer实例的ID + - **ApiVersion** (int) - + + **Response** + + - **BackendSet** (list) - 见 **BackendSet** 模型定义 + + **Response Model** + + **BackendSet** + + - **BackendId** (str) - rs的资源ID + - **ResourceId** (str) - rs对应的UHost ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateBackendBatchRequestSchema().dumps(d) + + resp = self.invoke("AllocateBackendBatch", d, **kwargs) + return apis.AllocateBackendBatchResponseSchema().loads(resp)
+ +
[docs] def bind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ BindSSL - 将SSL证书绑定到VServer + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的Id + - **ULBId** (str) - (Required) 所绑定ULB实例ID + - **VServerId** (str) - (Required) 所绑定VServer实例ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BindSSLRequestSchema().dumps(d) + + resp = self.invoke("BindSSL", d, **kwargs) + return apis.BindSSLResponseSchema().loads(resp)
+ +
[docs] def create_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreatePolicy - 创建VServer内容转发策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId + - **Match** (str) - (Required) 内容转发匹配字段 + - **ULBId** (str) - (Required) 需要添加内容转发策略的负载均衡实例ID + - **VServerId** (str) - (Required) 需要添加内容转发策略的VServer实例ID + - **Type** (str) - 内容转发匹配字段的类型 + + **Response** + + - **PolicyId** (str) - 内容转发策略ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreatePolicyRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreatePolicy", d, **kwargs) + return apis.CreatePolicyResponseSchema().loads(resp)
+ +
[docs] def create_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLName** (str) - (Required) SSL证书的名字,默认值为空 + - **CaCert** (str) - CA证书 + - **PrivateKey** (str) - 加密证书的私钥 + - **SSLContent** (str) - SSL证书的完整内容,包括用户证书、加密证书的私钥、CA证书 + - **SSLType** (str) - 所添加的SSL证书类型,目前只支持Pem格式 + - **UserCert** (str) - 用户的证书 + + **Response** + + - **SSLId** (str) - SSL证书的Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateSSLRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSSL", d, **kwargs) + return apis.CreateSSLResponseSchema().loads(resp)
+ +
[docs] def create_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreateULB - 创建负载均衡实例,可以选择内网或者外网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - ULB 所属的业务组ID,如果不传则使用默认的业务组 + - **ChargeType** (str) - 付费方式 + - **IPVersion** (str) - ULB ip类型,枚举值:IPv6 / IPv4 (内部测试,暂未对外开放) + - **InnerMode** (str) - 创建的ULB是否为内网模式 + - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy / PacketsTransmit (内部测试,暂未对外开放) + - **OuterMode** (str) - 创建的ULB是否为外网模式,默认即为外网模式 + - **PrivateIp** (str) - 创建内网ULB时指定内网IP。若不传值,则随机分配当前子网下的IP(暂时不对外开放,创建外网ULB该字段会忽略) + - **Remark** (str) - 备注 + - **SubnetId** (str) - 内网ULB 所属的子网ID,如果不传则使用默认的子网 + - **Tag** (str) - 业务组 + - **ULBName** (str) - 负载均衡的名字,默认值为“ULB” + - **VPCId** (str) - ULB所在的VPC的ID, 如果不传则使用默认的VPC + + **Response** + + - **ULBId** (str) - 负载均衡实例的Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateULBRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateULB", d, **kwargs) + return apis.CreateULBResponseSchema().loads(resp)
+ +
[docs] def create_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateVServer - 创建VServer实例,定义监听的协议和端口以及负载均衡算法 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例ID + - **ClientTimeout** (int) - ListenType为RequestProxy时表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;ListenType为PacketsTransmit时表示连接保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 + - **FrontendPort** (int) - VServer后端端口,取值范围[1-65535];默认值为80 + - **ListenType** (str) - 监听器类型,枚举值为:RequestProxy -> 请求代理;PacketsTransmit -> 报文转发;默认为"RequestProxy" + - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin在请求代理和报文转发中使用。默认为:"Roundrobin" + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查; + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确认; None和ServerInsert: 此字段无意义; UserDefined:此字段传入自定义会话保持String + - **PersistenceType** (str) - VServer会话保持方式,默认关闭会话保持。枚举值:None -> 关闭;ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY。 + - **Protocol** (str) - VServer实例的协议,请求代理模式下有 HTTP、HTTPS、TCP,报文转发下有 TCP,UDP。默认为“HTTP" + - **VServerName** (str) - VServer实例名称,默认为"VServer" + + **Response** + + - **VServerId** (str) - VServer实例的Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateVServerRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVServer", d, **kwargs) + return apis.CreateVServerResponseSchema().loads(resp)
+ +
[docs] def delete_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeletePolicy - 删除内容转发策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PolicyId** (str) - (Required) 内容转发策略ID + - **GroupId** (str) - 内容转发策略组ID + - **VServerId** (str) - VServer 资源ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeletePolicyRequestSchema().dumps(d) + + resp = self.invoke("DeletePolicy", d, **kwargs) + return apis.DeletePolicyResponseSchema().loads(resp)
+ +
[docs] def delete_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DeleteSSL - 删除SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteSSLRequestSchema().dumps(d) + + resp = self.invoke("DeleteSSL", d, **kwargs) + return apis.DeleteSSLResponseSchema().loads(resp)
+ +
[docs] def delete_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DeleteULB - 删除负载均衡实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **ReleaseEip** (bool) - 删除ulb时是否释放绑定的EIP,false标识只解绑EIP,true表示会释放绑定的EIP,默认是false + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteULBRequestSchema().dumps(d) + + resp = self.invoke("DeleteULB", d, **kwargs) + return apis.DeleteULBResponseSchema().loads(resp)
+ +
[docs] def delete_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteVServer - 删除VServer实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例的ID + - **VServerId** (str) - (Required) VServer实例的ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteVServerRequestSchema().dumps(d) + + resp = self.invoke("DeleteVServer", d, **kwargs) + return apis.DeleteVServerResponseSchema().loads(resp)
+ +
[docs] def describe_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DescribeSSL - 获取SSL证书信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 数据分页值,默认为20 + - **Offset** (int) - 数据偏移量,默认值为0 + - **SSLId** (str) - SSL证书的Id + + **Response** + + - **DataSet** (list) - 见 **ULBSSLSet** 模型定义 + - **TotalCount** (int) - 满足条件的SSL证书总数 + + **Response Model** + + **ULBSSLSet** + + - **HashValue** (str) - + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeSSLRequestSchema().dumps(d) + + resp = self.invoke("DescribeSSL", d, **kwargs) + return apis.DescribeSSLResponseSchema().loads(resp)
+ +
[docs] def describe_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DescribeULB - 获取ULB详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - ULB所属的业务组ID + - **Limit** (int) - 数据分页值,默认为20 + - **Offset** (int) - 数据偏移量,默认为0 + - **SubnetId** (str) - ULB所属的子网ID + - **ULBId** (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息 + - **VPCId** (str) - ULB所属的VPC + + **Response** + + - **DataSet** (list) - 见 **ULBSet** 模型定义 + - **TotalCount** (int) - 满足条件的ULB总数 + + **Response Model** + + **PolicyBackendSet** + + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 + - **ObjectId** (str) - 后端资源的对象ID + - **Port** (int) - 所添加的后端资源服务端口 + - **PrivateIP** (str) - 后端资源的内网IP + - **ResourceName** (str) - 后端资源的实例名称 + + **ULBPolicySet** + + - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 + - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 + - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 + - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 + - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 + - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 + - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 + - **VServerId** (str) - 所属VServerId + + **ULBBackendSet** + + - **BackendId** (str) - 后端资源实例的Id + - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 + - **Port** (int) - 后端提供服务的端口 + - **PrivateIP** (str) - 后端提供服务的内网IP + - **ResourceId** (str) - 资源实例的资源Id + - **ResourceName** (str) - 资源实例的资源名称 + - **ResourceType** (str) - 资源实例的类型 + - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 + - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id + - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 + - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID + - **Weight** (int) - + + **ULBSSLSet** + + - **HashValue** (str) - + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + + **ULBVServerSet** + + - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 + - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 + - **FrontendPort** (int) - VServer服务端口 + - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 + - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查; + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 + - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 + - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 + - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 + - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 + - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 + - **VServerId** (str) - VServer实例的Id + - **VServerName** (str) - VServer实例的名字 + + **ULBIPSet** + + - **Bandwidth** (int) - 弹性IP的带宽值(暂未对外开放) + - **BandwidthType** (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) + - **EIP** (str) - 弹性IP地址 + - **EIPId** (str) - 弹性IP的ID + - **OperatorName** (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP + + **ULBSet** + + - **Bandwidth** (int) - 带宽 + - **BandwidthType** (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 + - **BusinessId** (str) - ULB 所属的业务组ID + - **CreateTime** (int) - ULB的创建时间,格式为Unix Timestamp + - **ExpireTime** (int) - ULB的到期时间,格式为Unix Timestamp + - **IPSet** (list) - 见 **ULBIPSet** 模型定义 + - **Name** (str) - 负载均衡的资源名称(资源系统中),缺省值“ULB” + - **PrivateIP** (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 + - **Remark** (str) - 负载均衡的备注,缺省值“” + - **Resource** (list) - ULB的详细信息列表(废弃) + - **SubnetId** (str) - ULB 为 InnerMode 时,ULB 所属的子网ID,默认为空 + - **Tag** (str) - 负载均衡的业务组名称,缺省值“Default” + - **ULBId** (str) - 负载均衡的资源ID + - **ULBName** (str) - 负载均衡的资源名称(内部记载,废弃) + - **ULBType** (str) - ULB 的类型 + - **VPCId** (str) - ULB所在的VPC的ID + - **VServerSet** (list) - 见 **ULBVServerSet** 模型定义 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeULBRequestSchema().dumps(d) + + resp = self.invoke("DescribeULB", d, **kwargs) + return apis.DescribeULBResponseSchema().loads(resp)
+ +
[docs] def describe_vserver( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeVServer - 获取ULB下的VServer的详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例的Id + - **Limit** (int) - 数据分页值 + - **Offset** (int) - 数据偏移量 + - **VServerId** (str) - VServer实例的Id;若指定则返回指定的VServer实例的信息; 若不指定则返回当前负载均衡实例下所有VServer的信息 + + **Response** + + - **DataSet** (list) - 见 **ULBVServerSet** 模型定义 + - **TotalCount** (int) - 满足条件的VServer总数 + + **Response Model** + + **PolicyBackendSet** + + - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 + - **ObjectId** (str) - 后端资源的对象ID + - **Port** (int) - 所添加的后端资源服务端口 + - **PrivateIP** (str) - 后端资源的内网IP + - **ResourceName** (str) - 后端资源的实例名称 + + **ULBSSLSet** + + - **HashValue** (str) - + - **SSLId** (str) - SSL证书的Id + - **SSLName** (str) - SSL证书的名字 + + **ULBPolicySet** + + - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 + - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 + - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 + - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 + - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 + - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 + - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 + - **VServerId** (str) - 所属VServerId + + **ULBBackendSet** + + - **BackendId** (str) - 后端资源实例的Id + - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 + - **Port** (int) - 后端提供服务的端口 + - **PrivateIP** (str) - 后端提供服务的内网IP + - **ResourceId** (str) - 资源实例的资源Id + - **ResourceName** (str) - 资源实例的资源名称 + - **ResourceType** (str) - 资源实例的类型 + - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 + - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id + - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 + - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID + - **Weight** (int) - + + **ULBVServerSet** + + - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 + - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 + - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 + - **FrontendPort** (int) - VServer服务端口 + - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 + - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 + - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查; + - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 + - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 + - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 + - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 + - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 + - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 + - **VServerId** (str) - VServer实例的Id + - **VServerName** (str) - VServer实例的名字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeVServerRequestSchema().dumps(d) + + resp = self.invoke("DescribeVServer", d, **kwargs) + return apis.DescribeVServerResponseSchema().loads(resp)
+ +
[docs] def release_backend( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ReleaseBackend - 从VServer释放后端资源实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID) + - **ULBId** (str) - (Required) 负载均衡实例的ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReleaseBackendRequestSchema().dumps(d) + + resp = self.invoke("ReleaseBackend", d, **kwargs) + return apis.ReleaseBackendResponseSchema().loads(resp)
+ +
[docs] def unbind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ UnbindSSL - 从VServer解绑SSL证书 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SSLId** (str) - (Required) SSL证书的Id + - **ULBId** (str) - (Required) 所绑定ULB实例ID + - **VServerId** (str) - (Required) 所绑定VServer实例ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UnbindSSLRequestSchema().dumps(d) + + resp = self.invoke("UnbindSSL", d, **kwargs) + return apis.UnbindSSLResponseSchema().loads(resp)
+ +
[docs] def update_backend_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateBackendAttribute - 更新ULB后端资源实例(服务节点)属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID) + - **ULBId** (str) - (Required) 负载均衡资源ID + - **Enabled** (int) - 后端实例状态开关 + - **Port** (int) - 后端资源服务端口,取值范围[1-65535] + - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateBackendAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateBackendAttribute", d, **kwargs) + return apis.UpdateBackendAttributeResponseSchema().loads(resp)
+ +
[docs] def update_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdatePolicy - 更新内容转发规则,包括转发规则后的服务节点 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackendId** (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId + - **Match** (str) - (Required) 内容转发匹配字段 + - **PolicyId** (str) - (Required) 转发规则的ID + - **ULBId** (str) - (Required) 需要添加内容转发策略的负载均衡实例ID + - **VServerId** (str) - (Required) 需要添加内容转发策略的VServer实例ID + - **Type** (str) - 内容转发匹配字段的类型 + + **Response** + + - **PolicyId** (str) - 转发规则的ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdatePolicyRequestSchema().dumps(d) + + resp = self.invoke("UpdatePolicy", d, **kwargs) + return apis.UpdatePolicyResponseSchema().loads(resp)
+ +
[docs] def update_ulb_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateULBAttribute - 更新ULB名字业务组备注等属性字段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) ULB资源ID + - **Name** (str) - 名字 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateULBAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateULBAttribute", d, **kwargs) + return apis.UpdateULBAttributeResponseSchema().loads(resp)
+ +
[docs] def update_vserver_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateVServerAttribute - 更新VServer实例属性 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ULBId** (str) - (Required) 负载均衡实例ID + - **VServerId** (str) - (Required) VServer实例ID + - **ClientTimeout** (int) - 请求代理的VServer下表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;报文转发的VServer下表示回话保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 + - **Domain** (str) - MonitorType 为 Path 时指定健康检查发送请求时HTTP HEADER 里的域名 + - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin在请求代理和报文转发中使用。默认为:"Roundrobin" + - **MonitorType** (str) - 健康检查的类型,Port:端口,Path:路径 + - **Path** (str) - MonitorType 为 Path 时指定健康检查发送请求时的路径,默认为 / + - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert, 此字段无意义; UserDefined, 则此字段传入用户自定义会话保持String. 若无此字段则不做修改 + - **PersistenceType** (str) - VServer会话保持模式,若无此字段则不做修改。枚举值:None:关闭;ServerInsert:自动生成KEY;UserDefined:用户自定义KEY。 + - **Protocol** (str) - VServer协议类型,请求代理只支持修改为 HTTP/HTTPS,报文转发VServer只支持修改为 TCP/UDP + - **VServerName** (str) - VServer实例名称,若无此字段则不做修改 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateVServerAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateVServerAttribute", d, **kwargs) + return apis.UpdateVServerAttributeResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/umem/client.html b/docs/build/html/_modules/ucloud/services/umem/client.html new file mode 100644 index 00000000..d2d528dc --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/umem/client.html @@ -0,0 +1,942 @@ + + + + + + + ucloud.services.umem.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.umem.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.umem.schemas import apis
+
+
+
[docs]class UMemClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UMemClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUMemSpace - 创建UMem内存空间 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 空间名称,长度(6<=size<=63) + - **Size** (int) - (Required) 内存大小, 单位:GB, 范围[1~1024] + - **ChargeType** (str) - Year , Month, Dynamic, Trial 默认: Month + - **CouponId** (str) - 使用的代金券id + - **Password** (str) - URedis密码。请遵照 `字段规范 <https://docs.ucloud.cn/api/uhost-api/specification>`_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。 + - **Protocol** (str) - 协议:memcache, redis (默认redis).注意:redis无single类型 + - **Quantity** (int) - 购买时长 默认: 1 + - **SubnetId** (str) - + - **Tag** (str) - + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + - **VPCId** (str) - + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **SpaceId** (str) - 创建内存空间ID列表 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUMemSpaceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUMemSpace", d, **kwargs) + return apis.CreateUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def create_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUMemcacheGroup - 创建单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 请求创建组的名称 范围[6-60] + - **ChargeType** (str) - 计费模式,Year , Month, Dynamic 默认: Month + - **ConfigId** (str) - 配置ID,目前仅支持默认配置id 默认配置id:"9a891891-c245-4b66-bce8-67e59430d67c" + - **CouponId** (str) - 代金券ID + - **Protocol** (str) - + - **Quantity** (int) - 购买时长,默认为1 + - **Size** (int) - 每个节点的内存大小,单位GB,默认1GB 目前仅支持1/2/4/8/16/32这几档 + - **SubnetId** (str) - + - **Tag** (str) - 业务组 默认:Default + - **VPCId** (str) - + - **Version** (str) - Memcache版本信息,默认为1.4.31 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **GroupId** (str) - 创建的组ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUMemcacheGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUMemcacheGroup", d, **kwargs) + return apis.CreateUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def create_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateURedisGroup - 创建主备redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **HighAvailability** (str) - (Required) 是否开启高可用,enable或disable + - **Name** (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **AutoBackup** (str) - 是否自动备份,enable或disable,默认disable + - **BackupId** (str) - 有此项代表从备份中创建,无代表正常创建 + - **BackupTime** (int) - 自动备份开始时间,范围[0-23],默认3点 + - **ChargeType** (str) - 计费模式,Year , Month, Dynamic 默认: Month + - **ConfigId** (str) - 配置ID,目前支持 3.0版本配置ID:"03f58ca9-b64d-4bdd-abc7-c6b9a46fd801",3.2版本配置ID:"3e45ac48-f8a2-a9q2-261d-l342dab130gf", 4.0版本配置ID:"6c9298a3-9d7f-428c-b1d0-e87ab3b8a1ea",默认版本3.0,从备份创建为必传项 + - **CouponId** (str) - 代金券ID + - **MasterGroupId** (str) - Master Redis Group的ID,创建只读Slave时,必须填写 + - **Password** (str) - 初始化密码,需要 base64 编码 + - **Quantity** (int) - 购买时长,默认为1 + - **Size** (int) - 每个节点的内存大小,单位GB,默认1GB,目前仅支持1/2/4/8/16/32,六种 + - **SlaveZone** (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同) + - **SubnetId** (str) - + - **Tag** (str) - 业务组名称 + - **VPCId** (str) - + - **Version** (str) - Redis版本信息(详见DescribeURedisVersion返回结果),默认版本3.0 + + **Response** + + - **GroupId** (str) - 创建的组ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateURedisGroupRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateURedisGroup", d, **kwargs) + return apis.CreateURedisGroupResponseSchema().loads(resp)
+ +
[docs] def delete_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUMemSpace - 删除UMem内存空间 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) UMem内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUMemSpace", d, **kwargs) + return apis.DeleteUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def delete_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUMemcacheGroup - 删除单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteUMemcacheGroup", d, **kwargs) + return apis.DeleteUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def delete_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteURedisGroup - 删除主备redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("DeleteURedisGroup", d, **kwargs) + return apis.DeleteURedisGroupResponseSchema().loads(resp)
+ +
[docs] def describe_umem_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemPrice - 获取UMem实例价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 购买umem大小,单位:GB,范围[1~1024] + - **Type** (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - Year, Month, Dynamic,Trial 如果不指定,则一次性获取三种计费 + - **Quantity** (int) - 购买UMem的时长,默认值为1 + - **RegionFlag** (bool) - + + **Response** + + - **DataSet** (list) - 见 **UMemPriceSet** 模型定义 + + **Response Model** + + **UMemPriceSet** + + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 现价,单位: 元,保留小数点后两位有效数字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemPrice", d, **kwargs) + return apis.DescribeUMemPriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemSpace - 获取UMem内存空间列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + - **SpaceId** (str) - 内存空间ID (无ID,则获取所有) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemSpaceSet** 模型定义 + - **TotalCount** (int) - 根据过滤条件得到的总数 + + **Response Model** + + **UMemSpaceAddressSet** + + - **IP** (str) - UMem实例访问IP + - **Port** (int) - UMem实例访问Port + + **UMemSpaceSet** + + - **Address** (list) - 见 **UMemSpaceAddressSet** 模型定义 + - **ChargeType** (str) - Year, Month, Dynamic, Trial + - **CreateTime** (int) - 创建时间 + - **ExpireTime** (int) - 到期时间 + - **Name** (str) - 内存空间名称 + - **Protocol** (str) - 协议类型: memcache, redis + - **RewriteTime** (int) - 运维时间0 //0点1 //1点依次类推 + - **Size** (int) - 容量单位GB + - **SpaceId** (str) - 内存空间ID + - **State** (str) - Starting:创建中 Running:运行中 Fail:失败 + - **SubnetId** (str) - + - **Tag** (str) - + - **Type** (str) - 空间类型:single(无热备),double(热备) + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemSpace", d, **kwargs) + return apis.DescribeUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemUpgradePrice - 获取UMem升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 购买UMem大小,单位:GB + - **SpaceId** (str) - (Required) 需要升级的空间的SpaceId + - **Type** (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (dict) - 见 **PriceDataSet** 模型定义 + - **Price** (int) - 价格(兼容老版本) + + **Response Model** + + **PriceDataSet** + + - **CustomPrice** (int) - 用户折后价 + - **PurchaseValue** (int) - 资源有效期 + - **TotalPrice** (int) - 升降级资源的价格 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemUpgradePrice", d, **kwargs) + return apis.DescribeUMemUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemcacheGroup - 显示Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit + - **Limit** (int) - 分页显示的条目数, 默认值为20 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 见 **UMemcacheGroupSet** 模型定义 + - **TotalCount** (int) - 组的总的节点个数 + + **Response Model** + + **UMemcacheGroupSet** + + - **ChargeType** (str) - 计费类型:Year,Month,Dynamic 默认Dynamic + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 (UNIX时间戳) + - **ExpireTime** (int) - 过期时间 (UNIX时间戳) + - **GroupId** (str) - 组ID + - **ModifyTime** (int) - 修改时间 (UNIX时间戳) + - **Name** (str) - 组名称 + - **Port** (int) - 节点分配的服务端口 + - **Size** (int) - 容量单位GB + - **State** (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中 + - **SubnetId** (str) - + - **Tag** (str) - 业务组名称 + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - + - **Version** (str) - Memcache版本信息,默认为1.4.31 + - **VirtualIP** (str) - 节点的虚拟IP地址 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcacheGroup", d, **kwargs) + return apis.DescribeUMemcacheGroupResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemcachePrice - 获取umemcache组价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 容量大小,单位:GB 取值范围[1-32] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic,默认: Dynamic 默认: 获取所有计费模式的价格 + - **Quantity** (int) - 购买umemcache的时长,默认值为1 + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + + **Response** + + - **DataSet** (list) - 见 **UMemcachePriceSet** 模型定义 + + **Response Model** + + **UMemcachePriceSet** + + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 总价格,单位: 元,保留小数点后两位有效数字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemcachePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcachePrice", d, **kwargs) + return apis.DescribeUMemcachePriceResponseSchema().loads(resp)
+ +
[docs] def describe_umem_cache_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeUMemcacheUpgradePrice - 获取umemcache升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 需要升级的空间的GroupId,请参考DescribeUMemcacheGroup接口 + - **Size** (int) - (Required) 购买umemcache大小,单位:GB + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (dict) - 见 **PriceDataSet** 模型定义 + - **Price** (int) - 价格,单位:元 + + **Response Model** + + **PriceDataSet** + + - **CustomPrice** (int) - 用户折后价 + - **PurchaseValue** (int) - 资源有效期 + - **TotalPrice** (int) - 升降级资源的价格 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeUMemcacheUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUMemcacheUpgradePrice", d, **kwargs) + return apis.DescribeUMemcacheUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_backup( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeURedisBackup - 查询主备redis备份 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - 组的ID + - **Limit** (int) - 分页显示的条目数, 默认值为10 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + + **Response** + + - **DataSet** (list) - 见 **URedisBackupSet** 模型定义 + - **TotalCount** (int) - 用户名下总的备份个数 + + **Response Model** + + **URedisBackupSet** + + - **BackupId** (str) - 备份ID + - **BackupName** (str) - 备份的名称 + - **BackupSize** (int) - 备份文件大小, 以字节为单位 + - **BackupTime** (int) - 备份时间 (UNIX时间戳) + - **BackupType** (str) - 备份类型: Manual 手动 Auto 自动 + - **GroupId** (str) - 对应的实例ID + - **GroupName** (str) - 组名称 + - **State** (str) - 备份的状态: Backuping 备份中 Success 备份成功 Error 备份失败 Expired 备份过期 + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeURedisBackupRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisBackup", d, **kwargs) + return apis.DescribeURedisBackupResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_backup_url( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeURedisBackupURL - 获取主备Redis备份下载链接 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BackupId** (str) - (Required) 备份ID + - **GroupId** (str) - 实例名称 + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **BackupPath** (str) - 备份文件公网的地址 + - **BackupURL** (str) - 备份文件公网的地址 + - **InnerBackupPath** (str) - + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeURedisBackupURLRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisBackupURL", d, **kwargs) + return apis.DescribeURedisBackupURLResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeURedisGroup - 查询主备Redis + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit + - **Limit** (int) - 分页显示的条目数, 默认值为20 + - **Offset** (int) - 分页显示的起始偏移, 默认值为0 + - **Zone** (str) - + + **Response** + + - **DataSet** (list) - 见 **URedisGroupSet** 模型定义 + - **TotalCount** (int) - 组的总的节点个数 + + **Response Model** + + **URedisGroupSet** + + - **AutoBackup** (str) - 是否需要自动备份,enable,disable + - **BackupTime** (int) - 组自动备份开始时间,单位小时计,范围[0-23] + - **ChargeType** (str) - 计费类型:Year,Month,Dynamic 默认Dynamic + - **ConfigId** (str) - 节点的配置ID + - **CreateTime** (int) - 创建时间 (UNIX时间戳) + - **ExpireTime** (int) - 过期时间 (UNIX时间戳) + - **GroupId** (str) - 组ID + - **GroupName** (str) - 组名称 + - **HighAvailability** (str) - 是否开启高可用,enable,disable + - **MemorySize** (int) - 容量单位GB + - **ModifyTime** (int) - 修改时间 (UNIX时间戳) + - **Name** (str) - 组名称 + - **Port** (int) - 节点分配的服务端口 + - **Protocol** (str) - 协议 + - **RewriteTime** (int) - 返回运维时间 0 //0点 1 //1点 以此类推 + - **Size** (int) - 容量单位GB + - **SlaveZone** (str) - 跨机房URedis,slave redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **State** (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败 + - **SubnetId** (str) - + - **Tag** (str) - 业务组名称 + - **Type** (str) - + - **UsedSize** (int) - 使用量单位MB + - **VPCId** (str) - + - **Version** (str) - Redis版本信息 + - **VirtualIP** (str) - 节点的虚拟IP地址 + - **Zone** (str) - 实例所在可用区,或者master redis所在可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisGroup", d, **kwargs) + return apis.DescribeURedisGroupResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeURedisPrice - 取uredis价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 量大小,单位:GB 取值范围[1-32] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式,Year, Month, Dynamic;如果不指定,则一次性获取三种计费 + - **ProductType** (str) - 产品类型:MS_Redis(标准主备版),S_Redis(从库),默认为MS_Redis + - **Quantity** (int) - 计费模式为Dynamic时,购买的时长, 默认为1 + - **RegionFlag** (bool) - 是否是跨机房URedis(默认false) + - **Type** (str) - + + **Response** + + - **DataSet** (list) - 见 **URedisPriceSet** 模型定义 + + **Response Model** + + **URedisPriceSet** + + - **ChargeType** (str) - Year, Month, Dynamic,Trial + - **OriginalPrice** (int) - 原价 + - **Price** (int) - 总价格,单位: 元,保留小数点后两位有效数字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeURedisPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisPrice", d, **kwargs) + return apis.DescribeURedisPriceResponseSchema().loads(resp)
+ +
[docs] def describe_uredis_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeURedisUpgradePrice - 获取uredis升级价格信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 要升级的空间的GroupId,请参考DescribeURedisGroup接口 + - **Size** (int) - (Required) 购买uredis大小,单位:GB,范围是[1-32] + - **Type** (str) - + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (dict) - 见 **PriceDataSet** 模型定义 + - **Price** (int) - 扩容差价,单位: 元,保留小数点后两位有效数字(兼容老版本) + + **Response Model** + + **PriceDataSet** + + - **CustomPrice** (int) - 用户折后价 + - **PurchaseValue** (int) - 资源有效期 + - **TotalPrice** (int) - 升降级资源的价格 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeURedisUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeURedisUpgradePrice", d, **kwargs) + return apis.DescribeURedisUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def get_umem_space_state( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUMemSpaceState - 获取UMem内存空间列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SpaceId** (str) - (Required) 内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **State** (str) - Starting:创建中 Running:运行中 Fail:失败 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUMemSpaceStateRequestSchema().dumps(d) + + resp = self.invoke("GetUMemSpaceState", d, **kwargs) + return apis.GetUMemSpaceStateResponseSchema().loads(resp)
+ +
[docs] def modify_umem_space_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyUMemSpaceName - 修改UMem内存空间名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) 新的名称,长度(6<=size<=63) + - **SpaceId** (str) - (Required) UMem内存空间ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyUMemSpaceNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyUMemSpaceName", d, **kwargs) + return apis.ModifyUMemSpaceNameResponseSchema().loads(resp)
+ +
[docs] def modify_uredis_group_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyURedisGroupName - 修改主备redis名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组的ID + - **Name** (str) - (Required) Redis组名称 (范围[6-63],只能包含英文、数字以及符号-和_) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyURedisGroupNameRequestSchema().dumps(d) + + resp = self.invoke("ModifyURedisGroupName", d, **kwargs) + return apis.ModifyURedisGroupNameResponseSchema().loads(resp)
+ +
[docs] def resize_udredis_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeUDredisSpace - 调整内存空间容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024) + - **SpaceId** (str) - (Required) 高性能UMem 内存空间Id + - **CouponId** (str) - 使用的代金券Id + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeUDredisSpaceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUDredisSpace", d, **kwargs) + return apis.ResizeUDredisSpaceResponseSchema().loads(resp)
+ +
[docs] def resize_umem_space( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeUMemSpace - 调整内存空间容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Size** (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024) + - **SpaceId** (str) - (Required) UMem 内存空间Id + - **ChargeType** (str) - + - **CouponId** (str) - 使用的代金券Id + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeUMemSpaceRequestSchema().dumps(d) + + resp = self.invoke("ResizeUMemSpace", d, **kwargs) + return apis.ResizeUMemSpaceResponseSchema().loads(resp)
+ +
[docs] def resize_uredis_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeURedisGroup - 调整主备redis容量 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组ID + - **Size** (int) - (Required) 内存大小, 单位:GB (需要大于原size,且小于等于32) 目前仅支持1/2/4/8/16/32 G 六种容量规格 + - **ChargeType** (str) - + - **CouponId** (int) - 代金券ID 请参考DescribeCoupon接口 + - **Type** (str) - 空间类型:single(无热备),double(热备)(默认: double) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeURedisGroupRequestSchema().dumps(d) + + resp = self.invoke("ResizeURedisGroup", d, **kwargs) + return apis.ResizeURedisGroupResponseSchema().loads(resp)
+ +
[docs] def restart_umem_cache_group( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ RestartUMemcacheGroup - 重启单机Memcache + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **GroupId** (str) - (Required) 组的ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RestartUMemcacheGroupRequestSchema().dumps(d) + + resp = self.invoke("RestartUMemcacheGroup", d, **kwargs) + return apis.RestartUMemcacheGroupResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/unet/client.html b/docs/build/html/_modules/ucloud/services/unet/client.html new file mode 100644 index 00000000..d9afef1f --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/unet/client.html @@ -0,0 +1,1170 @@ + + + + + + + ucloud.services.unet.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.unet.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+from ucloud.core.client import Client
+from ucloud.services.unet.schemas import apis
+
+
+
[docs]class UNetClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UNetClient, self).__init__(config, transport, middleware, logger) + +
[docs] def allocate_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ AllocateEIP - 根据提供信息, 申请弹性IP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-200],带宽计费[1-800] + - **OperatorName** (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); Trial, 试用(需开启权限) 默认为按月付费 + - **CouponId** (str) - 代金券ID, 默认不使用 + - **Name** (str) - 弹性IP的名称, 默认为 "EIP" + - **PayMode** (str) - 弹性IP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; "ShareBandwidth",共享带宽模式. 默认为 "Bandwidth". + - **Quantity** (int) - 购买时长, 默认: 1 + - **Remark** (str) - 弹性IP的备注, 默认为空 + - **ShareBandwidthId** (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效 + - **Tag** (str) - 业务组名称, 默认为 "Default" + + **Response** + + - **EIPSet** (list) - 见 **UnetAllocateEIPSet** 模型定义 + + **Response Model** + + **UnetEIPAddrSet** + + - **IP** (str) - IP地址 + - **OperatorName** (str) - 运营商信息如: 电信: Telecom, 联通: Unicom, 国际: International, Duplet: 双线IP(电信+联通), BGP: Bgp + + **UnetAllocateEIPSet** + + - **EIPAddr** (list) - 见 **UnetEIPAddrSet** 模型定义 + - **EIPId** (str) - 申请到的EIP资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateEIPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateEIP", d, **kwargs) + return apis.AllocateEIPResponseSchema().loads(resp)
+ +
[docs] def allocate_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AllocateShareBandwidth - 开通共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - (Required) 付费方式:Year 按年,Month 按月,Dynamic 按时; + - **Name** (str) - (Required) 共享带宽名字 + - **ShareBandwidth** (int) - (Required) 共享带宽值 + - **BwType** (str) - 共享带宽类型,ipv4或者ipv6,不传默认ipv4 + - **Quantity** (int) - 购买时长 + - **ShareBandwidthGuarantee** (int) - 共享带宽保底值(后付费) + + **Response** + + - **ShareBandwidthId** (str) - 共享带宽资源Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateShareBandwidthRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateShareBandwidth", d, **kwargs) + return apis.AllocateShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def allocate_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ AllocateVIP - 根据提供信息,申请内网VIP(Virtual IP),多用于高可用程序作为漂移IP。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域 + - **SubnetId** (str) - (Required) 子网id + - **VPCId** (str) - (Required) 指定vip所属的VPC + - **BusinessId** (str) - 业务组 + - **Count** (int) - 申请数量,默认: 1 + - **Ip** (str) - 指定ip + - **Name** (str) - vip名,默认为VIP + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称,默认为Default + - **Zone** (str) - 可用区 + + **Response** + + - **DataSet** (list) - 申请到的VIP地址 + - **VIPSet** (list) - 见 **VIPSet** 模型定义 + + **Response Model** + + **VIPSet** + + - **VIP** (str) - 虚拟ip + - **VIPId** (str) - 虚拟ip id + - **VPCId** (str) - VPC id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AllocateVIPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AllocateVIP", d, **kwargs) + return apis.AllocateVIPResponseSchema().loads(resp)
+ +
[docs] def associate_eip_with_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AssociateEIPWithShareBandwidth - 将EIP加入共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域。 + - **EIPIds** (list) - (Required) 要加入共享带宽的EIP的资源Id + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AssociateEIPWithShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("AssociateEIPWithShareBandwidth", d, **kwargs) + return apis.AssociateEIPWithShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ BindEIP - 将尚未使用的弹性IP绑定到指定的资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **ResourceId** (str) - (Required) 弹性IP请求绑定的资源ID + - **ResourceType** (str) - (Required) 弹性IP请求绑定的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:natgw;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni:虚拟网卡。 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.BindEIPRequestSchema().dumps(d) + + resp = self.invoke("BindEIP", d, **kwargs) + return apis.BindEIPResponseSchema().loads(resp)
+ +
[docs] def create_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateBandwidthPackage - 为非共享带宽模式下, 已绑定资源实例的带宽计费弹性IP附加临时带宽包 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 + - **Region** (str) - (Config) 地域 + - **Bandwidth** (int) - (Required) 带宽大小(单位Mbps), 取值范围[2,800] (最大值受地域限制) + - **EIPId** (str) - (Required) 所绑定弹性IP的资源ID + - **TimeRange** (int) - (Required) 带宽包有效时长, 取值范围为大于0的整数, 即该带宽包在EnableTime到 EnableTime+TimeRange时间段内生效 + - **CouponId** (str) - 代金券ID + - **EnableTime** (int) - 生效时间, 格式为 Unix timestamp, 默认为立即开通 + + **Response** + + - **BandwidthPackageId** (str) - 所创建带宽包的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateBandwidthPackageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateBandwidthPackage", d, **kwargs) + return apis.CreateBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def create_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateFirewall - 创建防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **Name** (str) - (Required) 防火墙名称 + - **Rule** (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注 + - **Remark** (str) - 防火墙描述,默认为空 + - **Tag** (str) - 防火墙业务组,默认为Default + + **Response** + + - **FWId** (str) - 防火墙ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateFirewallRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateFirewall", d, **kwargs) + return apis.CreateFirewallResponseSchema().loads(resp)
+ +
[docs] def delete_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteBandwidthPackage - 删除弹性IP上已附加带宽包 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **BandwidthPackageId** (str) - (Required) 带宽包资源ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteBandwidthPackageRequestSchema().dumps(d) + + resp = self.invoke("DeleteBandwidthPackage", d, **kwargs) + return apis.DeleteBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def delete_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteFirewall - 删除防火墙 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **FWId** (str) - (Required) 防火墙资源ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteFirewallRequestSchema().dumps(d) + + resp = self.invoke("DeleteFirewall", d, **kwargs) + return apis.DeleteFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_bandwidth_package( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeBandwidthPackage - 获取某地域下的带宽包信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20 + - **Offset** (int) - 返回数据偏移量, 默认为0 + + **Response** + + - **DataSets** (list) - 见 **UnetBandwidthPackageSet** 模型定义 + - **TotalCount** (int) - 满足条件的带宽包总数 + + **Response Model** + + **EIPAddrSet** + + - **IP** (str) - 弹性IP地址 + - **OperatorName** (str) - 运营商信息, 枚举值为: Telecom 电信; Unicom: 联通; Duplet: 双线; Bgp: BGP; International: 国际. + + **UnetBandwidthPackageSet** + + - **Bandwidth** (int) - 带宽包的临时带宽值, 单位Mbps + - **BandwidthPackageId** (str) - 带宽包的资源ID + - **CreateTime** (int) - 创建时间, 格式为 Unix Timestamp + - **DisableTime** (int) - 失效时间, 格式为 Unix Timestamp + - **EIPAddr** (list) - 见 **EIPAddrSet** 模型定义 + - **EIPId** (str) - 带宽包所绑定弹性IP的资源ID + - **EnableTime** (int) - 生效时间, 格式为 Unix Timestamp + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeBandwidthPackageRequestSchema().dumps(d) + + resp = self.invoke("DescribeBandwidthPackage", d, **kwargs) + return apis.DescribeBandwidthPackageResponseSchema().loads(resp)
+ +
[docs] def describe_bandwidth_usage( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeBandwidthUsage - 获取带宽用量信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPIds** (list) - 弹性IP的资源Id. 如果为空, 则返回当前 Region中符合条件的所有EIP的带宽用量, n为自然数 + - **Limit** (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20 + - **OffSet** (int) - 返回数据偏移量, 默认为0 + + **Response** + + - **EIPSet** (list) - 见 **UnetBandwidthUsageEIPSet** 模型定义 + - **TotalCount** (int) - EIPSet中的元素个数 + + **Response Model** + + **UnetBandwidthUsageEIPSet** + + - **CurBandwidth** (float) - 最近5分钟带宽用量, 单位Mbps + - **EIPId** (str) - 弹性IP资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeBandwidthUsageRequestSchema().dumps(d) + + resp = self.invoke("DescribeBandwidthUsage", d, **kwargs) + return apis.DescribeBandwidthUsageResponseSchema().loads(resp)
+ +
[docs] def describe_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DescribeEIP - 获取弹性IP信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **EIPIds** (list) - 弹性IP的资源ID如果为空, 则返回当前 Region中符合条件的的所有EIP + - **Limit** (int) - 数据分页值, 默认为20 + - **Offset** (int) - 数据偏移量, 默认为0 + + **Response** + + - **EIPSet** (list) - 见 **UnetEIPSet** 模型定义 + - **TotalBandwidth** (int) - 满足条件的弹性IP带宽总和, 单位Mbps + - **TotalCount** (int) - 满足条件的弹性IP总数 + + **Response Model** + + **ShareBandwidthSet** + + - **ShareBandwidth** (int) - 共享带宽带宽值 + - **ShareBandwidthId** (str) - 共享带宽ID + - **ShareBandwidthName** (str) - 共享带宽的资源名称 + + **UnetEIPAddrSet** + + - **IP** (str) - IP地址 + - **OperatorName** (str) - 运营商信息如: 电信: Telecom, 联通: Unicom, 国际: International, Duplet: 双线IP(电信+联通), BGP: Bgp + + **UnetEIPResourceSet** + + - **EIPId** (str) - 弹性IP的资源ID + - **ResourceId** (str) - 已绑定资源的资源ID + - **ResourceName** (str) - 已绑定的资源名称 + - **ResourceType** (str) - 已绑定的资源类型, 枚举值为: uhost, 云主机;natgw:NAT网关;ulb:负载均衡器;upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;vpngw:IPSec VPN;ucdr:云灾备;dbaudit:数据库审计,uni:虚拟网卡。 + - **SubResourceId** (str) - 资源绑定的虚拟网卡的ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的类型。uni,虚拟网卡。 + + **UnetEIPSet** + + - **Bandwidth** (int) - 弹性IP的带宽, 单位为Mbps, 当BandwidthType=1时, 该处显示为共享带宽值. 当BandwidthType=0时, 该处显示这个弹性IP的带宽. + - **BandwidthType** (int) - 带宽模式, 枚举值为: 0: 非共享带宽模式, 1: 共享带宽模式 + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按小时付费; Trial, 试用. 按小时付费和试用这两种付费模式需要开通权限. + - **CreateTime** (int) - 弹性IP的创建时间, 格式为Unix Timestamp + - **EIPAddr** (list) - 见 **UnetEIPAddrSet** 模型定义 + - **EIPId** (str) - 弹性IP的资源ID + - **Expire** (bool) - 弹性IP是否到期 + - **ExpireTime** (int) - 弹性IP的到期时间, 格式为Unix Timestamp + - **Name** (str) - 弹性IP的名称,缺省值为 "EIP" + - **PayMode** (str) - 弹性IP的计费模式, 枚举值为: "Bandwidth", 带宽计费; "Traffic", 流量计费; "ShareBandwidth",共享带宽模式. 默认为 "Bandwidth". + - **Remark** (str) - 弹性IP的备注, 缺省值为 "" + - **Resource** (dict) - 见 **UnetEIPResourceSet** 模型定义 + - **ShareBandwidthSet** (dict) - 见 **ShareBandwidthSet** 模型定义 + - **Status** (str) - 弹性IP的资源绑定状态, 枚举值为: used: 已绑定, free: 未绑定, freeze: 已冻结 + - **Tag** (str) - 弹性IP的业务组标识, 缺省值为 "Default" + - **Weight** (int) - 外网出口权重, 默认为50, 范围[0-100] + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeEIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeEIP", d, **kwargs) + return apis.DescribeEIPResponseSchema().loads(resp)
+ +
[docs] def describe_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeFirewall - 获取防火墙组信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **FWId** (str) - 防火墙ID,默认为返回所有防火墙 + - **Limit** (int) - 返回数据长度,默认为20,最大10000000 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceId** (str) - 绑定防火墙组的资源ID + - **ResourceType** (str) - 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:"unatgw",NAT网关; "uhost",云主机; "upm",物理云主机; "hadoophost",hadoop节点; "fortresshost",堡垒机; "udhost",私有专区主机;"udockhost",容器;"dbaudit",数据库审计. + + **Response** + + - **DataSet** (list) - 见 **FirewallDataSet** 模型定义 + - **TotalCount** (int) - + + **Response Model** + + **FirewallRuleSet** + + - **DstPort** (str) - 目标端口 + - **Priority** (str) - 优先级 + - **ProtocolType** (str) - 协议类型 + - **Remark** (str) - 防火墙规则备注 + - **RuleAction** (str) - 防火墙动作 + - **SrcIP** (str) - 源地址 + + **FirewallDataSet** + + - **CreateTime** (int) - 防火墙组创建时间,格式为Unix Timestamp + - **FWId** (str) - 防火墙ID + - **GroupId** (str) - 安全组ID(即将废弃) + - **Name** (str) - 防火墙名称 + - **Remark** (str) - 防火墙备注 + - **ResourceCount** (int) - 防火墙绑定资源数量 + - **Rule** (list) - 见 **FirewallRuleSet** 模型定义 + - **Tag** (str) - 防火墙业务组 + - **Type** (str) - 防火墙组类型,枚举值为: "user defined", 用户自定义防火墙; "recommend web", 默认Web防火墙; "recommend non web", 默认非Web防火墙 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeFirewallRequestSchema().dumps(d) + + resp = self.invoke("DescribeFirewall", d, **kwargs) + return apis.DescribeFirewallResponseSchema().loads(resp)
+ +
[docs] def describe_firewall_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeFirewallResource - 获取防火墙组所绑定资源的外网IP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙ID + - **Limit** (int) - 返回数据长度,默认为20,最大10000000 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + + **Response** + + - **ResourceSet** (list) - 见 **ResourceSet** 模型定义 + - **TotalCount** (int) - 绑定资源总数 + + **Response Model** + + **ResourceSet** + + - **Name** (str) - 名称 + - **PrivateIP** (str) - 内网IP + - **Remark** (str) - 备注 + - **ResourceID** (str) - 绑定该防火墙的资源id + - **ResourceType** (str) - 绑定资源的资源类型,如"uhost","upm","umem","uhive","uvip","uredis","uhadoop","ufortress","dbaudit","udw","udocker", "umemcache" + - **Status** (int) - 状态 + - **Tag** (str) - 业务组 + - **Zone** (int) - 可用区 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeFirewallResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeFirewallResource", d, **kwargs) + return apis.DescribeFirewallResourceResponseSchema().loads(resp)
+ +
[docs] def describe_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeShareBandwidth - 获取共享带宽信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ShareBandwidthIds** (list) - 需要返回的共享带宽Id + + **Response** + + - **DataSet** (list) - 见 **UnetShareBandwidthSet** 模型定义 + - **TotalCount** (int) - 符合条件的共享带宽总数,大于等于返回DataSet长度 + + **Response Model** + + **EIPAddrSet** + + - **IP** (str) - 弹性IP地址 + - **OperatorName** (str) - 运营商信息, 枚举值为: Telecom 电信; Unicom: 联通; Duplet: 双线; Bgp: BGP; International: 国际. + + **EIPSetData** + + - **Bandwidth** (int) - EIP带宽值 + - **EIPAddr** (list) - 见 **EIPAddrSet** 模型定义 + - **EIPId** (str) - EIP资源Id + + **UnetShareBandwidthSet** + + - **BandwidthGuarantee** (int) - 共享带宽保底值(后付费) + - **ChargeType** (str) - 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需;后付费:PostPay(按月) + - **CreateTime** (int) - 创建时间, 格式为Unix Timestamp + - **EIPSet** (list) - 见 **EIPSetData** 模型定义 + - **ExpireTime** (int) - 过期时间, 格式为Unix Timestamp + - **Name** (str) - 共享带宽名称 + - **PostPayStartTime** (int) - 共享带宽后付费开始计费时间(后付费) + - **ShareBandwidth** (int) - 共享带宽值(预付费)/共享带宽峰值(后付费), 单位Mbps + - **ShareBandwidthId** (str) - 共享带宽的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("DescribeShareBandwidth", d, **kwargs) + return apis.DescribeShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def describe_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DescribeVIP - 获取内网VIP详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - 业务组 + - **SubnetId** (str) - 子网id,不指定则获取VPCId下的所有vip + - **Tag** (str) - 业务组名称, 默认为 Default + - **VPCId** (str) - vpc的id,指定SubnetId时必填 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **DataSet** (list) - 内网VIP地址列表 + - **TotalCount** (int) - vip数量 + - **VIPSet** (list) - 见 **VIPDetailSet** 模型定义 + + **Response Model** + + **VIPDetailSet** + + - **CreateTime** (int) - 创建时间 + - **Name** (str) - + - **RealIp** (str) - 真实主机ip + - **SubnetId** (str) - 子网id + - **VIP** (str) - 虚拟ip + - **VIPId** (str) - 虚拟ip id + - **VPCId** (str) - VPC id + - **Zone** (str) - 地域 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeVIPRequestSchema().dumps(d) + + resp = self.invoke("DescribeVIP", d, **kwargs) + return apis.DescribeVIPResponseSchema().loads(resp)
+ +
[docs] def disassociate_eip_with_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DisassociateEIPWithShareBandwidth - 将EIP移出共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 移出共享带宽后,EIP的外网带宽, 单位为Mbps. 各地域带宽范围如下: 流量计费[1-200],带宽计费[1-800] + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + - **EIPIds** (list) - EIP的资源Id;默认移出该共享带宽下所有的EIP + - **PayMode** (str) - 移出共享带宽后,EIP的计费模式. 枚举值: "Traffic", 流量计费; "Bandwidth", 带宽计费; 默认为 "Bandwidth". + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DisassociateEIPWithShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("DisassociateEIPWithShareBandwidth", d, **kwargs) + return apis.DisassociateEIPWithShareBandwidthResponseSchema().loads( + resp + )
+ +
[docs] def get_eip_pay_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetEIPPayMode - 获取弹性IP计费模式 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **EIPId** (list) - (Required) 弹性IP的资源Id + + **Response** + + - **EIPPayMode** (list) - 见 **EIPPayModeSet** 模型定义 + + **Response Model** + + **EIPPayModeSet** + + - **EIPId** (str) - EIP的资源ID + - **EIPPayMode** (str) - EIP的计费模式. 枚举值为:Bandwidth, 带宽计费;Traffic, 流量计费; "ShareBandwidth",共享带宽模式 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetEIPPayModeRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPayMode", d, **kwargs) + return apis.GetEIPPayModeResponseSchema().loads(resp)
+ +
[docs] def get_eip_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetEIPPrice - 获取弹性IP价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [0-800] + - **OperatorName** (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International,泉州为移动单线cn-qz:ChinaMobile + - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费; 默认为获取三种价格 + - **PayMode** (str) - 弹性IP计费方式r. 枚举值为: Traffic, 流量计费; Bandwidth, 带宽计费; "ShareBandwidth",共享带宽模式. 默认为Bandwidth + - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末 + + **Response** + + - **PriceSet** (list) - 见 **EIPPriceDetailSet** 模型定义 + + **Response Model** + + **EIPPriceDetailSet** + + - **ChargeType** (str) - 弹性IP付费方式 + - **Price** (float) - 弹性IP价格, 单位"元" + - **PurchaseValue** (int) - 资源有效期, 以Unix Timestamp表示 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetEIPPriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPPrice", d, **kwargs) + return apis.GetEIPPriceResponseSchema().loads(resp)
+ +
[docs] def get_eip_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetEIPUpgradePrice - 获取弹性IP带宽改动价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [1-800] + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + - **Price** (float) - 调整带宽后的EIP价格, 单位为"元", 如需退费此处为负值 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetEIPUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("GetEIPUpgradePrice", d, **kwargs) + return apis.GetEIPUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def grant_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GrantFirewall - 将防火墙应用到资源上 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **ResourceId** (str) - (Required) 所应用资源ID + - **ResourceType** (str) - (Required) 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:"unatgw",NAT网关; "uhost",云主机; "upm",物理云主机; "hadoophost",hadoop节点; "fortresshost",堡垒机; "udhost",私有专区主机;"udockhost",容器;"dbaudit",数据库审计,”uni“,虚拟网卡。 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GrantFirewallRequestSchema().dumps(d) + + resp = self.invoke("GrantFirewall", d, **kwargs) + return apis.GrantFirewallResponseSchema().loads(resp)
+ +
[docs] def modify_eip_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyEIPBandwidth - 调整弹性IP的外网带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 各地域的带宽值范围如下:流量计费[1-200],带宽计费[1-800] + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyEIPBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPBandwidth", d, **kwargs) + return apis.ModifyEIPBandwidthResponseSchema().loads(resp)
+ +
[docs] def modify_eip_weight( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyEIPWeight - 修改弹性IP的外网出口权重 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源ID + - **Weight** (int) - (Required) 外网出口权重, 范围[0-100] 取值为0时, 该弹性IP不会被使用. 取值为100时, 同主机下只会使用这个弹性IP,其他弹性IP不会被使用 请勿将多个绑定在同一资源的弹性IP设置为相同权重 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyEIPWeightRequestSchema().dumps(d) + + resp = self.invoke("ModifyEIPWeight", d, **kwargs) + return apis.ModifyEIPWeightResponseSchema().loads(resp)
+ +
[docs] def release_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ ReleaseEIP - 释放弹性IP资源, 所释放弹性IP必须为非绑定状态. + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReleaseEIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseEIP", d, **kwargs) + return apis.ReleaseEIPResponseSchema().loads(resp)
+ +
[docs] def release_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ReleaseShareBandwidth - 关闭共享带宽 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPBandwidth** (int) - (Required) 关闭共享带宽后,各EIP恢复为的带宽值 + - **ShareBandwidthId** (str) - (Required) 共享带宽ID + - **PayMode** (str) - Bandwidth 带宽计费, Traffic 转流量计费 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReleaseShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ReleaseShareBandwidth", d, **kwargs) + return apis.ReleaseShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def release_vip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ ReleaseVIP - 释放VIP资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写 + - **Region** (str) - (Config) 地域 + - **VIPId** (str) - (Required) 内网VIP的id + - **Zone** (str) - 可用区 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReleaseVIPRequestSchema().dumps(d) + + resp = self.invoke("ReleaseVIP", d, **kwargs) + return apis.ReleaseVIPResponseSchema().loads(resp)
+ +
[docs] def resize_share_bandwidth( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ResizeShareBandwidth - 调整共享带宽的带宽值 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ShareBandwidth** (int) - (Required) 带宽值,单位为Mb,范围 [20-5000] (最大值受地域限制) + - **ShareBandwidthId** (str) - (Required) 共享带宽的Id + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ResizeShareBandwidthRequestSchema().dumps(d) + + resp = self.invoke("ResizeShareBandwidth", d, **kwargs) + return apis.ResizeShareBandwidthResponseSchema().loads(resp)
+ +
[docs] def set_eip_pay_mode( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ SetEIPPayMode - 设置弹性IP计费模式, 切换时会涉及付费/退费. + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Bandwidth** (int) - (Required) 调整的目标带宽值, 单位Mbps. 各地域的带宽值范围如下: 流量计费[1-200],其余情况[1-800] + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **PayMode** (str) - (Required) 计费模式. 枚举值:"Traffic", 流量计费模式; "Bandwidth", 带宽计费模式 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.SetEIPPayModeRequestSchema().dumps(d) + + resp = self.invoke("SetEIPPayMode", d, **kwargs) + return apis.SetEIPPayModeResponseSchema().loads(resp)
+ +
[docs] def un_bind_eip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ UnBindEIP - 将弹性IP从资源上解绑 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) 弹性IP的资源Id + - **ResourceId** (str) - (Required) 弹性IP请求解绑的资源ID + - **ResourceType** (str) - (Required) 弹性IP请求解绑的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:NAT网关;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni,虚拟网卡。 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UnBindEIPRequestSchema().dumps(d) + + resp = self.invoke("UnBindEIP", d, **kwargs) + return apis.UnBindEIPResponseSchema().loads(resp)
+ +
[docs] def update_eip_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateEIPAttribute - 更新弹性IP名称,业务组,备注等属性字段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **EIPId** (str) - (Required) EIP资源ID + - **Name** (str) - 名字(Name Tag Remark都为空则报错) + - **Remark** (str) - 备注 + - **Tag** (str) - 业务 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateEIPAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateEIPAttribute", d, **kwargs) + return apis.UpdateEIPAttributeResponseSchema().loads(resp)
+ +
[docs] def update_firewall( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateFirewall - 更新防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **Rule** (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注 + + **Response** + + - **FWId** (str) - 防火墙id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateFirewallRequestSchema().dumps(d) + + resp = self.invoke("UpdateFirewall", d, **kwargs) + return apis.UpdateFirewallResponseSchema().loads(resp)
+ +
[docs] def update_firewall_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateFirewallAttribute - 更新防火墙规则 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **FWId** (str) - (Required) 防火墙资源ID + - **Name** (str) - 防火墙名称,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + - **Remark** (str) - 防火墙备注,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + - **Tag** (str) - 防火墙业务组,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateFirewallAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateFirewallAttribute", d, **kwargs) + return apis.UpdateFirewallAttributeResponseSchema().loads(resp)
+ + _deprecated = { + "allocate_e_ip": "allocate_eip", + "associate_e_ip_with_share_bandwidth": "associate_eip_with_share_bandwidth", + "bind_e_ip": "bind_eip", + "describe_e_ip": "describe_eip", + "disassociate_e_ip_with_share_bandwidth": "disassociate_eip_with_share_bandwidth", + "get_e_ip_pay_mode": "get_eip_pay_mode", + "get_e_ip_price": "get_eip_price", + "get_e_ip_upgrade_price": "get_eip_upgrade_price", + "modify_e_ip_bandwidth": "modify_eip_bandwidth", + "modify_e_ip_weight": "modify_eip_weight", + "release_e_ip": "release_eip", + "set_e_ip_pay_mode": "set_eip_pay_mode", + "un_bind_e_ip": "un_bind_eip", + "update_e_ip_attribute": "update_eip_attribute", + "release_v_ip": "release_vip", + "allocate_v_ip": "allocate_vip", + "describe_v_ip": "describe_vip", + } + + def __getattr__(self, item): + if item in self._deprecated: + instead_of = self._deprecated[item] + msg = ( + "the method {} is deprecated, " + "please use {} instead, " + "this method will remove after 0.5.0 version" + ) + self.logger.warning(msg.format(item, instead_of)) + return getattr(self, self._deprecated[item]) + + raise AttributeError( + ( + "'{}' object has no attribute '{}'".format( + self.__class__.__name__, item + ) + ) + )
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/unvs/client.html b/docs/build/html/_modules/ucloud/services/unvs/client.html new file mode 100644 index 00000000..5066c5d1 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/unvs/client.html @@ -0,0 +1,193 @@ + + + + + + + + ucloud.services.unvs.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.unvs.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.unvs.schemas import apis
+
+
+
[docs]class UNVSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UNVSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def get_mobile(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """GetMobile - 一键登录 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BusinessId** (str) - (Required) 业务ID + - **Token** (str) - (Required) token + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **PhoneInfo** 模型定义 + - **Message** (str) - 发生错误时表示错误字符串 + - **ReqUuid** (str) - 本次请求Uuid + + **Response Model** + + **PhoneInfo** + - **Phone** (str) - 返回的电话号码 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.GetMobileRequestSchema().dumps(d) + + resp = self.invoke("GetMobile", d, **kwargs) + return apis.GetMobileResponseSchema().loads(resp)
+ +
[docs] def verify_mobile( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """VerifyMobile - 号码检测 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **BusinessId** (str) - (Required) 业务ID + - **Phone** (str) - (Required) 需要检测的手机号 + - **Token** (str) - (Required) token + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Data** (dict) - 见 **VerifyInfo** 模型定义 + - **Message** (str) - 发生错误时表示错误字符串 + - **ReqUuid** (str) - 本次请求Uuid + + **Response Model** + + **VerifyInfo** + - **VerifyResult** (str) - 检测结果:PASS:一致,REJECT:不一致 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.VerifyMobileRequestSchema().dumps(d) + + resp = self.invoke("VerifyMobile", d, **kwargs) + return apis.VerifyMobileResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uphost/client.html b/docs/build/html/_modules/ucloud/services/uphost/client.html new file mode 100644 index 00000000..9463c988 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uphost/client.html @@ -0,0 +1,504 @@ + + + + + + + ucloud.services.uphost.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uphost.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uphost.schemas import apis
+
+
+
[docs]class UPHostClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UPHostClient, self).__init__( + config, transport, middleware, logger + ) + +
[docs] def create_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreatePHost - 指定数据中心,根据资源使用量创建指定数量的UPHost物理云主机实例。 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (str) - (Required) 镜像ID。 请通过 [DescribePHostImage]获取 + - **Password** (str) - (Required) 密码(密码需使用base64进行编码) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - 计费模式,枚举值为:year, 按年付费; month,按月付费;dynamic,按需付费,(需开启权限) trial, 试用(需开启权限)。默认为按月付费 + - **Cluster** (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G + - **Count** (int) - 购买数量,默认为1,(暂不支持) + - **CouponId** (str) - 代金券 + - **Name** (str) - 物理机名称,默认为phost + - **Quantity** (str) - 购买时长,默认为1,范围[1-10] + - **Raid** (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid + - **Remark** (str) - 物理机备注,默认为空 + - **SecurityGroupId** (str) - 防火墙Id,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeSecurityGroup <https://docs.ucloud.cn/api/unet-api/describe_security_group.html>`_ + - **SubnetId** (str) - 子网ID,不填为默认,VPC2.0下需要填写此字段。 + - **Tag** (str) - 业务组,默认为default + - **Type** (str) - 物理机类型,默认为:db-2(基础型-SAS-V3) + - **VPCId** (str) - VPC ID,不填为默认,VPC2.0下需要填写此字段。 + + **Response** + + - **PHostId** (list) - PHost的资源ID数组 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreatePHostRequestSchema().dumps(d) + + resp = self.invoke("CreatePHost", d, **kwargs) + return apis.CreatePHostResponseSchema().loads(resp)
+ +
[docs] def describe_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribePHost - 获取物理机详细信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 数据偏移量,默认为0 + - **PHostId** (list) - PHost资源ID,若为空,则返回当前Region所有PHost。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostSet** (list) - 见 **PHostSet** 模型定义 + - **TotalCount** (int) - 满足条件的PHost总数 + + **Response Model** + + **PHostDiskSet** + + - **Count** (int) - 磁盘数量 + - **IOCap** (int) - 磁盘IO性能,单位MB/s(待废弃) + - **Name** (str) - 磁盘名称,sys/data + - **Space** (int) - 单盘大小,单位GB + - **Type** (str) - 磁盘属性 + + **PHostCPUSet** + + - **CoreCount** (int) - CPU核数 + - **Count** (int) - CPU个数 + - **Frequence** (float) - CPU主频 + - **Model** (str) - CPU型号 + + **PHostIPSet** + + - **Bandwidth** (int) - IP对应带宽,单位Mb,内网IP不显示带宽信息 + - **IPAddr** (str) - IP地址, + - **IPId** (str) - IP资源ID(内网IP无资源ID)(待废弃) + - **MACAddr** (str) - MAC地址 + - **OperatorName** (str) - 国际: Internation, BGP: BGP, 内网: Private + - **SubnetId** (str) - 子网ID + - **VPCId** (str) - VPC ID + + **PHostSet** + + - **AutoRenew** (str) - 自动续费 + - **CPUSet** (list) - 见 **PHostCPUSet** 模型定义 + - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限)默认为月付 + - **Cluster** (str) - 网络环境。枚举值:千兆:1G ,万兆:10G + - **Components** (str) - 组件信息(暂不支持) + - **CreateTime** (int) - 创建时间 + - **DiskSet** (list) - 见 **PHostDiskSet** 模型定义 + - **ExpireTime** (int) - 到期时间 + - **IPSet** (list) - 见 **PHostIPSet** 模型定义 + - **ImageName** (str) - 镜像名称 + - **IsSupportKVM** (str) - 是否支持紧急登录 + - **Memory** (int) - 内存大小,单位:MB + - **Name** (str) - 物理机名称 + - **OSType** (str) - 操作系统类型 + - **OSname** (str) - 操作系统名称 + - **PHostId** (str) - PHost资源ID + - **PHostType** (str) - 物理机类型,参见DescribePHostMachineType返回值 + - **PMStatus** (str) - 物理云主机状态。枚举值:\\ > 初始化:Initializing; \\ > 启动中:Starting; \\ > 运行中:Running;\\ > 关机中:Stopping; \\ > 安装失败:InstallFailed; \\ > 重启中:Rebooting;\\ > 关机:Stopped; + - **PowerState** (str) - 电源状态,on 或 off + - **RaidSupported** (str) - 是否支持Raid。枚举值:Yes:支持;No:不支持。 + - **Remark** (str) - 物理机备注 + - **SN** (str) - 物理机序列号 + - **Tag** (str) - 业务组 + - **Zone** (str) - 可用区,参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribePHostRequestSchema().dumps(d) + + resp = self.invoke("DescribePHost", d, **kwargs) + return apis.DescribePHostResponseSchema().loads(resp)
+ +
[docs] def describe_phost_image( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribePHostImage - 获取物理云主机镜像列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (list) - 镜像ID + - **ImageType** (str) - 镜像类别,枚举为:Base,标准镜像;默认为标准镜像。 + - **Limit** (int) - 返回数据长度,默认为20 + - **Offset** (int) - 数据偏移量,默认为0 + + **Response** + + - **ImageSet** (list) - 见 **PHostImageSet** 模型定义 + - **TotalCount** (int) - 满足条件的镜像总数 + + **Response Model** + + **PHostImageSet** + + - **ImageId** (str) - 镜像ID + - **ImageName** (str) - 镜像名称 + - **OsName** (str) - 操作系统名称 + - **OsType** (str) - 操作系统类型 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribePHostImageRequestSchema().dumps(d) + + resp = self.invoke("DescribePHostImage", d, **kwargs) + return apis.DescribePHostImageResponseSchema().loads(resp)
+ +
[docs] def describe_phost_tags( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribePHostTags - 获取物理机tag列表(业务组) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **TagSet** (list) - 见 **PHostTagSet** 模型定义 + - **TotalCount** (int) - Tag的个数 + + **Response Model** + + **PHostTagSet** + + - **Tag** (str) - 业务组名称 + - **TotalCount** (int) - 该业务组中包含的主机个数 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribePHostTagsRequestSchema().dumps(d) + + resp = self.invoke("DescribePHostTags", d, **kwargs) + return apis.DescribePHostTagsResponseSchema().loads(resp)
+ +
[docs] def get_phost_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetPHostPrice - 获取物理机价格列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ChargeType** (str) - (Required) 计费模式,枚举值为: Year/Month/Trial/Dynamic + - **Count** (int) - (Required) 购买数量,范围[1-5] + - **Quantity** (int) - (Required) 购买时长,1-10个月或1-10年 + - **Cluster** (str) - 网络环境,可选千兆:1G ,万兆:10G + - **Type** (str) - 默认为:DB(数据库型) + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PriceSet** (list) - 见 **PHostPriceSet** 模型定义 + + **Response Model** + + **PHostPriceSet** + + - **ChargeType** (str) - Year/Month/Trial/Dynamic + - **Price** (float) - 价格, 单位:元, 保留小数点后两位有效数字 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetPHostPriceRequestSchema().dumps(d) + + resp = self.invoke("GetPHostPrice", d, **kwargs) + return apis.GetPHostPriceResponseSchema().loads(resp)
+ +
[docs] def modify_phost_info( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyPHostInfo - 更改物理机信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) 物理机资源ID + - **Name** (str) - 物理机名称,默认不更改 + - **Remark** (str) - 物理机备注,默认不更改 + - **Tag** (str) - 业务组,默认不更改 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyPHostInfoRequestSchema().dumps(d) + + resp = self.invoke("ModifyPHostInfo", d, **kwargs) + return apis.ModifyPHostInfoResponseSchema().loads(resp)
+ +
[docs] def poweroff_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ PoweroffPHost - 断电物理云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.PoweroffPHostRequestSchema().dumps(d) + + resp = self.invoke("PoweroffPHost", d, **kwargs) + return apis.PoweroffPHostResponseSchema().loads(resp)
+ +
[docs] def reboot_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ RebootPHost - 重启物理机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.RebootPHostRequestSchema().dumps(d) + + resp = self.invoke("RebootPHost", d, **kwargs) + return apis.RebootPHostResponseSchema().loads(resp)
+ +
[docs] def reinstall_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ReinstallPHost - 重装物理机操作系统 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Password** (str) - (Required) 密码 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **ImageId** (str) - 镜像Id,参考镜像列表,默认使用原镜像 + - **Name** (str) - 物理机名称,默认不更改 + - **Raid** (str) - 不保留数据盘重装,可选Raid + - **Remark** (str) - 物理机备注,默认为不更改。 + - **ReserveDisk** (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes + - **Tag** (str) - 业务组,默认不更改。 + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ReinstallPHostRequestSchema().dumps(d) + + resp = self.invoke("ReinstallPHost", d, **kwargs) + return apis.ReinstallPHostResponseSchema().loads(resp)
+ +
[docs] def start_phost(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ StartPHost - 启动物理机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.StartPHostRequestSchema().dumps(d) + + resp = self.invoke("StartPHost", d, **kwargs) + return apis.StartPHostResponseSchema().loads(resp)
+ +
[docs] def terminate_phost( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ TerminatePHost - 删除物理云主机 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PHostId** (str) - (Required) PHost资源ID + - **ReleaseEIP** (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **PHostId** (str) - PHost 的资源ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.TerminatePHostRequestSchema().dumps(d) + + resp = self.invoke("TerminatePHost", d, **kwargs) + return apis.TerminatePHostResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/usms/client.html b/docs/build/html/_modules/ucloud/services/usms/client.html new file mode 100644 index 00000000..426a1795 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/usms/client.html @@ -0,0 +1,440 @@ + + + + + + + ucloud.services.usms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.usms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.usms.schemas import apis
+
+
+
[docs]class USMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(USMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def create_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUSMSSignature - 调用接口CreateUSMSSignature申请短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **CertificateType** (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **Description** (str) - (Required) 短信签名申请原因 + - **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB + - **SigContent** (str) - (Required) 短信签名名称;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **ProxyFile** (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项; + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **SigContent** (str) - 短信签名名称 + - **SigId** (str) - 短信签名ID(短信签名申请时的工单ID) + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.CreateUSMSSignatureRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUSMSSignature", d, **kwargs) + return apis.CreateUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def create_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateUSMSTemplate - 调用接口CreateUSMSTemplate申请短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Purpose** (int) - (Required) 短信模板用途类型:1-验证码类短信模板;2-系统通知类短信模板;3-会员推广类短信模板; + - **Template** (str) - (Required) 短信模板内容,说明如下:字数不超过500,每个中文、符号、英文、数组等都计为一个字;模板中的变量填写格式:{N},其中N为大于1的整数,有多个参数时,建议N从1开始顺次,例如:{1}、{2}等;短信模板禁止仅包括变量的情况; + - **TemplateName** (str) - (Required) 短信模板名称,不超过32个字符,每个中文、符号、英文、数字等都计为1个字。 + - **Remark** (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。 + - **UnsubscribeInfo** (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + - **TemplateId** (str) - 短信模板ID(短信模板申请时的工单ID) + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateUSMSTemplateRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUSMSTemplate", d, **kwargs) + return apis.CreateUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def delete_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUSMSSignature - 调用接口DeleteUSMSSignature删除短信签名 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SigIds** (list) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.DeleteUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("DeleteUSMSSignature", d, **kwargs) + return apis.DeleteUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def delete_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteUSMSTemplate - 调用接口DeleteUSMSTemplate删除短信模板 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **TemplateIds** (list) - (Required) 模板ID(也即短信模板申请时的工单ID),支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1...TemplateIds.N方式传入 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("DeleteUSMSTemplate", d, **kwargs) + return apis.DeleteUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def get_usms_send_receipt( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ GetUSMSSendReceipt - 获取短信发送回执信息。下游服务提供商回执信息返回会有一定延时,建议发送完短信以后,5-10分钟后再调用该接口拉取回执信息。若超过12小时未返回,则请联系技术支持确认原因 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SessionNoSet** (list) - (Required) 发送短信时返回的SessionNo集合,SessionNoSet.0,SessionNoSet.1....格式 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Data** (list) - 见 **ReceiptPerSession** 模型定义 + - **Message** (str) - 错误描述 + + **Response Model** + + **ReceiptPerPhone** + + - **CostCount** (int) - 消耗短信条数 + - **Phone** (str) - 手机号码 + - **ReceiptDesc** (str) - 回执结果描述 + - **ReceiptResult** (str) - 回执结果 + - **ReceiptTime** (int) - 回执返回时间 + + **ReceiptPerSession** + + - **ReceiptSet** (list) - 见 **ReceiptPerPhone** 模型定义 + - **SessionNo** (str) - 发送短信时返回的SessionNo + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetUSMSSendReceiptRequestSchema().dumps(d) + + resp = self.invoke("GetUSMSSendReceipt", d, **kwargs) + return apis.GetUSMSSendReceiptResponseSchema().loads(resp)
+ +
[docs] def query_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ QueryUSMSSignature - 调用接口QueryUSMSSignature查询短信签名申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **SigContent** (str) - 签名内容;签名ID和签名至少需填写1项; + - **SigId** (str) - 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项; + + **Response** + + - **Data** (dict) - 见 **OutSignature** 模型定义 + - **Message** (str) - 发生错误时,表示具体错误描述 + + **Response Model** + + **OutSignature** + + - **ErrDesc** (str) - 签名审核失败原因 + - **SigContent** (str) - 签名内容 + - **SigId** (str) - 签名ID + - **Status** (int) - 签名状态。0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.QueryUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("QueryUSMSSignature", d, **kwargs) + return apis.QueryUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def query_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ QueryUSMSTemplate - 调用接口QueryUSMSTemplate查询短信模板申请状态 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **TemplateId** (str) - (Required) 模板ID + + **Response** + + - **Data** (dict) - 见 **OutTemplate** 模型定义 + - **Message** (str) - 当RetCode不为0时,Message中显示具体错误描述 + + **Response Model** + + **OutTemplate** + + - **CreateTime** (int) - 创建时间 + - **ErrDesc** (str) - 审核失败原因 + - **Purpose** (int) - 模板类型,选项:1-验证码类 2-通知类 3-会员推广类 + - **Remark** (str) - 模板说明 + - **Status** (int) - 短信模板状态;状态说明:0-待审核,1-审核中,2-审核通过,3-审核未通过,4-被禁用 + - **Template** (str) - 短信模板内容 + - **TemplateId** (str) - 短信模板ID + - **TemplateName** (str) - 短信模板名称 + - **UnsubscribeInfo** (str) - 退订信息;一般填写方式“回T退订”,当purpose为3(也即会员推广类)时,为必填项 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.QueryUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("QueryUSMSTemplate", d, **kwargs) + return apis.QueryUSMSTemplateResponseSchema().loads(resp)
+ +
[docs] def send_usms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ SendUSMSMessage - 发送短信息。短信字数超过70个后,按照每66个进行切割(因为要加上1/3), 2/3)等字样,占用4个字长)。短信最大长度不能超过600个字。每个汉字、数字、字母、字符都按一个字计 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **PhoneNumbers** (list) - (Required) 电话号码数组,电话号码格式为(60)1xxxxxxxx,()中为国际长途区号(如中国为86或0086,两种格式都支持),后面为电话号码.若不传入国际区号,如1851623xxxx,则默认为国内手机号 + - **TemplateId** (str) - (Required) 模板ID。若指定的模板ID审核未通过(status不等于2)则不允许发送 + - **TemplateParams** (list) - (Required) 模板参数数组,以TempalteParams.0,TempalteParams.1.。。格式。若模板ID指定的模板无可变参数,则不传入该参数。模板参数个数与模板不匹配,则不允许发送 + - **SigContent** (str) - 使用的签名,如果不输入则使用默认签名,若没有申请默认签名不允许发送;若输入的签名没有申请,则无法发送 + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Action** (str) - 操作名称 + - **Message** (str) - 发生错误时表示错误描述 + - **RetCode** (int) - 返回码 + - **SessionNo** (str) - 本次提交发送的短信的唯一ID,可根据该值查询本次发送的短信列表 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.SendUSMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendUSMSMessage", d, **kwargs) + return apis.SendUSMSMessageResponseSchema().loads(resp)
+ +
[docs] def update_usms_signature( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateUSMSSignature - 调用接口UpdateUSMSSignature修改未通过审核的短信签名,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **File** (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB + - **SigContent** (str) - (Required) 新的短信签名名称;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加 + - **SigId** (str) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1...SigIds.N方式传入 + - **SigPurpose** (int) - (Required) 签名用途,0-自用,1-他用; + - **SigType** (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称; + - **CertificateType** (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书; + - **ProxyFile** (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项; + + **Response** + + - **Message** (str) - 返回状态码描述,如果操作成功,默认返回为空 + + """ + # build request + d = {"ProjectId": self.config.project_id} + req and d.update(req) + d = apis.UpdateUSMSSignatureRequestSchema().dumps(d) + + resp = self.invoke("UpdateUSMSSignature", d, **kwargs) + return apis.UpdateUSMSSignatureResponseSchema().loads(resp)
+ +
[docs] def update_usms_template( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateUSMSTemplate - 调用接口UpdateUSMSTemplate修改未通过审核的短信模板,并重新提交审核 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Template** (str) - (Required) 新的模板内容。模板名称和模板内容必须提供一个,否则会报错。小于等于600个字 + - **TemplateId** (str) - (Required) 短信模板ID + - **Remark** (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。 + - **TemplateName** (str) - 新的模板名称。小于等于32个字,每个中文、英文、数组、符合都计为一个字 + - **UnsubscribeInfo** (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T + - **Zone** (str) - 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + + **Response** + + - **Message** (str) - 发生错误时表示错误描述 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateUSMSTemplateRequestSchema().dumps(d) + + resp = self.invoke("UpdateUSMSTemplate", d, **kwargs) + return apis.UpdateUSMSTemplateResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/utsdb/client.html b/docs/build/html/_modules/ucloud/services/utsdb/client.html new file mode 100644 index 00000000..12b0911d --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/utsdb/client.html @@ -0,0 +1,710 @@ + + + + + + + + ucloud.services.utsdb.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.utsdb.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.utsdb.schemas import apis
+
+
+
[docs]class UTSDBClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UTSDBClient, self).__init__(config, transport, middleware, logger) + +
[docs] def check_uinfluxdb_allowance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CheckUInfluxdbAllowance - 检查UInfluxdb剩余资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Count** (int) - (Required) 创建实例的数量,[1-10] + - **CpuLimit** (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **MemoryLimit** (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Count** (int) - 可创建的数量 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CheckUInfluxdbAllowanceRequestSchema().dumps(d) + + resp = self.invoke("CheckUInfluxdbAllowance", d, **kwargs) + return apis.CheckUInfluxdbAllowanceResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbDatabase - 创建Influxdb数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) Influxdb创建的数据库的名称 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AccoutName** (str) - Influxdb数据库账号 + - **Description** (str) - Influxdb数据库的描述 + - **RetentionPolicy** (str) - 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf) + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbDatabaseRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbDatabase", d, **kwargs) + return apis.CreateUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbDatabaseRP - 给指定的database创建一个保留策略,最多可以创建10个RP + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 要创建RP的数据库 + - **RetentionPolicy** (str) - (Required) 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf) + - **RetentionPolicyName** (str) - (Required) 保留策略名 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbDatabaseRPRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbDatabaseRP", d, **kwargs) + return apis.CreateUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def create_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """CreateUInfluxdbInstance - 创建UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **AccountName** (str) - (Required) 默认账户 + - **ChargeType** (str) - (Required) 付费类型,后付费阶段固定为:后付费(PostPaid) + - **CpuLimit** (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **DatabaseName** (str) - (Required) 数据库名称 + - **MemoryLimit** (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Name** (str) - (Required) 实例名称,长度(6<=size<=63) + - **Password** (str) - (Required) 默认账户的密码,需要 base64 编码 + - **Quantity** (int) - (Required) 购买时长,默认值1 + - **SubnetId** (str) - (Required) 子网 id + - **VPCId** (str) - (Required) VPC id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CouponId** (str) - 使用的代金券id + - **Tag** (str) - 业务组名称 + + **Response** + + - **UInfluxdbId** (str) - 返回的实例id + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.CreateUInfluxdbInstanceRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateUInfluxdbInstance", d, **kwargs) + return apis.CreateUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbDatabase - 删除Influxdb实例的数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名称 + - **UInfluxdbId** (str) - (Required) 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbDatabaseRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbDatabase", d, **kwargs) + return apis.DeleteUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbDatabaseRP - 删除指定数据库下面的一个数据保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 要删除的RP所在数据库 + - **RetentionPolicyName** (str) - (Required) 要删除的保留策略 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **Message** (str) - 如果执行失败, 失败的错误消息 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbDatabaseRPRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbDatabaseRP", d, **kwargs) + return apis.DeleteUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def delete_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DeleteUInfluxdbInstance - 删除UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DeleteUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("DeleteUInfluxdbInstance", d, **kwargs) + return apis.DeleteUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_database( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbDatabase - 描述UInfluxdb数据库 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - + - **Limit** (int) - + - **Offset** (int) - + + **Response** + + - **DatabaseInfo** (list) - 见 **DatabaseInfo** 模型定义 + + **Response Model** + + **AccountInfo** + - **Account** (str) - 账户名 + - **Password** (str) - 密码 + - **Privilege** (str) - 权限 + + + **DatabaseInfo** + - **AccountInfo** (list) - 见 **AccountInfo** 模型定义 + - **DatabaseName** (str) - 数据库名 + - **Description** (str) - 数据库描述 + - **RetentionPolicy** (str) - 保留策略 + - **State** (str) - 数据库状态 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbDatabaseRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbDatabase", d, **kwargs) + return apis.DescribeUInfluxdbDatabaseResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_database_rp( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbDatabaseRP - 获取指定数据库下面的所有保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名称 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **DataSet** (list) - 见 **RpData** 模型定义 + - **Message** (str) - 如果执行失败, 失败的错误消息 + + **Response Model** + + **RpData** + - **Policy** (str) - 保留策略 + - **RetentionPolicyName** (str) - 保留策略名 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbDatabaseRPRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbDatabaseRP", d, **kwargs) + return apis.DescribeUInfluxdbDatabaseRPResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbInstance - 拉取UInfluxdb实例列表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **Limit** (int) - 分页显示数量,列表操作则指定 + - **Offset** (int) - 分页显示起始偏移位置,列表操作则指定 + - **UInfluxdbId** (str) - 指定id的话,会拉取该实例信息,否则拉取该帐号所有信息 + + **Response** + + - **DataSet** (list) - 见 **UInfluxdbDataSet** 模型定义 + + **Response Model** + + **UInfluxdbDataSet** + - **AccountName** (str) - 账户名 + - **CPULimit** (int) - 实例核数 + - **ChargeType** (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 + - **CreateTime** (int) - 创建时间 + - **ExpiredTime** (int) - 修改时间 + - **MemoryLimit** (int) - 实例内存 + - **Name** (str) - 实例名称 + - **Port** (int) - 实例端口 + - **State** (str) - 实例状态 + - **SubnetId** (str) - 子网ID + - **Tag** (str) - 业务组信息 + - **UInfluxdbId** (str) - 实例id + - **UsedSize** (int) - 硬盘使用量 + - **VPCId** (str) - VPC的ID + - **VirtualIP** (str) - 实例ip + - **Zone** (str) - UInfluxdb实例所在可用区 + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbInstance", d, **kwargs) + return apis.DescribeUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbPrice - 获取UInfluxdb价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) 核数 单位:个,规格[2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **ChargeType** (str) - 付费类型,后付费。填:PostPaid (后付费) + - **MemoryLimit** (int) - 内存限制 单位:G 规格 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G] + - **Quantity** (int) - 付费周期数量 + + **Response** + + - **OriginalPrice** (float) - 原价 + - **Price** (float) - 价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbPriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbPrice", d, **kwargs) + return apis.DescribeUInfluxdbPriceResponseSchema().loads(resp)
+ +
[docs] def describe_uinfluxdb_upgrade_price( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """DescribeUInfluxdbUpgradePrice - 获取UIfluxdb升降级价格 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) 核数 + - **MemoryLimit** (int) - (Required) 容量,单位GB + - **UInfluxdbId** (str) - (Required) UInfluxdb 实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + - **OriginalPrice** (float) - 原价 + - **TotalPrice** (float) - 升降级价格 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.DescribeUInfluxdbUpgradePriceRequestSchema().dumps(d) + + resp = self.invoke("DescribeUInfluxdbUpgradePrice", d, **kwargs) + return apis.DescribeUInfluxdbUpgradePriceResponseSchema().loads(resp)
+ +
[docs] def modify_uinfluxdb_database_policy( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ModifyUInfluxdbDatabasePolicy - 更改UInfluxdb实例数据库数据保留策略 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **DatabaseName** (str) - (Required) 数据库名 + - **RetentionPolicy** (str) - (Required) 数据库数据保留策略。自定义格式如:10d(即10天),2w(即两周), + - **UInfluxdbId** (str) - (Required) Influxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ModifyUInfluxdbDatabasePolicyRequestSchema().dumps(d) + + resp = self.invoke("ModifyUInfluxdbDatabasePolicy", d, **kwargs) + return apis.ModifyUInfluxdbDatabasePolicyResponseSchema().loads(resp)
+ +
[docs] def reboot_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """RebootUInfluxdbInstance - 重启UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.RebootUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("RebootUInfluxdbInstance", d, **kwargs) + return apis.RebootUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def reset_uinfluxdb_instance_name( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ResetUInfluxdbInstanceName - 更改UIfluxdb实例名称 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **NewName** (str) - (Required) 实例的新名字, 长度要求为6~63位 + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.ResetUInfluxdbInstanceNameRequestSchema().dumps(d) + + resp = self.invoke("ResetUInfluxdbInstanceName", d, **kwargs) + return apis.ResetUInfluxdbInstanceNameResponseSchema().loads(resp)
+ +
[docs] def start_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StartUInfluxdbInstance - 启动UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StartUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("StartUInfluxdbInstance", d, **kwargs) + return apis.StartUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def stop_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """StopUInfluxdbInstance - 关闭UInfluxdb实例 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **UInfluxdbId** (str) - (Required) UInfluxdb实例id + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.StopUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("StopUInfluxdbInstance", d, **kwargs) + return apis.StopUInfluxdbInstanceResponseSchema().loads(resp)
+ +
[docs] def upgrade_uinfluxdb_instance( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """UpgradeUInfluxdbInstance - UInfluxdb实例配置升降级 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CpuLimit** (int) - (Required) UInfluxdb 实例 新的核数,单位个 + - **MemoryLimit** (int) - (Required) UInfluxdb 实例 新的内存 + - **UInfluxdbId** (str) - (Required) 实例ID + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + + **Response** + + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.UpgradeUInfluxdbInstanceRequestSchema().dumps(d) + + resp = self.invoke("UpgradeUInfluxdbInstance", d, **kwargs) + return apis.UpgradeUInfluxdbInstanceResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/uvms/client.html b/docs/build/html/_modules/ucloud/services/uvms/client.html new file mode 100644 index 00000000..7fae144d --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/uvms/client.html @@ -0,0 +1,158 @@ + + + + + + + + ucloud.services.uvms.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.uvms.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.uvms.schemas import apis
+
+
+
[docs]class UVMSClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(UVMSClient, self).__init__(config, transport, middleware, logger) + +
[docs] def send_uvms_message( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """SendUVMSMessage - 向指定号码拨打电话 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **CalledNumber** (str) - (Required) 被叫号码,采用 E.164 标准,格式为+[国家代码][用户号码]。例如:+8613512345678, 其中前面有一个+号 ,86为国家码,13512345678为手机号 + - **TemplateId** (str) - (Required) 模板 ID,在控制台审核通过的模板 ID。 + - **Zone** (str) - (Required) 可用区。参见 `可用区列表 <https://docs.ucloud.cn/api/summary/regionlist>`_ + - **FromNumber** (str) - 主叫号码,号码随机时不填。专属号码时传入已购买的号码,仅支持一个号码,在控制台查看已购买的号码。 + - **TemplateParams** (list) - 模板可变参数,以数组的方式填写,举例,TemplateParams.0,TemplateParams.1,... 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送; + - **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符 + + **Response** + + - **Message** (str) - 状态码的描述 + - **ReqUuid** (str) - 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 ReqUuid。 + - **SessionNo** (str) - 本次提交发送语音的唯一ID,可根据该值查询本次发送详情 + - **UserId** (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。 + + """ + # build request + d = { + "ProjectId": self.config.project_id, + "Region": self.config.region, + } + req and d.update(req) + d = apis.SendUVMSMessageRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("SendUVMSMessage", d, **kwargs) + return apis.SendUVMSMessageResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/ucloud/services/vpc/client.html b/docs/build/html/_modules/ucloud/services/vpc/client.html new file mode 100644 index 00000000..28f389b7 --- /dev/null +++ b/docs/build/html/_modules/ucloud/services/vpc/client.html @@ -0,0 +1,738 @@ + + + + + + + ucloud.services.vpc.client — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Source code for ucloud.services.vpc.client

+""" Code is generated by ucloud-model, DO NOT EDIT IT. """
+
+import typing
+
+
+from ucloud.core.client import Client
+from ucloud.services.vpc.schemas import apis
+
+
+
[docs]class VPCClient(Client): + def __init__( + self, config: dict, transport=None, middleware=None, logger=None + ): + super(VPCClient, self).__init__(config, transport, middleware, logger) + +
[docs] def add_vpc_network( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AddVPCNetwork - 添加VPC网段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Network** (list) - (Required) 增加网段 + - **VPCId** (str) - (Required) 源VPC短ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AddVPCNetworkRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("AddVPCNetwork", d, **kwargs) + return apis.AddVPCNetworkResponseSchema().loads(resp)
+ +
[docs] def associate_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ AssociateRouteTable - 绑定子网的路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由表ID,仅限自定义路由表 + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.AssociateRouteTableRequestSchema().dumps(d) + + resp = self.invoke("AssociateRouteTable", d, **kwargs) + return apis.AssociateRouteTableResponseSchema().loads(resp)
+ +
[docs] def clone_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CloneRouteTable - 根据一张现有路由表复制一张新的路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 被克隆的路由表ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CloneRouteTableRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CloneRouteTable", d, **kwargs) + return apis.CloneRouteTableResponseSchema().loads(resp)
+ +
[docs] def create_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateRouteTable - 创建路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - (Required) VPC ID + - **Name** (str) - 路由表名称 Default RouteTable + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组 + + **Response** + + - **RouteTableId** (str) - 路由表ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateRouteTableRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateRouteTable", d, **kwargs) + return apis.CreateRouteTableResponseSchema().loads(resp)
+ +
[docs] def create_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateSubnet - 创建子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Subnet** (str) - (Required) 子网网络地址,例如192.168.0.0 + - **VPCId** (str) - (Required) VPC资源ID + - **Netmask** (int) - 子网网络号位数,默认为24 + - **Remark** (str) - 备注 + - **SubnetName** (str) - 子网名称,默认为Subnet + - **Tag** (str) - 业务组名称,默认为Default + + **Response** + + - **SubnetId** (str) - 子网ID + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateSubnetRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateSubnet", d, **kwargs) + return apis.CreateSubnetResponseSchema().loads(resp)
+ +
[docs] def create_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ CreateVPC - 创建VPC + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Name** (str) - (Required) VPC名称 + - **Network** (list) - (Required) VPC网段 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称 + - **Type** (int) - VPC类型 + + **Response** + + - **VPCId** (str) - VPC资源Id + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateVPCRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPC", d, **kwargs) + return apis.CreateVPCResponseSchema().loads(resp)
+ +
[docs] def create_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ CreateVPCIntercom - 新建VPC互通关系 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstVPCId** (str) - (Required) 目的VPC短ID + - **VPCId** (str) - (Required) 源VPC短ID + - **DstProjectId** (str) - 目的VPC项目ID。默认与源VPC同项目。 + - **DstRegion** (str) - 目的VPC所在地域,默认与源VPC同地域。 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateVPCIntercomRequestSchema().dumps(d) + + # build options + kwargs["max_retries"] = 0 # ignore retry when api is not idempotent + + resp = self.invoke("CreateVPCIntercom", d, **kwargs) + return apis.CreateVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def delete_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteRouteTable - 删除自定义路由表 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteRouteTableRequestSchema().dumps(d) + + resp = self.invoke("DeleteRouteTable", d, **kwargs) + return apis.DeleteRouteTableResponseSchema().loads(resp)
+ +
[docs] def delete_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteSubnet - 删除子网 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网ID + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteSubnetRequestSchema().dumps(d) + + resp = self.invoke("DeleteSubnet", d, **kwargs) + return apis.DeleteSubnetResponseSchema().loads(resp)
+ +
[docs] def delete_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DeleteVPC - 删除VPC + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - (Required) VPC资源Id + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteVPCRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPC", d, **kwargs) + return apis.DeleteVPCResponseSchema().loads(resp)
+ +
[docs] def delete_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DeleteVPCIntercom - 删除VPC互通关系 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **DstVPCId** (str) - (Required) 目的VPC短ID + - **VPCId** (str) - (Required) 源VPC短ID + - **DstProjectId** (str) - 目的VPC所在项目ID,默认为源VPC所在项目ID + - **DstRegion** (str) - 目的VPC所在地域,默认为源VPC所在地域 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DeleteVPCIntercomRequestSchema().dumps(d) + + resp = self.invoke("DeleteVPCIntercom", d, **kwargs) + return apis.DeleteVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def describe_route_table( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeRouteTable - 获取路由表详细信息(包括路由策略) + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - 业务组ID + - **Limit** (int) - Limit + - **OffSet** (int) - OffSet + - **RouteTableId** (str) - 路由表ID + - **VPCId** (str) - VPC ID + + **Response** + + - **RouteTables** (list) - 见 **RouteTableInfo** 模型定义 + - **TotalCount** (int) - RouteTables字段的数量 + + **Response Model** + + **RouteRuleInfo** + + - **DstAddr** (str) - 目的地址,比如10.10.8/24 + - **NexthopId** (str) - 路由下一跳ID,比如uvnet-3eljvj + - **NexthopType** (str) - 下一跳类型,比如local、vnet + - **Remark** (str) - 路由规则备注 + - **RouteRuleId** (str) - 规则ID + - **RuleType** (int) - 路由规则类型(0表示系统路由,1表示自定义路由) + + **RouteTableInfo** + + - **CreateTime** (int) - 创建时间戳 + - **Remark** (str) - 路由表备注 + - **RouteRules** (list) - 见 **RouteRuleInfo** 模型定义 + - **RouteTableId** (str) - 路由表ID + - **RouteTableType** (int) - 路由表类型,1为默认,0为自定义 + - **SubnetCount** (str) - 绑定了该路由表的子网数量 + - **Tag** (str) - 业务组 + - **VPCId** (str) - 路由表所属vpc + - **VPCName** (str) - vpc名称 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeRouteTableRequestSchema().dumps(d) + + resp = self.invoke("DescribeRouteTable", d, **kwargs) + return apis.DescribeRouteTableResponseSchema().loads(resp)
+ +
[docs] def describe_subnet( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeSubnet - 获取子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **BusinessId** (str) - 业务组 + - **Limit** (int) - 列表长度,默认为20 + - **Offset** (int) - 偏移量,默认为0 + - **RouteTableId** (str) - 路由表Id + - **SubnetId** (str) - 子网id,适用于一次查询一个子网信息 + - **SubnetIds** (list) - 子网id数组,适用于一次查询多个子网信息 + - **Tag** (str) - 业务组名称,默认为Default + - **VPCId** (str) - VPC资源id + + **Response** + + - **DataSet** (list) - 见 **SubnetInfo** 模型定义 + - **TotalCount** (int) - 子网总数量 + + **Response Model** + + **SubnetInfo** + + - **CreateTime** (int) - 创建时间 + - **Gateway** (str) - 子网网关 + - **HasNATGW** (bool) - 是否有natgw + - **IPv6Network** (str) - 子网关联的IPv6网段 + - **Netmask** (int) - 子网掩码 + - **OperatorName** (str) - 子网关联的IPv6网段所属运营商 + - **Remark** (str) - 备注 + - **RouteTableId** (str) - 路由表Id + - **Subnet** (str) - 子网网段 + - **SubnetId** (str) - 子网Id + - **SubnetName** (str) - 子网名称 + - **SubnetType** (int) - 子网类型 + - **Tag** (str) - 业务组 + - **VPCId** (str) - VPCId + - **VPCName** (str) - VPC名称 + - **Zone** (str) - 可用区名称 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeSubnetRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnet", d, **kwargs) + return apis.DescribeSubnetResponseSchema().loads(resp)
+ +
[docs] def describe_subnet_resource( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeSubnetResource - 展示子网资源 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网id + - **Limit** (int) - 单页返回数据长度,默认为20 + - **Offset** (int) - 列表起始位置偏移量,默认为0 + - **ResourceType** (str) - 资源类型,默认为全部资源类型。枚举值为:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP. + + **Response** + + - **DataSet** (list) - 见 **SubnetResource** 模型定义 + - **TotalCount** (int) - 总数 + + **Response Model** + + **SubnetResource** + + - **IP** (str) - 资源ip + - **IPv6Address** (str) - 资源的IPv6地址 + - **Name** (str) - 资源名称 + - **ResourceId** (str) - 资源Id + - **ResourceType** (str) - 资源类型。对应的资源类型:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP. + - **SubResourceId** (str) - 资源绑定的虚拟网卡的实例ID + - **SubResourceName** (str) - 资源绑定的虚拟网卡的实例名称 + - **SubResourceType** (str) - 资源绑定的虚拟网卡的类型 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeSubnetResourceRequestSchema().dumps(d) + + resp = self.invoke("DescribeSubnetResource", d, **kwargs) + return apis.DescribeSubnetResourceResponseSchema().loads(resp)
+ +
[docs] def describe_vpc(self, req: typing.Optional[dict] = None, **kwargs) -> dict: + """ DescribeVPC - 获取VPC信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Limit** (int) - + - **Offset** (int) - + - **Tag** (str) - 业务组名称 + - **VPCIds** (list) - VPCId + + **Response** + + - **DataSet** (list) - 见 **VPCInfo** 模型定义 + + **Response Model** + + **VPCNetworkInfo** + + - **Network** (str) - vpc地址空间 + - **SubnetCount** (int) - 地址空间中子网数量 + + **VPCInfo** + + - **CreateTime** (int) - + - **IPv6Network** (str) - VPC关联的IPv6网段 + - **Name** (str) - + - **Network** (list) - + - **NetworkInfo** (list) - 见 **VPCNetworkInfo** 模型定义 + - **OperatorName** (str) - VPC关联的IPv6网段所属运营商 + - **SubnetCount** (int) - + - **Tag** (str) - + - **UpdateTime** (int) - + - **VPCId** (str) - VPCId + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeVPCRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPC", d, **kwargs) + return apis.DescribeVPCResponseSchema().loads(resp)
+ +
[docs] def describe_vpc_intercom( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ DescribeVPCIntercom - 获取VPC互通信息 + + **Request** + + - **ProjectId** (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 源VPC所在地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **VPCId** (str) - (Required) VPC短ID + - **DstProjectId** (str) - 目的项目ID,默认为全部项目 + - **DstRegion** (str) - 目的VPC所在地域,默认为全部地域 + + **Response** + + - **DataSet** (list) - 见 **VPCIntercomInfo** 模型定义 + + **Response Model** + + **VPCIntercomInfo** + + - **DstRegion** (str) - 所属地域 + - **Name** (str) - VPC名字 + - **Network** (list) - VPC的地址空间 + - **ProjectId** (str) - 项目Id + - **Tag** (str) - 业务组(未分组显示为 Default) + - **VPCId** (str) - VPCId + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.DescribeVPCIntercomRequestSchema().dumps(d) + + resp = self.invoke("DescribeVPCIntercom", d, **kwargs) + return apis.DescribeVPCIntercomResponseSchema().loads(resp)
+ +
[docs] def modify_route_rule( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ ModifyRouteRule - 路由策略增、删、改 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteRule** (list) - (Required) 格式: RouteRuleId | 目的网段 | 下一跳类型 | 下一跳 |优先级| 备注 | 增、删、改标志 (下一跳类型为instance或者vip,下一跳为云主机id或者vip的id,优先级使用0,动作标志为add/delete/update) 。"添加"示例: test_id | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| add (添加的RouteRuleId填任意非空字符串) 。"删除"示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| delete (RouteRuleId来自DescribeRouteTable中) 。“修改”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-cjksa2 | 0 | Default Route Rule| update (RouteRuleId来自DescribeRouteTable中) + - **RouteTableId** (str) - (Required) 通过DescribeRouteTable拿到 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.ModifyRouteRuleRequestSchema().dumps(d) + + resp = self.invoke("ModifyRouteRule", d, **kwargs) + return apis.ModifyRouteRuleResponseSchema().loads(resp)
+ +
[docs] def update_route_table_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateRouteTableAttribute - 更新路由表基本信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **RouteTableId** (str) - (Required) 路由表ID + - **Name** (str) - 名称 + - **Remark** (str) - 备注 + - **Tag** (str) - 业务组名称 + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateRouteTableAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateRouteTableAttribute", d, **kwargs) + return apis.UpdateRouteTableAttributeResponseSchema().loads(resp)
+ +
[docs] def update_subnet_attribute( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateSubnetAttribute - 更新子网信息 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **SubnetId** (str) - (Required) 子网ID + - **Name** (str) - 子网名称(如果Name不填写,Tag必须填写) + - **Tag** (str) - 业务组名称(如果Tag不填写,Name必须填写) + + **Response** + + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateSubnetAttributeRequestSchema().dumps(d) + + resp = self.invoke("UpdateSubnetAttribute", d, **kwargs) + return apis.UpdateSubnetAttributeResponseSchema().loads(resp)
+ +
[docs] def update_vpc_network( + self, req: typing.Optional[dict] = None, **kwargs + ) -> dict: + """ UpdateVPCNetwork - 更新VPC网段 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 <https://docs.ucloud.cn/api/summary/regionlist.html>`_ + - **Network** (list) - (Required) 需要保留的VPC网段。当前仅支持删除VPC网段,添加网段请参考 `AddVPCNetwork <https://docs.ucloud.cn/api/vpc2.0-api/add_vpc_network>`_ + - **VPCId** (str) - (Required) VPC的ID + + **Response** + + - **Message** (str) - 错误信息 + + """ + # build request + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.UpdateVPCNetworkRequestSchema().dumps(d) + + resp = self.invoke("UpdateVPCNetwork", d, **kwargs) + return apis.UpdateVPCNetworkResponseSchema().loads(resp)
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/core.rst.txt b/docs/build/html/_sources/core.rst.txt new file mode 100644 index 00000000..bbaea474 --- /dev/null +++ b/docs/build/html/_sources/core.rst.txt @@ -0,0 +1,35 @@ +Core +==== + +Config +------ + +.. autoclass:: ucloud.core.auth.Credential + :members: + +.. autoclass:: ucloud.core.client.Config + :members: + +Client +------ + +.. autoclass:: ucloud.core.client.Client + :members: + +Transport +--------- + +.. autoclass:: ucloud.core.transport.RequestsTransport + :members: + +Middleware +---------- + +.. autoclass:: ucloud.core.utils.middleware.Middleware + :members: + +Testing +------- + +.. automodule:: ucloud.core.testing.env + :members: diff --git a/docs/build/html/_sources/helpers.rst.txt b/docs/build/html/_sources/helpers.rst.txt new file mode 100644 index 00000000..d9d40d4f --- /dev/null +++ b/docs/build/html/_sources/helpers.rst.txt @@ -0,0 +1,13 @@ +Helpers +======= + +Wait Resource State +------------------- + +.. autofunction:: ucloud.helpers.wait.wait_for_state + +Utilities +--------- + +.. automodule:: ucloud.helpers.utils + :members: diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt new file mode 100644 index 00000000..44a98e0c --- /dev/null +++ b/docs/build/html/_sources/index.rst.txt @@ -0,0 +1,56 @@ +UCloud SDK Python 3 +=================== + +UCloud SDK is a Python client library for accessing the UCloud API. + +This client can run on Linux, macOS and Windows. + +- Website: https://www.ucloud.cn/ +- Free software: Apache 2.0 license +- `Documentation `_ + +.. image:: https://img.shields.io/pypi/v/ucloud-sdk-python3.svg + :target: https://pypi.python.org/pypi/ucloud-sdk-python3/ + :alt: Latest Version +.. image:: https://travis-ci.org/ucloud/ucloud-sdk-python3.svg?branch=master + :target: https://travis-ci.org/ucloud/ucloud-sdk-python3 + :alt: Travis CI Status +.. image:: https://codecov.io/github/ucloud/ucloud-sdk-python3/coverage.svg?branch=master + :target: https://codecov.io/github/ucloud/ucloud-sdk-python3?branch=master + :alt: Codecov Status +.. image:: https://img.shields.io/badge/docs-passing-brightgreen.svg + :target: https://ucloud.github.io/ucloud-sdk-python3/ + :alt: Doc Status + +Guide +----- + +.. toctree:: + :maxdepth: 2 + + quick_start + usage + +.. include:: quick_start.rst + +API Reference +------------- + +.. toctree:: + :maxdepth: 2 + + services + helpers + core + +Indices and tables +------------------ + +* :ref:`genindex` +* :ref:`search` + +Feedback & Contribution +----------------------- + +- `Issue `_ +- `Pull Request `_ diff --git a/docs/build/html/_sources/quick_start.rst.txt b/docs/build/html/_sources/quick_start.rst.txt new file mode 100644 index 00000000..6a45d29b --- /dev/null +++ b/docs/build/html/_sources/quick_start.rst.txt @@ -0,0 +1,61 @@ +QuickStart +========== + +Installation +------------ + +Install with pip: + +.. code:: shell + + pip install ucloud-sdk-python3 + +Install with source code: + +.. code:: shell + + clone https://github.com/ucloud/ucloud-sdk-python3.git + cd ucloud-sdk-python3 + python setup.py install + +QuickStart +---------- + +Currently, user public key & private key is the only method of authenticating with the API. You could get your keys here: + +- `Key Generation `_ + +You can then use your keys to create a new client of uhost service: + +.. code-block:: python + + from ucloud.core import exc + from ucloud.client import Client + + client = Client({ + "region": "cn-bj2", + "project_id": "...", + "public_key": "...", + "private_key": "...", + }) + + try: + resp = client.uhost().create_uhost_instance({ + 'Name': 'sdk-python-quickstart', + 'Zone': image["zone"], + 'ImageId': image["image_id"], + 'LoginMode': "Password", + 'Password': utils.b64encode(utils.gen_password(20)), + 'CPU': 1, + 'Memory': 1, + 'Disks': [{ + 'Size': 10, + 'Type': 'CLOUD_SSD' + }], + }) + except exc.UCloudException as e: + print(e) + else: + print(resp) + +.. note:: UHost created above cannot be accessed via Internet unless an EIP is created and bind to the UHost. diff --git a/docs/build/html/_sources/services.rst.txt b/docs/build/html/_sources/services.rst.txt new file mode 100644 index 00000000..246beadb --- /dev/null +++ b/docs/build/html/_sources/services.rst.txt @@ -0,0 +1,81 @@ +UCloud SDK Services +=================== + +PathX +----- + +.. autoclass:: ucloud.services.pathx.client.PathXClient + :members: + +StepFlow +-------- + +.. autoclass:: ucloud.services.stepflow.client.StepFlowClient + :members: + +UAccount +-------- + +.. autoclass:: ucloud.services.uaccount.client.UAccountClient + :members: + +UDB +--- + +.. autoclass:: ucloud.services.udb.client.UDBClient + :members: + +UDPN +---- + +.. autoclass:: ucloud.services.udpn.client.UDPNClient + :members: + +UDisk +----- + +.. autoclass:: ucloud.services.udisk.client.UDiskClient + :members: + +UHost +----- + +.. autoclass:: ucloud.services.uhost.client.UHostClient + :members: + +ULB +--- + +.. autoclass:: ucloud.services.ulb.client.ULBClient + :members: + +UMem +---- + +.. autoclass:: ucloud.services.umem.client.UMemClient + :members: + +UNet +---- + +.. autoclass:: ucloud.services.unet.client.UNetClient + :members: + +UPHost +------ + +.. autoclass:: ucloud.services.uphost.client.UPHostClient + :members: + +USMS +---- + +.. autoclass:: ucloud.services.usms.client.USMSClient + :members: + +VPC +--- + +.. autoclass:: ucloud.services.vpc.client.VPCClient + :members: + diff --git a/docs/build/html/_sources/usage.rst.txt b/docs/build/html/_sources/usage.rst.txt new file mode 100644 index 00000000..bc0f2edf --- /dev/null +++ b/docs/build/html/_sources/usage.rst.txt @@ -0,0 +1,96 @@ +Usage +===== + +Type System +----------- + +UCloud Python SDK has type system for runtime checking. + +For example: + +.. code-block:: python + + client.uhost().create_uhost_instance({ + 'CPU': "i am not a integer", + }) + +it will raise :class:`ValidationException` with invalid integer and some required field is miss matched. + +Wait State Changed +------------------ + +SDK also provide state waiter helper to improver usage experience. + +**When using it?** + +Waiter can wait for remote state is achieved to target state. such as, + +- create and wait for resource state is completed. +- invoke/start/stop a resource and wait for it is finished. +- custom retry policies and wait for retrying is finished. + +For example: + +.. code-block:: python + + def mget_uhost_states(uhost_ids): + resp = client.uhost().describe_uhost_instance({'UHostIds': uhost_ids}) + return [inst.get('State') for inst in resp.get('UHostSet')] + + # Stop all instances + for uhost_id in uhost_ids: + client.uhost().stop_uhost_instance({'UHostId': uhost_id}) + + # Wait all instances is stopped + wait.wait_for_state( + target=['stopped'], pending=['pending'], + timeout=300, # wait 5min + refresh=lambda: ( + 'stopped' if all([state == 'Stopped' for state in mget_uhost_states(uhost_ids)]) else 'pending' + ), + ) + + # Remove all instances + for uhost_id in uhost_ids: + client.uhost().terminate_uhost_instance({'UHostId': uhost_id}) + +By the default, waiter will use exponential back-off delay between twice request. +it will raise :class:`WaitTimeoutException` when timeout is reached. + +Client/Transport Middleware +--------------------------- + +UCloud SDK provide middleware feature to client or transport level request. + +It allowed to add custom logic into the lifecycle of request/response. + +For example: + +.. code-block:: python + + @client.middleware.request + def log_params(req): + print('[REQ]', req) + + @client.middleware.response + def log_response(resp): + print('[RESP]', resp) + + +or transport: + +.. code-block:: python + + from ucloud.core.transport import RequestsTransport + + transport = RequestsTransport() + + @transport.middleware.request + def log_request(req): + print('[REQ]', req) + + @transport.middleware.response + def log_response(resp): + print('[RESP]', resp) + + Client({'Region': 'cn-bj2'}, transport=transport) diff --git a/docs/build/html/_static/alabaster.css b/docs/build/html/_static/alabaster.css new file mode 100644 index 00000000..0eddaeb0 --- /dev/null +++ b/docs/build/html/_static/alabaster.css @@ -0,0 +1,701 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css new file mode 100644 index 00000000..ea6972d5 --- /dev/null +++ b/docs/build/html/_static/basic.css @@ -0,0 +1,764 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > p:first-child, +td > p:first-child { + margin-top: 0px; +} + +th > p:last-child, +td > p:last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +li > p:first-child { + margin-top: 0px; +} + +li > p:last-child { + margin-bottom: 0px; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > p:first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/build/html/_static/custom.css b/docs/build/html/_static/custom.css new file mode 100644 index 00000000..2a924f1d --- /dev/null +++ b/docs/build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js new file mode 100644 index 00000000..b33f87fc --- /dev/null +++ b/docs/build/html/_static/doctools.js @@ -0,0 +1,314 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js new file mode 100644 index 00000000..6d865102 --- /dev/null +++ b/docs/build/html/_static/documentation_options.js @@ -0,0 +1,10 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'None', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false +}; \ No newline at end of file diff --git a/docs/build/html/_static/file.png b/docs/build/html/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/docs/build/html/_static/file.png differ diff --git a/docs/build/html/_static/jquery-3.4.1.js b/docs/build/html/_static/jquery-3.4.1.js new file mode 100644 index 00000000..773ad95c --- /dev/null +++ b/docs/build/html/_static/jquery-3.4.1.js @@ -0,0 +1,10598 @@ +/*! + * jQuery JavaScript Library v3.4.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-05-01T21:04Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.4.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code, options ) { + DOMEval( code, { nonce: options && options.nonce } ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.4 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2019-04-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) && + + // Support: IE 8 only + // Exclude object elements + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && rdescend.test( selector ) ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = (elem.ownerDocument || elem).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( typeof elem.contentDocument !== "undefined" ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + } ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + // Support: IE 9-11 only + // Also use offsetWidth/offsetHeight for when box sizing is unreliable + // We use getClientRects() to check for hidden/disconnected. + // In those cases, the computed value can be trusted to be border-box + if ( ( !support.boxSizingReliable() && isBorderBox || + val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url, options ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Core

+
+

Config

+
+
+class ucloud.core.auth.Credential(public_key: str, private_key: str, **kwargs)[source]
+

credential is the object to store credential information

+

the keys can be found on APIKey documentation

+

it can calculate signature for OpenAPI:

+
>>> cred = Credential('my_public_key', 'my_private_key')
+>>> cred.verify_ac({"foo": "bar"})
+'d4411ab30953fb0bbcb1e7313081f05e4e91a394'
+
+
+
+
Parameters
+
    +
  • public_key

  • +
  • private_key

  • +
+
+
+
+ +
+
+class ucloud.core.client.Config(region: str, project_id: str = None, base_url: str = 'https://api.ucloud.cn', user_agent: str = None, timeout: int = 30, max_retries: int = 3, log_level: int = 20, **kwargs)[source]
+

Config is the config of ucloud sdk, use for setting up

+
+
Parameters
+
    +
  • region (str) – Region is the region of backend service, +See also Region list Documentation

  • +
  • project_id (str) – ProjectId is the unique identify of project, used for organize resources, +Most of resources should belong to a project. Sub-Account must have an project id. +See also Project list Documentation

  • +
  • base_url (str) – BaseUrl is the url of backend api

  • +
  • user_agent – UserAgent is an attribute for sdk client, used for distinguish who is using sdk. +See also User Agent +It will be appended to the end of sdk user-agent. +eg. “MyAPP/0.10.1” -> “Python/3.7.0 Python-SDK/0.1.0 MyAPP/0.10.1”

  • +
  • timeout (int) – Timeout is timeout for every request.

  • +
  • max_retries (int) – MaxRetries is the number of max retry times. +Set MaxRetries more than 0 to enable auto-retry for network and service availability problem +if auto-retry is enabled, it will enable default retry policy using exponential backoff.

  • +
  • log_level (int) – LogLevel is equal to builtin logging level, +if logLevel not be set, use INFO level as default.

  • +
+
+
+
+ +
+
+

Client

+
+
+class ucloud.core.client.Client(config: dict, transport: Optional[ucloud.core.transport.http.Transport] = None, middleware: Optional[ucloud.core.utils.middleware.Middleware] = None, logger: Optional[logging.Logger] = None)[source]
+
+
+invoke(action: str, args: dict = None, **options) → dict[source]
+

invoke will invoke the action with arguments data and options

+
+
Parameters
+
    +
  • action (str) – the api action, like CreateUHostInstance

  • +
  • args (dict) – arguments of api(action), see doc: UCloud API Documentation

  • +
+
+
Returns
+

+
+
+
+ +
+ +
+
+

Transport

+
+
+class ucloud.core.transport.RequestsTransport(max_retries: int = 3, backoff_factor: float = 0.3, status_forcelist: Tuple[int] = (500, 502, 504))[source]
+

transport is the implementation of http client, use for send a request and return a http response

+
+
Parameters
+
    +
  • max_retries (int) – max retries is the max number of transport request when occur http error

  • +
  • backoff_factor (float) – backoff factor will calculate the backoff delay during retrying, +the backoff delay = {backoff factor} * (2 ^ ({number of total retries} - 1))

  • +
  • status_forcelist (tuple) – the status code list that could be retried

  • +
+
+
+
+
+property middleware
+

the middleware object, see :mod:

+
+
Returns
+

the transport middleware

+
+
+
+ +
+
+send(req: ucloud.core.transport.http.Request, **options: dict) → ucloud.core.transport.http.Response[source]
+

send request and return the response

+
+
Parameters
+

req – the full http request descriptor

+
+
Returns
+

the response of http request

+
+
+
+ +
+ +
+
+

Middleware

+
+
+class ucloud.core.utils.middleware.Middleware[source]
+

middleware is the object to store request/response handlers

+
>>> middleware = Middleware()
+
+
+

Add a request handler to prepare the request

+
>>> @middleware.request
+... def prepare(req):
+...     req['Region'] = 'cn-bj2'
+...     return req
+
+
+

Add a response handler to log the response detail

+
>>> @middleware.response
+... def logged(resp):
+...     print(resp)
+...     return resp
+
+
+
>>> len(middleware.request_handlers), len(middleware.response_handlers)
+(1, 1)
+
+
+
+
+request(handler, index=-1)[source]
+

request is the request handler register to add request handler.

+
+
Parameters
+
    +
  • handler – request handler function, receive request object +and return a new request

  • +
  • index (int) – the position of request in the handler list, +default is append it to end

  • +
+
+
Returns
+

+
+
+
+ +
+
+response(handler, index=-1)[source]
+

response is the response handler register to add response handler.

+
+
Parameters
+
    +
  • handler – response handler function, receive response object +and return a new response

  • +
  • index (int) – the position of response in the handler list, +default is append it to end

  • +
+
+
Returns
+

+
+
+
+ +
+ +
+
+

Testing

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html new file mode 100644 index 00000000..d37ba17a --- /dev/null +++ b/docs/build/html/genindex.html @@ -0,0 +1,761 @@ + + + + + + + + Index — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | I + | M + | P + | Q + | R + | S + | T + | U + | V + | W + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + +
+ +

F

+ + +
+ +

G

+ + + +
+ +

I

+ + + +
+ +

M

+ + + +
+ +

P

+ + + +
+ +

Q

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + +
+ +

W

+ + +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/helpers.html b/docs/build/html/helpers.html new file mode 100644 index 00000000..70a71b98 --- /dev/null +++ b/docs/build/html/helpers.html @@ -0,0 +1,208 @@ + + + + + + + Helpers — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Helpers

+
+

Wait Resource State

+
+
+ucloud.helpers.wait.wait_for_state(pending: List[str], target: List[str], refresh: Callable, timeout: float, startup_delay: float = 0, min_backoff_interval: float = 0.1, max_backoff_interval: float = 10)[source]
+

wait_for_state is a utilities function to wait the state return by refresh function achieve the specific state, +the generally usage is wait the cloud resource, such as uhost, udb … is +ready after created.

+
>>> wait_for_state(
+...     pending=["pending"],
+...     target=["running"],
+...     refresh=lambda: "running",
+...     timeout=0.5,
+... )
+
+
+
+
Parameters
+
    +
  • pending – pending is the list of pending state, the state is returned by refresh function

  • +
  • target – target is the list of target state, it is usually the terminate state, eg. running and fail

  • +
  • refresh – the customized refresh function, expect no arguments and return a state

  • +
  • timeout – timeout is the total time to wait state is achieved

  • +
  • startup_delay – the time to wait before first refresh function is called

  • +
  • min_backoff_interval – the backoff time for first refresh interval

  • +
  • max_backoff_interval – the max backoff time for refresh interval

  • +
+
+
+
+ +
+
+

Utilities

+
+
+ucloud.helpers.utils.b64decode(s: str) → str[source]
+

base64 decode

+
+
Parameters
+

s (str) – base64 string

+
+
Returns
+

output string

+
+
+
+ +
+
+ucloud.helpers.utils.b64encode(s: str) → str[source]
+

base64 encode

+
+
Parameters
+

s (str) – input string

+
+
Returns
+

base64 string

+
+
+
+ +
+
+ucloud.helpers.utils.gen_password(n: int, lower_letters: str = 'abcdefghijklmnopqrstuvwxyz', upper_letters: str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', number_letters: str = '0123456789', special_letters: str = '_', min_lower: int = 1, min_upper: int = 1, min_number: int = 1, min_specials: int = 1)[source]
+

generate password for any resource

+
>>> len(gen_password(20))
+20
+
+
+
+
Parameters
+
    +
  • n (int) – password total length

  • +
  • lower_letters (str) – all lowercase letters

  • +
  • upper_letters (str) – all uppercase letters

  • +
  • number_letters (str) – all number letters

  • +
  • special_letters (str) – all special letters

  • +
  • min_lower (int) – minimal number of lowercase letters

  • +
  • min_upper (int) – minimal number of uppercase letters

  • +
  • min_number (int) – minimal number of number letters

  • +
  • min_specials (int) – minimal number of special letters

  • +
+
+
Returns
+

+
+
+
+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/index.html b/docs/build/html/index.html new file mode 100644 index 00000000..8fc2f6aa --- /dev/null +++ b/docs/build/html/index.html @@ -0,0 +1,248 @@ + + + + + + + UCloud SDK Python 3 — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

UCloud SDK Python 3

+

UCloud SDK is a Python client library for accessing the UCloud API.

+

This client can run on Linux, macOS and Windows.

+ +Latest Version +Travis CI Status +Codecov Status +Doc Status + +
+
+

QuickStart

+
+

Installation

+

Install with pip:

+
pip install ucloud-sdk-python3
+
+
+

Install with source code:

+
clone https://github.com/ucloud/ucloud-sdk-python3.git
+cd ucloud-sdk-python3
+python setup.py install
+
+
+
+
+

QuickStart

+

Currently, user public key & private key is the only method of authenticating with the API. You could get your keys here:

+ +

You can then use your keys to create a new client of uhost service:

+
from ucloud.core import exc
+from ucloud.client import Client
+
+client = Client({
+    "region": "cn-bj2",
+    "project_id": "...",
+    "public_key": "...",
+    "private_key": "...",
+})
+
+try:
+    resp = client.uhost().create_uhost_instance({
+        'Name': 'sdk-python-quickstart',
+        'Zone': image["zone"],
+        'ImageId': image["image_id"],
+        'LoginMode': "Password",
+        'Password': utils.b64encode(utils.gen_password(20)),
+        'CPU': 1,
+        'Memory': 1,
+        'Disks': [{
+            'Size': 10,
+            'Type': 'CLOUD_SSD'
+        }],
+    })
+except exc.UCloudException as e:
+    print(e)
+else:
+    print(resp)
+
+
+
+

Note

+

UHost created above cannot be accessed via Internet unless an EIP is created and bind to the UHost.

+
+
+ +
+

Indices and tables

+ +
+
+

Feedback & Contribution

+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv new file mode 100644 index 00000000..63946b0c Binary files /dev/null and b/docs/build/html/objects.inv differ diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html new file mode 100644 index 00000000..40b0dbdd --- /dev/null +++ b/docs/build/html/py-modindex.html @@ -0,0 +1,129 @@ + + + + + + + Python Module Index — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Python Module Index

+ +
+ u +
+ + + + + + + + + + +
 
+ u
+ ucloud +
    + ucloud.helpers.utils +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/quick_start.html b/docs/build/html/quick_start.html new file mode 100644 index 00000000..eea6c51c --- /dev/null +++ b/docs/build/html/quick_start.html @@ -0,0 +1,172 @@ + + + + + + + QuickStart — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

QuickStart

+
+

Installation

+

Install with pip:

+
pip install ucloud-sdk-python3
+
+
+

Install with source code:

+
clone https://github.com/ucloud/ucloud-sdk-python3.git
+cd ucloud-sdk-python3
+python setup.py install
+
+
+
+
+

QuickStart

+

Currently, user public key & private key is the only method of authenticating with the API. You could get your keys here:

+ +

You can then use your keys to create a new client of uhost service:

+
from ucloud.core import exc
+from ucloud.client import Client
+
+client = Client({
+    "region": "cn-bj2",
+    "project_id": "...",
+    "public_key": "...",
+    "private_key": "...",
+})
+
+try:
+    resp = client.uhost().create_uhost_instance({
+        'Name': 'sdk-python-quickstart',
+        'Zone': image["zone"],
+        'ImageId': image["image_id"],
+        'LoginMode': "Password",
+        'Password': utils.b64encode(utils.gen_password(20)),
+        'CPU': 1,
+        'Memory': 1,
+        'Disks': [{
+            'Size': 10,
+            'Type': 'CLOUD_SSD'
+        }],
+    })
+except exc.UCloudException as e:
+    print(e)
+else:
+    print(resp)
+
+
+
+

Note

+

UHost created above cannot be accessed via Internet unless an EIP is created and bind to the UHost.

+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/search.html b/docs/build/html/search.html new file mode 100644 index 00000000..8c3f92d0 --- /dev/null +++ b/docs/build/html/search.html @@ -0,0 +1,120 @@ + + + + + + + Search — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+
+ +

+ Please activate JavaScript to enable the search + functionality. +

+
+

+ From here you can search these documents. Enter your search + words into the box below and click "search". Note that the search + function will automatically search for all of the words. Pages + containing fewer words won't appear in the result list. +

+
+ + + +
+ +
+ +
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js new file mode 100644 index 00000000..d314a669 --- /dev/null +++ b/docs/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["core","helpers","index","quick_start","services","usage"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["core.rst","helpers.rst","index.rst","quick_start.rst","services.rst","usage.rst"],objects:{"ucloud.core.auth":{Credential:[0,0,1,""]},"ucloud.core.client":{Client:[0,0,1,""],Config:[0,0,1,""]},"ucloud.core.client.Client":{invoke:[0,1,1,""]},"ucloud.core.transport":{RequestsTransport:[0,0,1,""]},"ucloud.core.transport.RequestsTransport":{middleware:[0,1,1,""],send:[0,1,1,""]},"ucloud.core.utils.middleware":{Middleware:[0,0,1,""]},"ucloud.core.utils.middleware.Middleware":{request:[0,1,1,""],response:[0,1,1,""]},"ucloud.helpers":{utils:[1,2,0,"-"]},"ucloud.helpers.utils":{b64decode:[1,3,1,""],b64encode:[1,3,1,""],gen_password:[1,3,1,""]},"ucloud.helpers.wait":{wait_for_state:[1,3,1,""]},"ucloud.services.pathx.client":{PathXClient:[4,0,1,""]},"ucloud.services.pathx.client.PathXClient":{create_global_ssh_instance:[4,1,1,""],delete_global_ssh_instance:[4,1,1,""],describe_global_ssh_area:[4,1,1,""],describe_global_ssh_instance:[4,1,1,""],modify_global_ssh_port:[4,1,1,""],modify_global_ssh_remark:[4,1,1,""]},"ucloud.services.stepflow.client":{StepFlowClient:[4,0,1,""]},"ucloud.services.stepflow.client.StepFlowClient":{create_sf_workflow_from_template:[4,1,1,""],get_sf_workflow_template:[4,1,1,""]},"ucloud.services.uaccount.client":{UAccountClient:[4,0,1,""]},"ucloud.services.uaccount.client.UAccountClient":{create_project:[4,1,1,""],get_project_list:[4,1,1,""],get_region:[4,1,1,""],get_user_info:[4,1,1,""],modify_project:[4,1,1,""],terminate_project:[4,1,1,""]},"ucloud.services.udb.client":{UDBClient:[4,0,1,""]},"ucloud.services.udb.client.UDBClient":{backup_udb_instance:[4,1,1,""],backup_udb_instance_binlog:[4,1,1,""],backup_udb_instance_error_log:[4,1,1,""],backup_udb_instance_slow_log:[4,1,1,""],check_recover_udb_instance:[4,1,1,""],check_udb_instance_to_ha_allowance:[4,1,1,""],clear_udb_log:[4,1,1,""],create_udb_instance:[4,1,1,""],create_udb_instance_by_recovery:[4,1,1,""],create_udb_param_group:[4,1,1,""],create_udb_replication_instance:[4,1,1,""],create_udb_route_instance:[4,1,1,""],create_udb_slave:[4,1,1,""],delete_udb_backup:[4,1,1,""],delete_udb_instance:[4,1,1,""],delete_udb_log_package:[4,1,1,""],delete_udb_param_group:[4,1,1,""],describe_udb_backup:[4,1,1,""],describe_udb_backup_blacklist:[4,1,1,""],describe_udb_binlog_backup_url:[4,1,1,""],describe_udb_instance:[4,1,1,""],describe_udb_instance_backup_state:[4,1,1,""],describe_udb_instance_backup_url:[4,1,1,""],describe_udb_instance_binlog:[4,1,1,""],describe_udb_instance_binlog_backup_state:[4,1,1,""],describe_udb_instance_price:[4,1,1,""],describe_udb_instance_state:[4,1,1,""],describe_udb_instance_upgrade_price:[4,1,1,""],describe_udb_log_backup_url:[4,1,1,""],describe_udb_log_package:[4,1,1,""],describe_udb_param_group:[4,1,1,""],describe_udb_type:[4,1,1,""],edit_udb_backup_blacklist:[4,1,1,""],fetch_udb_instance_earliest_recover_time:[4,1,1,""],modify_udb_instance_name:[4,1,1,""],modify_udb_instance_password:[4,1,1,""],promote_udb_instance_to_ha:[4,1,1,""],promote_udb_slave:[4,1,1,""],resize_udb_instance:[4,1,1,""],restart_udb_instance:[4,1,1,""],start_udb_instance:[4,1,1,""],stop_udb_instance:[4,1,1,""],switch_udb_instance_to_ha:[4,1,1,""],update_udb_instance_backup_strategy:[4,1,1,""],update_udb_instance_slave_backup_switch:[4,1,1,""],update_udb_param_group:[4,1,1,""],upload_udb_param_group:[4,1,1,""]},"ucloud.services.udisk.client":{UDiskClient:[4,0,1,""]},"ucloud.services.udisk.client.UDiskClient":{attach_udisk:[4,1,1,""],clone_udisk:[4,1,1,""],clone_udisk_snapshot:[4,1,1,""],create_udisk:[4,1,1,""],create_udisk_snapshot:[4,1,1,""],delete_udisk:[4,1,1,""],delete_udisk_snapshot:[4,1,1,""],describe_udisk:[4,1,1,""],describe_udisk_price:[4,1,1,""],describe_udisk_snapshot:[4,1,1,""],describe_udisk_upgrade_price:[4,1,1,""],detach_udisk:[4,1,1,""],rename_udisk:[4,1,1,""],resize_udisk:[4,1,1,""],restore_udisk:[4,1,1,""],set_udisk__udataark_mode:[4,1,1,""]},"ucloud.services.udpn.client":{UDPNClient:[4,0,1,""]},"ucloud.services.udpn.client.UDPNClient":{allocate_udpn:[4,1,1,""],describe_udpn:[4,1,1,""],get_udpn_line_list:[4,1,1,""],get_udpn_price:[4,1,1,""],get_udpn_upgrade_price:[4,1,1,""],modify_udpn_bandwidth:[4,1,1,""],release_udpn:[4,1,1,""]},"ucloud.services.uhost.client":{UHostClient:[4,0,1,""]},"ucloud.services.uhost.client.UHostClient":{copy_custom_image:[4,1,1,""],create_custom_image:[4,1,1,""],create_uhost_instance:[4,1,1,""],describe_image:[4,1,1,""],describe_uhost_instance:[4,1,1,""],describe_uhost_tags:[4,1,1,""],get_uhost_instance_price:[4,1,1,""],get_uhost_instance_vnc_info:[4,1,1,""],get_uhost_upgrade_price:[4,1,1,""],import_custom_image:[4,1,1,""],modify_uhost_instance_name:[4,1,1,""],modify_uhost_instance_remark:[4,1,1,""],modify_uhost_instance_tag:[4,1,1,""],poweroff_uhost_instance:[4,1,1,""],reboot_uhost_instance:[4,1,1,""],reinstall_uhost_instance:[4,1,1,""],reset_uhost_instance_password:[4,1,1,""],resize_attached_disk:[4,1,1,""],resize_uhost_instance:[4,1,1,""],start_uhost_instance:[4,1,1,""],stop_uhost_instance:[4,1,1,""],terminate_custom_image:[4,1,1,""],terminate_uhost_instance:[4,1,1,""],upgrade_to_ark_uhost_instance:[4,1,1,""]},"ucloud.services.ulb.client":{ULBClient:[4,0,1,""]},"ucloud.services.ulb.client.ULBClient":{allocate_backend:[4,1,1,""],allocate_backend_batch:[4,1,1,""],bind_ssl:[4,1,1,""],create_policy:[4,1,1,""],create_ssl:[4,1,1,""],create_ulb:[4,1,1,""],create_vserver:[4,1,1,""],delete_policy:[4,1,1,""],delete_ssl:[4,1,1,""],delete_ulb:[4,1,1,""],delete_vserver:[4,1,1,""],describe_ssl:[4,1,1,""],describe_ulb:[4,1,1,""],describe_vserver:[4,1,1,""],release_backend:[4,1,1,""],unbind_ssl:[4,1,1,""],update_backend_attribute:[4,1,1,""],update_policy:[4,1,1,""],update_ulb_attribute:[4,1,1,""],update_vserver_attribute:[4,1,1,""]},"ucloud.services.umem.client":{UMemClient:[4,0,1,""]},"ucloud.services.umem.client.UMemClient":{create_umem_cache_group:[4,1,1,""],create_umem_space:[4,1,1,""],create_uredis_group:[4,1,1,""],delete_umem_cache_group:[4,1,1,""],delete_umem_space:[4,1,1,""],delete_uredis_group:[4,1,1,""],describe_umem_cache_group:[4,1,1,""],describe_umem_cache_price:[4,1,1,""],describe_umem_cache_upgrade_price:[4,1,1,""],describe_umem_price:[4,1,1,""],describe_umem_space:[4,1,1,""],describe_umem_upgrade_price:[4,1,1,""],describe_uredis_backup:[4,1,1,""],describe_uredis_backup_url:[4,1,1,""],describe_uredis_group:[4,1,1,""],describe_uredis_price:[4,1,1,""],describe_uredis_upgrade_price:[4,1,1,""],get_umem_space_state:[4,1,1,""],modify_umem_space_name:[4,1,1,""],modify_uredis_group_name:[4,1,1,""],resize_udredis_space:[4,1,1,""],resize_umem_space:[4,1,1,""],resize_uredis_group:[4,1,1,""],restart_umem_cache_group:[4,1,1,""]},"ucloud.services.unet.client":{UNetClient:[4,0,1,""]},"ucloud.services.unet.client.UNetClient":{allocate_eip:[4,1,1,""],allocate_share_bandwidth:[4,1,1,""],allocate_vip:[4,1,1,""],associate_eip_with_share_bandwidth:[4,1,1,""],bind_eip:[4,1,1,""],create_bandwidth_package:[4,1,1,""],create_firewall:[4,1,1,""],delete_bandwidth_package:[4,1,1,""],delete_firewall:[4,1,1,""],describe_bandwidth_package:[4,1,1,""],describe_bandwidth_usage:[4,1,1,""],describe_eip:[4,1,1,""],describe_firewall:[4,1,1,""],describe_firewall_resource:[4,1,1,""],describe_share_bandwidth:[4,1,1,""],describe_vip:[4,1,1,""],disassociate_eip_with_share_bandwidth:[4,1,1,""],get_eip_pay_mode:[4,1,1,""],get_eip_price:[4,1,1,""],get_eip_upgrade_price:[4,1,1,""],grant_firewall:[4,1,1,""],modify_eip_bandwidth:[4,1,1,""],modify_eip_weight:[4,1,1,""],release_eip:[4,1,1,""],release_share_bandwidth:[4,1,1,""],release_vip:[4,1,1,""],resize_share_bandwidth:[4,1,1,""],set_eip_pay_mode:[4,1,1,""],un_bind_eip:[4,1,1,""],update_eip_attribute:[4,1,1,""],update_firewall:[4,1,1,""],update_firewall_attribute:[4,1,1,""]},"ucloud.services.uphost.client":{UPHostClient:[4,0,1,""]},"ucloud.services.uphost.client.UPHostClient":{create_phost:[4,1,1,""],describe_phost:[4,1,1,""],describe_phost_image:[4,1,1,""],describe_phost_tags:[4,1,1,""],get_phost_price:[4,1,1,""],modify_phost_info:[4,1,1,""],poweroff_phost:[4,1,1,""],reboot_phost:[4,1,1,""],reinstall_phost:[4,1,1,""],start_phost:[4,1,1,""],terminate_phost:[4,1,1,""]},"ucloud.services.usms.client":{USMSClient:[4,0,1,""]},"ucloud.services.usms.client.USMSClient":{create_usms_signature:[4,1,1,""],create_usms_template:[4,1,1,""],delete_usms_signature:[4,1,1,""],delete_usms_template:[4,1,1,""],get_usms_send_receipt:[4,1,1,""],query_usms_signature:[4,1,1,""],query_usms_template:[4,1,1,""],send_usms_message:[4,1,1,""],update_usms_signature:[4,1,1,""],update_usms_template:[4,1,1,""]},"ucloud.services.vpc.client":{VPCClient:[4,0,1,""]},"ucloud.services.vpc.client.VPCClient":{add_vpc_network:[4,1,1,""],associate_route_table:[4,1,1,""],clone_route_table:[4,1,1,""],create_route_table:[4,1,1,""],create_subnet:[4,1,1,""],create_vpc:[4,1,1,""],create_vpc_intercom:[4,1,1,""],delete_route_table:[4,1,1,""],delete_subnet:[4,1,1,""],delete_vpc:[4,1,1,""],delete_vpc_intercom:[4,1,1,""],describe_route_table:[4,1,1,""],describe_subnet:[4,1,1,""],describe_subnet_resource:[4,1,1,""],describe_vpc:[4,1,1,""],describe_vpc_intercom:[4,1,1,""],modify_route_rule:[4,1,1,""],update_route_table_attribute:[4,1,1,""],update_subnet_attribute:[4,1,1,""],update_vpc_network:[4,1,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","module","Python module"],"3":["py","function","Python function"]},objtypes:{"0":"py:class","1":"py:method","2":"py:module","3":"py:function"},terms:{"03f58ca9":4,"0\u4e0b\u9700\u8981\u586b\u5199\u6b64\u5b57\u6bb5":4,"0\u4e0d\u652f\u6301":4,"0\u4e0d\u8fd4\u56de":4,"0\u4e3a\u81ea\u5b9a\u4e49":4,"0\u4ee3\u8868\u5e0c\u671b\u5347\u7ea7\u7684\u4e3b\u673a1":4,"0\u4ee3\u8868\u5e0c\u671b\u83b7\u53d6\u4fe1\u606f":4,"0\u5065\u5eb7\u68c0\u67e5\u5065\u5eb7\u72b6\u6001":4,"0\u60c5\u51b5\u4e0b":4,"0\u60c5\u51b5\u4e0b\u65e0\u9700\u586b\u5199":4,"0\u70b91":4,"0\u7248\u672c\u914d\u7f6eid":4,"0\u8868\u793a\u4e0d\u53d8":4,"0\u8868\u793a\u4ece\u5e93\u5907\u4efd\u529f\u80fd\u5173\u95ed":4,"0\u8868\u793a\u5173\u95ed\u5f53\u5929\u5907\u4efd":4,"0\u8868\u793a\u6309\u7167\u539f\u6765\u7684\u903b\u8f91":4,"0\u8868\u793a\u7cfb\u7edf\u8def\u7531":4,"0\u8868\u793a\u81ea\u52a8":4,"1000m":4,"10\u4e2a\u6708\u62161":4,"10\u5206\u949f\u540e\u518d\u8c03\u7528\u8be5\u63a5\u53e3\u62c9\u53d6\u56de\u6267\u4fe1\u606f":4,"10\u5e74":4,"10g":4,"1100000\u8868\u793a\u6253\u5f00\u661f\u671f\u516d\u548c\u661f\u671f\u4e94\u7684\u5907\u4efd\u529f\u80fd":4,"12000m":4,"12\u4e2a\u5b57\u7b26":4,"15000m":4,"1500m":4,"16000m":4,"1\u4e3a\u9ed8\u8ba4":4,"1\u4ee3\u8868\u4e3b\u673a2":4,"1\u652f\u6301":4,"1\u70b9\u4f9d\u6b21\u7c7b\u63a8":4,"1\u8868\u793a\u624b\u52a8":4,"1\u8868\u793a\u6253\u5f00\u5f53\u5929\u5907\u4efd":4,"1\u8868\u793a\u76f4\u63a5\u5220\u9664":4,"1\u8868\u793a\u81ea\u5b9a\u4e49\u8def\u7531":4,"1\u8fd4\u56de":4,"1xxxxxxxx":4,"2000m":4,"24000m":4,"261d":4,"2\u7248\u672c\u914d\u7f6eid":4,"2\u8868\u793a\u964d\u7ea7":4,"30000m":4,"3000g":4,"3000m":4,"32000m":4,"32\u8fd9\u51e0\u6863":4,"3e45ac48":4,"3eljvj":4,"4000m":4,"428c":4,"443\u7aef\u53e3":4,"48000m":4,"4b66":4,"4bdd":4,"500g":4,"5\u53ca\u4ee5\u4e0a\u7248\u672c":4,"5\u7b49\u955c\u50cf\u4f1a\u6807\u8bb0\u4e3a":4,"5min":5,"6000m":4,"600m":4,"63\u4f4d":4,"64000m":4,"65535\u4e14\u4e0d\u80fd\u4f7f\u752880":4,"67e59430d67c":4,"6c9298a3":4,"8000m":4,"96000m":4,"9a891891":4,"9d7f":4,"\u4e00\u5929\u5185\u5907\u4efd\u65f6\u95f4\u95f4\u9694":4,"\u4e00\u81f4\u6027\u54c8\u5e0c":4,"\u4e00\u822c\u586b\u5199\u65b9\u5f0f":4,"\u4e07\u5146":4,"\u4e09\u8bc1\u5408\u4e00":4,"\u4e0a\u6d77\u4e00":4,"\u4e0a\u6d77\u4e8c":4,"\u4e0b\u4e00\u4e2aactivity\u7684\u540d\u5b57":4,"\u4e0b\u4e00\u8df3":4,"\u4e0b\u4e00\u8df3\u4e3a\u4e91\u4e3b\u673aid\u6216\u8005vip\u7684id":4,"\u4e0b\u4e00\u8df3\u7c7b\u578b":4,"\u4e0b\u4e00\u8df3\u7c7b\u578b\u4e3ainstance\u6216\u8005vip":4,"\u4e0b\u6e38\u670d\u52a1\u63d0\u4f9b\u5546\u56de\u6267\u4fe1\u606f\u8fd4\u56de\u4f1a\u6709\u4e00\u5b9a\u5ef6\u65f6":4,"\u4e0d\u4f1a\u5f71\u54cd\u521b\u5efa\u4e3b\u673a\u6d41\u7a0b":4,"\u4e0d\u4f20\u65f6\u8ba4\u4e3a\u4e0d\u4fee\u6539":4,"\u4e0d\u4f20\u65f6\u8ba4\u4e3a\u4e0d\u4fee\u6539\u540d\u5b57":4,"\u4e0d\u4f20\u83b7\u53d6\u9879\u76ee\u4e0b\u5168\u90e8\u5b9e\u4f8b":4,"\u4e0d\u4f20\u9ed8\u8ba4ipv4":4,"\u4e0d\u4fdd\u7559\u6570\u636e\u76d8\u91cd\u88c5":4,"\u4e0d\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u4e0d\u52a0\u5bc6":4,"\u4e0d\u533a\u5206\u5927\u5c0f\u5199":4,"\u4e0d\u53ef\u4fee\u6539":4,"\u4e0d\u53ef\u7528":4,"\u4e0d\u5728\u9694\u79bb\u7ec4\u5219\u8fd4\u56de":4,"\u4e0d\u586b\u4e3a\u9ed8\u8ba4":4,"\u4e0d\u586b\u5199\u4e3a\u9ed8\u8ba4\u9879\u76ee":4,"\u4e0d\u586b\u5219\u6309\u73b0\u5728\u5355\u70b9\u8ba1\u8d39\u6267\u884c":4,"\u4e0d\u586b\u65f6\u9ed8\u8ba4\u5168\u90e8\u53ef\u7528\u533a":4,"\u4e0d\u586b\u9ed8\u8ba4\u4e3a\u7a7a":4,"\u4e0d\u586b\u9ed8\u8ba4\u4e3a\u7a7a\u5b57\u7b26\u4e32":4,"\u4e0d\u586b\u9ed8\u8ba4ye":4,"\u4e0d\u5b89\u88c5":4,"\u4e0d\u5efa\u8bae\u8c03\u7528":4,"\u4e0d\u5f00\u542f":4,"\u4e0d\u62a5\u7559":4,"\u4e0d\u6307\u5b9a\u5219\u83b7\u53d6vpcid\u4e0b\u7684\u6240\u6709vip":4,"\u4e0d\u652f\u6301":4,"\u4e0d\u662f":4,"\u4e0d\u81ea\u52a8\u7eed\u8d39":4,"\u4e0d\u8d85\u8fc732\u4e2a\u5b57\u7b26":4,"\u4e0d\u8de8\u5730\u57df\u4e0d\u7528\u586b":4,"\u4e0d\u9002\u7528\u4e8e\u7cfb\u7edf\u76d8":4,"\u4e0d\u9700\u8981\u586b\u5199":4,"\u4e0d\u9700\u8981\u914d\u7f6einstancemod":4,"\u4e0e\u8d44\u6e90\u81ea\u8eabid\u65e0\u5173":4,"\u4e0ekey\u914d\u5408\u4f7f\u7528":4,"\u4e0evalue\u914d\u5408\u4f7f\u7528":4,"\u4e13\u533a\u7684id":4,"\u4e13\u533aid":4,"\u4e13\u533aid\u4fe1\u606f":4,"\u4e13\u7ebf":4,"\u4e13\u7ebf\u4ef7\u683c":4,"\u4e13\u7ebf\u53ef\u7528\u533a1":4,"\u4e13\u7ebf\u53ef\u7528\u533a2":4,"\u4e13\u7ebf\u5e26\u5bbd\u8d44\u6e90":4,"\u4e14\u4e0d\u53ef\u76f8\u540c":4,"\u4e14\u544a\u8b66\u6a21\u677fid\u6b63\u786e":4,"\u4e14\u5c0f\u4e8e\u7b49\u4e8e32":4,"\u4e1a\u52a1":4,"\u4e1a\u52a1\u7ec4":4,"\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u4e1a\u52a1\u7ec4id":4,"\u4e1c\u4eac":4,"\u4e24\u5957\u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u5347\u964d\u673a":4,"\u4e24\u79cd\u683c\u5f0f\u90fd\u652f\u6301":4,"\u4e2a":4,"\u4e2d":4,"\u4e2d\u4e3a\u56fd\u9645\u957f\u9014\u533a\u53f7":4,"\u4e3a":4,"\u4e3a1\u65f6disktype\u4e0euhost\u78c1\u76d8\u7c7b\u578b\u5b9a\u4e49\u4e00\u81f4":4,"\u4e3a\u5fc5\u586b\u9879":4,"\u4e3a\u6307\u5b9a\u5e93":4,"\u4e3a\u661f\u671f\u5929\u7684\u5907\u4efd\u5f00\u5173":4,"\u4e3a\u7a7a\u5219\u4e0d\u505a\u4fee\u6539":4,"\u4e3a\u7a7a\u62c9\u53d6\u6240\u6709":4,"\u4e3a\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u4e0b":4,"\u4e3amongodb\u65f6":4,"\u4e3aulb\u7cfb\u7edf\u4e2d\u4f7f\u7528":4,"\u4e3b\u4ece\u7ed3\u5bf9\u6570\u91cf":4,"\u4e3b\u5e93\u7684id":4,"\u4e3b\u673a\u4ee3\u91d1\u5238id":4,"\u4e3b\u673a\u767b\u9646\u6a21\u5f0f":4,"\u4e3b\u673a\u7684\u751f\u547d\u5468\u671f\u7c7b\u578b":4,"\u4e3b\u673a\u7684\u7cfb\u7edf\u76d8id":4,"\u4e3b\u673a\u78c1\u76d8\u7c7b\u578b":4,"\u4e3b\u673a\u7cfb\u5217":4,"\u4e3b\u673aid\u7b49\u53c2\u6570\u8fdb\u884c\u8fc7\u6ee4":4,"\u4e3b\u8282\u70b9\u7684id":4,"\u4e3e\u4f8b":4,"\u4e3e\u4f8b\u5982\u4e0b":4,"\u4e4b\u524dlog":4,"\u4e4b\u95f4\u7684\u6574\u6570":4,"\u4e5f\u4e0d\u4f1a\u5728\u524d\u7aef\u62a5\u9519":4,"\u4e5f\u5373\u4f1a\u5458\u63a8\u5e7f\u7c7b":4,"\u4e5f\u5373\u4f1a\u5458\u63a8\u5e7f\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u4e5f\u5373\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u4e5f\u5373\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u4e5f\u5373sigpurpose\u4e3a1":4,"\u4e702\u4e2a\u6708":4,"\u4e91\u4e3b\u673a":4,"\u4e91\u4e3b\u673a\u673a\u578b":4,"\u4e91\u4e3b\u673a\u673a\u578b\u8bf4\u660e":4,"\u4e91\u4e3b\u673a\u673a\u578bv1":4,"\u4e91\u707e\u5907":4,"\u4e91\u707e\u5907\u6307\u660e191":4,"\u4e91\u76d8":4,"\u4e91\u76d8\u4ee3\u91d1\u5238id":4,"\u4e91\u76d8\u652f\u63010":4,"\u4e91\u786c\u76d8":4,"\u4e91\u786c\u76d8\u7c7b\u578b\u53c2\u7167\u5982\u4e0b":4,"\u4e9a\u592a":4,"\u4ea7\u54c1\u7c7b\u578b":4,"\u4ec5\u5317\u4eaca\u7684\u4e91\u4e3b\u673a\u4f1a\u8fd4\u56de\u6b64\u5b57\u6bb5":4,"\u4ec5\u5728sqlserver\u7684\u60c5\u51b5\u4e0b\u586b\u8be5\u53c2\u6570":4,"\u4ec5\u5f53\u78c1\u76d8\u662fudisk\u65f6\u8fd4\u56de":4,"\u4ec5\u5f53\u8be5\u53ef\u7528\u533a\u652f\u6301\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528\u65f6\u586b\u5165":4,"\u4ec5\u5f53paymode\u4e3asharebandwidth\u65f6\u6709\u6548":4,"\u4ec5\u652f\u6301\u90e8\u5206\u53ef\u7528\u533a":4,"\u4ec5\u884c\u4e1a\u955c\u50cf\u5c06\u8fd4\u56de\u8fd9\u4e2a\u503c":4,"\u4ec5\u90e8\u5206\u53ef\u7528\u533a\u652f\u6301\u4e91\u786c\u76d8\u65b9\u5f0f\u7684\u4e3b\u673a\u5b58\u50a8\u65b9\u5f0f":4,"\u4ec5\u9650\u81ea\u5b9a\u4e49\u8def\u7531\u8868":4,"\u4ec5gpu\u673a\u578b\u652f\u6301\u6b64\u5b57\u6bb5":4,"\u4ecb\u7ecd\u94fe\u63a5":4,"\u4ecd\u5728\u521d\u59cb\u5316\u7684\u7cfb\u7edf\u76d8\u65e0\u6cd5\u5236\u4f5c\u955c\u50cf":4,"\u4ece\u5907\u4efd\u521b\u5efa\u4e3a\u5fc5\u4f20\u9879":4,"\u4ece\u5907\u4efd\u6062\u590d\u6570\u636e\u81f3udisk":4,"\u4ece\u5df2\u6709\u914d\u7f6e\u6587\u4ef6\u521b\u5efa\u65b0\u914d\u7f6e\u6587\u4ef6":4,"\u4ece\u5e93":4,"\u4ece\u5e93\u5b9e\u4f8b":4,"\u4ece\u5e93\u63d0\u5347\u4e3a\u72ec\u7acb\u5e93":4,"\u4ece\u5e93\u7684\u5907\u4efd\u5f00\u5173":4,"\u4ece\u5e93\u7684id":4,"\u4ece\u5feb\u7167\u521b\u5efaudisk\u514b\u9686":4,"\u4ece\u6307\u5b9a\u7684\u5feb\u7167\u6062\u590d":4,"\u4ece\u6307\u5b9auhost\u5b9e\u4f8b":4,"\u4eceudisk\u521b\u5efaudisk\u514b\u9686":4,"\u4ecevserver\u89e3\u7ed1ssl\u8bc1\u4e66":4,"\u4ecevserver\u91ca\u653e\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u4ed6\u7528":4,"\u4ed8\u8d39\u65b9\u5f0f":4,"\u4ee3\u8868\u4e86\u8d2d\u4e70\u81f3\u6708\u672b":4,"\u4ee3\u8868\u4f18\u5148\u9009\u62e9\u57fa\u7840\u7f51\u7edc":4,"\u4ee3\u8868\u610f\u4e49\u4e3a":4,"\u4ee3\u8868\u8d2d\u4e70\u81f3\u6708\u672b":4,"\u4ee3\u8868\u9009\u62e9\u5b50\u7f51":4,"\u4ee3\u8868http\u68c0\u67e5\u57df\u540d":4,"\u4ee3\u8868http\u68c0\u67e5\u8def\u5f84":4,"\u4ee3\u91d1\u5238":4,"\u4ee3\u91d1\u5238id":4,"\u4ee3\u91d1\u52b5":4,"\u4ee5":4,"\u4ee5\u5730\u533aairport":4,"\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d":4,"\u4ee5\u6b64\u7c7b\u63a8":4,"\u4ee5\u7a7a\u683c\u952e\u5206\u5272":4,"\u4ee5sigid":4,"\u4ee5tempalteparam":4,"\u4ee5templateid":4,"\u4ee5unix":4,"\u4ef2\u88c1\u8282\u70b9\u6309\u6700\u5c0f\u673a\u578b\u521b\u5efa":4,"\u4ef7\u683c":4,"\u4f01\u4e1a\u8425\u4e1a\u6267\u7167":4,"\u4f18\u5148\u7ea7":4,"\u4f18\u5148\u7ea7\u4f7f\u75280":4,"\u4f1a\u5458\u63a8\u5e7f\u7c7b":4,"\u4f1a\u5458\u63a8\u5e7f\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u4f1a\u5458\u7c7b\u578b":4,"\u4f20\u4e86\u5219\u4e0d\u80fd\u4e3a\u7a7a":4,"\u4f20\u5b9e\u4f8bid\u83b7\u53d6\u5355\u4e2a\u5b9e\u4f8b\u4fe1\u606f":4,"\u4f4e":4,"\u4f5c":4,"\u4f7f\u7528\u4ee3\u91d1\u5238\u53ef\u51b2\u62b5\u90e8\u5206\u8d39\u7528":4,"\u4f7f\u7528\u7684\u4ee3\u91d1\u5238id":4,"\u4f7f\u7528\u7684\u5907\u4efd\u65b9\u5f0f":4,"\u4f7f\u7528\u7684\u7b7e\u540d":4,"\u4f7f\u7528\u91cf\u5355\u4f4dmb":4,"\u4f7f\u7528describeudbparamgroup\u83b7\u5f97":4,"\u4f8b\u5982":4,"\u4f8b\u5982192":4,"\u4f8b\u5982uhostid":4,"\u4f9b\u5e94\u5546":4,"\u4fdd\u7559":4,"\u4fdd\u7559\u5c0f\u6570\u70b9\u540e\u4e24\u4f4d\u6709\u6548\u6570\u5b57":4,"\u4fee\u6539":4,"\u4fee\u6539\u4e3b\u5907redis\u540d\u79f0":4,"\u4fee\u6539\u5e26\u5bbd\u503c":4,"\u4fee\u6539\u5f39\u6027ip\u7684\u5916\u7f51\u51fa\u53e3\u6743\u91cd":4,"\u4fee\u6539\u6302\u8f7d\u7684\u78c1\u76d8\u5927\u5c0f":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u4e1a\u52a1\u7ec4\u6807\u8bc6":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u540d\u79f0":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u5907\u6ce8\u4fe1\u606f":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u8d44\u6e90\u914d\u7f6e":4,"\u4fee\u6539\u65f6\u95f4":4,"\u4fee\u6539\u9879\u76ee":4,"\u4fee\u6539db\u5b9e\u4f8b\u7684\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u4fee\u6539globalssh\u5907\u6ce8":4,"\u4fee\u6539globalssh\u7aef\u53e3":4,"\u4fee\u6539udb\u81ea\u52a8\u5907\u4efd\u7b56\u7565":4,"\u4fee\u6539umem\u5185\u5b58\u7a7a\u95f4\u540d\u79f0":4,"\u503c":4,"\u504f\u79fb\u91cf":4,"\u5065\u5eb7\u68c0\u67e5\u5f02\u5e38":4,"\u5065\u5eb7\u68c0\u67e5\u7684\u7c7b\u578b":4,"\u5065\u5eb7\u68c0\u67e5\u7c7b\u578b":4,"\u5141\u8bb8\u4e00\u4e2a\u6216\u8005\u4e09\u4e2a":4,"\u5141\u8bb8\u503c\u7684\u683c\u5f0f\u7c7b\u578b":4,"\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u5141\u8bb8\u7684\u503c":4,"\u5143":4,"\u514b\u9686\u4e2d":4,"\u514b\u9686\u7236disk\u7684id":4,"\u514b\u9686\u7236snapshot\u7684id":4,"\u514d\u8d39\u5e26\u5bbd\u6a21\u5f0f":4,"\u516c\u4f17\u53f7\u6216\u5c0f\u7a0b\u5e8f\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u516c\u4f17\u53f7\u6216\u5c0f\u7a0b\u5e8f\u7684\u7ba1\u7406\u754c\u9762\u622a\u56fe":4,"\u516c\u53f8\u540d\u79f0":4,"\u516c\u53f8\u5730\u5740":4,"\u516c\u53f8\u6216\u4f01\u4e1a\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u516d\u7684\u5907\u4efd\u914d\u7f6e\u5f00\u5173":4,"\u516d\u79cd":4,"\u516d\u79cd\u5bb9\u91cf\u89c4\u683c":4,"\u51717\u4f4d":4,"\u5171\u4eab\u5e26\u5bbd":4,"\u5171\u4eab\u5e26\u5bbd\u4fdd\u5e95\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u540d\u5b57":4,"\u5171\u4eab\u5e26\u5bbd\u540d\u79f0":4,"\u5171\u4eab\u5e26\u5bbd\u540e\u4ed8\u8d39\u5f00\u59cb\u8ba1\u8d39\u65f6\u95f4":4,"\u5171\u4eab\u5e26\u5bbd\u5cf0\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u5e26\u5bbd\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f":4,"\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u5fc5\u987b\u6307\u5b9a0m\u5e26\u5bbd":4,"\u5171\u4eab\u5e26\u5bbd\u7684\u8d44\u6e90\u540d\u79f0":4,"\u5171\u4eab\u5e26\u5bbd\u7684\u8d44\u6e90id":4,"\u5171\u4eab\u5e26\u5bbd\u7684id":4,"\u5171\u4eab\u5e26\u5bbd\u7c7b\u578b":4,"\u5171\u4eab\u5e26\u5bbd\u8d44\u6e90id":4,"\u5171\u4eab\u5e26\u5bbdid":4,"\u5173\u673a":4,"\u5173\u673a\u4e2d":4,"\u5173\u95ed":4,"\u5173\u95ed\u4e2d":4,"\u5173\u95ed\u4f1a\u8bdd\u4fdd\u6301":4,"\u5173\u95ed\u5171\u4eab\u5e26\u5bbd":4,"\u5173\u95ed\u5171\u4eab\u5e26\u5bbd\u540e":4,"\u5173\u95edudb\u5b9e\u4f8b":4,"\u5176\u4e2dcongfigsrv\u5206\u4e3asccc\u548ccsrs\u4e24\u79cd\u6a21\u5f0f":4,"\u5176\u4e2dn\u4e3a\u5927\u4e8e1\u7684\u6574\u6570":4,"\u5176\u4ed6\u4e0d\u5220\u9664":4,"\u5176\u4ed6\u503c":4,"\u5176\u4ed6\u503c\u6216\u4e0d\u586b":4,"\u5176\u4ed6\u5355\u4f4d\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5176\u4ed6\u573a\u666f\u9700\u8981\u4e8b\u5148\u5173\u95ed\u5b9e\u4f8b":4,"\u5176\u4ed6\u5f39\u6027ip\u4e0d\u4f1a\u88ab\u4f7f\u7528":4,"\u5176\u4ed6\u6216\u8005\u4e0d\u586b":4,"\u5176\u4ed6\u6d77\u5916\u7ebf\u8def\u5747\u4e3a":4,"\u5176\u4f59\u4ece\u53f3\u5230\u5de6\u4f9d\u6b21\u4e3a\u661f\u671f\u4e00\u5230\u661f\u671f":4,"\u5176\u4f59\u4ece\u53f3\u5230\u5de6\u4f9d\u6b21\u4e3a\u661f\u671f\u4e00\u5230\u661f\u671f\u516d\u7684\u5907\u4efd\u914d\u7f6e\u5f00\u5173":4,"\u5176\u4f59\u60c5\u51b5":4,"\u5176\u53d6\u503c\u5982\u4e0b":4,"\u5177\u4f53\u673a\u578b\u4e0ecpu\u7684\u5bf9\u5e94\u5173\u7cfb\u53c2\u7167\u63a7\u5236\u53f0":4,"\u5177\u4f53\u8bf7\u67e5\u8be2\u63a7\u5236\u53f0":4,"\u517c\u5bb9\u8001\u7248\u672c":4,"\u5185\u5b58\u5927\u5c0f":4,"\u5185\u5b58\u5b58\u50a8":4,"\u5185\u5b58\u5bb9\u91cf\u5927\u5c0f":4,"\u5185\u5b58\u7a7a\u95f4\u540d\u79f0":4,"\u5185\u5b58\u7a7a\u95f4id":4,"\u5185\u5b58\u9650\u5236":4,"\u5185\u5bb9\u7c7b\u578b":4,"\u5185\u5bb9\u8f6c\u53d1\u4f18\u5148\u7ea7":4,"\u5185\u5bb9\u8f6c\u53d1\u5339\u914d\u5b57\u6bb5":4,"\u5185\u5bb9\u8f6c\u53d1\u5339\u914d\u5b57\u6bb5\u7684\u7c7b\u578b":4,"\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u5e94\u7528\u7684\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b\u7684id":4,"\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u7ec4id":4,"\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565id":4,"\u5185\u5bb9\u8f6c\u53d1id":4,"\u5185\u7f51":4,"\u5185\u7f51ip":4,"\u5185\u7f51ip\u4e0d\u663e\u793a\u5e26\u5bbd\u4fe1\u606f":4,"\u5185\u7f51ip\u65e0\u5bf9\u5e94\u7684\u8d44\u6e90id":4,"\u5185\u7f51ip\u65e0\u8d44\u6e90id":4,"\u5185\u7f51ulb":4,"\u5185\u7f51vip":4,"\u5185\u7f51vip\u5730\u5740\u5217\u8868":4,"\u5185\u7f51vip\u7684id":4,"\u5185\u90e8\u53c2\u6570":4,"\u5185\u90e8\u5b57\u6bb5":4,"\u5185\u90e8\u6d4b\u8bd5":4,"\u5185\u90e8\u8bb0\u8f7d":4,"\u5206":4,"\u5206\u5272\u5b57\u6bb5":4,"\u5206\u7247\u96c6\u7fa4":4,"\u5206\u914d\u4e00\u6761":4,"\u5206\u914d\u4e2d":4,"\u5206\u9694":4,"\u5206\u9875\u663e\u793a\u6570\u91cf":4,"\u5206\u9875\u663e\u793a\u7684\u6761\u76ee\u6570":4,"\u5206\u9875\u663e\u793a\u7684\u8d77\u59cb\u504f\u79fb":4,"\u5206\u9875\u663e\u793a\u8d77\u59cb\u504f\u79fb\u4f4d\u7f6e":4,"\u5207\u6362\u540e\u9ad8\u53ef\u7528db\u5b9e\u4f8b\u7684id":4,"\u5207\u6362\u65f6\u4f1a\u6d89\u53ca\u4ed8\u8d39":4,"\u5217\u8868\u64cd\u4f5c\u5219\u6307\u5b9a":4,"\u5217\u8868\u64cd\u4f5c\u65f6\u5fc5\u586b":4,"\u5217\u8868\u64cd\u4f5c\u65f6\u624d\u4f1a\u6709\u8be5\u53c2\u6570":4,"\u5217\u8868\u8d77\u59cb\u4f4d\u7f6e\u504f\u79fb\u91cf":4,"\u5217\u8868\u957f\u5ea6":4,"\u5217\u8868udb\u5b9e\u4f8b\u5907\u4efd\u4fe1\u606f":4,"\u5217\u8868udb\u5b9e\u4f8bbinlog\u6216slowlog\u6216errorlog\u5907\u4efd\u4fe1\u606f":4,"\u5219\u4e00\u6b21\u6027\u83b7\u53d6\u4e09\u79cd\u8ba1\u8d39":4,"\u5219\u4e0d\u4f20\u5165\u8be5\u53c2\u6570":4,"\u5219\u4e0d\u5141\u8bb8\u53d1\u9001":4,"\u5219\u4e3adataark":4,"\u5219\u53ea\u6709master":4,"\u5219\u53ea\u83b7\u53d6\u8be5db\u7684\u5907\u4efd\u4fe1\u606f":4,"\u5219\u53ef\u9009\u662f\u5426\u9009\u53d6\u7279\u5b9adb\u7c7b\u578b\u7684\u914d\u7f6e":4,"\u5219\u5fc5\u586b":4,"\u5219\u5fc5\u9009":4,"\u5219\u5fc5\u987b\u586b\u5199":4,"\u5219\u5fc5\u987b\u8d4b\u503c":4,"\u5219\u65e0\u6cd5\u4fdd\u7559\u6570\u636e\u76d8":4,"\u5219\u65e0\u6cd5\u53d1\u9001":4,"\u5219\u662f\u8be5db\u5907\u4efd\u603b\u6570":4,"\u5219\u67e5\u8be2\u8be5\u7528\u6237\u5728\u673a\u623f\u6240\u6709\u7684\u4e13\u7ebf\u4fe1\u606f":4,"\u5219\u6b64\u5b57\u6bb5\u4f20\u5165\u7528\u6237\u81ea\u5b9a\u4e49\u4f1a\u8bdd\u4fdd\u6301string":4,"\u5219\u7ed1\u5b9a\u544a\u8b66\u6a21\u677f":4,"\u5219\u83b7\u53d6\u6240\u6709":4,"\u5219\u8868\u660e\u4ece\u5907\u4efd\u6062\u590d\u5b9e\u4f8b":4,"\u5219\u8868\u793a\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u578b\u5747\u53ef":4,"\u5219\u8868\u793a\u4efb\u4f55\u78c1\u76d8\u7c7b\u578b\u5747\u53ef":4,"\u5219\u8bf7\u8054\u7cfb\u6280\u672f\u652f\u6301\u786e\u8ba4\u539f\u56e0":4,"\u5219\u8fd4\u56de\u5f53\u524d":4,"\u5219\u8fd4\u56de\u5f53\u524dregion":4,"\u5219\u8fd4\u56de\u5f53\u524dregion\u6240\u6709phost":4,"\u5219\u8fdb\u5165\u56de\u6536\u7ad9":4,"\u5219\u968f\u673a\u5206\u914d\u5f53\u524d\u5b50\u7f51\u4e0b\u7684ip":4,"\u5219\u9700\u8981\u6307\u5b9a":4,"\u5219\u9ed8\u8ba4\u4e3a\u56fd\u5185\u624b\u673a\u53f7":4,"\u521b\u5efa\u4e2d":4,"\u521b\u5efa\u4e3b\u5907redi":4,"\u521b\u5efa\u4e3b\u673a\u7684\u6700\u521d\u6765\u6e90\u955c\u50cf\u7684\u64cd\u4f5c\u7cfb\u7edf\u540d\u79f0":4,"\u521b\u5efa\u4e91\u4e3b\u673a\u65f6\u6307\u5b9a\u5185\u7f51ip":4,"\u521b\u5efa\u4e91\u4e3b\u673a\u65f6\u6307\u5b9amac":4,"\u521b\u5efa\u4ece\u8282\u70b9\u7684dbid":4,"\u521b\u5efa\u5185\u5b58\u7a7a\u95f4id\u5217\u8868":4,"\u521b\u5efa\u5185\u7f51ulb\u65f6\u6307\u5b9a\u5185\u7f51ip":4,"\u521b\u5efa\u5355\u673amemcach":4,"\u521b\u5efa\u53ea\u8bfbslave\u65f6":4,"\u521b\u5efa\u5916\u7f51ulb\u8be5\u5b57\u6bb5\u4f1a\u5ffd\u7565":4,"\u521b\u5efa\u5931\u8d25":4,"\u521b\u5efa\u5b50\u7f51":4,"\u521b\u5efa\u65f6\u95f4":4,"\u521b\u5efa\u65f6\u95f4\u6233":4,"\u521b\u5efa\u7684\u5de5\u4f5c\u6d41\u7248\u672c\u53f7":4,"\u521b\u5efa\u7684\u7ec4id":4,"\u521b\u5efa\u7684ulb\u662f\u5426\u4e3a\u5185\u7f51\u6a21\u5f0f":4,"\u521b\u5efa\u7684ulb\u662f\u5426\u4e3a\u5916\u7f51\u6a21\u5f0f":4,"\u521b\u5efa\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b":4,"\u521b\u5efa\u8def\u7531\u8868":4,"\u521b\u5efa\u9632\u706b\u5899":4,"\u521b\u5efa\u9879\u76ee":4,"\u521b\u5efadb":4,"\u521b\u5efaglobalssh\u5b9e\u4f8b":4,"\u521b\u5efamongodb\u7684\u526f\u672c\u8282\u70b9":4,"\u521b\u5efamongos\u5b9e\u4f8b":4,"\u521b\u5efaslave\u7684dbid":4,"\u521b\u5efasnapshot\u5feb\u7167":4,"\u521b\u5efassl\u8bc1\u4e66":4,"\u521b\u5efaudb\u5b9e\u4f8b":4,"\u521b\u5efaudb\u5b9e\u4f8b\u7684slav":4,"\u521b\u5efaudisk":4,"\u521b\u5efaudisk\u78c1\u76d8":4,"\u521b\u5efauhost\u5b9e\u4f8b":4,"\u521b\u5efaumem\u5185\u5b58\u7a7a\u95f4":4,"\u521b\u5efavpc":4,"\u521b\u5efavserver\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565":4,"\u521b\u5efavserver\u5b9e\u4f8b":4,"\u521d\u59cb\u5316":4,"\u521d\u59cb\u5316\u4e2d":4,"\u521d\u59cb\u5316\u5bc6\u7801":4,"\u5220":4,"\u5220\u9664":4,"\u5220\u9664\u4e2d":4,"\u5220\u9664\u4e3b\u5907redi":4,"\u5220\u9664\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565":4,"\u5220\u9664\u5355\u673amemcach":4,"\u5220\u9664\u5931\u8d25":4,"\u5220\u9664\u5b50\u7f51":4,"\u5220\u9664\u5f39\u6027ip\u4e0a\u5df2\u9644\u52a0\u5e26\u5bbd\u5305":4,"\u5220\u9664\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u7684uhost\u5b9e\u4f8b":4,"\u5220\u9664\u65f6\u95f4\u70b9":4,"\u5220\u9664\u7269\u7406\u4e91\u4e3b\u673a":4,"\u5220\u9664\u7528\u6237\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u5220\u9664\u81ea\u5b9a\u4e49\u8def\u7531\u8868":4,"\u5220\u9664\u8be5\u76d8\u6240\u521b\u5efa\u51fa\u6765\u7684\u6240\u6709\u5feb\u7167":4,"\u5220\u9664\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b":4,"\u5220\u9664\u914d\u7f6e\u53c2\u6570\u7ec4":4,"\u5220\u9664\u9632\u706b\u5899":4,"\u5220\u9664\u9879\u76ee":4,"\u5220\u9664globalssh\u5b9e\u4f8b":4,"\u5220\u9664snapshot":4,"\u5220\u9664ssl\u8bc1\u4e66":4,"\u5220\u9664udb\u5b9e\u4f8b":4,"\u5220\u9664udb\u5b9e\u4f8b\u5907\u4efd":4,"\u5220\u9664udb\u65e5\u5fd7\u5305":4,"\u5220\u9664udisk":4,"\u5220\u9664ulb\u65f6\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u5220\u9664umem\u5185\u5b58\u7a7a\u95f4":4,"\u5220\u9664vpc":4,"\u5220\u9664vpc\u4e92\u901a\u5173\u7cfb":4,"\u5220\u9664vserver\u5b9e\u4f8b":4,"\u522b\u4e3apvft_unkown":4,"\u522b\u540d":4,"\u5230\u671f\u65f6\u95f4":4,"\u5236\u4f5c\u4e2d":4,"\u524d\u65f6\u95f4\u70b9\u524d\u4e00\u5929":4,"\u524d\u7aef\u6682\u65f6\u53ea\u5f00\u653e\u5185\u5b58\u5b9a\u5236":4,"\u526f\u672c\u96c6\u6570\u91cf":4,"\u529f\u80fd\u4ec5\u90e8\u5206\u53ef\u7528\u533a\u5f00\u653e":4,"\u52a0\u5bc6":4,"\u52a0\u5bc6\u76d8":4,"\u52a0\u5bc6\u76d8\u5bc6\u7801":4,"\u52a0\u5bc6\u76d8\u7684\u5bc6\u7801":4,"\u52a0\u5bc6\u76d8\u9700\u8981\u6743\u9650\u4f4d":4,"\u52a0\u5bc6\u8bc1\u4e66\u7684\u79c1\u94a5":4,"\u52a0\u5bc6\u9700\u8981\u7684cmk":4,"\u52a0\u6743\u8f6e\u8be2":4,"\u52a0\u901f\u57df\u540d":4,"\u52a8\u4f5c\u6807\u5fd7\u4e3aadd":4,"\u5305\u542b\u7cfb\u7edf\u76d8\u548c\u6570\u636e\u76d8":4,"\u5305\u62ec":4,"\u5305\u62ec2":4,"\u5305\u62ec\u4ef2\u88c1":4,"\u5305\u62ec\u5185\u5b58\u548c\u78c1\u76d8\u7684\u914d\u7f6e":4,"\u5305\u62ec\u521b\u5efamysql":4,"\u5305\u62ec\u6240\u6709gpu\u673a\u578b":4,"\u5305\u62ec\u6bcf\u4e2a\u5355\u53ef\u7528\u533a\u548c\u8de8\u53ef\u7528\u533a":4,"\u5305\u62ec\u7528\u6237\u8bc1\u4e66":4,"\u5305\u62ec\u8def\u7531\u7b56\u7565":4,"\u5305\u62ec\u8f6c\u53d1\u89c4\u5219\u540e\u7684\u670d\u52a1\u8282\u70b9":4,"\u5317\u4eac\u4e00\u5730\u57df\u65e0\u6548":4,"\u5317\u4eac\u4e00\u5f53\u524d\u5b57\u6bb5\u4e3a\u7a7a":4,"\u5317\u4eac\u4e8c":4,"\u533a\u57df\u822a\u7a7a\u6e2f\u56fd\u9645\u901a\u7528\u4ee3\u7801":4,"\u5343\u5146":4,"\u5347\u7ea7\u4e2d":4,"\u5347\u7ea7\u540e\u7684\u4ef7\u683c":4,"\u5347\u7ea7\u548c\u964d\u7ea7":4,"\u5347\u7ea7\u76ee\u6807udisk":4,"\u5347\u964d\u7ea7\u540e\u662f\u5426\u542f\u52a8db":4,"\u5347\u964d\u7ea7\u8d44\u6e90\u7684\u4ef7\u683c":4,"\u534e\u76db\u987f":4,"\u534f\u8bae":4,"\u534f\u8bae\u7c7b\u578b":4,"\u5355\u4f4d":4,"\u5355\u4f4d\u4e3a":4,"\u5355\u4f4d\u4e3a\u5206":4,"\u5355\u4f4d\u4e3amb":4,"\u5355\u4f4d\u4e3ambp":4,"\u5355\u4f4d\u5c0f\u65f6":4,"\u5355\u4f4d\u5c0f\u65f6\u8ba1":4,"\u5355\u4f4dgb":4,"\u5355\u4f4dmb":4,"\u5355\u4f4dmbp":4,"\u5355\u70b9":4,"\u5355\u76d8\u5927\u5c0f":4,"\u5355\u9875\u8fd4\u56de\u6570\u636e\u957f\u5ea6":4,"\u5360\u75284\u4e2a\u5b57\u957f":4,"\u5373\u5c06\u5e9f\u5f03":4,"\u5373\u8be5\u5e26\u5bbd\u5305\u5728enabletime\u5230":4,"\u5373\u8fd4\u56delocaldisk":4,"\u5378\u8f7d\u4e2d":4,"\u5378\u8f7d\u67d0\u4e2a\u5df2\u7ecf\u6302\u8f7d\u5728\u6307\u5b9auhost\u5b9e\u4f8b\u4e0a\u7684udisk":4,"\u5378\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u5378\u8f7d\u7684uhost\u5b9e\u4f8bid":4,"\u539f\u4ef7":4,"\u539fdb\u72b6\u6001\u4e3awaitforswitch\u65f6":4,"\u53c2\u6570":4,"\u53c2\u6570\u4e3aother":4,"\u53c2\u6570\u503c":4,"\u53c2\u6570\u503c\u5e94\u7528\u7c7b\u578b":4,"\u53c2\u6570\u540d\u79f0":4,"\u53c2\u6570\u7c7b\u578b":4,"\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u53c2\u6570\u7ec4\u603b\u6570":4,"\u53c2\u6570\u7ec4\u63cf\u8ff0":4,"\u53c2\u6570\u7ec4\u662f\u5426\u53ef\u4fee\u6539":4,"\u53c2\u6570\u7ec4id":4,"\u53c2\u8003":4,"\u53c2\u8003\u955c\u50cf\u5217\u8868":4,"\u53c2\u89c1":4,"\u53c2\u89c1describephostmachinetype\u8fd4\u56de\u503c":4,"\u53c2\u89c1describesubnet":4,"\u53ca\u65b0\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u53cc\u7ebf":4,"\u53cc\u7ebfip":4,"\u53d1\u751f\u9519\u8bef\u65f6":4,"\u53d1\u751f\u9519\u8bef\u65f6\u8868\u793a\u9519\u8bef\u63cf\u8ff0":4,"\u53d1\u9001\u77ed\u4fe1\u606f":4,"\u53d1\u9001\u77ed\u4fe1\u65f6\u8fd4\u56de\u7684sessionno":4,"\u53d1\u9001\u77ed\u4fe1\u65f6\u8fd4\u56de\u7684sessionno\u96c6\u5408":4,"\u53d6\u503c\u4e3a0\u62161":4,"\u53d6\u503c\u4e3a0\u65f6":4,"\u53d6\u503c\u4e3a100\u65f6":4,"\u53d6\u503c\u4e3a1024\u7684\u500d\u6570":4,"\u53d6\u503c\u8303\u56f4":4,"\u53d6\u503c\u8303\u56f43306\u81f365535":4,"\u53d6\u503c\u8303\u56f4\u4e3a":4,"\u53d6\u503c\u8303\u56f4\u4e3a\u5927\u4e8e0\u7684\u6574\u6570":4,"\u53d6\u503c\u8303\u56f4\u4e3a\u5927\u4e8e\u7b49\u4e8e2\u4e14\u5c0f\u4e8e\u7b49\u4e8e1000":4,"\u53d6\u503c\u8303\u56f4\u662f":4,"\u53d6\u503c\u8303\u56f4\u9700\u5927\u4e8e\u5f53\u524d\u78c1\u76d8\u5927\u5c0f":4,"\u53d6uredis\u4ef7\u683c\u4fe1\u606f":4,"\u53ea\u5728\u62a5\u6587\u8f6c\u53d1\u4e2d\u4f7f\u7528":4,"\u53ea\u652f\u6301\u666e\u901a\u7248db\u4e0d\u652f\u6301\u9ad8\u53ef\u7528":4,"\u53ea\u6709\u903b\u8f91\u5907\u4efd\u4e0b\u5907\u4efd\u9ed1\u540d\u5355\u624d\u751f\u6548":4,"\u53ea\u80fd\u5305\u542b\u82f1\u6587":4,"\u53ea\u80fd\u586btrue\u6216fals":4,"\u53ea\u8981\u6709\u4e00\u5757\u78c1\u76d8\u4e3a\u672c\u5730\u76d8":4,"\u53ea\u9488\u5bf9mysql5":4,"\u53ef\u4ee5\u4ecedescribeudblogpackage\u7ed3\u679c\u5f53\u4e2d\u83b7\u5f97":4,"\u53ef\u4ee5\u628a\u6574\u4e2a":4,"\u53ef\u4ee5\u83b7\u53d6\u591a\u4e2a\u7c7b\u578b\u7684\u65e5\u5fd7\u8bb0\u5f55":4,"\u53ef\u4ee5\u9009\u62e9\u5185\u7f51\u6216\u8005\u5916\u7f51":4,"\u53ef\u5305\u542b\u4e2d\u6587":4,"\u53ef\u6839\u636e\u8be5\u503c\u67e5\u8be2\u672c\u6b21\u53d1\u9001\u7684\u77ed\u4fe1\u5217\u8868":4,"\u53ef\u7528":4,"\u53ef\u7528\u4e8e":4,"\u53ef\u7528\u533a":4,"\u53ef\u7528\u533a\u5217\u8868":4,"\u53ef\u7528\u533a\u540d\u5b57":4,"\u53ef\u7528\u533a\u540d\u79f0":4,"\u53ef\u7528\u533a\u57df":4,"\u53ef\u7f6e\u4e3atrue":4,"\u53ef\u81ea\u5b9a\u4e49dn":4,"\u53ef\u8bbe\u4e3a\u4ee5\u4e0b\u51e0\u4e2a\u503c":4,"\u53ef\u9009":4,"\u53ef\u9009\u503c\u4e3a":4,"\u53ef\u9009\u503c\u4e3aconfigsrv":4,"\u53ef\u9009\u503c\u5982\u4e0b":4,"\u53ef\u9009\u5343\u5146":4,"\u53ef\u9009\u53c2\u6570":4,"\u53ef\u9009\u8303\u56f4\u4e0euhosttype\u76f8\u5173":4,"\u53ef\u9009\u8303\u56f4\u53c2\u7167\u597d\u63a7\u5236\u53f0":4,"\u53ef\u9009\u8303\u56f4\u53c2\u7167\u63a7\u5236\u53f0":4,"\u53ef\u9009\u8303\u56f4\u53c2\u8003\u63a7\u5236\u53f0":4,"\u53ef\u9009\u914d\u7f6e\u8303\u56f4\u8bf7\u53c2\u8003":4,"\u53ef\u9009raid":4,"\u53ef\u9009raw":4,"\u53ef\u901a\u8fc7":4,"\u53ef\u901a\u8fc7describeisolationgroup\u83b7\u53d6":4,"\u53ef\u901a\u8fc7describeudbbackup\u83b7\u5f97":4,"\u53ef\u901a\u8fc7describeudbinstancebinlog\u83b7\u5f97":4,"\u53ef\u901a\u8fc7describeudblogpackage\u83b7\u5f97":4,"\u53ef\u901a\u8fc7describeudbparamgroup\u83b7\u53d6":4,"\u5404\u503c":4,"\u5404\u503c\u4ee3\u8868":4,"\u5404\u5730\u57df\u5141\u8bb8\u7684\u7ebf\u8def\u53c2\u6570\u5982\u4e0b":4,"\u5404\u5730\u57df\u5e26\u5bbd\u8303\u56f4\u5982\u4e0b":4,"\u5404\u5730\u57df\u7684\u5e26\u5bbd\u503c\u8303\u56f4\u5982\u4e0b":4,"\u5404\u5730\u57df\u975e\u5171\u4eab\u5e26\u5bbd\u7684\u5e26\u5bbd\u8303\u56f4\u5982\u4e0b":4,"\u5404eip\u6062\u590d\u4e3a\u7684\u5e26\u5bbd\u503c":4,"\u540c\u4e3b\u673a\u4e0b\u53ea\u4f1a\u4f7f\u7528\u8fd9\u4e2a\u5f39\u6027ip":4,"\u540c\u65f6\u4f20snapshotid\u4f18\u5148":4,"\u540c\u65f6\u8bbe\u5b9a\u7cfb\u7edf\u76d8\u548c\u6570\u636e\u76d8":4,"\u540c\u65f6\u8bbe\u5b9a\u7cfb\u7edf\u76d8\u548c\u6570\u636e\u76d8\u7684\u78c1\u76d8\u7c7b\u578b":4,"\u540d\u5b57":4,"\u540d\u79f0":4,"\u540e\u4ed8\u8d39":4,"\u540e\u7aef\u5b9e\u4f8b\u72b6\u6001\u5f00\u5173":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5185\u7f51ip":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5b9e\u4f8b\u542f\u7528\u4e0e\u5426":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5b9e\u4f8b\u8fd0\u884c\u72b6\u6001":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u7aef\u53e3":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u8d44\u6e90\u6240\u5728\u7684\u5b50\u7f51\u7684id":4,"\u540e\u7aef\u8d44\u6e90\u5185\u7f51ip":4,"\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b\u7684id":4,"\u540e\u7aef\u8d44\u6e90\u670d\u52a1\u7aef\u53e3":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5185\u7f51ip":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5bf9\u8c61id":4,"\u540e\u9762\u4e3a\u7535\u8bdd\u53f7\u7801":4,"\u5426":4,"\u5426\u5219":4,"\u5426\u5219\u4e3a\u5217\u8868\u64cd":4,"\u5426\u5219\u4e3a\u5217\u8868\u64cd\u4f5c":4,"\u5426\u5219\u4f1a\u62a5\u9519":4,"\u5426\u5219\u4f7f\u7528\u5355\u70b9\u8ba1\u8d39\u7b56\u7565\u7684\u503c":4,"\u5426\u5219\u662f\u5217\u8868\u64cd\u4f5c":4,"\u542b\u57df\u540d":4,"\u542f\u52a8\u4e2d":4,"\u542f\u52a8\u5904\u4e8e\u5173\u95ed\u72b6\u6001\u7684uhost\u5b9e\u4f8b":4,"\u542f\u52a8\u7269\u7406\u673a":4,"\u542f\u52a8udb\u5b9e\u4f8b":4,"\u542f\u7528":4,"\u544a\u8b66\u6a21\u677fid":4,"\u548c_":4,"\u548cdrop":4,"\u5546\u6807\u540d\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5546\u6807\u6ce8\u518c\u8bc1\u4e66":4,"\u56de\u6267\u7ed3\u679c":4,"\u56de\u6267\u7ed3\u679c\u63cf\u8ff0":4,"\u56de\u6267\u8fd4\u56de\u65f6\u95f4":4,"\u56den\u9000\u8ba2":4,"\u56det\u9000\u8ba2":4,"\u56detd\u9000\u8ba2":4,"\u56e0\u4e3a\u8981\u52a0\u4e0a1":4,"\u56e0\u6b64\u4e0d\u5141\u8bb8\u8f93\u5165\u6bd4\u5f53\u524d\u5b9e\u4f8b\u6570\u636e\u76d8\u5927\u5c0f\u7684\u503c":4,"\u56e0\u6b64\u4e0d\u5141\u8bb8\u8f93\u5165\u6bd4\u5f53\u524d\u5b9e\u4f8b\u7cfb\u7edf\u76d8\u5c0f\u7684\u503c":4,"\u56fd\u9645":4,"\u56fd\u9645\u53f7\u7801\u524d\u7f00":4,"\u56fd\u9645ip":4,"\u5728\u52a0\u6743\u8f6e\u8be2\u7b97\u6cd5\u4e0b\u6709\u6548":4,"\u5730\u533a\u4ee3\u53f7":4,"\u5730\u5740\u7a7a\u95f4\u4e2d\u5b50\u7f51\u6570\u91cf":4,"\u5730\u57df":4,"\u5730\u57df\u540d\u5b57":4,"\u5730\u57df\u548c\u53ef\u7528\u533a\u5217\u8868":4,"\u57ce\u5e02":4,"\u57df\u540d":4,"\u57fa\u4e8evip\u548c\u54e8\u5175\u8282\u70b9\u7684\u67b6\u6784":4,"\u57fa\u7840\u578b":4,"\u57fa\u7840\u7f51\u7edc\u6a21\u5f0f":4,"\u57fa\u7840\u955c\u50cf\u540d\u79f0":4,"\u57fa\u7840\u955c\u50cfid":4,"\u5821\u5792\u673a":4,"\u586b":4,"\u586b\u4ee3\u8868\u5355\u53ef\u7528\u533a":4,"\u586b\u5199\u540e\u4e0d\u80fd\u586b\u5199snapshotid":4,"\u586b\u5199\u540e\u4e0d\u80fd\u586b\u5199udisk":4,"\u586b\u5199\u652f\u6301ssh\u8bbf\u95eeip\u7684\u5730\u533a\u540d\u79f0":4,"\u589e":4,"\u589e\u52a0\u7f51\u6bb5":4,"\u5907\u4efd\u4e2d":4,"\u5907\u4efd\u540d\u79f0":4,"\u5907\u4efd\u5916\u7f51url":4,"\u5907\u4efd\u5931\u8d25":4,"\u5907\u4efd\u5b8c\u6210\u65f6\u95f4":4,"\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u5907\u4efd\u603b\u6570":4,"\u5907\u4efd\u6210\u529f":4,"\u5907\u4efd\u6240\u5728\u53ef\u7528\u533a":4,"\u5907\u4efd\u6587\u4ef6\u4fdd\u7559\u7684\u6570\u91cf":4,"\u5907\u4efd\u6587\u4ef6\u516c\u7f51\u7684\u5730\u5740":4,"\u5907\u4efd\u6587\u4ef6\u540d\u79f0":4,"\u5907\u4efd\u6587\u4ef6\u5927\u5c0f":4,"\u5907\u4efd\u65b9\u6848":4,"\u5907\u4efd\u65e5\u671f\u6807\u8bb0\u4f4d":4,"\u5907\u4efd\u65f6\u671f\u6807\u8bb0\u4f4d":4,"\u5907\u4efd\u65f6\u95f4":4,"\u5907\u4efd\u65f6\u95f4\u95f4\u9694":4,"\u5907\u4efd\u72b6\u6001":4,"\u5907\u4efd\u7528\u6237\u7f51url":4,"\u5907\u4efd\u7684\u540d\u79f0":4,"\u5907\u4efd\u7684\u6574\u70b9\u65f6\u95f4":4,"\u5907\u4efd\u7684\u72b6\u6001":4,"\u5907\u4efd\u7b56\u7565":4,"\u5907\u4efd\u7c7b\u578b":4,"\u5907\u4efd\u8bb0\u5f55id":4,"\u5907\u4efd\u8fc7\u671f":4,"\u5907\u4efd\u9519\u8bef\u4fe1\u606f":4,"\u5907\u4efd\u9ed1\u540d\u5355":4,"\u5907\u4efd\u9ed1\u540d\u5355\u5217\u8868":4,"\u5907\u4efdid":4,"\u5907\u4efdudb\u5b9e\u4f8b":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684binlog\u5217\u8868":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684errorlog":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684slowlog\u5206\u6790\u7ed3\u679c":4,"\u5907\u6848\u53f7":4,"\u5907\u6848\u670d\u52a1\u5546\u7684\u5907\u6848\u6210\u529f\u622a\u56fe":4,"\u5907\u6ce8":4,"\u5907\u6ce8\u4fe1\u606f":4,"\u5907\u6ce8\u7b49\u5c5e\u6027\u5b57\u6bb5":4,"\u590d\u5236\u81ea\u5236\u955c\u50cf":4,"\u5916\u7f51\u51fa\u53e3\u6743\u91cd":4,"\u591a\u7528\u4e8e\u9ad8\u53ef\u7528\u7a0b\u5e8f\u4f5c\u4e3a\u6f02\u79fbip":4,"\u5927\u4e8e100\u4e3a\u5b50\u5e10\u6237":4,"\u5927\u4e8e\u7b49\u4e8e\u8fd4\u56dedataset\u957f\u5ea6":4,"\u5927\u6570\u636e\u96c6\u7fa4":4,"\u5931\u6548":4,"\u5931\u6548\u65f6\u95f4":4,"\u5931\u8d25":4,"\u5982":4,"\u59821851623xxxx":4,"\u5982\u4e0d\u4f20\u6b64\u53c2\u6570":4,"\u5982\u4e2d\u56fd\u4e3a86\u62160086":4,"\u5982\u4f55\u67e5\u8be2securitygroupid\u8bf7\u53c2\u89c1":4,"\u5982\u6309\u6708":4,"\u5982\u679c\u4e0d\u4f20\u5165":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684\u4e1a\u52a1\u7ec4":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684\u5b50\u7f51":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684vpc":4,"\u5982\u679c\u4e0d\u6307\u5b9a":4,"\u5982\u679c\u4e0d\u8f93\u5165\u5219\u4f7f\u7528\u9ed8\u8ba4\u7b7e\u540d":4,"\u5982\u679c\u4e3a\u7a7a":4,"\u5982\u679c\u4ece\u5e93\u5907\u4efd\u5f00\u5173\u8bbe\u5b9a\u4e3a\u6253\u5f00":4,"\u5982\u679c\u4ece\u5e93\u843d\u540e\u53ef\u80fd\u4f1a\u7981\u6b62\u63d0\u5347":4,"\u5982\u679c\u4f20\u4e86\u544a\u8b66\u6a21\u677fid":4,"\u5982\u679c\u521b\u5efauhost\u5b9e\u4f8b\u65f6loginmode\u4e3apassword":4,"\u5982\u679c\u586b\u4e86backupid":4,"\u5982\u679c\u6307\u5b9a":4,"\u5982\u679c\u6307\u5b9a\u4e3atrue":4,"\u5982\u679c\u6307\u5b9a\u5219\u83b7\u53d6\u5355\u4e2adb\u5b9e\u4f8b\u7684\u63cf\u8ff0":4,"\u5982\u679c\u6307\u5b9a\u5219\u83b7\u53d6\u63cf\u8ff0":4,"\u5982\u679c\u6307\u5b9adbid":4,"\u5982\u679c\u64cd\u4f5c\u6210\u529f":4,"\u5982\u679c\u662f\u4ecewindows\u91cd\u88c5\u4e3alinux\u6216\u53cd\u4e4b":4,"\u5982\u679c\u662f\u5217\u8868\u64cd\u4f5c":4,"\u5982\u679c\u6709\u503c\u8868\u793a\u4e13\u533a\u4e2d\u7684db\u914d\u7f6e\u5347\u964d\u7ea7":4,"\u5982\u679c\u6709\u8be5\u9009\u9879":4,"\u5982\u679c\u672a\u6307\u5b9agroupid":4,"\u5982\u679c\u6ca1\u4f20":4,"\u5982\u679c\u7ed1\u5b9aeip\u8fd9\u4e2a\u53c2\u6570\u5fc5\u586b":4,"\u5982\u679c\u843d\u540e\u60c5\u51b5\u4e0b":4,"\u5982\u679c\u8981\u4f20\u5165\u591a\u4e2a\u6587\u4ef6\u540d":4,"\u5982\u679c\u8ba1\u8d39\u5355\u4f4d\u662f":4,"\u5982\u679c\u8fd9\u4e2a\u53c2\u6570\u5b58\u5728\u8fd9\u8bf4\u660e\u662f\u5728\u4e13\u533a\u4e2d\u521b\u5efadb":4,"\u5982\u679cloginmode\u4e3akeypair":4,"\u5982\u679cname\u4e0d\u586b\u5199":4,"\u5982\u679ctag\u4e0d\u586b\u5199":4,"\u5982\u679cudbid\u4e0d\u4e3a\u7a7a\u5219\u53ea\u67e5\u770b\u6b64\u4e13\u533a\u4e0b\u9762\u7684db":4,"\u5982\u679cusessd\u4e3atru":4,"\u5982\u9700\u9000\u8d39\u6b64\u5904\u4e3a\u8d1f\u503c":4,"\u5982\u9999\u6e2f":4,"\u5982cn":4,"\u5982cpu\u6838\u5fc3\u6570":4,"\u5982hk":4,"\u5982month":4,"\u5982mysql":4,"\u5982org":4,"\u5b50\u5e10\u53f7\u5fc5\u987b\u586b\u5199":4,"\u5b50\u7f51":4,"\u5b50\u7f51\u5173\u8054\u7684ipv6\u7f51\u6bb5":4,"\u5b50\u7f51\u5173\u8054\u7684ipv6\u7f51\u6bb5\u6240\u5c5e\u8fd0\u8425\u5546":4,"\u5b50\u7f51\u540d\u79f0":4,"\u5b50\u7f51\u603b\u6570\u91cf":4,"\u5b50\u7f51\u63a9\u7801":4,"\u5b50\u7f51\u6a21\u5f0f":4,"\u5b50\u7f51\u7c7b\u578b":4,"\u5b50\u7f51\u7f51\u5173":4,"\u5b50\u7f51\u7f51\u6bb5":4,"\u5b50\u7f51\u7f51\u7edc\u53f7\u4f4d\u6570":4,"\u5b50\u7f51\u7f51\u7edc\u5730\u5740":4,"\u5b50\u7f51id":4,"\u5b50\u7f51id\u6570\u7ec4":4,"\u5b57\u6570\u4e0d\u8d85\u8fc7128":4,"\u5b57\u6570\u4e0d\u8d85\u8fc7500":4,"\u5b57\u6bb5\u89c4\u8303":4,"\u5b57\u6bcd":4,"\u5b57\u7b26\u90fd\u6309\u4e00\u4e2a\u5b57\u8ba1":4,"\u5b57\u8282":4,"\u5b89\u5168\u7ec4id":4,"\u5b89\u88c5":4,"\u5b89\u88c5\u5931\u8d25":4,"\u5b9a\u4e49\u76d1\u542c\u7684\u534f\u8bae\u548c\u7aef\u53e3\u4ee5\u53ca\u8d1f\u8f7d\u5747\u8861\u7b97\u6cd5":4,"\u5b9e\u4f8b":4,"\u5b9e\u4f8b\u540d\u79f0":4,"\u5b9e\u4f8b\u6240\u5728\u53ef\u7528\u533a":4,"\u5b9e\u4f8b\u6240\u5728\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u5b9e\u4f8b\u72b6\u6001":4,"\u5b9e\u4f8b\u7684\u65b0\u540d\u5b57":4,"\u5b9e\u4f8b\u7684\u65b0\u5bc6\u7801":4,"\u5b9e\u4f8b\u7684\u90e8\u7f72\u7c7b\u578b":4,"\u5b9e\u4f8b\u7684id":4,"\u5b9e\u4f8bid":4,"\u5b9e\u540d\u8ba4\u8bc1\u72b6\u6001":4,"\u5ba1\u6838\u4e2d":4,"\u5ba1\u6838\u5931\u8d25\u539f\u56e0":4,"\u5ba1\u6838\u672a\u901a\u8fc7":4,"\u5ba1\u6838\u901a\u8fc7":4,"\u5ba2\u6237\u81ea\u5b9a\u4e49":4,"\u5bb9\u5668":4,"\u5bb9\u5668\u96c6\u7fa4":4,"\u5bb9\u91cf\u5355\u4f4dgb":4,"\u5bb9\u91cf\u5927\u5c0f":4,"\u5bb9\u91cf\u8c03\u6574\u4e2d":4,"\u5bb9\u91cf\u8c03\u6574\u5931\u8d25":4,"\u5bbf\u4e3b\u673a\u7c7b\u578b":4,"\u5bc6\u7801":4,"\u5bc6\u7801\u683c\u5f0f\u4f7f\u7528base64\u7f16\u7801":4,"\u5bc6\u7801\u9700\u4f7f\u7528base64\u8fdb\u884c\u7f16\u7801":4,"\u5bf9\u4e8e":4,"\u5bf9\u4e8e\u5185\u5b58\u5347\u7ea7\u65e0\u9700\u5173\u95ed\u5b9e\u4f8b":4,"\u5bf9\u5e94\u7684\u5b9e\u4f8bid":4,"\u5bf9\u5e94\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5bf9\u5e94\u7684db\u540d\u79f0":4,"\u5bf9\u5e94\u78c1\u76d8\u5236\u4f5c\u5feb\u7167\u65f6\u6240\u6302\u8f7d\u7684\u4e3b\u673a":4,"\u5bf9\u5e94\u78c1\u76d8\u662f\u5426\u5904\u4e8e\u53ef\u7528\u72b6\u6001":4,"\u5bf9master\u5219\u4e3a\u7a7a":4,"\u5bf9mongodb\u5219\u662f\u526f\u672c\u96c6id":4,"\u5bf9mysql\u7684slave\u800c\u8a00\u662fmaster\u7684dbid":4,"\u5bfc\u5165\u5de5\u4f5c\u6d41\u5b9a\u4e49":4,"\u5bfc\u5165\u7684\u914d\u7f6e\u5185\u5bb9\u91c7\u7528base64\u7f16\u7801":4,"\u5bfc\u5165udb\u914d\u7f6e":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u5b9a\u4e49":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684\u7248\u672c\u53f7":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684id":4,"\u5c06\u4e00\u4e2a\u53ef\u7528\u7684udisk\u6302\u8f7d\u5230\u67d0\u53f0\u4e3b\u673a\u4e0a":4,"\u5c06\u5c1a\u672a\u4f7f\u7528\u7684\u5f39\u6027ip\u7ed1\u5b9a\u5230\u6307\u5b9a\u7684\u8d44\u6e90":4,"\u5c06\u5f39\u6027ip\u4ece\u8d44\u6e90\u4e0a\u89e3\u7ed1":4,"\u5c06\u65b0\u521b\u5efa\u7684db\u6062\u590d\u5230\u6307\u5b9adb\u67d0\u4e2a\u6307\u5b9a\u65f6\u95f4\u70b9":4,"\u5c06\u9632\u706b\u5899\u5e94\u7528\u5230\u8d44\u6e90\u4e0a":4,"\u5c06eip\u52a0\u5165\u5171\u4eab\u5e26\u5bbd":4,"\u5c06eip\u79fb\u51fa\u5171\u4eab\u5e26\u5bbd":4,"\u5c06ssl\u8bc1\u4e66\u7ed1\u5b9a\u5230vserver":4,"\u5c0f\u4e8e\u7b49\u4e8e32\u4e2a\u5b57":4,"\u5c0f\u4e8e\u7b49\u4e8e600\u4e2a\u5b57":4,"\u5c55\u793a\u5b50\u7f51\u8d44\u6e90":4,"\u5c5e\u6027":4,"\u5de5\u4fe1\u90e8\u5907\u6848\u7f51\u7ad9\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5df2\u5173\u95ed":4,"\u5df2\u51bb\u7ed3":4,"\u5df2\u5220\u9664":4,"\u5df2\u5e9f\u5f03":4,"\u5df2\u6302\u8f7d":4,"\u5df2\u6709\u4e3b\u673a\u7684\u4e1a\u52a1\u7ec4\u603b\u4e2a\u6570":4,"\u5df2\u7533\u8bf7\u7684\u77ed\u4fe1\u7b7e\u540did":4,"\u5df2\u7ed1\u5b9a":4,"\u5df2\u7ed1\u5b9a\u7684\u8d44\u6e90\u540d\u79f0":4,"\u5df2\u7ed1\u5b9a\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5df2\u7ed1\u5b9a\u8d44\u6e90\u5b9e\u4f8b\u7684\u5e26\u5bbd\u8ba1\u8d39\u5f39\u6027ip\u9644\u52a0\u4e34\u65f6\u5e26\u5bbd\u5305":4,"\u5df2\u7ed1\u5b9a\u8d44\u6e90\u7684\u8d44\u6e90id":4,"\u5e26\u5bbd":4,"\u5e26\u5bbd\u4fe1\u606f":4,"\u5e26\u5bbd\u503c":4,"\u5e26\u5bbd\u5305\u6240\u7ed1\u5b9a\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u5e26\u5bbd\u5305\u6709\u6548\u65f6\u957f":4,"\u5e26\u5bbd\u5305\u7684\u4e34\u65f6\u5e26\u5bbd\u503c":4,"\u5e26\u5bbd\u5305\u7684\u8d44\u6e90id":4,"\u5e26\u5bbd\u5305\u8d44\u6e90id":4,"\u5e26\u5bbd\u5927\u5c0f":4,"\u5e26\u5bbd\u6a21\u5f0f":4,"\u5e26\u5bbd\u7c7b\u578b":4,"\u5e26\u5bbd\u8ba1\u8d39":4,"\u5e26\u5bbd\u8ba1\u8d39\u6a21\u5f0f":4,"\u5e76\u4e14quantity\u4e3a0":4,"\u5e76\u53ef\u6839\u636e\u6570\u636e\u4e2d\u5fc3":4,"\u5e76\u91ca\u653e":4,"\u5e76\u91cd\u65b0\u63d0\u4ea4\u5ba1\u6838":4,"\u5e7f\u4e1c":4,"\u5e94\u7528\u5546\u5e97\u540e\u53f0\u5f00\u53d1\u8005\u7ba1\u7406\u622a\u56fe":4,"\u5e9f\u5f03":4,"\u5efa\u8bae\u4e0d\u518d\u4f7f\u7528":4,"\u5efa\u8bae\u5347\u7ea7\u4e3a1":4,"\u5efa\u8bae\u53d1\u9001\u5b8c\u77ed\u4fe1\u4ee5\u540e":4,"\u5efa\u8bae\u540e\u7eed\u4e0d\u518d\u4f7f\u7528":4,"\u5efa\u8baen\u4ece1\u5f00\u59cb\u987a\u6b21":4,"\u5f00\u542f":4,"\u5f00\u542f\u6216\u8005\u5173\u95edudb\u4ece\u5e93\u5907\u4efd":4,"\u5f00\u542f\u65b9\u821f":4,"\u5f00\u542f\u70ed\u5347\u7ea7":4,"\u5f00\u542f\u7f51\u7edc\u589e\u5f3a1":4,"\u5f00\u542f\u7f51\u7edc\u589e\u5f3a2":4,"\u5f00\u59cb\u65f6\u95f4":4,"\u5f00\u901a\u5171\u4eab\u5e26\u5bbd":4,"\u5f39\u6027ip\u4ed8\u8d39\u65b9\u5f0f":4,"\u5f39\u6027ip\u4ef7\u683c":4,"\u5f39\u6027ip\u5730\u5740":4,"\u5f39\u6027ip\u662f\u5426\u5230\u671f":4,"\u5f39\u6027ip\u7684\u4e1a\u52a1\u7ec4\u6807\u8bc6":4,"\u5f39\u6027ip\u7684\u521b\u5efa\u65f6\u95f4":4,"\u5f39\u6027ip\u7684\u5230\u671f\u65f6\u95f4":4,"\u5f39\u6027ip\u7684\u540d\u79f0":4,"\u5f39\u6027ip\u7684\u5907\u6ce8":4,"\u5f39\u6027ip\u7684\u5916\u7f51\u5e26\u5bbd":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd\u503c":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd\u7c7b\u578b":4,"\u5f39\u6027ip\u7684\u7ebf\u8def\u5982\u4e0b":4,"\u5f39\u6027ip\u7684\u8ba1\u8d39\u6a21\u5f0f":4,"\u5f39\u6027ip\u7684\u8d44\u6e90\u7ed1\u5b9a\u72b6\u6001":4,"\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u7684\u8d44\u6e90id\u5982\u679c\u4e3a\u7a7a":4,"\u5f39\u6027ip\u7684\u8fd0\u8425\u5546\u4fe1\u606f":4,"\u5f39\u6027ip\u7684id":4,"\u5f39\u6027ip\u8ba1\u8d39\u65b9\u5f0fr":4,"\u5f39\u6027ip\u8bf7\u6c42\u7ed1\u5b9a\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5f39\u6027ip\u8bf7\u6c42\u7ed1\u5b9a\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u8bf7\u6c42\u89e3\u7ed1\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5f39\u6027ip\u8bf7\u6c42\u89e3\u7ed1\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u8d44\u6e90id":4,"\u5f3a\u5236\u63d0\u5347\u4e22\u5931\u6570\u636e":4,"\u5f53\u524d\u4ec5\u652f\u6301\u5220\u9664vpc\u7f51\u6bb5":4,"\u5f53\u524d\u4ec5\u652f\u6301mysql":4,"\u5f53\u524d\u53ea\u652f\u6301\u4e00\u4e2a\u5185\u7f51ip":4,"\u5f53\u524d\u652f\u6301mysql\u548cpg":4,"\u5f53\u524d\u78c1\u76d8\u652f\u6301\u7684\u5907\u4efd\u6a21\u5f0f\u53c2\u8003":4,"\u5f53\u524deip\u4ee3\u91d1\u5238id":4,"\u5f53\u53ea\u83b7\u53d6\u8fd9\u4e2a\u7279\u5b9adbid\u7684\u4fe1\u606f\u65f6":4,"\u5f53\u5bfc\u51fa\u67d0\u4e9b\u6570\u636e\u9047\u5230\u95ee\u9898\u540e":4,"\u5f53\u60a8\u662f\u4ee3\u7406\u5e76\u4f7f\u7528\u7b2c\u4e09\u65b9\u7684\u7b7e\u540d\u65f6":4,"\u5f53\u8bf7\u6c42\u6ca1\u6709\u586b\u5199zone\u65f6":4,"\u5f53bandwidthtyp":4,"\u5f53cento":4,"\u5f53db\u7c7b\u578b":4,"\u5f53db\u7c7b\u578b\u4e3amongodb\u65f6":4,"\u5f53monitortype\u4e3apath\u65f6":4,"\u5f53monitortype\u4e3aport\u65f6":4,"\u5f53purpose\u4e3a3":4,"\u5f53purpose\u4e3a3\u65f6":4,"\u5f53retcode\u4e0d\u4e3a0\u65f6":4,"\u5f53udisk\u6302\u8f7d\u6210\u529f\u540e":4,"\u5f53ulbtype\u4e3aoutermode\u65f6":4,"\u5f7b\u5e95\u5220\u9664":4,"\u5f85\u5ba1\u6838":4,"\u5f85\u5e9f\u5f03":4,"\u5fc5\u586b":4,"\u5fc5\u987b\u540c\u65f6\u4f20zone":4,"\u5fc5\u987b\u548czone\u5728\u540c\u4e00region":4,"\u5fc5\u987b\u586b\u5199":4,"\u5fc5\u987b\u586btrue":4,"\u5fc5\u987b\u8bbe\u7f6e":4,"\u5feb\u7167\u540d\u79f0":4,"\u5feb\u7167\u5907\u4efd\u5373\u7269\u7406\u5907\u4efd":4,"\u5feb\u7167\u5907\u4efd\u5907\u4efd\u9ed1\u540d\u5355\u4e0b\u65e0\u6548":4,"\u5feb\u7167\u63cf\u8ff0":4,"\u5feb\u7167\u7248\u672c":4,"\u5feb\u7167\u72b6\u6001":4,"\u5feb\u7167\u7684\u6e90udisk\u7684id":4,"\u5feb\u7167\u7684\u6e90udisk\u7684nam":4,"\u5feb\u7167\u7684udisk\u7684id":4,"\u5feb\u7167id":4,"\u603b\u4ef7\u683c":4,"\u603b\u6570":4,"\u603b\u7684\u6570\u636e\u76d8\u5b58\u50a8\u7a7a\u95f4":4,"\u6062\u590d\u4e2d":4,"\u6062\u590d\u5230\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u65f6\u95f4\u6233":4,"\u6062\u590d\u5931\u8d25":4,"\u610f\u4e49\u4e3a0":4,"\u610f\u4e49\u5206":4,"\u6216":4,"\u6216\u767b\u5f55\u7528\u6237\u4e2d\u5fc3\u67e5\u770b":4,"\u6216\u8005":4,"\u6216\u8005\u628a\u8bc1\u4e66":4,"\u6216\u8005master":4,"\u6240\u521b\u5efa\u5e26\u5bbd\u5305\u7684\u8d44\u6e90id":4,"\u6240\u521b\u5efa\u9879\u76ee\u7684id":4,"\u6240\u5728\u53ef\u7528\u533a":4,"\u6240\u5c5e\u5730\u57df":4,"\u6240\u5c5e\u7684\u4e1a\u52a1\u7ec4id":4,"\u6240\u5c5e\u7684\u5b50\u7f51id":4,"\u6240\u5c5e\u884c\u4e1a":4,"\u6240\u5c5evserverid":4,"\u6240\u5e94\u7528\u8d44\u6e90id":4,"\u6240\u6709\u7b26\u5408\u6761\u4ef6\u7684uhost\u5b9e\u4f8b":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u5728ulb\u4e2d\u7684\u5bf9\u8c61id":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u670d\u52a1\u7aef\u53e3":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u7684\u7c7b\u578b":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u7684\u8d44\u6e90id":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aefrs\u6743\u91cd":4,"\u6240\u6dfb\u52a0\u7684ssl\u8bc1\u4e66\u7c7b\u578b":4,"\u6240\u7ed1\u5b9a\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u6240\u7ed1\u5b9aulb\u5b9e\u4f8bid":4,"\u6240\u7ed1\u5b9avserver\u5b9e\u4f8bid":4,"\u6240\u91ca\u653e\u5f39\u6027ip\u5fc5\u987b\u4e3a\u975e\u7ed1\u5b9a\u72b6\u6001":4,"\u624b\u52a8":4,"\u624b\u673a\u53f7\u7801":4,"\u6253\u5f00":4,"\u6269\u5bb9\u5dee\u4ef7":4,"\u6279\u91cf\u521b\u5efa\u4e0d\u4f1a\u8fd4\u56de":4,"\u6279\u91cf\u521b\u5efa\u4e3b\u673a\u65f6\u5fc5\u586b":4,"\u6279\u91cf\u521b\u5efa\u8be5\u53c2\u6570\u65e0\u6548":4,"\u6279\u91cf\u6dfb\u52a0vserver\u540e\u7aef\u8282\u70b9":4,"\u628aufile\u7684\u955c\u50cf\u6587\u4ef6\u5bfc\u5165\u5230uhost":4,"\u62a2\u5360\u578b\u4e91\u4e3b\u673a":4,"\u62a2\u5360\u6027\u4e91\u4e3b\u673a":4,"\u62a5\u6587\u8f6c\u53d1":4,"\u62a5\u6587\u8f6c\u53d1\u4e0b\u6709":4,"\u62a5\u6587\u8f6c\u53d1\u7684vserver\u4e0b\u8868\u793a\u56de\u8bdd\u4fdd\u6301\u7684\u65f6\u95f4":4,"\u62a5\u6587\u8f6c\u53d1vserver\u53ea\u652f\u6301\u4fee\u6539\u4e3a":4,"\u62c9\u53d6\u6240\u6709\u673a\u623f\u7684\u914d\u7f6e\u6587\u4ef6":4,"\u62d2\u6536\u56det":4,"\u62d2\u7edd":4,"\u6302\u8f7d\u4e2d":4,"\u6302\u8f7d\u7684\u8bbe\u5907\u540d\u79f0":4,"\u6302\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u6302\u8f7d\u7684uhost\u5b9e\u4f8bid":4,"\u6302\u8f7d\u7684uhost\u7684id":4,"\u6302\u8f7d\u7684uhost\u7684ip":4,"\u6302\u8f7d\u7684uhost\u7684nam":4,"\u6307\u505c\u6b62\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u7684uhost\u5b9e\u4f8b":4,"\u6307\u5b9a\u4ece\u65b9\u821f\u6062\u590d\u7684\u5907\u4efd\u65f6\u95f4\u70b9":4,"\u6307\u5b9a\u5e93mysql":4,"\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3":4,"\u6307\u5b9a\u662f\u5426\u662f\u5426\u4f7f\u7528ssd":4,"\u6307\u5b9a\u8868citi":4,"\u6307\u5b9aclasstyp":4,"\u6307\u5b9adbid\u65f6\u65e0\u9700\u586b\u5199classtyp":4,"\u6307\u5b9adbid\u7528\u4e8e\u83b7\u53d6\u8be5db\u7684\u4fe1\u606f":4,"\u6307\u5b9aip":4,"\u6307\u5b9aoffset":4,"\u6307\u5b9asubnetid\u65f6\u5fc5\u586b":4,"\u6307\u5b9avip\u6240\u5c5e\u7684vpc":4,"\u6307\u5f53\u524d\u81ea\u5b9a\u4e49\u955c\u50cf\u7684\u6765\u6e90\u955c\u50cf":4,"\u6309\u5c0f\u65f6\u4ed8\u8d39":4,"\u6309\u5c0f\u65f6\u4ed8\u8d39\u548c\u8bd5\u7528\u8fd9\u4e24\u79cd\u4ed8\u8d39\u6a21\u5f0f\u9700\u8981\u5f00\u901a\u6743\u9650":4,"\u6309\u5c0f\u65f6\u8d2d\u4e70":4,"\u6309\u5e74":4,"\u6309\u5e74\u4ed8\u8d39":4,"\u6309\u65f6":4,"\u6309\u65f6\u4ed8\u8d39":4,"\u6309\u6708":4,"\u6309\u6708\u4ed8\u8d39":4,"\u6309\u7167\u6bcf66\u4e2a\u8fdb\u884c\u5207\u5272":4,"\u6309\u9700":4,"\u6309\u9700\u4ed8\u8d39":4,"\u63a5\u53d7":4,"\u63a5\u53e3\u8fd4\u56de\u6d88\u606f":4,"\u63cf\u8ff0":4,"\u63cf\u8ff0\u5de5\u4f5c\u6d41\u5b9a\u4e49\u7684base64\u5b57\u7b26\u4e32":4,"\u63d0\u5347\u4e3a\u72ec\u5e93\u8fdb\u884c\u4e2d":4,"\u63d0\u793a\u4fe1\u606f":4,"\u642d\u914d\u4f7f\u7528":4,"\u64cd\u4f5c\u540d\u79f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u540d\u79f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u5e73\u53f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u522b":4,"\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b":4,"\u64cd\u4f5c\u7cfb\u7edf\u8be6\u7ec6\u7248\u672c":4,"\u652f\u4ed8\u5468\u671f":4,"\u652f\u4ed8\u65b9\u5f0f":4,"\u652f\u6301":4,"\u652f\u6301100":4,"\u652f\u6301\u4e24\u7c7b\u64cd\u4f5c":4,"\u652f\u6301\u4ee5\u6570\u7ec4\u7684\u65b9\u5f0f":4,"\u652f\u6301\u5730\u57df":4,"\u652f\u6301\u591a\u503c\u4f20\u5165":4,"\u652f\u6301udpn\u7684\u5730\u57df\u4e4b\u4e00":4,"\u6539":4,"\u6539\u6807\u5fd7":4,"\u6539\u914d\u6210\u529f\u7684\u78c1\u76d8id":4,"\u653e\u5165\u56de\u6536\u7ad9":4,"\u653f\u5e9c":4,"\u6570\u503c\u5bf9\u5e94\u7684\u7248\u672c\u5982\u4e0b":4,"\u6570\u5b57":4,"\u6570\u5b57\u4ee5\u53ca\u7b26\u53f7":4,"\u6570\u5b57\u548c\u7b26\u53f7":4,"\u6570\u5b57\u7b49\u90fd\u8ba1\u4e3a1\u4e2a\u5b57":4,"\u6570\u5b57\u8d8a\u5927\u4f18\u5148\u7ea7\u8d8a\u9ad8":4,"\u6570\u636e\u4e2d\u5fc3\u540d\u79f0":4,"\u6570\u636e\u4e2d\u5fc3id":4,"\u6570\u636e\u4ed3\u5e93":4,"\u6570\u636e\u504f\u79fb\u91cf":4,"\u6570\u636e\u5206\u9875\u503c":4,"\u6570\u636e\u5e93":4,"\u6570\u636e\u5e93\u578b":4,"\u6570\u636e\u5e93\u5ba1\u8ba1":4,"\u6570\u636e\u65b9\u821f":4,"\u6570\u636e\u65b9\u821f\u6a21\u5f0f":4,"\u6570\u636e\u76d8":4,"\u6570\u636e\u76d8\u4e0d\u652f\u6301\u7f29\u5bb9":4,"\u6570\u636e\u76d8\u5927\u5c0f":4,"\u6570\u636e\u8282\u70b9":4,"\u6570\u7ec4":4,"\u6570\u7ec4\u7b49\u90fd\u8ba1\u4e3a\u4e00\u4e2a\u5b57":4,"\u6587\u4ef6\u5927\u5c0f\u4e0d\u8d85\u8fc74":4,"\u65ad\u5f00":4,"\u65ad\u7535\u7269\u7406\u4e91\u4e3b\u673a":4,"\u65b0":4,"\u65b0\u52a0\u5761":4,"\u65b0\u5efavpc\u4e92\u901a\u5173\u7cfb":4,"\u65b0\u673a\u623f\u53ea\u63d0\u4f9bssd\u8d44\u6e90":4,"\u65b0\u7684\u540d\u79f0":4,"\u65b0\u7684\u6a21\u677f\u5185\u5bb9":4,"\u65b0\u7684\u6a21\u677f\u540d\u79f0":4,"\u65b0\u7684\u77ed\u4fe1\u7b7e\u540d\u540d\u79f0":4,"\u65b0\u7684\u9879\u76ee\u540d\u79f0":4,"\u65b0\u914d\u7f6e\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u65b0\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"\u65b9\u821f\u662f\u5426\u5f00\u542f":4,"\u65b9\u821f\u673a\u578b":4,"\u65e0":4,"\u65e0\u4ee3\u8868\u6b63\u5e38\u521b\u5efa":4,"\u65e0\u5907\u4efd":4,"\u65e0\u70ed\u5907":4,"\u65e0\u9700\u586b\u5199":4,"\u65e0\u9700\u7b49\u5f85\u5b9e\u4f8b\u6b63\u5e38\u5173\u95ed":4,"\u65e0id":4,"\u65e5\u5fd7\u5305id":4,"\u65e5\u5fd7\u7c7b\u578b":4,"\u65e7":4,"\u65f6":4,"\u65f6\u6307\u5b9a\u5065\u5eb7\u68c0\u67e5\u53d1\u9001\u8bf7\u6c42\u65f6\u7684\u8def\u5f84":4,"\u65f6\u6307\u5b9a\u5065\u5eb7\u68c0\u67e5\u53d1\u9001\u8bf7\u6c42\u65f6http":4,"\u65f6\u65e0\u9700\u6b64\u53c2\u6570":4,"\u65f6\u95f4\u6233":4,"\u662f":4,"\u662f\u5426\u4e3a\u9ed8\u8ba4\u9879\u76ee":4,"\u662f\u5426\u4f7f\u7528\u5f3a\u5236\u624b\u6bb5\u5173\u95eddb":4,"\u662f\u5426\u4f7f\u7528\u9ed1\u540d\u5355\u5907\u4efd":4,"\u662f\u5426\u4f7f\u7528ssd":4,"\u662f\u5426\u4fdd\u7559\u6570\u636e\u76d8":4,"\u662f\u5426\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u662f\u5426\u5220\u9664\u6302\u8f7d\u7684\u6570\u636e\u76d8":4,"\u662f\u5426\u52a0\u5bc6":4,"\u662f\u5426\u53ef\u66f4\u6539":4,"\u662f\u5426\u5b50\u5e10\u6237":4,"\u662f\u5426\u5b89\u88c5uga":4,"\u662f\u5426\u5c5e\u4e8e\u5730\u57df\u7ea7\u522b":4,"\u662f\u5426\u5f00\u542f\u5f02\u6b65\u9ad8\u53ef\u7528":4,"\u662f\u5426\u5f00\u542f\u6570\u636e\u65b9\u821f":4,"\u662f\u5426\u5f00\u542f\u65b9\u821f\u7279\u6027":4,"\u662f\u5426\u5f00\u542f\u70ed\u5347\u7ea7\u7279\u6027":4,"\u662f\u5426\u5f00\u542f\u9ad8\u53ef\u7528":4,"\u662f\u5426\u5f3a\u5236":4,"\u662f\u5426\u5f3a\u5236\u5bfc\u51fa\u5176\u4ed6\u5269\u4f59\u6570\u636e\u9ed8\u8ba4\u662ffalse\u9700\u8981\u540c\u65f6\u8bbe\u7f6ebackupdate\u5b57\u6bb5":4,"\u662f\u5426\u6253\u5f00\u6570\u636e\u65b9\u821f":4,"\u662f\u5426\u6388\u6743":4,"\u662f\u5426\u652f\u6301\u514b\u9686":4,"\u662f\u5426\u652f\u6301\u5f00\u542f\u65b9\u821f":4,"\u662f\u5426\u652f\u6301\u5feb\u7167":4,"\u662f\u5426\u652f\u6301\u6570\u636e\u65b9\u821f":4,"\u662f\u5426\u652f\u6301\u7d27\u6025\u767b\u5f55":4,"\u662f\u5426\u652f\u6301raid":4,"\u662f\u5426\u662f\u4ef2\u88c1\u8282\u70b9":4,"\u662f\u5426\u662f\u52a0\u5bc6\u76d8":4,"\u662f\u5426\u662f\u52a0\u5bc6\u76d8\u5feb\u7167":4,"\u662f\u5426\u662f\u5730\u57df\u7ea7\u522b\u7684\u914d\u7f6e\u6587\u4ef6":4,"\u662f\u5426\u662f\u7cfb\u7edf\u76d8":4,"\u662f\u5426\u662f\u8d22\u52a1\u8d26\u53f7":4,"\u662f\u5426\u662f\u8de8\u673a\u623furedi":4,"\u662f\u5426\u6709\u8d22\u52a1\u6743\u9650":4,"\u662f\u5426\u6709natgw":4,"\u662f\u5426\u67e5\u770b\u4e13\u533a\u91cc\u9762db":4,"\u662f\u5426\u7528\u6237\u5f53\u524d\u9ed8\u8ba4\u6570\u636e\u4e2d\u5fc3":4,"\u662f\u5426\u76f4\u63a5\u5220\u9664":4,"\u662f\u5426\u81ea\u52a8\u5907\u4efd":4,"\u662f\u5426\u81ea\u52a8\u7eed\u8d39":4,"\u662f\u5426\u8d85\u7ea7\u7ba1\u7406\u5458":4,"\u662f\u5426\u8fd4\u56de\u4ef7\u683c":4,"\u662f\u5426\u9009\u53d6\u4e13\u533a\u4e2d\u914d\u7f6e":4,"\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u662f\u5426\u9501\u4e3b\u5e93":4,"\u662f\u5426\u9700\u8981\u81ea\u52a8\u5907\u4efd":4,"\u662f\u5426\u9ed8\u8ba4\u7684\u5f39\u6027\u7f51\u5361\u7684\u4fe1\u606f":4,"\u662f\u6570\u636e\u76d8":4,"\u662f\u7cfb\u7edf\u76d8":4,"\u662f\u9ed8\u8ba4\u5f39\u6027\u7f51\u5361":4,"\u663e\u793amemcach":4,"\u666e\u901a":4,"\u666e\u901a\u4e91\u4e3b\u673a":4,"\u666e\u901a\u4e91\u76d8\u7684\u7ec4\u5408\u652f\u6301\u5f00\u542f\u65b9\u821f":4,"\u666e\u901a\u5347\u7ea7\u4e3a\u65b9\u821f\u673a\u578b":4,"\u666e\u901a\u5355\u70b9\u5b9e\u4f8b":4,"\u666e\u901a\u5355\u70b9\u5b9e\u4f8bha":4,"\u666e\u901a\u5e26\u5bbd\u7c7b\u578b":4,"\u666e\u901a\u6570\u636e\u76d8":4,"\u666e\u901a\u672c\u5730\u76d8":4,"\u666e\u901a\u7248udb\u5b9e\u4f8b":4,"\u666e\u901a\u76d8":4,"\u666e\u901a\u7cfb\u7edf\u76d8":4,"\u666e\u901adb\u5347\u7ea7\u4e3a\u9ad8\u53ef\u7528":4,"\u666e\u901audb\u5207\u6362\u4e3a\u9ad8\u53ef\u7528":4,"\u6682\u4e0d\u652f\u6301":4,"\u6682\u65f6\u4e0d\u5bf9\u5916\u5f00\u653e":4,"\u6682\u65f6\u652f\u630120":4,"\u6682\u65f6\u652f\u630120g":4,"\u6682\u672a\u5bf9\u5916\u5f00\u653e":4,"\u66f4\u6539\u7269\u7406\u673a\u4fe1\u606f":4,"\u66f4\u65b0\u5185\u5bb9\u8f6c\u53d1\u89c4\u5219":4,"\u66f4\u65b0\u5b50\u7f51\u4fe1\u606f":4,"\u66f4\u65b0\u5f39\u6027ip\u540d\u79f0":4,"\u66f4\u65b0\u8def\u7531\u8868\u57fa\u672c\u4fe1\u606f":4,"\u66f4\u65b0\u9632\u706b\u5899\u89c4\u5219":4,"\u66f4\u65b0udb\u914d\u7f6e\u53c2\u6570\u9879":4,"\u66f4\u65b0ulb\u540d\u5b57\u4e1a\u52a1\u7ec4\u5907\u6ce8\u7b49\u5c5e\u6027\u5b57\u6bb5":4,"\u66f4\u65b0ulb\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u66f4\u65b0vpc\u7f51\u6bb5":4,"\u66f4\u65b0vserver\u5b9e\u4f8b\u5c5e\u6027":4,"\u6700\u4f4ecpu\u5e73\u53f0":4,"\u6700\u53f3\u8fb9\u7684\u4e00\u4f4d":4,"\u6700\u53f3\u8fb9\u7684\u4e00\u4f4d\u4e3a\u661f\u671f\u5929\u7684\u5907\u4efd\u5f00\u5173":4,"\u6700\u5927100":4,"\u6700\u592710000000":4,"\u6700\u5927\u503c\u53d7\u5730\u57df\u9650\u5236":4,"\u6700\u5927\u503c\u8bf7\u53c2\u8003":4,"\u6700\u5927\u521b\u5efa\u4e3b\u673a\u6570\u91cf":4,"\u6700\u5927\u6570\u91cf\u4e3a10\u53f0":4,"\u6700\u5c0f\u8fde\u63a5\u6570":4,"\u6700\u8fd15\u5206\u949f\u5e26\u5bbd\u7528\u91cf":4,"\u6708\u4ed8\u65f6":4,"\u6709\u56de\u6536\u7ad9\u6743\u9650":4,"\u6709\u591a\u4e2a\u53c2\u6570\u65f6":4,"\u6709\u6b64\u9879\u4ee3\u8868\u4ece\u5907\u4efd\u4e2d\u521b\u5efa":4,"\u670d\u52a1\u8282\u70b9":4,"\u672a\u5206\u7ec4\u663e\u793a\u4e3a":4,"\u672a\u5f00\u542f\u65b9\u821f":4,"\u672a\u5f00\u542f\u70ed\u5347\u7ea7":4,"\u672a\u652f\u6301":4,"\u672a\u77e5":4,"\u672a\u7ed1\u5b9a":4,"\u672a\u8fc7\u671f":4,"\u672c\u5730\u666e\u901a\u76d8\u652f\u63010":4,"\u672c\u5730\u76d8":4,"\u672c\u5730\u78c1\u76d8":4,"\u672c\u5730ssd\u76d8":4,"\u672c\u6b21\u63d0\u4ea4\u53d1\u9001\u7684\u77ed\u4fe1\u7684\u552f\u4e00id":4,"\u673a\u5173\u4e8b\u4e1a\u5355\u4f4d":4,"\u673a\u623f\u5730\u57df\u4ee3\u53f7":4,"\u6743\u9650\u4f4d\u63a7\u5236\u53ef\u8fbe8000":4,"\u6743\u9650\u4f4d\u63a7\u5236\u53ef\u8fbe8t":4,"\u6765\u6e90\u4e8e":4,"\u679a\u4e3e\u4e3a":4,"\u679a\u4e3e\u503c":4,"\u679a\u4e3e\u503c\u4e3a":4,"\u67e5\u8be2\u4e3b\u5907redi":4,"\u67e5\u8be2\u4e3b\u5907redis\u5907\u4efd":4,"\u67e5\u8be2\u5230\u7684\u603b\u6570\u91cf":4,"\u67e5\u8be2\u67d0\u4e00\u4e2a\u7c7b\u578bdb":4,"\u6807\u51c6\u4e3b\u5907\u7248":4,"\u6807\u51c6\u5927\u5bb9\u91cf\u673a\u578b":4,"\u6807\u51c6\u673a\u578b":4,"\u6807\u51c6\u955c\u50cf":4,"\u6838\u67e5\u5931\u8d25\u4e0d\u8fd4\u56de":4,"\u6838\u67e5\u6210\u529f\u8fd4\u56de\u503c\u4e3a\u53ef\u4ee5\u56de\u6863\u5230\u7684\u6700\u8fd1\u65f6\u523b":4,"\u6838\u67e5db\u662f\u5426\u53ef\u4ee5\u4f7f\u7528\u56de\u6863\u529f\u80fd":4,"\u6838\u67e5db\u662f\u5426\u53ef\u4ee5\u5347\u7ea7\u4e3a\u9ad8\u53ef\u7528":4,"\u6839\u636e\u4e00\u5f20\u73b0\u6709\u8def\u7531\u8868\u590d\u5236\u4e00\u5f20\u65b0\u7684\u8def\u7531\u8868":4,"\u6839\u636e\u53c2\u6570\u7c7b\u578b":4,"\u6839\u636e\u63d0\u4f9b\u4fe1\u606f":4,"\u6839\u636e\u8d44\u6e90\u4f7f\u7528\u91cf\u521b\u5efa\u6307\u5b9a\u6570\u91cf\u7684uphost\u7269\u7406\u4e91\u4e3b\u673a\u5b9e\u4f8b":4,"\u6839\u636e\u8fc7\u6ee4\u6761\u4ef6\u5f97\u5230\u7684\u603b\u6570":4,"\u6839\u636emonitortype\u786e\u8ba4":4,"\u6839\u636epersistencetype\u786e\u5b9a":4,"\u6839\u636epersistencetype\u786e\u8ba4":4,"\u6839\u636euhost\u5b9e\u4f8b\u914d\u7f6e":4,"\u683c\u5f0f":4,"\u683c\u5f0f\u4e3a":4,"\u683c\u5f0f\u4e3aunix":4,"\u683c\u5f0f\u4e3aunix\u65f6\u95f4\u6233":4,"\u6a21\u578b\u5b9a\u4e49":4,"\u6a21\u677f\u4e2d\u7684\u53d8\u91cf\u586b\u5199\u683c\u5f0f":4,"\u6a21\u677f\u53c2\u6570\u4e2a\u6570\u4e0e\u6a21\u677f\u4e0d\u5339\u914d":4,"\u6a21\u677f\u53c2\u6570\u6570\u7ec4":4,"\u6a21\u677f\u540d\u79f0\u548c\u6a21\u677f\u5185\u5bb9\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a":4,"\u6a21\u677f\u7c7b\u578b":4,"\u6a21\u677f\u8bf4\u660e":4,"\u6a21\u677fid":4,"\u6b63\u5e38":4,"\u6b64\u53c2\u6570\u4f200":4,"\u6b64\u5904\u586b\u5199\u8f6c\u6362\u540e\u7684\u5b57\u7b26\u4e32":4,"\u6b64\u5904\u8fd4\u56de\u548cbasicimagename\u4e00\u81f4":4,"\u6b64\u5b57\u6bb5\u4e3a\u7a7a":4,"\u6b64\u5b57\u6bb5\u4f20\u5165\u81ea\u5b9a\u4e49\u4f1a\u8bdd\u4fdd\u6301string":4,"\u6b64\u5b57\u6bb5\u5c55\u793a\u7528\u6237\u81ea\u5b9a\u4e49\u4f1a\u8bddstring":4,"\u6b64\u5b57\u6bb5\u65e0\u610f\u4e49":4,"\u6b65\u957f":4,"\u6b65\u957f\u4e3a10":4,"\u6bcf\u4e00\u4f4d\u4e3a\u4e00\u5468\u4e2d\u4e00\u5929\u7684\u5907\u4efd\u60c5\u51b5":4,"\u6bcf\u4e2a\u4e2d\u6587":4,"\u6bcf\u4e2a\u6c49\u5b57":4,"\u6bcf\u4e2a\u8282\u70b9\u7684\u5185\u5b58\u5927\u5c0f":4,"\u6bcf\u5468\u5907\u4efd\u6570\u91cf":4,"\u6bcf\u5468\u5fc5\u987b\u81f3\u5c11\u8bbe\u7f6e\u4e24\u5929\u5907\u4efd":4,"\u6bcf\u79cd\u6587\u4ef6\u7684\u503c\u5982\u4e0b":4,"\u6bd4\u5982":4,"\u6bd4\u598210":4,"\u6bd4\u5982cento":4,"\u6bd4\u5982local":4,"\u6bd4\u5982uvnet":4,"\u6ca1\u6709slave":4,"\u6cc9\u5dde\u4e3a\u79fb\u52a8\u5355\u7ebfcn":4,"\u6cd5\u5170\u514b\u798f":4,"\u6ce8\u610f":4,"\u6ce8\u610f\u53ea\u6709ssd\u7248\u672c\u7684mysql\u5b9e\u4f8b\u652f\u6301\u8bbe\u7f6e\u4e3asnapshot":4,"\u6ce8\u610f\u73b0\u5728\u53ea\u6709ssd":4,"\u6d1b\u6749\u77f6":4,"\u6d1b\u6749\u77f6\u7b49":4,"\u6d41\u91cf\u8ba1\u8d39":4,"\u6d41\u91cf\u8ba1\u8d39\u6a21\u5f0f":4,"\u6d77\u5916\u673a\u623f":4,"\u6d88\u8017\u77ed\u4fe1\u6761\u6570":4,"\u6dfb\u52a0":4,"\u6dfb\u52a0\u7684routeruleid\u586b\u4efb\u610f\u975e\u7a7a\u5b57\u7b26\u4e32":4,"\u6dfb\u52a0\u7f51\u6bb5\u8bf7\u53c2\u8003":4,"\u6dfb\u52a0ulb\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u6dfb\u52a0vpc\u7f51\u6bb5":4,"\u6e05\u9664udb\u5b9e\u4f8b\u7684log":4,"\u6e90\u53c2\u6570\u7ec4id":4,"\u6e90\u5730\u5740":4,"\u6e90\u5b9e\u4f8b\u7684id":4,"\u6e90\u955c\u50cfid":4,"\u6e90vpc\u6240\u5728\u5730\u57df":4,"\u6e90vpc\u6240\u5728\u9879\u76eeid":4,"\u6e90vpc\u77edid":4,"\u6ee1\u8db3\u6761\u4ef6\u5907\u4efd\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5e26\u5bbd\u5305\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5f39\u6027ip\u5e26\u5bbd\u603b\u548c":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5f39\u6027ip\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u955c\u50cf\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684phost\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684ssl\u8bc1\u4e66\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684ulb\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684vserver\u603b\u6570":4,"\u70ed\u5907":4,"\u7236\u9879\u76ee\u540d\u79f0":4,"\u7236\u9879\u76eeid":4,"\u7248\u672c\u7684":4,"\u7269\u7406\u4e91\u4e3b\u673a":4,"\u7269\u7406\u4e91\u4e3b\u673a\u72b6\u6001":4,"\u7269\u7406\u5907\u4efd":4,"\u7269\u7406\u5907\u4efd\u6b64\u53c2\u6570\u65e0\u6548":4,"\u7269\u7406\u673a":4,"\u7269\u7406\u673a\u540d\u79f0":4,"\u7269\u7406\u673a\u5907\u6ce8":4,"\u7269\u7406\u673a\u5e8f\u5217\u53f7":4,"\u7269\u7406\u673a\u7c7b\u578b":4,"\u7269\u7406\u673a\u8d44\u6e90id":4,"\u7279\u6b8a\u72b6\u6001\u6807\u8bc6":4,"\u72b6\u6001":4,"\u72b6\u6001\u6807\u8bb0":4,"\u72b6\u6001\u8bf4\u660e":4,"\u73b0\u4ef7":4,"\u751f\u6210\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u751f\u6548\u65f6\u95f4":4,"\u7528":4,"\u7528\u4e8e\u63a7\u5236\u663e\u793a\u54ea\u4e9b\u673a\u623f\u5730\u57df\u53ef\u4ee5\u4f7f\u7528ssh\u7279\u6027":4,"\u7528\u5206\u9694\u7b26\u8868\u793a":4,"\u7528\u5355\u5f15\u53f7\u5305\u542b":4,"\u7528\u6237\u521d\u59cb\u5316\u811a\u672c":4,"\u7528\u6237\u53ef\u901a\u8fc7\u6307\u5b9a\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b":4,"\u7528\u6237\u540d\u4e0b\u603b\u7684\u5907\u4efd\u4e2a\u6570":4,"\u7528\u6237\u5728\u6b64\u6570\u636e\u4e2d\u5fc3\u7684\u6743\u9650\u4f4d":4,"\u7528\u6237\u624b\u673a":4,"\u7528\u6237\u6298\u540e\u4ef7":4,"\u7528\u6237\u7684\u8bc1\u4e66":4,"\u7528\u6237\u81ea\u5b9a\u4e49":4,"\u7528\u6237\u81ea\u5b9a\u4e49\u9632\u706b\u5899":4,"\u7528\u6237\u81ea\u5b9a\u4e49kei":4,"\u7528\u6237\u90ae\u7bb1":4,"\u7528\u6237db\u7ec4\u7684\u6570\u91cf":4,"\u7528\u6237id":4,"\u7533\u8bf7\u5185\u7f51vip":4,"\u7533\u8bf7\u5230\u7684":4,"\u7533\u8bf7\u5230\u7684eip\u8d44\u6e90id":4,"\u7533\u8bf7\u5230\u7684vip\u5730\u5740":4,"\u7533\u8bf7\u5f39\u6027ip":4,"\u7533\u8bf7\u6570\u91cf":4,"\u7535\u4fe1":4,"\u7535\u6e90\u72b6\u6001":4,"\u7535\u8bdd\u53f7\u7801\u6570\u7ec4":4,"\u7535\u8bdd\u53f7\u7801\u683c\u5f0f\u4e3a":4,"\u7559\u7a7a\u8fd4\u56de\u5168\u90e8":4,"\u767b\u5f55\u5bc6\u7801":4,"\u7684\u4e3b\u673a1":4,"\u7684\u6574\u6570":4,"\u7684\u7c7b\u578b":4,"\u7684\u8d44\u6e90id":4,"\u76d1\u542c\u5668\u7c7b\u578b":4,"\u76ee\u524d\u4e3b\u8981\u53ef\u7528\u533a":4,"\u76ee\u524d\u4ec5\u652f\u63011":4,"\u76ee\u524d\u4ec5\u652f\u6301\u9ed8\u8ba4\u914d\u7f6eid":4,"\u76ee\u524d\u4ec5\u652f\u6301normal":4,"\u76ee\u524d\u4ec5\u9009\u62e9\u666e\u901a\u672c\u5730\u76d8":4,"\u76ee\u524d\u5305\u542bnetenhnc":4,"\u76ee\u524d\u53ea\u652f\u6301pem\u683c\u5f0f":4,"\u76ee\u524d\u652f\u6301":4,"\u76ee\u524d\u652f\u6301\u4ee5\u4e0b\u51e0\u6863":4,"\u76ee\u524d\u652f\u6301n1":4,"\u76ee\u524did\u7684\u53d6\u503c\u8303\u56f4\u4e3a":4,"\u76ee\u6807\u5730\u57df":4,"\u76ee\u6807\u7aef\u53e3":4,"\u76ee\u6807\u955c\u50cf\u540d\u79f0":4,"\u76ee\u6807\u955c\u50cf\u63cf\u8ff0":4,"\u76ee\u6807\u955c\u50cfid":4,"\u76ee\u6807\u9879\u76eeid":4,"\u76ee\u7684\u5730\u5740":4,"\u76ee\u7684\u7f51\u6bb5":4,"\u76ee\u7684\u9879\u76eeid":4,"\u76ee\u7684vpc\u6240\u5728\u5730\u57df":4,"\u76ee\u7684vpc\u6240\u5728\u9879\u76eeid":4,"\u76ee\u7684vpc\u77edid":4,"\u76ee\u7684vpc\u9879\u76eeid":4,"\u76f4\u63a5\u5173\u95eduhost\u5b9e\u4f8b\u7535\u6e90":4,"\u7701\u4efd":4,"\u771f\u5b9e\u4e3b\u673aip":4,"\u77ed\u4fe1\u5b57\u6570\u8d85\u8fc770\u4e2a\u540e":4,"\u77ed\u4fe1\u6700\u5927\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7600\u4e2a\u5b57":4,"\u77ed\u4fe1\u6a21\u677f\u5185\u5bb9":4,"\u77ed\u4fe1\u6a21\u677f\u540d\u79f0":4,"\u77ed\u4fe1\u6a21\u677f\u72b6\u6001":4,"\u77ed\u4fe1\u6a21\u677f\u7528\u9014\u7c7b\u578b":4,"\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u539f\u56e0\u8bf4\u660e":4,"\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u77ed\u4fe1\u6a21\u677f\u7981\u6b62\u4ec5\u5305\u62ec\u53d8\u91cf\u7684\u60c5\u51b5":4,"\u77ed\u4fe1\u6a21\u677fid":4,"\u77ed\u4fe1\u7b7e\u540d\u540d\u79f0":4,"\u77ed\u4fe1\u7b7e\u540d\u6388\u6743\u59d4\u6258\u6587\u4ef6":4,"\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u539f\u56e0":4,"\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u77ed\u4fe1\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6":4,"\u77ed\u4fe1\u7b7e\u540did":4,"\u786c\u4ef6\u9694\u79bb\u7ec4id":4,"\u78c1\u76d8\u540d\u79f0":4,"\u78c1\u76d8\u5907\u4efd\u65b9\u6848":4,"\u78c1\u76d8\u5927\u5c0f":4,"\u78c1\u76d8\u5c5e\u6027":4,"\u78c1\u76d8\u6570\u91cf":4,"\u78c1\u76d8\u662f\u5426\u52a0\u5bc6":4,"\u78c1\u76d8\u76d8\u7b26":4,"\u78c1\u76d8\u7a7a\u95f4":4,"\u78c1\u76d8\u7c7b\u578b":4,"\u78c1\u76d8id":4,"\u78c1\u76d8io\u6027\u80fd":4,"\u793a\u4f8b":4,"\u793e\u4f1a\u4fe1\u7528\u4ee3\u7801\u8bc1\u4e66":4,"\u7981\u7528":4,"\u7981\u752822\u7aef\u53e3":4,"\u79c1\u6709\u4e13\u533a\u4e3b\u673a":4,"\u79c1\u94a5":4,"\u79d2":4,"\u79f0\u547c":4,"\u79fb\u51fa\u5171\u4eab\u5e26\u5bbd\u540e":4,"\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"\u7a7a\u95f4\u540d\u79f0":4,"\u7a7a\u95f4\u7c7b\u578b":4,"\u7aef\u53e3":4,"\u7aef\u53e3\u53f7":4,"\u7aef\u53e3\u68c0\u67e5":4,"\u7b26\u53f7":4,"\u7b26\u5408\u6761\u4ef6\u7684\u5171\u4eab\u5e26\u5bbd\u603b\u6570":4,"\u7b26\u5408\u90fd\u8ba1\u4e3a\u4e00\u4e2a\u5b57":4,"\u7b2c\u4e00\u4e2a\u53c2\u6570\u4ee3\u8868\u534f\u8bae":4,"\u7b2c\u4e09\u4e2a\u53c2\u6570\u4e3aip":4,"\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4ee3\u8868\u7aef\u53e3\u53f7":4,"\u7b2c\u4e94\u4e2a\u53c2\u6570\u4f18\u5148\u7ea7":4,"\u7b2c\u516d\u4e2a\u53c2\u6570\u4e3a\u8be5\u6761\u89c4\u5219\u7684\u81ea\u5b9a\u4e49\u5907\u6ce8":4,"\u7b2c\u56db\u4e2a\u53c2\u6570\u4e3aaccept":4,"\u7b49":4,"\u7b49\u5b57\u6837":4,"\u7b7e\u540d\u5185\u5bb9":4,"\u7b7e\u540d\u5ba1\u6838\u5931\u8d25\u539f\u56e0":4,"\u7b7e\u540d\u72b6\u6001":4,"\u7b7e\u540d\u7528\u9014":4,"\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6\u7c7b\u578b":4,"\u7b7e\u540d\u7c7b\u578b":4,"\u7b7e\u540did":4,"\u7b7e\u540did\u548c\u7b7e\u540d\u81f3\u5c11\u9700\u586b\u51991\u9879":4,"\u7ba1\u7406\u5458":4,"\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u7ba1\u7406\u5458\u5e10\u6237\u540d":4,"\u7c7b\u578b":4,"\u7cbe\u786e\u5230\u5c0f\u6570\u70b9\u540e2\u4f4d":4,"\u7cfb\u7edf\u4f1a\u81ea\u52a8\u6dfb\u52a0":4,"\u7cfb\u7edf\u5927\u5c0f":4,"\u7cfb\u7edf\u76d8":4,"\u7cfb\u7edf\u76d8\u4e0d\u652f\u6301\u7f29\u5bb9":4,"\u7cfb\u7edf\u76d8\u5927\u5c0f":4,"\u7cfb\u7edf\u76d8\u72b6\u6001":4,"\u7cfb\u7edf\u901a\u77e5\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u7ebf\u8def\u5e26\u5bbd\u4e0a\u9650":4,"\u7ec4\u4ef6\u4fe1\u606f":4,"\u7ec4\u540d\u79f0":4,"\u7ec4\u7684\u603b\u7684\u8282\u70b9\u4e2a\u6570":4,"\u7ec4\u7684id":4,"\u7ec4\u7ec7\u673a\u6784\u4ee3\u7801\u8bc1\u4e66":4,"\u7ec4\u81ea\u52a8\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u7ec4id":4,"\u7ed1\u5b9a\u4e86\u8be5\u8def\u7531\u8868\u7684\u5b50\u7f51\u6570\u91cf":4,"\u7ed1\u5b9a\u544a\u8b66\u6a21\u677f\u5931\u8d25\u53ea\u4f1a\u5728\u540e\u53f0\u6709\u65e5\u5fd7":4,"\u7ed1\u5b9a\u5b50\u7f51\u7684\u8def\u7531\u8868":4,"\u7ed1\u5b9a\u7684\u5171\u4eab\u5e26\u5bbdid":4,"\u7ed1\u5b9a\u8be5\u9632\u706b\u5899\u7684\u8d44\u6e90id":4,"\u7ed1\u5b9a\u8d44\u6e90\u603b\u6570":4,"\u7ed1\u5b9a\u8d44\u6e90\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u7ed1\u5b9a\u9632\u706b\u5899\u7ec4\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u7ed1\u5b9a\u9632\u706b\u5899\u7ec4\u7684\u8d44\u6e90id":4,"\u7ed3\u675f\u65f6\u95f4":4,"\u7f16\u7801":4,"\u7f16\u8f91udb\u5b9e\u4f8b\u7684\u5907\u4efd\u9ed1\u540d\u5355":4,"\u7f3a\u7701\u503c":4,"\u7f3a\u7701\u503c\u4e3a":4,"\u7f51\u5361\u5347\u964d\u7ea7":4,"\u7f51\u7ad9\u540d\u79f0":4,"\u7f51\u7edc\u589e\u5f3a":4,"\u7f51\u7edc\u589e\u5f3a1":4,"\u7f51\u7edc\u589e\u5f3a2":4,"\u7f51\u7edc\u589e\u5f3a\u7b49":4,"\u7f51\u7edc\u72b6\u6001":4,"\u7f51\u7edc\u73af\u5883":4,"\u7f51\u7edc\u76d8":4,"\u7f51\u7edcid":4,"\u8054\u901a":4,"\u81ea\u5236\u955c\u50cfid":4,"\u81ea\u52a8":4,"\u81ea\u52a8\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u81ea\u52a8\u751f\u6210":4,"\u81ea\u52a8\u751f\u6210kei":4,"\u81ea\u52a8\u7eed\u8d39":4,"\u81ea\u52a8\u9009\u62e9\u52a0\u5bc6\u76d8":4,"\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u81ea\u7528":4,"\u81f3\u5c116\u4f4d":4,"\u81f3\u5c11\u524d\u4e00\u5929":4,"\u8282\u70b9\u5206\u914d\u7684\u670d\u52a1\u7aef\u53e3":4,"\u8282\u70b9\u7684\u865a\u62dfip\u5730\u5740":4,"\u8282\u70b9\u7684\u914d\u7f6eid":4,"\u82e5\u4e0d\u4f20\u503c":4,"\u82e5\u4e0d\u4f20\u5165\u56fd\u9645\u533a\u53f7":4,"\u82e5\u4e0d\u586b\u5199":4,"\u82e5\u4e0d\u6307\u5b9a\u5219\u8fd4\u56de\u5f53\u524d\u6570\u636e\u4e2d\u5fc3\u4e2d\u6240\u6709\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u4e0d\u6307\u5b9a\u5219\u8fd4\u56de\u5f53\u524d\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u4e0b\u6240\u6709vserver\u7684\u4fe1\u606f":4,"\u82e5\u4e3a\u7a7a":4,"\u82e5\u586b\u5199":4,"\u82e5\u5bfc\u5165\u63a7\u5236\u53f0\u4e0a\u6ca1\u6709\u7684\u64cd\u4f5c\u7cfb\u7edf":4,"\u82e5\u5f00\u901a\u4e86\u6570\u636e\u65b9\u821f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u6307\u5b9a\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u6307\u5b9a\u7684vserver\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u6307\u5b9a\u7684\u6a21\u677fid\u5ba1\u6838\u672a\u901a\u8fc7":4,"\u82e5\u65e0\u6b64\u5b57\u6bb5\u5219\u4e0d\u505a\u4fee\u6539":4,"\u82e5\u6a21\u677fid\u6307\u5b9a\u7684\u6a21\u677f\u65e0\u53ef\u53d8\u53c2\u6570":4,"\u82e5\u6ca1\u6709\u7533\u8bf7\u9ed8\u8ba4\u7b7e\u540d\u4e0d\u5141\u8bb8\u53d1\u9001":4,"\u82e5\u76f4\u63a5\u901a\u8fc7\u57fa\u7840\u955c\u50cf\u521b\u5efa":4,"\u82e5\u8d85\u8fc712\u5c0f\u65f6\u672a\u8fd4\u56de":4,"\u82e5\u8f93\u5165\u6b64\u5b57\u6bb5":4,"\u82e5\u8f93\u5165\u7684\u7b7e\u540d\u6ca1\u6709\u7533\u8bf7":4,"\u82e5\u9700\u8981\u8bf7\u7533\u8bf7\u5f00\u901a\u76f8\u5173\u6743\u9650":4,"\u82f1\u6587":4,"\u8303\u56f4":4,"\u8303\u56f4\u662f":4,"\u83b7\u53d6":4,"\u83b7\u53d6\u4e13\u7ebf\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6\u4e3b\u5907redis\u5907\u4efd\u4e0b\u8f7d\u94fe\u63a5":4,"\u83b7\u53d6\u4e3b\u673a\u6216\u4e3b\u673a\u5217\u8868\u4fe1\u606f":4,"\u83b7\u53d6\u5171\u4eab\u5e26\u5bbd\u4fe1\u606f":4,"\u83b7\u53d6\u5185\u7f51vip\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u53c2\u6570\u7ec4\u8be6\u7ec6\u53c2\u6570\u4fe1\u606f":4,"\u83b7\u53d6\u5b50\u7f51\u4fe1\u606f":4,"\u83b7\u53d6\u5e26\u5bbd\u7528\u91cf\u4fe1\u606f":4,"\u83b7\u53d6\u5f39\u6027ip\u4ef7\u683c":4,"\u83b7\u53d6\u5f39\u6027ip\u4fe1\u606f":4,"\u83b7\u53d6\u5f39\u6027ip\u5e26\u5bbd\u6539\u52a8\u4ef7\u683c":4,"\u83b7\u53d6\u5f39\u6027ip\u8ba1\u8d39\u6a21\u5f0f":4,"\u83b7\u53d6\u5f53\u524d\u652f\u6301\u7684\u4e13\u7ebf\u7ebf\u8def\u5217\u8868":4,"\u83b7\u53d6\u6240\u6709\u8ba1\u8d39\u6a21\u5f0f\u7684\u4ef7\u683c":4,"\u83b7\u53d6\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u7684\u4e1a\u52a1\u7ec4\u5217\u8868":4,"\u83b7\u53d6\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u955c\u50cf\u5217\u8868":4,"\u83b7\u53d6\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u7ba1\u7406vnc\u914d\u7f6e\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u6700\u65e9\u53ef\u56de\u6863\u65f6\u95f4\u70b9":4,"\u83b7\u53d6\u67d0\u5730\u57df\u4e0b\u7684\u5e26\u5bbd\u5305\u4fe1\u606f":4,"\u83b7\u53d6\u7269\u7406\u4e91\u4e3b\u673a\u955c\u50cf\u5217\u8868":4,"\u83b7\u53d6\u7269\u7406\u673a\u4ef7\u683c\u5217\u8868":4,"\u83b7\u53d6\u7269\u7406\u673a\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u7269\u7406\u673atag\u5217\u8868":4,"\u83b7\u53d6\u7528\u6237\u4fe1\u606f":4,"\u83b7\u53d6\u7528\u6237\u5728\u5404\u6570\u636e\u4e2d\u5fc3\u7684\u6743\u9650\u7b49\u4fe1\u606f":4,"\u83b7\u53d6\u77ed\u4fe1\u53d1\u9001\u56de\u6267\u4fe1\u606f":4,"\u83b7\u53d6\u8d44\u6e90\u5176\u4ed6\u4fe1\u606f":4,"\u83b7\u53d6\u8def\u7531\u8868\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u955c\u50cfid":4,"\u83b7\u53d6\u9632\u706b\u5899\u7ec4\u4fe1\u606f":4,"\u83b7\u53d6\u9632\u706b\u5899\u7ec4\u6240\u7ed1\u5b9a\u8d44\u6e90\u7684\u5916\u7f51ip":4,"\u83b7\u53d6\u9879\u76ee\u5217\u8868":4,"\u83b7\u53d6globalssh\u5b9e\u4f8b\u5217\u8868":4,"\u83b7\u53d6globalssh\u8986\u76d6\u7684\u5730\u533a\u5217\u8868":4,"\u83b7\u53d6ssl\u8bc1\u4e66\u4fe1\u606f":4,"\u83b7\u53d6udb\u5907\u4efd\u4e0b\u8f7d\u5730\u5740":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u5347\u964d\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u5907\u4efd\u72b6\u6001":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u72b6\u6001":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u7684\u5907\u4efd\u9ed1\u540d\u5355":4,"\u83b7\u53d6udb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684binlog\u5217\u8868":4,"\u83b7\u53d6udb\u652f\u6301\u7684\u7c7b\u578b\u4fe1\u606f":4,"\u83b7\u53d6udb\u6700\u65e9\u53ef\u56de\u6863\u7684\u65f6\u95f4\u70b9":4,"\u83b7\u53d6udb\u7684binlog\u5907\u4efd\u5730\u5740":4,"\u83b7\u53d6udb\u7684slowlog\u5907\u4efd\u5730\u5740":4,"\u83b7\u53d6udisk\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udisk\u5b9e\u4f8b":4,"\u83b7\u53d6udisk\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udisk\u5feb\u7167":4,"\u83b7\u53d6uhost\u5b9e\u4f8b\u5347\u7ea7\u914d\u7f6e\u7684\u4ef7\u683c":4,"\u83b7\u53d6uhost\u5b9e\u4f8b\u7684\u4ef7\u683c":4,"\u83b7\u53d6ulb\u4e0b\u7684vserver\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6ulb\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6umem\u5185\u5b58\u7a7a\u95f4\u5217\u8868":4,"\u83b7\u53d6umem\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umem\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umemcache\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umemcache\u7ec4\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6uredis\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6vpc\u4e92\u901a\u4fe1\u606f":4,"\u83b7\u53d6vpc\u4fe1\u606f":4,"\u865a\u62df\u7f51\u5361":4,"\u865a\u62dfcpu\u6838\u6570":4,"\u865a\u62dfip":4,"\u884c\u4e1a\u955c\u50cf":4,"\u884c\u4e1a\u955c\u50cf\u7c7b\u578b":4,"\u8868\u793a":4,"\u8868\u793a\u4ece\u5e93\u5907\u4efd\u5f00\u5173\u6253\u5f00":4,"\u8868\u793a\u4f7f\u7528\u5feb\u7167":4,"\u8868\u793a\u4f7f\u7528\u903b\u8f91\u5907\u4efd":4,"\u8868\u793a\u5177\u4f53\u9519\u8bef\u63cf\u8ff0":4,"\u8868\u793a\u5347\u7ea7":4,"\u8868\u793a\u53ea\u62c9\u53d6\u8de8\u53ef\u7528\u533a\u7684\u76f8\u5173\u914d\u7f6e\u6587\u4ef6":4,"\u8868\u793a\u6253\u5f00\u661f\u671f\u516d\u548c\u661f\u671f\u4e94\u7684\u81ea\u52a8\u5907\u4efd\u529f\u80fd":4,"\u8868\u793a\u662f\u5171\u4eab\u5e26\u5bbd":4,"\u8868\u793a\u7981\u7528\u8fde\u63a5\u4fdd\u6301":4,"\u8868\u793a\u7cfb\u52171":4,"\u8868\u793a\u7cfb\u52172":4,"\u88ab\u514b\u9686\u7684\u8def\u7531\u8868id":4,"\u88ab\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684\u7248\u672c\u53f7":4,"\u88ab\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684id":4,"\u88ab\u7981\u7528":4,"\u88abssh\u8bbf\u95ee\u7684eip":4,"\u88abssh\u8bbf\u95ee\u7684ip":4,"\u88abssh\u8bbf\u95ee\u7684ip\u6240\u5728\u5730\u533a":4,"\u8981\u5220\u9664\u7684udisk\u7684id":4,"\u8981\u52a0\u5165\u5171\u4eab\u5e26\u5bbd\u7684eip\u7684\u8d44\u6e90id":4,"\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684groupid":4,"\u8981\u67e5\u8be2\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u89c1":4,"\u89c4\u5219id":4,"\u89c4\u683c\u8c03\u6574\u5dee\u4ef7":4,"\u89c4\u8303\u793a\u4f8b":4,"\u89e3\u7ed1eip":4,"\u89e3\u7ed1eip\u540e":4,"\u8ba1\u7b97\u7aef\u53e3":4,"\u8ba1\u8d39\u65f6\u957f":4,"\u8ba1\u8d39\u65f6\u95f4\u5355\u4f4d":4,"\u8ba1\u8d39\u6a21\u5f0f":4,"\u8ba1\u8d39\u6a21\u5f0f\u4e3adynamic\u65f6":4,"\u8ba1\u8d39\u7c7b\u578b":4,"\u8bbe\u5b9a\u4e1a\u52a1\u7ec4":4,"\u8bbe\u5b9a\u5b9e\u4f8b\u540d\u79f0":4,"\u8bbe\u5b9a\u5bc6\u7801":4,"\u8bbe\u7f6e\u5f39\u6027ip\u8ba1\u8d39\u6a21\u5f0f":4,"\u8bbe\u7f6e\u89c4\u5219\u8bf7\u53c2\u7167disktyp":4,"\u8bbe\u7f6eudisk\u6570\u636e\u65b9\u821f\u7684\u72b6\u6001":4,"\u8bbf\u95ee\u8be5\u57df\u540d\u53ef\u5c31\u8fd1\u63a5\u5165":4,"\u8bc1\u4e66\u5185\u5bb9\u4f20\u8fc7\u6765":4,"\u8bd5\u7528":4,"\u8be5\u4e1a\u52a1\u7ec4\u4e2d\u5305\u542b\u7684\u4e3b\u673a\u4e2a\u6570":4,"\u8be5\u503c\u4e3a\u7a7a":4,"\u8be5\u503c\u53ef\u4ee5\u901a\u8fc7describeudbbackup\u83b7\u53d6":4,"\u8be5\u503c\u53ef\u4ee5\u901a\u8fc7describeudbinstance\u83b7\u53d6":4,"\u8be5\u503c\u53ef\u901a\u8fc7describeudbinstance\u83b7\u53d6":4,"\u8be5\u5904\u663e\u793a\u4e3a\u5171\u4eab\u5e26\u5bbd\u503c":4,"\u8be5\u5904\u663e\u793a\u8fd9\u4e2a\u5f39\u6027ip\u7684\u5e26\u5bbd":4,"\u8be5\u5b57\u6bb5\u65e0\u6548":4,"\u8be5\u5f39\u6027ip\u4e0d\u4f1a\u88ab\u4f7f\u7528":4,"\u8be5\u5feb\u7167\u7684\u5bc6\u6587\u5bc6\u94a5":4,"\u8be5\u5feb\u7167\u7684cmk":4,"\u8be5\u5feb\u7167cmk\u7684\u72b6\u6001":4,"\u8be5\u76d8\u5feb\u7167\u4e0a\u9650":4,"\u8be5\u76d8\u5feb\u7167\u4e2a\u6570":4,"\u8be5\u76d8\u7684\u5bc6\u6587\u5bc6\u94a5":4,"\u8be5\u76d8\u7684cmk":4,"\u8be5\u76d8cmk\u7684\u72b6\u6001":4,"\u8be5\u914d\u7f6e\u6587\u4ef6\u662f\u5426\u662f\u5730\u57df\u7ea7\u522b\u914d\u7f6e\u6587\u4ef6":4,"\u8be5\u9879\u4e3a\u5fc5\u586b\u9879":4,"\u8be5\u9879\u5fc5\u586b":4,"\u8be6\u89c1describeuredisversion\u8fd4\u56de\u7ed3\u679c":4,"\u8be6\u89c1param":4,"\u8be6\u8be2\u6280\u672f\u652f\u6301":4,"\u8bf4\u660e\u5982\u4e0b":4,"\u8bf4\u660e\u67e5\u770b\u6574\u4e2a\u53ef\u7528\u533a\u7684\u4e13\u533a\u7684db":4,"\u8bf7\u52ff\u5c06\u591a\u4e2a\u7ed1\u5b9a\u5728\u540c\u4e00\u8d44\u6e90\u7684\u5f39\u6027ip\u8bbe\u7f6e\u4e3a\u76f8\u540c\u6743\u91cd":4,"\u8bf7\u53c2\u8003":4,"\u8bf7\u53c2\u8003\u63a7\u5236\u53f0":4,"\u8bf7\u53c2\u8003\u63a7\u5236\u53f0\u7684\u955c\u50cf\u7248\u672c":4,"\u8bf7\u53c2\u8003describecoupon\u63a5\u53e3":4,"\u8bf7\u53c2\u8003describeumemcachegroup\u63a5\u53e3":4,"\u8bf7\u53c2\u8003describeuredisgroup\u63a5\u53e3":4,"\u8bf7\u6c42\u4e2d\u7684protocolversion\u5b57\u6bb5\u4e3a0\u6216\u6ca1\u6709\u8be5\u5b57\u6bb5\u65f6":4,"\u8bf7\u6c42\u4e2d\u7684protocolversion\u5b57\u6bb5\u4e3a1\u65f6":4,"\u8bf7\u6c42\u4ee3\u7406":4,"\u8bf7\u6c42\u4ee3\u7406\u53ea\u652f\u6301\u4fee\u6539\u4e3a":4,"\u8bf7\u6c42\u4ee3\u7406\u6a21\u5f0f\u4e0b\u6709":4,"\u8bf7\u6c42\u4ee3\u7406\u7684vserver\u4e0b\u8868\u793a\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"\u8bf7\u6c42\u521b\u5efa\u7ec4\u7684\u540d\u79f0":4,"\u8bf7\u6c42\u534f\u8bae\u7248\u672c":4,"\u8bf7\u901a\u8fc7":4,"\u8bf7\u901a\u8fc7describecoupon\u63a5\u53e3\u67e5\u8be2":4,"\u8bf7\u9075\u7167":4,"\u8c03\u6574\u4e3b\u5907redis\u5bb9\u91cf":4,"\u8c03\u6574\u5171\u4eab\u5e26\u5bbd\u7684\u5e26\u5bbd\u503c":4,"\u8c03\u6574\u5185\u5b58\u7a7a\u95f4\u5bb9\u91cf":4,"\u8c03\u6574\u540e\u4e13\u7ebf\u5e26\u5bbd":4,"\u8c03\u6574\u540e\u5927\u5c0f":4,"\u8c03\u6574\u540e\u7684ssh\u767b\u9646\u7aef\u53e3":4,"\u8c03\u6574\u5e26\u5bbd\u540e\u7684eip\u4ef7\u683c":4,"\u8c03\u6574\u5f39\u6027ip\u7684\u5916\u7f51\u5e26\u5bbd":4,"\u8c03\u6574\u7684\u76ee\u6807\u5e26\u5bbd\u503c":4,"\u8c03\u6574udisk\u5bb9\u91cf":4,"\u8c03\u7528\u63a5\u53e3createusmssignature\u7533\u8bf7\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3createusmstemplate\u7533\u8bf7\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u63a5\u53e3deleteusmssignature\u5220\u9664\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3deleteusmstemplate\u5220\u9664\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u63a5\u53e3queryusmssignature\u67e5\u8be2\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u72b6\u6001":4,"\u8c03\u7528\u63a5\u53e3queryusmstemplate\u67e5\u8be2\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u72b6\u6001":4,"\u8c03\u7528\u63a5\u53e3updateusmssignature\u4fee\u6539\u672a\u901a\u8fc7\u5ba1\u6838\u7684\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3updateusmstemplate\u4fee\u6539\u672a\u901a\u8fc7\u5ba1\u6838\u7684\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u65b9\u5f0f\u4e3e\u4f8b":4,"\u8c03\u7528\u8be5api":4,"\u8d1f\u8f7d\u5747\u8861":4,"\u8d1f\u8f7d\u5747\u8861\u5668":4,"\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684id":4,"\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bid":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u540d\u5b57":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u5907\u6ce8":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u8d44\u6e90id":4,"\u8d1f\u8f7d\u5747\u8861\u8d44\u6e90id":4,"\u8d2d\u4e70\u5230\u6708\u5e95":4,"\u8d2d\u4e70\u53f0\u6570":4,"\u8d2d\u4e70\u6570\u91cf":4,"\u8d2d\u4e70\u65f6\u957f":4,"\u8d2d\u4e70\u7684\u65f6\u957f":4,"\u8d2d\u4e70db\u5b9e\u4f8b\u6570\u91cf":4,"\u8d2d\u4e70udisk\u5927\u5c0f":4,"\u8d2d\u4e70udisk\u7684\u65f6\u957f":4,"\u8d2d\u4e70umem\u5927\u5c0f":4,"\u8d2d\u4e70umem\u7684\u65f6\u957f":4,"\u8d2d\u4e70umemcache\u5927\u5c0f":4,"\u8d2d\u4e70umemcache\u7684\u65f6\u957f":4,"\u8d2d\u4e70uredis\u5927\u5c0f":4,"\u8d44\u6e90":4,"\u8d44\u6e90\u521b\u5efa\u65f6\u95f4\u6233":4,"\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u552f\u4e00\u6807\u8bc6":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u8d44\u6e90id":4,"\u8d44\u6e90\u662f\u5426\u8fc7\u671f":4,"\u8d44\u6e90\u6709\u6548\u671f":4,"\u8d44\u6e90\u7684\u552f\u4e00\u6807\u8bc6":4,"\u8d44\u6e90\u7684ipv6\u5730\u5740":4,"\u8d44\u6e90\u77ed":4,"\u8d44\u6e90\u7c7b\u578b":4,"\u8d44\u6e90\u7cfb\u7edf\u4e2d":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u8d44\u6e90id":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u5b9e\u4f8bid":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684id":4,"\u8d44\u6e90\u8fc7\u671f\u65f6\u95f4\u6233":4,"\u8d44\u6e90id":4,"\u8d44\u6e90ip":4,"\u8d77\u59cb\u65f6\u95f4":4,"\u8d85\u8fc7\u6700\u5927\u7248\u672c\u4f1a\u8fd4\u56de\u9519\u8bef":4,"\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528\u5907\u5e93\u6240\u5728\u53ef\u7528\u533a":4,"\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528db\u7684\u5907\u5e93\u6240\u5728\u533a\u57df":4,"\u8de8\u673a\u623f\u9ad8\u53ef\u7528\u5907\u5e93\u6240\u5728\u53ef\u7528\u533a":4,"\u8de8\u673a\u623furedi":4,"\u8def\u5f84":4,"\u8def\u5f84\u68c0\u67e5":4,"\u8def\u7531\u4e0b\u4e00\u8df3id":4,"\u8def\u7531\u7b56\u7565\u589e":4,"\u8def\u7531\u8868\u540d\u79f0":4,"\u8def\u7531\u8868\u5907\u6ce8":4,"\u8def\u7531\u8868\u6240\u5c5evpc":4,"\u8def\u7531\u8868\u7c7b\u578b":4,"\u8def\u7531\u8868id":4,"\u8def\u7531\u89c4\u5219\u5907\u6ce8":4,"\u8def\u7531\u89c4\u5219\u7c7b\u578b":4,"\u8def\u7531id":4,"\u8f6c\u53d1\u89c4\u5219\u7684id":4,"\u8f6c\u6d41\u91cf\u8ba1\u8d39":4,"\u8f6e\u8be2":4,"\u8f93\u5165\u4e0d\u5e26\u5355\u4f4d":4,"\u8f93\u5165\u53c2\u6570\u4e3aother":4,"\u8fc7\u671f":4,"\u8fc7\u671f\u65f6\u95f4":4,"\u8fc7\u6ee4\u6761\u4ef6":4,"\u8fd0\u7ef4\u65f6\u95f40":4,"\u8fd0\u8425\u5546\u4fe1\u606f":4,"\u8fd0\u8425\u5546\u4fe1\u606f\u5982":4,"\u8fd0\u884c":4,"\u8fd0\u884c\u4e2d":4,"\u8fd4\u56de":4,"\u8fd4\u56de\u503c\u4e2d\u7684diskset":4,"\u8fd4\u56de\u6240\u6709\u652f\u6301\u5730\u533a":4,"\u8fd4\u56de\u652f\u6301\u67d0\u79cd\u5b9e\u4f8b\u7c7b\u578b\u7684db\u7c7b\u578b":4,"\u8fd4\u56de\u652f\u6301\u67d0\u79cd\u78c1\u76d8\u7c7b\u578b\u7684db\u7c7b\u578b":4,"\u8fd4\u56de\u6570\u636e\u504f\u79fb\u91cf":4,"\u8fd4\u56de\u6570\u636e\u5206\u9875\u503c":4,"\u8fd4\u56de\u6570\u636e\u957f\u5ea6":4,"\u8fd4\u56de\u6d88\u606f":4,"\u8fd4\u56de\u72b6\u6001\u7801\u63cf\u8ff0":4,"\u8fd4\u56de\u7684":4,"\u8fd4\u56de\u7801":4,"\u8fd4\u56de\u8be5\u5b9e\u4f8b\u6240\u5728\u96c6\u7fa4\u4e2d\u7684\u89d2\u8272":4,"\u8fd4\u56de\u8be5\u76d8\u6240\u505a\u5feb\u7167":4,"\u8fd4\u56de\u8fd0\u7ef4\u65f6\u95f4":4,"\u8fd8\u9700\u8981\u5728\u4e3b\u673a\u5185\u90e8\u8fdb\u884c\u6587\u4ef6\u7cfb\u7edf\u64cd\u4f5c":4,"\u8fd9\u4e24\u5957\u7b2c\u4e8c\u5957\u53c2\u6570\u7684\u4f18\u5148\u7ea7\u66f4\u9ad8":4,"\u8fde\u63a5":4,"\u9000\u8ba2\u4fe1\u606f":4,"\u9000\u8ba2\u56de\u590dd":4,"\u9000\u8ba2\u56de\u590dn":4,"\u9000\u8ba2\u56de\u590dt":4,"\u9000\u8ba2\u56de\u590dtd":4,"\u9000\u8ba2\u56ded":4,"\u9000\u8ba2\u56det":4,"\u9000\u8ba2\u56detd":4,"\u9000\u8d39":4,"\u9002\u7528\u4e8e\u4e00\u6b21\u67e5\u8be2\u4e00\u4e2a\u5b50\u7f51\u4fe1\u606f":4,"\u9002\u7528\u4e8e\u4e00\u6b21\u67e5\u8be2\u591a\u4e2a\u5b50\u7f51\u4fe1\u606f":4,"\u9009\u62e9\u52a0\u5bc6\u76d8\u65f6\u5fc5\u586b":4,"\u9009\u62e9\u9ed8\u8ba4\u7684\u5907\u4efd\u65b9\u5f0f":4,"\u9009\u9879":4,"\u901a\u77e5\u7c7b":4,"\u901a\u8fc7\u5b50\u7f51\u7b5b\u9009\u4e3b\u673a":4,"\u901a\u8fc7\u786c\u4ef6\u9694\u79bb\u7ec4\u7b5b\u9009\u4e3b\u673a":4,"\u901a\u8fc7describeroutetable\u62ff\u5230":4,"\u901a\u8fc7vpc\u7b5b\u9009\u4e3b\u673a":4,"\u90a3\u4e48\u53ea\u62c9\u53d6\u8fd9\u4e2a\u5907\u4efd\u7684\u8bb0\u5f55":4,"\u90a3\u4e48\u628a\u8fd9\u4e2adbid\u5b9e\u4f8b\u7684\u6240\u6709\u4ece\u5e93\u4fe1\u606f\u4e00\u8d77\u62c9\u53d6\u5e76\u8fd4\u56de":4,"\u914d\u7f6e\u4e2d":4,"\u914d\u7f6e\u5185\u5bb9":4,"\u914d\u7f6e\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"\u914d\u7f6e\u5931\u8d25":4,"\u914d\u7f6e\u5931\u8d25restart":4,"\u914d\u7f6e\u6587\u4ef6\u5b50\u7c7b\u578b":4,"\u914d\u7f6e\u6587\u4ef6\u7684\u540d\u5b57":4,"\u914d\u7f6e\u6587\u4ef6\u7684\u63cf\u8ff0":4,"\u914d\u7f6e\u670d\u52a1\u5668\u7684dbid":4,"\u914d\u7f6e\u8282\u70b9":4,"\u914d\u7f6eid":4,"\u914d\u7f6einstancetyp":4,"\u914d\u7f6eusessd\u548cssdtyp":4,"\u91c7\u7528\u65f6\u95f4\u6233":4,"\u91c7\u7528utc\u8ba1\u65f6\u65f6\u95f4\u6233":4,"\u91ca\u653e":4,"\u91ca\u653e\u5f39\u6027ip\u8d44\u6e90":4,"\u91ca\u653evip\u8d44\u6e90":4,"\u91cc\u7684\u57df\u540d":4,"\u91cd\u542f\u4e2d":4,"\u91cd\u542f\u5355\u673amemcach":4,"\u91cd\u542f\u7269\u7406\u673a":4,"\u91cd\u542fudb\u5b9e\u4f8b":4,"\u91cd\u547d\u540d\u7684udisk\u7684id":4,"\u91cd\u547d\u540dudb\u5b9e\u4f8b":4,"\u91cd\u547d\u540dudisk":4,"\u91cd\u547d\u540dudisk\u7684nam":4,"\u91cd\u65b0\u542f\u52a8uhost\u5b9e\u4f8b":4,"\u91cd\u65b0\u5b89\u88c5\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u64cd\u4f5c\u7cfb\u7edf":4,"\u91cd\u7f6euhost\u5b9e\u4f8b\u7684\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u91cd\u88c5\u7269\u7406\u673a\u64cd\u4f5c\u7cfb\u7edf":4,"\u91cf\u5927\u5c0f":4,"\u9488\u5bf9\u975e\u79c1\u6709\u5b50\u7f51\u4e3b\u673a":4,"\u9519\u8bef\u4fe1\u606f":4,"\u9519\u8bef\u63cf\u8ff0":4,"\u955c\u50cf\u540d\u79f0":4,"\u955c\u50cf\u5927\u5c0f":4,"\u955c\u50cf\u5e02\u573a":4,"\u955c\u50cf\u63cf\u8ff0":4,"\u955c\u50cf\u683c\u5f0f":4,"\u955c\u50cf\u72b6\u6001":4,"\u955c\u50cf\u7c7b\u522b":4,"\u955c\u50cf\u7c7b\u578b":4,"\u955c\u50cfid":4,"\u955c\u50cfid\u8fdb\u884c\u8fc7\u6ee4":4,"\u957f\u5ea6":4,"\u957f\u5ea6\u4e3a2":4,"\u957f\u5ea6\u8981\u6c42\u4e3a6":4,"\u9632\u706b\u5899\u4e1a\u52a1\u7ec4":4,"\u9632\u706b\u5899\u52a8\u4f5c":4,"\u9632\u706b\u5899\u540d\u79f0":4,"\u9632\u706b\u5899\u5907\u6ce8":4,"\u9632\u706b\u5899\u63cf\u8ff0":4,"\u9632\u706b\u5899\u7ec4\u521b\u5efa\u65f6\u95f4":4,"\u9632\u706b\u5899\u7ec4\u7c7b\u578b":4,"\u9632\u706b\u5899\u7ed1\u5b9a\u8d44\u6e90\u6570\u91cf":4,"\u9632\u706b\u5899\u89c4\u5219":4,"\u9632\u706b\u5899\u89c4\u5219\u5907\u6ce8":4,"\u9632\u706b\u5899\u8d44\u6e90id":4,"\u9632\u706b\u5899id":4,"\u9694\u79bb\u7ec4id":4,"\u96c6\u6210\u8f6f\u4ef6\u540d\u79f0":4,"\u9700\u4e0e\u7b7e\u540d\u7c7b\u578b\u4fdd\u6301\u4e00\u81f4":4,"\u9700\u5148\u8fdb\u884cbase64\u7f16\u7801\u683c\u5f0f\u8f6c\u6362":4,"\u9700\u586b\u5199projectid":4,"\u9700\u5f00\u542f\u6743\u9650":4,"\u9700\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u53cauhostid":4,"\u9700\u6307\u5b9aoffset":4,"\u9700\u7ed3\u5408isboot\u786e\u5b9a\u5177\u4f53\u78c1\u76d8\u7c7b\u578b":4,"\u9700\u8981":4,"\u9700\u8981\u4fdd\u7559\u7684vpc\u7f51\u6bb5":4,"\u9700\u8981\u5217\u51fa\u7684\u5907\u4efd\u6587\u4ef6\u7c7b\u578b":4,"\u9700\u8981\u521b\u5efa\u7684\u5de5\u4f5c\u6d41\u540d\u79f0":4,"\u9700\u8981\u521b\u5efa\u7684\u5de5\u4f5c\u6d41namespac":4,"\u9700\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684groupid":4,"\u9700\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684spaceid":4,"\u9700\u8981\u5378\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u9700\u8981\u540c\u65f6\u8bbe\u7f6ebackupdate\u5b57\u6bb5":4,"\u9700\u8981\u548c":4,"\u9700\u8981\u5907\u4efd\u6587\u4ef6":4,"\u9700\u8981\u5927\u4e8e\u539fsize":4,"\u9700\u8981\u6062\u590d\u7684\u76d8id":4,"\u9700\u8981\u6302\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u9700\u8981\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u53cauhostid\u4e24\u4e2a\u53c2\u6570\u7684\u503c":4,"\u9700\u8981\u6307\u5b9amongo\u7684\u89d2\u8272":4,"\u9700\u8981\u6dfb\u52a0\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bid":4,"\u9700\u8981\u6dfb\u52a0\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u7684vserver\u5b9e\u4f8bid":4,"\u9700\u8981\u7ed9\u51fa\u6570\u636e\u4e2d\u5fc3":4,"\u9700\u8981\u8bbe\u7f6e\u6570\u636e\u65b9\u821f\u7684udisk\u7684id":4,"\u9700\u8981\u8fd4\u56de\u7684\u5171\u4eab\u5e26\u5bbdid":4,"\u975e\u5171\u4eab\u5e26\u5bbd":4,"\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f":4,"\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u5fc5\u987b\u6307\u5b9a\u975e0mbps\u5e26\u5bbd":4,"\u975e\u52a0\u5bc6\u76d8":4,"\u975e\u8d44\u6e90\u81ea\u8eabid":4,"\u975e\u9ed8\u8ba4\u9879\u76ee\u8d44\u6e90":4,"\u975essd\u8d44\u6e90\u4e0d\u518d\u63d0\u4f9b":4,"\u9879\u76ee\u4e0b\u6210\u5458\u6570\u91cf":4,"\u9879\u76ee\u4e0b\u8d44\u6e90\u6570\u91cf":4,"\u9879\u76ee\u540d\u79f0":4,"\u9879\u76ee\u603b\u6570":4,"\u9879\u76eeid":4,"\u9884\u4ed8\u8d39":4,"\u9999\u6e2f":4,"\u9a8c\u8bc1\u7801\u7c7b":4,"\u9a8c\u8bc1\u7801\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u9ad8":4,"\u9ad8\u53ef\u7528":4,"\u9ad8\u53ef\u7528\u67b6\u6784":4,"\u9ad8\u53ef\u7528\u7248udb\u5b9e\u4f8b":4,"\u9ad8\u53ef\u7528\u90e8\u7f72\u5b9e\u4f8b":4,"\u9ad8\u6027\u80fdumem":4,"\u9ed1\u540d\u5355":4,"\u9ed8\u8ba4":4,"\u9ed8\u8ba41\u70b9":4,"\u9ed8\u8ba41g":4,"\u9ed8\u8ba41gb":4,"\u9ed8\u8ba424\u5c0f\u65f6":4,"\u9ed8\u8ba427017":4,"\u9ed8\u8ba43\u70b9":4,"\u9ed8\u8ba47\u6b21":4,"\u9ed8\u8ba480":4,"\u9ed8\u8ba4\u4e0d\u4f7f\u7528":4,"\u9ed8\u8ba4\u4e0d\u586b":4,"\u9ed8\u8ba4\u4e0d\u66f4\u6539":4,"\u9ed8\u8ba4\u4e0d\u8fd4\u56de":4,"\u9ed8\u8ba4\u4e0e\u6e90vpc\u540c\u5730\u57df":4,"\u9ed8\u8ba4\u4e0e\u6e90vpc\u540c\u9879\u76ee":4,"\u9ed8\u8ba4\u4e3a":4,"\u9ed8\u8ba4\u4e3a0":4,"\u9ed8\u8ba4\u4e3a1":4,"\u9ed8\u8ba4\u4e3a1\u53f0":4,"\u9ed8\u8ba4\u4e3a20":4,"\u9ed8\u8ba4\u4e3a24":4,"\u9ed8\u8ba4\u4e3a50":4,"\u9ed8\u8ba4\u4e3a\u4e0d\u66f4\u6539":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u5730\u57df":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u8d44\u6e90\u7c7b\u578b":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u9879\u76ee":4,"\u9ed8\u8ba4\u4e3a\u542f\u7528":4,"\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5730\u57df\u7684\u9ed8\u8ba4\u5b50\u7f51":4,"\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5730\u57df\u7684\u9ed8\u8ba4vpc":4,"\u9ed8\u8ba4\u4e3a\u6309\u6708\u4ed8\u8d39":4,"\u9ed8\u8ba4\u4e3a\u6708\u4ed8":4,"\u9ed8\u8ba4\u4e3a\u6807\u51c6\u955c\u50cf":4,"\u9ed8\u8ba4\u4e3a\u6e90vpc\u6240\u5728\u5730\u57df":4,"\u9ed8\u8ba4\u4e3a\u6e90vpc\u6240\u5728\u9879\u76eeid":4,"\u9ed8\u8ba4\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u4e3a\u7acb\u5373\u5f00\u901a":4,"\u9ed8\u8ba4\u4e3a\u83b7\u53d6\u4e09\u79cd\u4ef7\u683c":4,"\u9ed8\u8ba4\u4e3a\u8fd4\u56de\u6240\u6709\u9632\u706b\u5899":4,"\u9ed8\u8ba4\u4e3abandwidth":4,"\u9ed8\u8ba4\u4e3adatadisk":4,"\u9ed8\u8ba4\u4e3adefault":4,"\u9ed8\u8ba4\u4e3afals":4,"\u9ed8\u8ba4\u4e3alocaldisk":4,"\u9ed8\u8ba4\u4e3ams_redi":4,"\u9ed8\u8ba4\u4e3aphost":4,"\u9ed8\u8ba4\u4e3asubnet":4,"\u9ed8\u8ba4\u4e3atrue":4,"\u9ed8\u8ba4\u4e3avip":4,"\u9ed8\u8ba4\u4f1a\u83b7\u53d6\u53d1\u5e03\u7248\u672c\u5bf9\u5e94\u7684workflow":4,"\u9ed8\u8ba4\u4f7f\u7528\u4e3b\u5e93\u7684\u914d\u7f6e":4,"\u9ed8\u8ba4\u4f7f\u7528\u539f\u955c\u50cf":4,"\u9ed8\u8ba4\u503c":4,"\u9ed8\u8ba4\u503c1":4,"\u9ed8\u8ba4\u503c\u4e3a":4,"\u9ed8\u8ba4\u503c\u4e3a0":4,"\u9ed8\u8ba4\u503c\u4e3a1":4,"\u9ed8\u8ba4\u503c\u4e3a10":4,"\u9ed8\u8ba4\u503c\u4e3a20":4,"\u9ed8\u8ba4\u503c\u4e3a60":4,"\u9ed8\u8ba4\u503c\u4e3a80":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u5b9e\u4f8b\u7684\u5185\u5b58\u5927\u5c0f":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u5b9e\u4f8b\u7684\u6570\u636e\u76d8\u5927\u5c0f":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u5b9e\u4f8b\u7684cpu\u6838\u6570":4,"\u9ed8\u8ba4\u503c\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u503c\u4e3anormal":4,"\u9ed8\u8ba4\u503c\u662f\u8be5\u4e3b\u673a\u5f53\u524d\u6570\u636e\u76d8\u5927\u5c0f":4,"\u9ed8\u8ba4\u5168\u90e8\u83b7\u53d6":4,"\u9ed8\u8ba4\u5173\u95ed":4,"\u9ed8\u8ba4\u5173\u95ed\u4f1a\u8bdd\u4fdd\u6301":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u7c7b\u578b\u4e0b\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u7c7b\u578b\u4e0b\u8fd4\u56de\u5f53\u524drs\u603b\u6570":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u89c4\u5219\u4e0b\u4e3a0":4,"\u9ed8\u8ba4\u5355\u4f4d\u79d2":4,"\u9ed8\u8ba4\u5373\u4e3a\u5916\u7f51\u6a21\u5f0f":4,"\u9ed8\u8ba4\u5f53":4,"\u9ed8\u8ba4\u662f":4,"\u9ed8\u8ba4\u662ffals":4,"\u9ed8\u8ba4\u662fno":4,"\u9ed8\u8ba4\u662fnormal":4,"\u9ed8\u8ba4\u666e\u901a":4,"\u9ed8\u8ba4\u6839\u636e\u914d\u7f6e\u673a\u578b":4,"\u9ed8\u8ba4\u7248\u672c3":4,"\u9ed8\u8ba4\u79fb\u51fa\u8be5\u5171\u4eab\u5e26\u5bbd\u4e0b\u6240\u6709\u7684eip":4,"\u9ed8\u8ba4\u8fd4\u56de\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u8fd4\u56de\u6240\u6709\u7c7b\u578b":4,"\u9ed8\u8ba4\u9009\u9879":4,"\u9ed8\u8ba4\u914d\u7f6eid":4,"\u9ed8\u8ba4\u975eweb\u9632\u706b\u5899":4,"\u9ed8\u8ba4disabl":4,"\u9ed8\u8ba4dynam":4,"\u9ed8\u8ba4fals":4,"\u9ed8\u8ba4raid10":4,"\u9ed8\u8ba4redi":4,"\u9ed8\u8ba4root":4,"\u9ed8\u8ba4web\u9632\u706b\u5899":4,"activity\u7684\u540d\u5b57":4,"activity\u7684\u7c7b\u578b":4,"activity\u7684\u8d85\u65f6\u65f6\u95f4":4,"activity\u7684\u8f93\u5165":4,"activity\u7684\u8f93\u51fa":4,"activity\u7684\u91cd\u8bd5\u6b21\u6570":4,"api\u652f\u6301":4,"app\u5e94\u7528\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"area\u548careacode\u4e24\u8005\u5fc5\u586b\u4e00\u4e2a":4,"bd\u5b9e\u4f8bid":4,"binlog\u5907\u4efd":4,"binlog\u6587\u4ef6\u540d":4,"binlog\u6587\u4ef6\u5927\u5c0f":4,"binlog\u6587\u4ef6\u751f\u6210\u65f6\u95f4":4,"binlog\u6587\u4ef6\u7ed3\u675f\u65f6\u95f4":4,"ca\u8bc1\u4e66":4,"ca\u8bc1\u4e66\u5206\u522b\u4f20\u8fc7\u6765":4,"class":[0,4],"cloudinit\u65b9\u5f0f\u4e0b":4,"configsvr\u8282\u70b9\u548c\u4ece\u5907\u4efd\u6062\u590d\u5b9e\u4f8b":4,"cpu\u4e2a\u6570":4,"cpu\u4e3b\u9891":4,"cpu\u578b\u53f7":4,"cpu\u6838\u6570":4,"dataset\u4e2d\u7684\u5143\u7d20\u4e2a\u6570":4,"db\u5173\u95ed\u72b6\u6001\u4e0b\u5347\u964d\u7ea7":4,"db\u5907\u4efd\u6587\u4ef6\u540d\u79f0":4,"db\u5b9e\u4f8b\u4f7f\u7528\u7684\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"db\u5b9e\u4f8b\u4fee\u6539\u65f6\u95f4":4,"db\u5b9e\u4f8b\u521b\u5efa\u65f6\u95f4":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u516c\u7f51\u7684\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u5185\u7f51\u7684\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u7684\u516c\u7f51\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u7684\u5185\u7f51\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efdid":4,"db\u5b9e\u4f8b\u6240\u5728\u53ef\u7528\u533a":4,"db\u5b9e\u4f8b\u6570\u636e\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u7684id":4,"db\u5b9e\u4f8b\u78c1\u76d8\u5df2\u4f7f\u7528\u7a7a\u95f4":4,"db\u5b9e\u4f8b\u7c7b\u578b":4,"db\u5b9e\u4f8b\u7cfb\u7edf\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u865aip":4,"db\u5b9e\u4f8b\u865aip\u7684mac\u5730\u5740":4,"db\u5b9e\u4f8b\u89d2\u8272":4,"db\u5b9e\u4f8b\u8fc7\u671f\u65f6\u95f4":4,"db\u5b9e\u4f8bbinlog\u5907\u4efdid":4,"db\u5b9e\u4f8bid":4,"db\u72b6\u6001\u6807\u8bb0":4,"db\u7684\u9ed1\u540d\u5355\u5217\u8868":4,"db\u79cd\u7c7b":4,"db\u7c7b\u578bid":4,"db\u8d2d\u4e70\u591a\u5c11\u4e2a":4,"default":[0,4,5],"default\u5373\u4e3a\u672a\u5206\u7ec4":4,"disk\u6ce8\u91ca":4,"disks\u6570\u7ec4\u4e2d\u6709\u4e14\u53ea\u80fd\u6709\u4e00\u5757\u76d8\u662f\u7cfb\u7edf\u76d8":4,"eip\u5e26\u5bbd\u503c":4,"eip\u7684\u5916\u7f51\u5e26\u5bbd":4,"eip\u7684\u8ba1\u8d39\u6a21\u5f0f":4,"eip\u7684\u8d44\u6e90id":4,"eip\u8d44\u6e90id":4,"eipset\u4e2d\u7684\u5143\u7d20\u4e2a\u6570":4,"enable\u6216dis":4,"false\u4e3a\u672a\u5f00\u542f":4,"false\u52a0\u5bc6\u5fc5\u987b\u4f20\u5165\u5bf9\u5e94\u7684\u7684kmskeyid":4,"false\u6807\u8bc6\u53ea\u89e3\u7ed1eip":4,"false\u8868\u793a\u4e0d\u4f7f\u7528":4,"float":[0,1,4],"function":[0,1],"getprojectlist\u63a5\u53e3":4,"globalssh\u7684":4,"globalssh\u8986\u76d6\u7684\u5730\u533a":4,"gpu\u4e2a\u6570":4,"gpu\u5361\u6838\u5fc3\u6570":4,"gpu\u7c7b\u578b":4,"group\u7684id":4,"hadoop\u8282\u70b9":4,"import":[2,3,5],"initializing\u8868\u793a\u5728\u521d\u59cb\u5316":4,"int":[0,1,4],"ip\u4fe1\u606f":4,"ip\u5730\u5740":4,"ip\u5730\u5740\u5bf9\u5e94\u7684\u5b50\u7f51":4,"ip\u5730\u5740\u5bf9\u5e94\u7684vpc":4,"ip\u5bf9\u5e94\u5e26\u5bbd":4,"ip\u5bf9\u5e94\u7684\u5e26\u5bbd":4,"ip\u7c7b\u578b":4,"ip\u8d44\u6e90id":4,"ipv4\u6216\u8005ipv6":4,"isinudbc\u4e3atru":4,"kafka\u6d88\u606f\u961f\u5217":4,"keypair\u516c\u94a5":4,"leastconn\u53ea\u5728\u8bf7\u6c42\u4ee3\u7406\u4e2d\u4f7f\u7528":4,"limit\u7528\u4e8e\u5217\u8868\u64cd\u4f5c":4,"listentype\u4e3apacketstransmit\u65f6\u8868\u793a\u8fde\u63a5\u4fdd\u6301\u7684\u65f6\u95f4":4,"listentype\u4e3arequestproxy\u65f6\u8868\u793a\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"loginmode\u4e0d\u53ef\u53d8\u66f4":4,"loginmode\u4e3akeypair\u65f6\u6b64\u9879\u5fc5\u987b":4,"mac\u5730\u5740":4,"master\u5b9e\u4f8b\u7684dbid":4,"master\u8282\u70b9":4,"memcache\u7248\u672c\u4fe1\u606f":4,"message\u4e2d\u663e\u793a\u5177\u4f53\u9519\u8bef\u63cf\u8ff0":4,"mongodb\u5219\u4e0d\u9002\u7528":4,"mongodb\u591a\u79cd\u89d2\u8272":4,"mongodb\u6309\u7248\u672c\u7ec6\u5206\u5404\u6709\u4e00\u4e2aid":4,"mongodb\u6309\u7248\u672c\u7ec6\u5206\u67091":4,"mongodb\u9ed8\u8ba427017":4,"mysql\u533a\u5206mast":4,"mysql\u5b9e\u4f8b\u652f\u6301\u7269\u7406\u5907\u4efd":4,"mysql\u9ed8\u8ba43306":4,"n\u4e3a\u81ea\u7136\u6570":4,"n\u53ef\u4e3a0":4,"n\u65b9\u5f0f\u4f20\u5165":4,"name\u5fc5\u987b\u586b\u5199":4,"nat\u7f51\u5173":4,"new":[0,2,3],"no\u4e3a\u4e0d\u53ef\u4ee5\u5347\u7ea7":4,"no\u4e3a\u5173\u95ed\u65b9\u821f":4,"none\u548cserverinsert":4,"none\u6216serverinsert":4,"normal\u548csata_ssd":4,"normal\u8868\u793a\u521d\u59cb\u5316\u5b8c\u6210":4,"ostype\u4e3aother\u65f6":4,"phost\u7684\u8d44\u6e90id\u6570\u7ec4":4,"phost\u8d44\u6e90id":4,"postgesql\u6309\u7248\u672c\u7ec6\u5206":4,"postgresql\u9ed8\u8ba45432":4,"primary\u8282\u70b9\u7684dbid":4,"protocolversion\u5b57\u6bb5\u4e3a0\u6216\u6ca1\u6709\u8be5\u5b57\u6bb5\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u4e14disktype\u4e0d\u4e3a\u7a7a\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u4e14disktype\u4e3a\u7a7a\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u65f6":4,"public":[2,3],"quantity\u5c31\u662f2":4,"raid\u914d\u7f6e":4,"redhat\u7b49":4,"redis\u6240\u5728\u53ef\u7528\u533a":4,"redis\u65e0single\u7c7b\u578b":4,"redis\u7248\u672c\u4fe1\u606f":4,"redis\u7ec4\u540d\u79f0":4,"region\u4e2d\u7b26\u5408\u6761\u4ef6\u7684\u6240\u6709eip\u7684\u5e26\u5bbd\u7528\u91cf":4,"region\u4e2d\u7b26\u5408\u6761\u4ef6\u7684\u7684\u6240\u6709eip":4,"remark\u5fc5\u987b\u586b\u51991\u4e2a\u53ca\u4ee5\u4e0a":4,"remark\u90fd\u4e3a\u7a7a\u5219\u62a5\u9519":4,"return":[0,1,5],"routeruleid\u6765\u81eadescriberoutetable\u4e2d":4,"routetables\u5b57\u6bb5\u7684\u6570\u91cf":4,"rs\u5168\u90e8\u8fd0\u884c\u5f02\u5e38":4,"rs\u5168\u90e8\u8fd0\u884c\u6b63\u5e38":4,"rs\u5bf9\u5e94\u7684uhost":4,"rs\u7684\u8d44\u6e90id":4,"rs\u90e8\u5206\u8fd0\u884c\u5f02\u5e38":4,"rssd\u6570\u636e\u76d8":4,"shardsrv\u5206\u4e3adatanode\u548carbiter\u4e24\u79cd\u6a21\u5f0f":4,"slave\u6240\u5728\u53ef\u7528\u533a":4,"slowlog\u5907\u4efd":4,"source\u548cweightroundrobin\u5728\u8bf7\u6c42\u4ee3\u7406\u548c\u62a5\u6587\u8f6c\u53d1\u4e2d\u4f7f\u7528":4,"sqlserver\u5e10\u53f7":4,"ssd\u4e91\u76d8":4,"ssd\u5927\u5bb9\u91cf\u673a\u578b":4,"ssd\u6570\u636e\u76d8":4,"ssd\u673a\u578b":4,"ssd\u76d8":4,"ssd\u7c7b\u578b":4,"ssd\u7cfb\u7edf\u76d8":4,"ssd\u9ad8\u6027\u80fd\u5927\u5bb9\u91cf\u673a\u578b":4,"ssd\u9ad8\u6027\u80fd\u673a\u578b":4,"ssh\u767b\u9646\u7aef\u53e3":4,"ssh\u7aef\u53e3":4,"ssl\u8bc1\u4e66\u7684\u540d\u5b57":4,"ssl\u8bc1\u4e66\u7684\u5b8c\u6574\u5185\u5bb9":4,"ssl\u8bc1\u4e66\u7684id":4,"static":4,"status\u4e0d\u7b49\u4e8e2":4,"super":4,"tablename\u4e3a\u6307\u5b9a\u8868":4,"tag\u5fc5\u987b\u586b\u5199":4,"tag\u7684\u4e2a\u6570":4,"td\u9000\u8ba2":4,"timerange\u65f6\u95f4\u6bb5\u5185\u751f\u6548":4,"timestamp\u8868\u793a":4,"true":4,"true\u4e3a\u5f00\u542f":4,"true\u5220\u9664":4,"true\u8868\u793a\u4f1a\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"true\u8868\u793a\u903b\u8f91\u5907\u4efd\u65f6\u662f\u4f7f\u7528":4,"try":[2,3],"types\u4f5c\u4e3atype\u7684\u8865\u5145":4,"ucloud\u673a\u623f\u4ee3\u53f7\u6784\u6210\u7684\u6570\u7ec4":4,"udb\u5b9e\u4f8b\u6a21\u5f0f\u7c7b\u578b":4,"udb\u5b9e\u4f8b\u7684\u914d\u7f6e":4,"udb\u5b9e\u4f8b\u7684db\u7248\u672c\u5b57\u7b26\u4e32":4,"udb\u5b9e\u4f8b\u7c7b\u578b":4,"udb\u5b9e\u4f8b\u90e8\u7f72\u6a21\u5f0f":4,"udb\u6570\u636e\u5e93\u673a\u578b":4,"udb\u6570\u636e\u5e93\u673a\u578bid":4,"udbcid\u4e3a\u7a7a":4,"udisk\u540d\u5b57":4,"udisk\u5b9e\u4f8bid":4,"ufile\u79c1\u6709\u7a7a\u95f4\u5730\u5740":4,"uhost\u4e3b\u673a\u7684\u8d44\u6e90id":4,"uhost\u4e3b\u673a\u7684\u8d44\u6e90id\u6570\u7ec4":4,"uhost\u5b9e\u4f8b\u540d\u79f0":4,"uhost\u5b9e\u4f8b\u8d44\u6e90id":4,"uhost\u5b9e\u4f8bid":4,"uhost\u5b9e\u4f8bid\u96c6\u5408":4,"uhost\u5bc6\u7801":4,"uhost\u65b0\u5bc6\u7801":4,"uhost\u8d44\u6e90id":4,"uhostinstance\u603b\u6570":4,"ukmsmode\u4e3ayes\u65f6":4,"ulb\u540e\u7aefid":4,"ulb\u6240\u5728\u7684vpc\u7684id":4,"ulb\u6240\u5c5e\u7684\u4e1a\u52a1\u7ec4id":4,"ulb\u6240\u5c5e\u7684\u5b50\u7f51id":4,"ulb\u6240\u5c5e\u7684vpc":4,"ulb\u7684\u5185\u7f51ip":4,"ulb\u7684\u521b\u5efa\u65f6\u95f4":4,"ulb\u7684\u5230\u671f\u65f6\u95f4":4,"ulb\u7684\u8be6\u7ec6\u4fe1\u606f\u5217\u8868":4,"ulb\u8d44\u6e90id":4,"umem\u5185\u5b58\u7a7a\u95f4id":4,"umem\u5b9e\u4f8b\u8bbf\u95eeip":4,"umem\u5b9e\u4f8b\u8bbf\u95eeport":4,"unix\u65f6\u95f4\u6233":4,"uredis\u5bc6\u7801":4,"utc\u65f6\u95f4\u683c\u5f0f":4,"v1\u7248\u672c\u6982\u5ff5":4,"v2\u7248\u672c\u6982\u5ff5":4,"vip\u540d":4,"vip\u6570\u91cf":4,"vnc\u767b\u5f55\u7aef\u53e3":4,"vnc\u767b\u5f55ip":4,"vpc\u5173\u8054\u7684ipv6\u7f51\u6bb5":4,"vpc\u5173\u8054\u7684ipv6\u7f51\u6bb5\u6240\u5c5e\u8fd0\u8425\u5546":4,"vpc\u540d\u5b57":4,"vpc\u540d\u79f0":4,"vpc\u5730\u5740\u7a7a\u95f4":4,"vpc\u7684\u5730\u5740\u7a7a\u95f4":4,"vpc\u7684id":4,"vpc\u77edid":4,"vpc\u7c7b\u578b":4,"vpc\u7f51\u6bb5":4,"vpc\u8d44\u6e90id":4,"vserver\u4f1a\u8bdd\u4fdd\u6301\u65b9\u5f0f":4,"vserver\u4f1a\u8bdd\u4fdd\u6301\u6a21\u5f0f":4,"vserver\u534f\u8bae\u7c7b\u578b":4,"vserver\u540e\u7aef\u7aef\u53e3":4,"vserver\u5b9e\u4f8b\u540d\u79f0":4,"vserver\u5b9e\u4f8b\u7684\u534f\u8bae":4,"vserver\u5b9e\u4f8b\u7684\u540d\u5b57":4,"vserver\u5b9e\u4f8b\u7684id":4,"vserver\u5b9e\u4f8bid":4,"vserver\u670d\u52a1\u7aef\u53e3":4,"vserver\u7684\u8fd0\u884c\u72b6\u6001":4,"vserver\u8d1f\u8f7d\u5747\u8861\u6a21\u5f0f":4,"vserver\u8d1f\u8f7d\u5747\u8861\u7684\u6a21\u5f0f":4,"web\u63a8\u8350\u9632\u706b\u5899":4,"ws\u7b49":4,"year\u7b49":4,"yes\u4e3a\u5f00\u542f\u65b9\u821f":4,"yes\u5373\u53ef\u4ee5\u5347\u7ea7":4,"zone\u4e0d\u586b\u8868\u793a\u591a\u53ef\u7528\u533a":4,For:5,IPs:4,SAS:4,Yes:4,a9q2:4,abc7:4,abcdefghijklmnopqrstuvwxyz:1,abov:[2,3],acceleratingdomain:4,access:[2,3],account:0,accountnam:4,achiev:[1,5],action:[0,4],activit:4,activitytempl:4,add:[0,4,5],add_vpc_network:4,address:4,addvpcnetwork:4,admin:4,administr:4,adminpassword:4,adminus:4,after:1,agent:0,alarmtemplateid:4,all:[1,5],allocate_backend:4,allocate_backend_batch:4,allocate_eip:4,allocate_share_bandwidth:4,allocate_udpn:4,allocate_vip:4,allocatebackend:4,allocatebackendbatch:4,allocateeip:4,allocatesharebandwidth:4,allocateudpn:4,allocatevip:4,allow:[4,5],allowedv:4,also:[0,5],ani:1,apach:2,api:[0,3],apikei:0,apivers:4,append:0,applytyp:4,area:4,areacod:4,areaset:4,arg:0,argument:[0,1],arkswitchen:4,associate_eip_with_share_bandwidth:4,associate_route_t:4,associateeipwithsharebandwidth:4,associateroutet:4,attach:4,attach_udisk:4,attachudisk:4,attribut:0,auth:[0,4],authent:[2,3],authstat:4,auto:[0,4],autobackup:4,autorenew:4,avail:[0,4],b1d0:4,b64d:4,b64decod:1,b64encod:[1,2,3],back:5,backend:[0,4],backendid:4,backendset:4,backoff:[0,1],backoff_factor:0,backup:4,backup_udb_inst:4,backup_udb_instance_binlog:4,backup_udb_instance_error_log:4,backup_udb_instance_slow_log:4,backupbegintim:4,backupblacklist:4,backupcount:4,backupd:4,backupdur:4,backupendtim:4,backupfil:4,backupid:4,backupmethod:4,backupnam:4,backuppath:4,backups:4,backupswitch:4,backuptim:4,backuptyp:4,backupudbinst:4,backupudbinstancebinlog:4,backupudbinstanceerrorlog:4,backupudbinstanceslowlog:4,backupurl:4,backupzon:4,bandwidth:4,bandwidthguarante:4,bandwidthpackageid:4,bandwidthtyp:4,bandwidthupperlimit:4,bar:0,base64:[1,4],base64ugfzc3dvcmqx:4,base:4,base_url:0,baseurl:0,basicimageid:4,basicimagenam:4,bce8:4,befor:1,beforetim:4,begintim:4,belong:0,between:5,bgp:4,bind:[2,3],bind_eip:4,bind_ssl:4,bindeip:4,bindssl:4,binlog:4,binlog_backup:4,bitmap:4,bj1:4,bj2:[0,2,3,4,5],bkk:4,blacklist:4,bool:4,boot:4,bootdiskspac:4,bootdiskst:4,broadwel:4,builtin:0,busi:4,businessid:4,bwtype:4,c245:4,c6b9a46fd801:4,cacert:4,calcul:0,call:1,callabl:1,can:[0,2,3,5],cannot:[2,3],cascadelak:4,certificatetyp:4,chang:2,chargenam:4,chargetyp:4,check:5,check_recover_udb_inst:4,check_udb_instance_to_ha_allow:4,checkrecoverudbinst:4,checkudbinstancetohaallow:4,chinamobil:4,citi:4,cjksa2:4,classtyp:4,clear_udb_log:4,clearudblog:4,client:[2,3,4],clienttimeout:4,clone:[2,3,4],clone_route_t:4,clone_udisk:4,clone_udisk_snapshot:4,cloneen:4,cloneroutet:4,cloneudisk:4,cloneudisksnapshot:4,cloud:1,cloud_norm:4,cloud_rssd:4,cloud_ssd:[2,3,4],cluserrol:4,cluster:4,clusterrol:4,cmk:4,cmkid:4,cmkidalia:4,cmkidstatu:4,code:[0,2,3,4],com:[2,3],comment:4,companynam:4,complet:5,compon:4,config:[2,4],configfail:4,configid:4,configsrv_csr:4,configsrv_sccc:4,configsvr:4,configsvrid:4,connect:4,consistenthash:4,consistenthashport:4,content:4,copy_custom_imag:4,copycustomimag:4,core:[2,3,5],corecount:4,costcount:4,could:[0,2,3],count:4,couponid:4,cpu:[2,3,4,5],cpuset:4,creat:[1,2,3,4,5],create_bandwidth_packag:4,create_custom_imag:4,create_firewal:4,create_global_ssh_inst:4,create_phost:4,create_polici:4,create_project:4,create_route_t:4,create_sf_workflow_from_templ:4,create_ssl:4,create_subnet:4,create_udb_inst:4,create_udb_instance_by_recoveri:4,create_udb_param_group:4,create_udb_replication_inst:4,create_udb_route_inst:4,create_udb_slav:4,create_udisk:4,create_udisk_snapshot:4,create_uhost_inst:[2,3,4,5],create_ulb:4,create_umem_cache_group:4,create_umem_spac:4,create_uredis_group:4,create_usms_signatur:4,create_usms_templ:4,create_vpc:4,create_vpc_intercom:4,create_vserv:4,createbandwidthpackag:4,createcustomimag:4,createfail:4,createfirewal:4,createglobalsshinst:4,createphost:4,createpolici:4,createproject:4,createroutet:4,createsfworkflowfromtempl:4,createssl:4,createsubnet:4,createtim:4,createudbinst:4,createudbinstancebyrecoveri:4,createudbparamgroup:4,createudbreplicationinst:4,createudbrouteinst:4,createudbslav:4,createudisk:4,createudisksnapshot:4,createuhostinst:[0,4],createuhostinstanceparamdisk:4,createuhostinstanceparamnetworkinterfac:4,createuhostinstanceparamnetworkinterfaceeip:4,createuhostinstanceparamnetworkinterfaceeipglobalssh:4,createulb:4,createumemcachegroup:4,createumemspac:4,createuredisgroup:4,createusmssignatur:4,createusmstempl:4,createvpc:4,createvpcintercom:4,createvserv:4,cred:0,credenti:0,curbandwidth:4,current:[2,3],custom:[1,4,5],custompric:4,d4411ab30953fb0bbcb1e7313081f05e4e91a394:0,data:[0,4],dataark:4,datadisk:4,datafiles:4,datakei:4,dataset:4,dbaudit:4,dbclustertyp:4,dbid:4,dbname:4,dbtypeid:4,decod:1,def:[0,5],defin:4,delai:[0,5],delet:4,delete_bandwidth_packag:4,delete_firewal:4,delete_global_ssh_inst:4,delete_polici:4,delete_route_t:4,delete_ssl:4,delete_subnet:4,delete_udb_backup:4,delete_udb_inst:4,delete_udb_log_packag:4,delete_udb_param_group:4,delete_udisk:4,delete_udisk_snapshot:4,delete_ulb:4,delete_umem_cache_group:4,delete_umem_spac:4,delete_uredis_group:4,delete_usms_signatur:4,delete_usms_templ:4,delete_vpc:4,delete_vpc_intercom:4,delete_vserv:4,deletebandwidthpackag:4,deletefail:4,deletefirewal:4,deleteglobalsshinst:4,deletepolici:4,deleteroutet:4,deletessl:4,deletesubnet:4,deleteudbbackup:4,deleteudbinst:4,deleteudblogpackag:4,deleteudbparamgroup:4,deleteudisk:4,deleteudisksnapshot:4,deleteulb:4,deleteumemcachegroup:4,deleteumemspac:4,deleteuredisgroup:4,deleteusmssignatur:4,deleteusmstempl:4,deletevpc:4,deletevpcintercom:4,deletevserv:4,describe_bandwidth_packag:4,describe_bandwidth_usag:4,describe_eip:4,describe_firewal:4,describe_firewall_resourc:4,describe_global_ssh_area:4,describe_global_ssh_inst:4,describe_imag:4,describe_phost:4,describe_phost_imag:4,describe_phost_tag:4,describe_route_t:4,describe_share_bandwidth:4,describe_ssl:4,describe_subnet:4,describe_subnet_resourc:4,describe_udb_backup:4,describe_udb_backup_blacklist:4,describe_udb_binlog_backup_url:4,describe_udb_inst:4,describe_udb_instance_backup_st:4,describe_udb_instance_backup_url:4,describe_udb_instance_binlog:4,describe_udb_instance_binlog_backup_st:4,describe_udb_instance_pric:4,describe_udb_instance_st:4,describe_udb_instance_upgrade_pric:4,describe_udb_log_backup_url:4,describe_udb_log_packag:4,describe_udb_param_group:4,describe_udb_typ:4,describe_udisk:4,describe_udisk_pric:4,describe_udisk_snapshot:4,describe_udisk_upgrade_pric:4,describe_udpn:4,describe_uhost_inst:[4,5],describe_uhost_tag:4,describe_ulb:4,describe_umem_cache_group:4,describe_umem_cache_pric:4,describe_umem_cache_upgrade_pric:4,describe_umem_pric:4,describe_umem_spac:4,describe_umem_upgrade_pric:4,describe_uredis_backup:4,describe_uredis_backup_url:4,describe_uredis_group:4,describe_uredis_pric:4,describe_uredis_upgrade_pric:4,describe_vip:4,describe_vpc:4,describe_vpc_intercom:4,describe_vserv:4,describebandwidthpackag:4,describebandwidthusag:4,describeeip:4,describefirewal:4,describefirewallresourc:4,describeglobalssharea:4,describeglobalsshinst:4,describeimag:4,describephost:4,describephostimag:4,describephosttag:4,describeroutet:4,describesecuritygroup:4,describesharebandwidth:4,describessl:4,describesubnet:4,describesubnetresourc:4,describeudbbackup:4,describeudbbackupblacklist:4,describeudbbinlogbackupurl:4,describeudbinst:4,describeudbinstancebackupst:4,describeudbinstancebackupurl:4,describeudbinstancebinlog:4,describeudbinstancebinlogbackupst:4,describeudbinstancepric:4,describeudbinstancest:4,describeudbinstanceupgradepric:4,describeudblogbackupurl:4,describeudblogpackag:4,describeudbparamgroup:4,describeudbtyp:4,describeudisk:4,describeudiskpric:4,describeudisksnapshot:4,describeudiskupgradepric:4,describeudpn:4,describeuhostinst:4,describeuhosttag:4,describeulb:4,describeumemcachegroup:4,describeumemcachepric:4,describeumemcacheupgradepric:4,describeumempric:4,describeumemspac:4,describeumemupgradepric:4,describeuredisbackup:4,describeuredisbackupurl:4,describeuredisgroup:4,describeuredispric:4,describeuredisupgradepric:4,describevip:4,describevpc:4,describevpcintercom:4,describevserv:4,descript:4,descriptor:0,destroi:4,detach:4,detach_udisk:4,detachudisk:4,detail:0,devicenam:4,dict:[0,4],disabl:4,disablesemisync:4,disabletim:4,disassociate_eip_with_share_bandwidth:4,disassociateeipwithsharebandwidth:4,disk:[2,3,4],diskid:4,diskpassword:4,diskset:4,diskspac:4,disktyp:4,diskuseds:4,distinguish:0,dnsserver:4,doc:0,docker:4,document:[0,2],domain:4,doubl:4,drive:4,drop:4,dstaddr:4,dstport:4,dstprojectid:4,dstregion:4,dstvpcid:4,duplet:4,dure:0,dynam:4,e87ab3b8a1ea:4,earliesttim:4,echo:4,edit_udb_backup_blacklist:4,editudbbackupblacklist:4,eip:[2,3,4],eipaddr:4,eipaddrset:4,eipbandwidth:4,eipid:4,eippaymod:4,eippaymodeset:4,eippricedetailset:4,eipset:4,eipsetdata:4,els:[2,3,5],enabl:[0,4],enabletim:4,encod:1,encrypt:4,end:0,endtim:4,equal:0,errdesc:4,error:[0,4],errorinfo:4,errorlog_backup:4,everi:0,exampl:5,exc:[2,3],except:[2,3],expect:1,experi:5,expir:4,expiredtim:4,expiretim:4,exponenti:[0,5],f8a2:4,factor:0,fail:[1,4],fals:4,featur:[4,5],fetch_udb_instance_earliest_recover_tim:4,fetchudbinstanceearliestrecovertim:4,field:5,file:4,financ:4,finish:5,firewalldataset:4,firewallruleset:4,first:1,foo:0,forc:4,forcebackup:4,forcedump:4,forcetokil:4,format:4,formattyp:4,fortresshost:4,found:0,fra:4,free:[2,4],freez:4,frequenc:4,from:[2,3,5],frontendport:4,full:0,functyp:4,fwid:4,gatewai:4,gen_password:[1,2,3],gener:[1,2,3],get:[2,3,5],get_eip_pay_mod:4,get_eip_pric:4,get_eip_upgrade_pric:4,get_phost_pric:4,get_project_list:4,get_region:4,get_sf_workflow_templ:4,get_udpn_line_list:4,get_udpn_pric:4,get_udpn_upgrade_pric:4,get_uhost_instance_pric:4,get_uhost_instance_vnc_info:4,get_uhost_upgrade_pric:4,get_umem_space_st:4,get_user_info:4,get_usms_send_receipt:4,geteippaymod:4,geteippric:4,geteipupgradepric:4,getphostpric:4,getprojectlist:4,getregion:4,getsfworkflowtempl:4,getudpnlinelist:4,getudpnpric:4,getudpnupgradepric:4,getuhostinstancepric:4,getuhostinstancepriceparamdisk:4,getuhostinstancevncinfo:4,getuhostupgradepric:4,getumemspacest:4,getuserinfo:4,getusmssendreceipt:4,git:[2,3],github:[2,3],globalssh:4,globalssharea:4,globalsshinfo:4,gpu:4,gputyp:4,grant_firewal:4,grantfirewal:4,groupid:4,groupnam:4,haarch:4,hadoophost:4,handler:0,haproxi:4,has:5,hashvalu:4,hasnatgw:4,haswel:4,have:0,header:4,helper:[2,5],here:[2,3],high:4,highavail:4,hosttyp:4,hotplugfeatur:4,http:[0,2,3,4],identifi:0,imag:[2,3],image_id:[2,3],imagedescript:4,imageid:[2,3,4],imagenam:4,images:4,imageset:4,imagetyp:4,implement:0,import_custom_imag:4,importcustomimag:4,improv:5,includeslav:4,index:[0,2],industrytyp:4,info:0,inform:0,init:4,initi:4,initializ:4,innerbackuppath:4,innermod:4,input:[1,4],inrecycl:4,inst:5,instal:4,installag:4,installfail:4,instanc:[4,5],instanceid:4,instancemod:4,instanceset:4,instancetyp:4,instancetypeid:4,integ:5,integratedsoftwar:4,intel:4,intern:4,internet:[2,3],interv:1,inus:4,invalid:5,invok:[0,5],iocap:4,ipaddr:4,ipid:4,ipsec:4,ipset:4,ipv4:4,ipv6:4,ipv6address:4,ipv6network:4,ipvers:4,isarbit:4,isboot:4,isdefault:4,isexpir:4,isfin:4,isforc:4,isinudbc:4,islock:4,isolationgroup:4,issu:2,issupportkvm:4,isudiskavail:4,ivybridg:4,jpn:4,k80:4,kei:[0,2,3,4],keypair:4,kms:4,kmskeyid:4,kwarg:[0,4],l342dab130gf:4,lambda:[1,5],lastesttim:4,leastconn:4,len:[0,1],length:1,letter:1,level:[0,5],librari:2,licens:2,lifecycl:[4,5],like:0,limit:4,link:4,linux:[2,4],list:[0,1,4],listentyp:4,liunx:4,localdisk:4,localregion:4,log:0,log_level:0,log_param:5,log_request:5,log_respons:5,logfiles:4,logger:[0,4],logic:[4,5],loginmod:[2,3,4],loglevel:0,logpackagedataset:4,logtyp:4,low:4,lower_lett:1,lowercas:1,macaddr:4,machinetyp:4,maco:2,make:4,manual:4,mariadb:4,master:4,masterdbid:4,mastergroupid:4,match:[4,5],max:[0,1],max_backoff_interv:1,max_retri:0,maxcount:4,maxretri:0,medium:4,membercount:4,memcach:4,memori:[2,3,4],memorylimit:4,memorys:4,messag:4,method:[2,3,4],mget_uhost_st:5,middlewar:[2,4],min_backoff_interv:1,min_low:1,min_numb:1,min_speci:1,min_upp:1,minim:1,minimalcpu:4,minimalcpuplatform:4,miss:5,mmapv1:4,mod:0,model:4,modifi:4,modify_eip_bandwidth:4,modify_eip_weight:4,modify_global_ssh_port:4,modify_global_ssh_remark:4,modify_phost_info:4,modify_project:4,modify_route_rul:4,modify_udb_instance_nam:4,modify_udb_instance_password:4,modify_udpn_bandwidth:4,modify_uhost_instance_nam:4,modify_uhost_instance_remark:4,modify_uhost_instance_tag:4,modify_umem_space_nam:4,modify_uredis_group_nam:4,modifyeipbandwidth:4,modifyeipweight:4,modifyglobalsshport:4,modifyglobalsshremark:4,modifyphostinfo:4,modifyproject:4,modifyrouterul:4,modifytim:4,modifyudbinstancenam:4,modifyudbinstancepassword:4,modifyudpnbandwidth:4,modifyuhostinstancenam:4,modifyuhostinstanceremark:4,modifyuhostinstancetag:4,modifyumemspacenam:4,modifyuredisgroupnam:4,mongo:4,mongodb:4,monitortyp:4,month:4,more:0,most:0,ms_redi:4,multiattach:4,must:0,my_private_kei:0,my_public_kei:0,myapp:0,mysql:4,name:[2,3,4],namespac:4,natgw:4,netcap:4,netcapvalu:4,netenhanced_ultra:4,netmask:4,network:[0,4],networkid:4,networkinfo:4,networkinterfac:4,networkst:4,next:4,nexthopid:4,nexthoptyp:4,nocmkid:4,non:4,none:[0,4],noraid:4,normal:4,normal_volum:4,nosql:4,notconnect:4,number:[0,1],number_lett:1,object:0,objectid:4,occur:0,off:[4,5],offset:4,onli:[2,3],openapi:0,operatornam:4,option:[0,4],organ:0,originalpric:4,osnam:4,ostyp:4,outermod:4,output:[1,4],outsignatur:4,outtempl:4,p40:4,packetstransmit:4,page:2,param:4,paramet:[0,1],paramgroupid:4,paramgrouptypeid:4,parammemb:4,parentid:4,parentnam:4,password1:4,password:[1,2,3,4],path:4,pathx:2,pathxclient:4,paymod:4,pci:4,pcie_ssd:4,pcie_ssd_volum:4,peer1:4,peer2:4,pem:4,pend:[1,5],percona:4,persistenceinfo:4,persistencetyp:4,phone:4,phonenumb:4,phoneprefix:4,phost:4,phostcpuset:4,phostdiskset:4,phostid:4,phostimageset:4,phostipset:4,phostpriceset:4,phostset:4,phosttagset:4,phosttyp:4,pip:[2,3],pmstatu:4,polici:[0,5],policybackendset:4,policyid:4,policyprior:4,policyset:4,policytyp:4,port:4,posit:0,postgresql:4,postpai:4,postpaystarttim:4,poweroff_phost:4,poweroff_uhost_inst:4,poweroffphost:4,poweroffuhostinst:4,powerst:4,prepar:0,price:4,pricedataset:4,priceset:4,primari:4,print:[0,2,3,5],prioriti:4,privat:[2,3,4],private_kei:[0,2,3],privateip:4,privatekei:4,privatemac:4,problem:0,producttyp:4,project:0,project_id:[0,2,3],projectcount:4,projectid:[0,4],projectlistinfo:4,projectnam:4,projectset:4,promot:4,promote_udb_instance_to_ha:4,promote_udb_slav:4,promoteudbinstancetoha:4,promoteudbslav:4,properti:0,protocol:4,protocoltyp:4,protocolvers:4,provid:5,provinc:4,proxyfil:4,public_kei:[0,2,3],pull:2,purchasevalu:4,purpos:4,pvft_enum:4,pvft_rang:4,python3:[2,3],python:[0,3,5],qcow2:4,quantiti:4,query_usms_signatur:4,query_usms_templ:4,queryusmssignatur:4,queryusmstempl:4,raid0:4,raid10:4,raid1:4,raid5:4,raid:4,raidsupport:4,rais:5,reach:5,readi:1,realip:4,reboot:4,reboot_phost:4,reboot_uhost_inst:4,rebootphost:4,rebootuhostinst:4,receiptdesc:4,receiptperphon:4,receiptpersess:4,receiptresult:4,receiptset:4,receipttim:4,receiv:0,recommend:4,recov:4,recoverytim:4,redi:4,refresh:[1,5],region:[0,2,3,4,5],regionflag:4,regionid:4,regioninfo:4,regionnam:4,regionset:4,regist:0,reinstall_phost:4,reinstall_uhost_inst:4,reinstallphost:4,reinstalluhostinst:4,release_backend:4,release_eip:4,release_share_bandwidth:4,release_udpn:4,release_vip:4,releasebackend:4,releaseeip:4,releasesharebandwidth:4,releaseudisk:4,releaseudpn:4,releasevip:4,remark:4,remot:5,remoteregion:4,remov:5,rename_udisk:4,renameudisk:4,req:[0,4,5],request:[0,2,4,5],request_handl:0,requestproxi:4,requeststransport:[0,5],requir:[4,5],reservedisk:4,reset_uhost_instance_password:4,resetuhostinstancepassword:4,resiz:4,resize_attached_disk:4,resize_share_bandwidth:4,resize_udb_inst:4,resize_udisk:4,resize_udredis_spac:4,resize_uhost_inst:4,resize_umem_spac:4,resize_uredis_group:4,resizeattacheddisk:4,resizefail:4,resizesharebandwidth:4,resizeudbinst:4,resizeudisk:4,resizeudredisspac:4,resizeuhostinst:4,resizeumemspac:4,resizeuredisgroup:4,resourc:[0,2,4,5],resourcecount:4,resourceid:4,resourcenam:4,resourceset:4,resourcetyp:4,resp:[0,2,3,5],respons:[0,4,5],response_handl:0,restart_udb_inst:4,restart_umem_cache_group:4,restartudbinst:4,restartumemcachegroup:4,restor:4,restore_udisk:4,restorefail:4,restoreudisk:4,retcod:4,retri:[0,5],retrytim:4,rewritetim:4,role:4,roundrobin:4,rout:4,routerul:4,routeruleid:4,routeruleinfo:4,routet:4,routetableid:4,routetableinfo:4,routetabletyp:4,rssddatadisk:4,rule:4,ruleact:4,ruletyp:4,run:[1,2,4],runtim:5,s_redi:4,sata:4,sata_ssd:4,sata_ssd_volum:4,sdk:[0,3,5],search:2,securitygroupid:4,see:0,send:0,send_usms_messag:4,sendusmsmessag:4,sentinel:4,seoul:4,serverinsert:4,servic:[0,2,3],sessionno:4,sessionnoset:4,set:0,set_eip_pay_mod:4,set_udisk__udataark_mod:4,seteippaymod:4,setid:4,setudiskudataarkmod:4,setup:[2,3],sh1:4,sh2:4,sharded_clust:4,shardsrv:4,shardsrv_arbit:4,shardsrv_datanod:4,shardsvr:4,sharebandwidth:4,sharebandwidthguarante:4,sharebandwidthid:4,sharebandwidthnam:4,sharebandwidthset:4,should:0,shutdown:4,shutoff:4,sigcont:4,sigid:4,signatur:0,sigpurpos:4,sigtyp:4,singl:4,size:[2,3,4],skylak:4,slave:4,slavedbid:4,slavezon:4,slow:4,slow_query_backup:4,snapen:4,snapshot:4,snapshotcount:4,snapshotid:4,snapshotlimit:4,snapshottim:4,softwar:2,some:5,sourc:[0,1,2,3,4],sourceid:4,sourceimageid:4,sourceport:4,space:4,spaceid:4,special:1,special_lett:1,specif:1,sql:4,sqlserver:4,srcdbid:4,srcgroupid:4,srcid:4,srcip:4,ssddatadisk:4,ssdsystemdisk:4,ssdtype:4,sslcontent:4,sslid:4,sslname:4,sslset:4,ssltype:4,start:[4,5],start_phost:4,start_udb_inst:4,start_uhost_inst:4,startafterupgrad:4,startphost:4,startudbinst:4,startuhostinst:4,startup_delai:1,state:[2,4],statu:[0,4],status_forcelist:0,stepflow:2,stepflowcli:4,stop:[4,5],stop_udb_inst:4,stop_uhost_inst:[4,5],stopudbinst:4,stopuhostinst:4,storagetyp:4,store:0,str:[0,1,4],string:[1,4],sub:0,subnet:4,subnetcount:4,subnetid:4,subnetinfo:4,subnetnam:4,subnetresourc:4,subnettyp:4,subresourceid:4,subresourcenam:4,subresourcetyp:4,success:4,switch_udb_instance_to_ha:4,switchudbinstancetoha:4,sys:4,system:2,systemdisk:4,systemfiles:4,tag:4,tagset:4,target:[1,5],targetimagedescript:4,targetimageid:4,targetimagenam:4,targetip:4,targetprojectid:4,targetregion:4,tcp:4,telecom:4,tempalteparam:4,templat:4,templateid:4,templatenam:4,templateparam:4,termin:1,terminate_custom_imag:4,terminate_phost:4,terminate_project:4,terminate_uhost_inst:[4,5],terminatecustomimag:4,terminatephost:4,terminateproject:4,terminateuhostinst:4,test:[2,4],test_id:4,than:0,thi:2,time:[0,1],timemachinefeatur:4,timeout:[0,1,4,5],timerang:4,timestamp:4,tky:4,total:[0,1],totalbandwidth:4,totalcount:4,totaldiskspac:4,totalpric:4,traffic:4,transport:[2,4],trial:4,tupl:0,twice:5,type:[2,3,4],uaccount:2,uaccountcli:4,ubuntu:4,ucdr:4,ucloud:[0,1,3,5],ucloudexcept:[2,3],udataark:4,udataarkmod:4,udb:[1,2],udbbackupset:4,udbcid:4,udbclient:4,udbinstancebinlogset:4,udbinstancepriceset:4,udbinstanceset:4,udbparamgroupset:4,udbparammemberset:4,udbslaveinstanceset:4,udbtypeset:4,udhost:4,udisk:2,udiskcli:4,udiskdataset:4,udiskid:4,udisknam:4,udiskpricedataset:4,udisksnapshotset:4,udock:4,udockhost:4,udp:4,udpn:2,udpnclient:4,udpndata:4,udpnid:4,udpnlineset:4,udw:4,ufileurl:4,ufortress:4,ufortress_host:4,uhadoop:4,uhadoop_host:4,uhiv:4,uhost:[1,2,3,5],uhost_id:5,uhostcli:4,uhostdiskset:4,uhostid:[4,5],uhostimageset:4,uhostinstanceset:4,uhostip:4,uhostipset:4,uhostnam:4,uhostpriceset:4,uhostset:[4,5],uhosttagset:4,uhosttyp:4,ukafka:4,ukmsmod:4,ulb:2,ulbbackendset:4,ulbclient:4,ulbid:4,ulbipset:4,ulbnam:4,ulbpolicyset:4,ulbset:4,ulbsslset:4,ulbtyp:4,ulbvserverset:4,ultra:4,umem:2,umemcach:4,umemcachegroupset:4,umemcachepriceset:4,umemcli:4,umempriceset:4,umemspaceaddressset:4,umemspaceset:4,un_bind_eip:4,unatgw:4,unavail:4,unbind_ssl:4,unbindeip:4,unbindssl:4,unet:2,unetallocateeipset:4,unetbandwidthpackageset:4,unetbandwidthusageeipset:4,unetcli:4,uneteipaddrset:4,uneteipresourceset:4,uneteipset:4,unetsharebandwidthset:4,uni:4,unicom:4,uniqu:0,unix:4,unknown:4,unless:[2,3],unsubscribeinfo:4,updat:4,update_backend_attribut:4,update_eip_attribut:4,update_firewal:4,update_firewall_attribut:4,update_polici:4,update_route_table_attribut:4,update_subnet_attribut:4,update_udb_instance_backup_strategi:4,update_udb_instance_slave_backup_switch:4,update_udb_param_group:4,update_ulb_attribut:4,update_usms_signatur:4,update_usms_templ:4,update_vpc_network:4,update_vserver_attribut:4,updatebackendattribut:4,updatebackendattributebatch:4,updateeipattribut:4,updatefirewal:4,updatefirewallattribut:4,updatepolici:4,updateroutetableattribut:4,updatesubnetattribut:4,updatetim:4,updateudbinstancebackupstrategi:4,updateudbinstanceslavebackupswitch:4,updateudbparamgroup:4,updateulbattribut:4,updateusmssignatur:4,updateusmstempl:4,updatevpcnetwork:4,updatevserverattribut:4,upgrad:4,upgrade_to_ark_uhost_inst:4,upgradetoarkuhostinst:4,uphost:2,uphostcli:4,upload_udb_param_group:4,uploadudbparamgroup:4,upm:4,upper_lett:1,uppercas:1,uredi:4,uredisbackupset:4,uredisgroupset:4,uredispriceset:4,url:0,usag:[1,2],use:[0,2,3,5],useblacklist:4,used:[0,4],useds:4,user:[0,2,3,4],user_ag:0,useraddress:4,userag:0,usercert:4,userdatascript:4,userdefin:4,useremail:4,userid:4,userinfo:4,usernam:4,usernetpath:4,userphon:4,usertyp:4,uservers:4,usessd:4,using:[0,5],usm:2,usmsclient:4,usual:1,util:[0,2,3],uvip:4,v100:4,validationexcept:5,valu:4,valuetyp:4,vendor:4,verify_ac:0,version:4,vhd:4,via:[2,3],vip:4,vipdetailset:4,vipid:4,vipset:4,virtual:4,virtualip:4,virtualipmac:4,vmdk:4,vnc:4,vncip:4,vncpassword:4,vncport:4,vnet:4,vpc1:4,vpc2:4,vpc:2,vpcclient:4,vpcid:4,vpcinfo:4,vpcintercominfo:4,vpcname:4,vpcnetworkinfo:4,vpn:4,vpngw:4,vserver:4,vserverid:4,vservernam:4,vserverset:4,wait:2,wait_for_st:[1,5],waiter:5,waittimeoutexcept:5,web:4,websit:2,weight:4,weightroundrobin:4,when:[0,5],who:0,window:[2,4],wiredtig:4,workflow:4,workflowid:4,workflownam:4,workflowtempl:4,workflowvers:4,www:2,xd8ja:4,xk3jxa:4,xxxx:4,year:4,yes:4,you:[2,3],your:[2,3],zone:[2,3,4]},titles:["Core","Helpers","UCloud SDK Python 3","QuickStart","UCloud SDK Services","Usage"],titleterms:{api:2,chang:5,client:[0,5],config:0,contribut:2,core:0,feedback:2,guid:2,helper:1,indic:2,instal:[2,3],middlewar:[0,5],pathx:4,python:2,quickstart:[2,3],refer:2,resourc:1,sdk:[2,4],servic:4,state:[1,5],stepflow:4,system:5,tabl:2,test:0,transport:[0,5],type:5,uaccount:4,ucloud:[2,4],udb:4,udisk:4,udpn:4,uhost:4,ulb:4,umem:4,unet:4,uphost:4,usag:5,usm:4,util:1,vpc:4,wait:[1,5]}}) \ No newline at end of file diff --git a/docs/build/html/services.html b/docs/build/html/services.html new file mode 100644 index 00000000..2b2b5fcb --- /dev/null +++ b/docs/build/html/services.html @@ -0,0 +1,5531 @@ + + + + + + + UCloud SDK Services — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

UCloud SDK Services

+
+

PathX

+
+
+class ucloud.services.pathx.client.PathXClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_global_ssh_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateGlobalSSHInstance - 创建GlobalSSH实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • Area (str) - (Required) 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填一个

  • +
  • AreaCode (str) - (Required) AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个

  • +
  • Port (int) - (Required) SSH端口,1-65535且不能使用80,443端口

  • +
  • TargetIP (str) - (Required) 被SSH访问的IP

  • +
  • ChargeType (str) - 支付方式,如按月、按年、按时

  • +
  • CouponId (str) - 使用代金券可冲抵部分费用

  • +
  • Quantity (int) - 购买数量

  • +
  • Remark (str) - 备注信息

  • +
+

Response

+
    +
  • AcceleratingDomain (str) - 加速域名,访问该域名可就近接入

  • +
  • InstanceId (str) - 实例ID,资源唯一标识

  • +
  • Message (str) - 提示信息

  • +
+
+ +
+
+delete_global_ssh_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteGlobalSSHInstance - 删除GlobalSSH实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例Id,资源的唯一标识

  • +
+

Response

+
    +
  • Message (str) - 提示信息

  • +
+
+ +
+
+describe_global_ssh_area(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeGlobalSSHArea - 获取GlobalSSH覆盖的地区列表 用于控制显示哪些机房地域可以使用SSH特性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 机房地域代号,如hk、 us-ca、 us-ws等。不填默认为空,返回所有支持地区。

  • +
+

Response

+
    +
  • AreaSet (list) - 见 GlobalSSHArea 模型定义

  • +
  • Message (str) - 提示信息

  • +
+

Response Model

+

GlobalSSHArea

+
    +
  • Area (str) - GlobalSSH覆盖的地区,如香港、东京、洛杉矶等

  • +
  • AreaCode (str) - 地区代号,以地区AirPort Code

  • +
  • RegionSet (list) - ucloud机房代号构成的数组,如[“hk”,”us-ca”]

  • +
+
+ +
+
+describe_global_ssh_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeGlobalSSHInstance - 获取GlobalSSH实例列表(传实例ID获取单个实例信息,不传获取项目下全部实例)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - 实例ID,资源唯一标识

  • +
+

Response

+
    +
  • InstanceSet (list) - 见 GlobalSSHInfo 模型定义

  • +
+

Response Model

+

GlobalSSHInfo

+
    +
  • AcceleratingDomain (str) - 加速域名

  • +
  • Area (str) - 被SSH访问的IP所在地区

  • +
  • ChargeType (str) - 支付周期,如Month,Year等

  • +
  • CreateTime (int) - 资源创建时间戳

  • +
  • ExpireTime (int) - 资源过期时间戳

  • +
  • InstanceId (str) - 实例ID,资源唯一标识

  • +
  • Port (int) - SSH登陆端口

  • +
  • Remark (str) - 备注信息

  • +
  • TargetIP (str) - 被SSH访问的EIP

  • +
+
+ +
+
+modify_global_ssh_port(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyGlobalSSHPort - 修改GlobalSSH端口

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例ID,资源唯一标识

  • +
  • Port (int) - (Required) 调整后的SSH登陆端口

  • +
+

Response

+
    +
  • Message (str) - 提示信息

  • +
+
+ +
+
+modify_global_ssh_remark(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyGlobalSSHRemark - 修改GlobalSSH备注

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例ID,资源唯一标识

  • +
  • Remark (str) - 备注信息,不填默认为空字符串

  • +
+

Response

+
    +
  • Message (str) - 接口返回消息

  • +
+
+ +
+ +
+
+

StepFlow

+
+
+class ucloud.services.stepflow.client.StepFlowClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_sf_workflow_from_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateSFWorkflowFromTemplate - 导入工作流定义

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Namespace (str) - (Required) 需要创建的工作流namespace

  • +
  • Workflow (str) - (Required) 描述工作流定义的base64字符串

  • +
  • WorkflowName (str) - (Required) 需要创建的工作流名称

  • +
+

Response

+
    +
  • Message (str) - 返回消息

  • +
  • Version (int) - 创建的工作流版本号

  • +
+
+ +
+
+get_sf_workflow_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetSFWorkflowTemplate - 导出工作流定义

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • WorkflowId (str) - (Required) 被导出工作流的Id

  • +
  • WorkflowVersion (int) - 被导出工作流的版本号。取值范围:WorkflowVersion >= 1;默认会获取发布版本对应的workflow;超过最大版本会返回错误

  • +
+

Response

+
    +
  • Message (str) - 返回消息

  • +
  • Version (int) - 导出工作流的版本号

  • +
  • Workflow (dict) - 见 WorkflowTemplate 模型定义

  • +
  • WorkflowId (str) - 导出工作流的Id

  • +
+

Response Model

+

Param

+
    +
  • Name (str) - 参数名称

  • +
  • Type (str) - 参数类型

  • +
  • Value (str) - 参数值

  • +
+

ActivityTemplate

+
    +
  • Input (dict) - Activity的输入

  • +
  • Name (str) - Activity的名字

  • +
  • Next (str) - 下一个Activity的名字

  • +
  • Output (list) - Activity的输出,详见Param

  • +
  • RetryTimes (str) - Activity的重试次数

  • +
  • Timeout (str) - Activity的超时时间

  • +
  • Type (str) - Activity的类型

  • +
+

WorkflowTemplate

+
    +
  • Activites (list) - 见 ActivityTemplate 模型定义

  • +
  • Input (list) - 见 Param 模型定义

  • +
  • Output (list) - 见 Param 模型定义

  • +
+
+ +
+ +
+
+

UAccount

+
+
+class ucloud.services.uaccount.client.UAccountClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_project(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateProject - 创建项目

+

Request

+
    +
  • ProjectName (str) - (Required) 项目名称

  • +
+

Response

+
    +
  • ProjectId (str) - 所创建项目的Id

  • +
+
+ +
+
+get_project_list(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetProjectList - 获取项目列表

+

Request

+
    +
  • IsFinance (str) - 是否是财务账号

  • +
+

Response

+
    +
  • ProjectCount (int) - 项目总数

  • +
  • ProjectSet (list) - 见 ProjectListInfo 模型定义

  • +
+

Response Model

+

ProjectListInfo

+
    +
  • CreateTime (int) - 创建时间(Unix时间戳)

  • +
  • IsDefault (bool) - 是否为默认项目

  • +
  • MemberCount (int) - 项目下成员数量

  • +
  • ParentId (str) - 父项目ID

  • +
  • ParentName (str) - 父项目名称

  • +
  • ProjectId (str) - 项目ID

  • +
  • ProjectName (str) - 项目名称

  • +
  • ResourceCount (int) - 项目下资源数量

  • +
+
+ +
+
+get_region(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetRegion - 获取用户在各数据中心的权限等信息

+

Request

+

Response

+
    +
  • Regions (list) - 见 RegionInfo 模型定义

  • +
+

Response Model

+

RegionInfo

+
    +
  • BitMaps (str) - 用户在此数据中心的权限位

  • +
  • IsDefault (bool) - 是否用户当前默认数据中心

  • +
  • Region (str) - 地域名字,如cn-bj

  • +
  • RegionId (int) - 数据中心ID

  • +
  • RegionName (str) - 数据中心名称

  • +
  • Zone (str) - 可用区名字,如cn-bj-01

  • +
+
+ +
+
+get_user_info(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUserInfo - 获取用户信息

+

Request

+

Response

+
    +
  • DataSet (list) - 见 UserInfo 模型定义

  • +
+

Response Model

+

UserInfo

+
    +
  • Admin (int) - 是否超级管理员 0:否 1:是

  • +
  • Administrator (str) - 管理员

  • +
  • AuthState (str) - 实名认证状态

  • +
  • City (str) - 城市

  • +
  • CompanyName (str) - 公司名称

  • +
  • Finance (int) - 是否有财务权限 0:否 1:是

  • +
  • IndustryType (int) - 所属行业

  • +
  • PhonePrefix (str) - 国际号码前缀

  • +
  • Province (str) - 省份

  • +
  • UserAddress (str) - 公司地址

  • +
  • UserEmail (str) - 用户邮箱

  • +
  • UserId (int) - 用户Id

  • +
  • UserName (str) - 称呼

  • +
  • UserPhone (str) - 用户手机

  • +
  • UserType (int) - 会员类型

  • +
  • UserVersion (int) - 是否子帐户(大于100为子帐户)

  • +
+
+ +
+
+modify_project(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyProject - 修改项目

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ProjectName (str) - (Required) 新的项目名称

  • +
+

Response

+
+ +
+
+terminate_project(req: Optional[dict] = None, **kwargs) → dict[source]
+

TerminateProject - 删除项目

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。

  • +
+

Response

+
+ +
+ +
+
+

UDB

+
+
+class ucloud.services.udb.client.UDBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+backup_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

BackupUDBInstance - 备份UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份名称

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • BackupMethod (str) - 使用的备份方式。(快照备份即物理备份。注意只有SSD版本的mysql实例支持设置为snapshot)

  • +
  • Blacklist (str) - 备份黑名单列表,以 ; 分隔。注意:只有逻辑备份下备份黑名单才生效,快照备份备份黑名单下无效

  • +
  • ForceBackup (bool) - true表示逻辑备份时是使用 –force 参数,false表示不使用 –force 参数。物理备份此参数无效。

  • +
  • UseBlacklist (bool) - 是否使用黑名单备份,默认false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_binlog(req: Optional[dict] = None, **kwargs) → dict[source]
+

BackupUDBInstanceBinlog - 备份UDB指定时间段的binlog列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupFile (str) - (Required) 需要备份文件,可通过DescribeUDBInstanceBinlog获得 如果要传入多个文件名,以空格键分割,用单引号包含.

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • BackupName (str) - DB备份文件名称

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_error_log(req: Optional[dict] = None, **kwargs) → dict[source]
+

BackupUDBInstanceErrorLog - 备份UDB指定时间段的errorlog

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份名称

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_slow_log(req: Optional[dict] = None, **kwargs) → dict[source]
+

BackupUDBInstanceSlowLog - 备份UDB指定时间段的slowlog分析结果

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份文件名称

  • +
  • BeginTime (int) - (Required) 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • EndTime (int) - (Required) 过滤条件:结束时间(时间戳)

  • +
+

Response

+
+ +
+
+check_recover_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CheckRecoverUDBInstance - 核查db是否可以使用回档功能

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SrcDBId (str) - (Required) 源实例的Id(只支持普通版DB不支持高可用)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • LastestTime (int) - 核查成功返回值为可以回档到的最近时刻,核查失败不返回

  • +
+
+ +
+
+check_udb_instance_to_ha_allowance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CheckUDBInstanceToHAAllowance - 核查db是否可以升级为高可用

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
+

Response

+
    +
  • Allowance (str) - Yes ,No ,Yes即可以升级,No为不可以升级

  • +
+
+ +
+
+clear_udb_log(req: Optional[dict] = None, **kwargs) → dict[source]
+

ClearUDBLog - 清除UDB实例的log

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取

  • +
  • LogType (int) - (Required) 日志类型,10-error(暂不支持)、20-slow(暂不支持 )、30-binlog

  • +
  • BeforeTime (int) - 删除时间点(至少前一天)之前log,采用时间戳(秒),默认当 前时间点前一天

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+create_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBInstance - 创建UDB实例(包括创建mysql master节点、mongodb primary/configsvr节点和从备份恢复实例)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AdminPassword (str) - (Required) 管理员密码

  • +
  • DBTypeId (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6,14:postgresql-10.4

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 3000G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • ParamGroupId (int) - (Required) DB实例使用的配置参数组id

  • +
  • Port (int) - (Required) 端口号,mysql默认3306,mongodb默认27017,postgresql默认5432

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • BackupCount (int) - 备份策略,每周备份数量,默认7次

  • +
  • BackupDuration (int) - 备份策略,备份时间间隔,单位小时计,默认24小时

  • +
  • BackupId (int) - 备份id,如果指定,则表明从备份恢复实例

  • +
  • BackupTime (int) - 备份策略,备份开始时间,单位小时计,默认1点

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区,参见 可用区列表

  • +
  • CPU (int) - cpu核数

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Month

  • +
  • ClusterRole (str) - 当DB类型(DBTypeId)为mongodb时,需要指定mongo的角色,可选值为configsrv (配置节点),shardsrv (数据节点)

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DisableSemisync (bool) - 是否开启异步高可用,默认不填,可置为true

  • +
  • HAArch (str) - 高可用架构:1) haproxy(默认): 当前仅支持mysql。2) sentinel: 基于vip和哨兵节点的架构,当前支持mysql和pg。

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 默认是”Normal”

  • +
  • InstanceType (str) - UDB数据库机型

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • SubnetId (str) - 子网ID

  • +
  • Tag (str) - 实例所在的业务组名称

  • +
  • UDBCId (str) - 专区ID信息(如果这个参数存在这说明是在专区中创建DB)

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false。目前主要可用区、海外机房、新机房只提供SSD资源,非SSD资源不再提供。

  • +
  • VPCId (str) - VPC的ID

  • +
+

Response

+
    +
  • DBId (str) - BD实例id

  • +
+
+ +
+
+create_udb_instance_by_recovery(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBInstanceByRecovery - 创建db,将新创建的db恢复到指定db某个指定时间点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • RecoveryTime (int) - (Required) 恢复到某个时间点的时间戳(UTC时间格式,默认单位秒)

  • +
  • SrcDBId (str) - (Required) 源实例的Id

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • SubnetId (str) - 子网ID

  • +
  • UDBCId (str) - 专区的Id

  • +
  • UseSSD (bool) - 指定是否是否使用SSD,默认使用主库的配置

  • +
  • VPCId (str) - VPC的ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - db实例id

  • +
+
+ +
+
+create_udb_param_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBParamGroup - 从已有配置文件创建新配置文件

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBTypeId (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6

  • +
  • Description (str) - (Required) 参数组描述

  • +
  • GroupName (str) - (Required) 新配置参数组名称

  • +
  • SrcGroupId (int) - (Required) 源参数组id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • RegionFlag (bool) - 是否是地域级别的配置文件,默认是false

  • +
+

Response

+
    +
  • GroupId (int) - 新配置参数组id

  • +
+
+ +
+
+create_udb_replication_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBReplicationInstance - 创建MongoDB的副本节点(包括仲裁)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • SrcId (str) - (Required) primary节点的DBId,该值可以通过DescribeUDBInstance获取

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • IsArbiter (bool) - 是否是仲裁节点,默认false,仲裁节点按最小机型创建

  • +
  • Port (int) - 端口号,默认27017,取值范围3306至65535。

  • +
  • UseSSD (bool) - 是否使用SSD,默认不使用

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - 创建从节点的DBId

  • +
+
+ +
+
+create_udb_route_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBRouteInstance - 创建mongos实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ConfigsvrId (list) - (Required) 配置服务器的dbid,允许一个或者三个。

  • +
  • DBTypeId (str) - (Required) DB类型id,mongodb按版本细分有1:mongodb-2.4,2:mongodb-2.6,3:mongodb-3.0,4:mongodb-3.2

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 600M/1500M/3000M /6000M/15000M/30000M

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • ParamGroupId (int) - (Required) DB实例使用的配置参数组id

  • +
  • Port (int) - (Required) 端口号,mongodb默认27017

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Month

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - db实例id

  • +
+
+ +
+
+create_udb_slave(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDBSlave - 创建UDB实例的slave

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • SrcId (str) - (Required) master实例的DBId,该值可以通过DescribeUDBInstance获取

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DiskSpace (int) - 磁盘空间(GB), 暂时支持20G - 3000G(API支持,前端暂时只开放内存定制)

  • +
  • InstanceMode (str) - UDB实例部署模式,可选值如下:Normal: 普通单点实例HA: 高可用部署实例

  • +
  • InstanceType (str) - UDB实例类型:Normal和SATA_SSD

  • +
  • IsLock (bool) - 是否锁主库,默认为true

  • +
  • MemoryLimit (int) - 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M

  • +
  • Port (int) - 端口号,mysql默认3306

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - 创建slave的DBId

  • +
+
+ +
+
+delete_udb_backup(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDBBackup - 删除UDB实例备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 备份id,可通过DescribeUDBBackup获得

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区,参见[可用区列表]

  • +
+

Response

+
+ +
+
+delete_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDBInstance - 删除UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取

  • +
  • UDBCId (str) - 专区ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+delete_udb_log_package(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDBLogPackage - 删除UDB日志包

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 日志包id,可通过DescribeUDBLogPackage获得

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
+

Response

+
+ +
+
+delete_udb_param_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDBParamGroup - 删除配置参数组

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (int) - (Required) 参数组id,可通过DescribeUDBParamGroup获取

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • RegionFlag (bool) - 是否属于地域级别

  • +
+

Response

+
+ +
+
+describe_udb_backup(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBBackup - 列表UDB实例备份信息.Zone不填表示多可用区,填代表单可用区

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - (Required) 分页显示的起始偏移,列表操作则指定

  • +
  • BackupId (int) - 如果填了BackupId, 那么只拉取这个备份的记录

  • +
  • BackupType (int) - 备份类型,取值为0或1,0表示自动,1表示手动

  • +
  • BeginTime (int) - 过滤条件:起始时间(Unix时间戳)

  • +
  • ClassType (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver)

  • +
  • DBId (str) - DB实例Id,如果指定,则只获取该db的备份信息 该值可以通过DescribeUDBInstance获取

  • +
  • EndTime (int) - 过滤条件:结束时间(Unix时间戳)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBBackupSet 模型定义

  • +
  • TotalCount (int) - 满足条件备份总数,如果指定dbid,则是该db备份总数

  • +
+

Response Model

+

UDBBackupSet

+
    +
  • BackupEndTime (int) - 备份完成时间(Unix时间戳)

  • +
  • BackupId (int) - 备份id

  • +
  • BackupName (str) - 备份名称

  • +
  • BackupSize (int) - 备份文件大小(字节)

  • +
  • BackupTime (int) - 备份时间(Unix时间戳)

  • +
  • BackupType (int) - 备份类型,取值为0或1,0表示自动,1表示手动

  • +
  • BackupZone (str) - 跨机房高可用备库所在可用区

  • +
  • DBId (str) - dbid

  • +
  • DBName (str) - 对应的db名称

  • +
  • ErrorInfo (str) - 备份错误信息

  • +
  • State (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期

  • +
  • Zone (str) - 备份所在可用区

  • +
+
+ +
+
+describe_udb_backup_blacklist(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBBackupBlacklist - 获取UDB实例的备份黑名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Blacklist (str) - DB的黑名单列表, db.%为指定库 dbname.tablename为指定表

  • +
+
+ +
+
+describe_udb_binlog_backup_url(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBBinlogBackupURL - 获取UDB的Binlog备份地址

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例binlog备份ID,可以从DescribeUDBLogPackage结果当中获得

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - DB实例备份文件的公网地址

  • +
  • InnerBackupPath (str) - DB实例备份文件的内网地址

  • +
+
+ +
+
+describe_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstance - 获取UDB实例信息,支持两类操作:(1)指定DBId用于获取该db的信息;(2)指定ClassType、Offset、Limit用于列表操作,查询某一个类型db。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClassType (str) - DB种类,如果是列表操作,则需要指定,不区分大小写,其取值如下:mysql: SQL;mongo: NOSQL;postgresql: postgresql

  • +
  • DBId (str) - DB实例id,如果指定则获取单个db实例的描述,否则为列表操作。 指定DBId时无需填写ClassType、Offset、Limit

  • +
  • IncludeSlaves (bool) - 当只获取这个特定DBId的信息时,如果有该选项,那么把这个DBId实例的所有从库信息一起拉取并返回

  • +
  • IsInUDBC (bool) - 是否查看专区里面DB

  • +
  • Limit (int) - 分页显示数量,列表操作时必填

  • +
  • Offset (int) - 分页显示起始偏移位置,列表操作时必填

  • +
  • UDBCId (str) - IsInUDBC为True,UDBCId为空,说明查看整个可用区的专区的db,如果UDBId不为空则只查看此专区下面的db

  • +
  • Zone (str) - 可用区,不填时默认全部可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstanceSet 模型定义

  • +
  • TotalCount (int) - 用户db组的数量,对于 mysql: 主从结对数量,没有slave,则只有master mongodb: 副本集数量

  • +
+

Response Model

+

UDBSlaveInstanceSet

+
    +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • BackupBeginTime (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点

  • +
  • BackupBlacklist (str) - 备份策略,备份黑名单,mongodb则不适用

  • +
  • BackupCount (int) - 备份策略,不可修改,备份文件保留的数量,默认7次

  • +
  • BackupDate (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能

  • +
  • BackupDuration (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic

  • +
  • ClusterRole (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式

  • +
  • CreateTime (int) - DB实例创建时间,采用UTC计时时间戳

  • +
  • DBId (str) - DB实例id

  • +
  • DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6

  • +
  • DataFileSize (float) - DB实例数据文件大小,单位GB

  • +
  • DiskSpace (int) - 磁盘空间(GB), 默认根据配置机型

  • +
  • DiskUsedSize (float) - DB实例磁盘已使用空间,单位GB

  • +
  • ExpiredTime (int) - DB实例过期时间,采用UTC计时时间戳

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例;”HA”: 高可用版UDB实例

  • +
  • InstanceType (str) - UDB数据库机型

  • +
  • InstanceTypeId (int) - UDB数据库机型ID

  • +
  • LogFileSize (float) - DB实例日志文件大小,单位GB

  • +
  • MemoryLimit (int) - 内存限制(MB),默认根据配置机型

  • +
  • ModifyTime (int) - DB实例修改时间,采用UTC计时时间戳

  • +
  • Name (str) - 实例名称,至少6位

  • +
  • ParamGroupId (int) - DB实例使用的配置参数组id

  • +
  • Port (int) - 端口号,mysql默认3306,mongodb默认27017

  • +
  • Role (str) - DB实例角色,mysql区分master/slave,mongodb多种角色

  • +
  • SSDType (str) - SSD类型,SATA/PCI-E

  • +
  • SrcDBId (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id

  • +
  • State (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败

  • +
  • SubnetId (str) - 子网ID

  • +
  • SystemFileSize (float) - DB实例系统文件大小,单位GB

  • +
  • Tag (str) - 获取资源其他信息

  • +
  • UseSSD (bool) - 是否使用SSD

  • +
  • VPCId (str) - VPC的ID

  • +
  • VirtualIP (str) - DB实例虚ip

  • +
  • VirtualIPMac (str) - DB实例虚ip的mac地址

  • +
  • Zone (str) - 可用区

  • +
+

UDBInstanceSet

+
    +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • BackupBeginTime (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点

  • +
  • BackupBlacklist (str) - 备份策略,备份黑名单,mongodb则不适用

  • +
  • BackupCount (int) - 备份策略,不可修改,备份文件保留的数量,默认7次

  • +
  • BackupDate (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能

  • +
  • BackupDuration (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic

  • +
  • CluserRole (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式

  • +
  • CreateTime (int) - DB实例创建时间,采用UTC计时时间戳

  • +
  • DBId (str) - DB实例id

  • +
  • DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6

  • +
  • DataFileSize (float) - DB实例数据文件大小,单位GB

  • +
  • DataSet (list) - 见 UDBSlaveInstanceSet 模型定义

  • +
  • DiskSpace (int) - 磁盘空间(GB), 默认根据配置机型

  • +
  • DiskUsedSize (float) - DB实例磁盘已使用空间,单位GB

  • +
  • ExpiredTime (int) - DB实例过期时间,采用UTC计时时间戳

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例

  • +
  • InstanceType (str) - UDB数据库机型

  • +
  • InstanceTypeId (int) - UDB数据库机型ID

  • +
  • LogFileSize (float) - DB实例日志文件大小,单位GB

  • +
  • MemoryLimit (int) - 内存限制(MB),默认根据配置机型

  • +
  • ModifyTime (int) - DB实例修改时间,采用UTC计时时间戳

  • +
  • Name (str) - 实例名称,至少6位

  • +
  • ParamGroupId (int) - DB实例使用的配置参数组id

  • +
  • Port (int) - 端口号,mysql默认3306,mongodb默认27017

  • +
  • Role (str) - DB实例角色,mysql区分master/slave,mongodb多种角色

  • +
  • SSDType (str) - SSD类型,SATA/PCI-E

  • +
  • SrcDBId (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id

  • +
  • State (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败

  • +
  • SubnetId (str) - 子网ID

  • +
  • SystemFileSize (float) - DB实例系统文件大小,单位GB

  • +
  • Tag (str) - 获取资源其他信息

  • +
  • UseSSD (bool) - 是否使用SSD

  • +
  • VPCId (str) - VPC的ID

  • +
  • VirtualIP (str) - DB实例虚ip

  • +
  • VirtualIPMac (str) - DB实例虚ip的mac地址

  • +
  • Zone (str) - DB实例所在可用区

  • +
+
+ +
+
+describe_udb_instance_backup_state(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceBackupState - 获取UDB实例备份状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 备份记录ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区,参见[可用区列表]

  • +
+

Response

+
    +
  • BackupEndTime (int) -

  • +
  • BackupSize (int) -

  • +
  • State (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期

  • +
+
+ +
+
+describe_udb_instance_backup_url(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceBackupURL - 获取UDB备份下载地址

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例备份ID,该值可以通过DescribeUDBBackup获取

  • +
  • DBId (str) - (Required) DB实例Id,该值可通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - DB实例备份文件公网的地址

  • +
  • InnerBackupPath (str) - DB实例备份文件内网的地址

  • +
+
+ +
+
+describe_udb_instance_binlog(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceBinlog - 获取UDB指定时间段的binlog列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BeginTime (int) - (Required) 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • EndTime (int) - (Required) 过滤条件:结束时间(时间戳)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstanceBinlogSet 模型定义

  • +
+

Response Model

+

UDBInstanceBinlogSet

+
    +
  • BeginTime (int) - Binlog文件生成时间(时间戳)

  • +
  • EndTime (int) - Binlog文件结束时间(时间戳)

  • +
  • Name (str) - Binlog文件名

  • +
  • Size (int) - Binlog文件大小

  • +
+
+ +
+
+describe_udb_instance_binlog_backup_state(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceBinlogBackupState - 获取udb实例备份状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 备份记录ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
+

Response

+
    +
  • BackupSize (int) - 备份文件大小(字节)

  • +
  • State (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期

  • +
+
+ +
+
+describe_udb_instance_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstancePrice - 获取UDB实例价格信息

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBTypeId (str) - (Required) UDB实例的DB版本字符串

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB),暂时支持20(GB) - 3000(GB), 输入不带单位

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),单位为MB.目前支持:1000-96000

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year,按年付费; Month,按月付费 Dynamic,按需付费(需开启权限) Trial,试用(需开启权限)默认为月付

  • +
  • Count (int) - 购买DB实例数量,最大数量为10台, 默认为1台

  • +
  • InstanceMode (str) - 实例的部署类型。可选值为:Normal: 普通单点实例,Slave: 从库实例,HA: 高可用部署实例,默认是Normal

  • +
  • Quantity (int) - DB购买多少个”计费时间单位”,默认值为1。比如:买2个月,Quantity就是2。如果计费单位是“按月”,并且Quantity为0,表示“购买到月底”

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必填

  • +
  • UseSSD (str) - 是否使用SSD,只能填true或false,默认为false

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstancePriceSet 模型定义

  • +
+

Response Model

+

UDBInstancePriceSet

+
    +
  • ChargeType (str) - Year, Month, Dynamic,Trial

  • +
  • Price (int) - 价格,单位为分

  • +
+
+ +
+
+describe_udb_instance_state(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceState - 获取UDB实例状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • State (str) - DB状态标记 Init:初始化中;Fail:安装失败; Starting:启动中; Running : 运行 ;Shutdown:关闭中; Shutoff :已关闭; Delete:已删除; Upgrading:升级中; Promoting: 提升为独库进行中; Recovering: 恢复中; Recover fail:恢复失败。

  • +
+
+ +
+
+describe_udb_instance_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBInstanceUpgradePrice - 获取UDB实例升降级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB)

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (int) - 价格,单位为分

  • +
+
+ +
+
+describe_udb_log_backup_url(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBLogBackupURL - 获取UDB的slowlog备份地址

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例备份ID

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - 备份外网URL

  • +
  • UsernetPath (str) - 备份用户网URL

  • +
+
+ +
+
+describe_udb_log_package(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBLogPackage - 列表UDB实例binlog或slowlog或errorlog备份信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - (Required) 分页显示的起始偏移,列表操作则指定

  • +
  • BeginTime (int) - 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - DB实例Id,如果指定,则只获取该db的备份信息

  • +
  • EndTime (int) - 过滤条件:结束时间(时间戳)

  • +
  • Type (int) - 需要列出的备份文件类型,每种文件的值如下 2 : BINLOG_BACKUP 3 : SLOW_QUERY_BACKUP 4 : ERRORLOG_BACKUP

  • +
  • Types (list) - Types作为Type的补充,支持多值传入,可以获取多个类型的日志记录,如:Types.0=2&Types.1=3

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 LogPackageDataSet 模型定义

  • +
  • TotalCount (int) - 备份总数,如果指定dbid,则是该db备份总数

  • +
+

Response Model

+

LogPackageDataSet

+
    +
  • BackupId (int) - 备份id

  • +
  • BackupName (str) - 备份名称

  • +
  • BackupSize (int) - 备份文件大小

  • +
  • BackupTime (int) - 备份时间

  • +
  • BackupType (int) - 备份类型,包括2-binlog备份,3-slowlog备份

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
  • DBId (str) - dbid

  • +
  • DBName (str) - 对应的db名称

  • +
  • State (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期

  • +
  • Zone (str) - 所在可用区

  • +
+
+ +
+
+describe_udb_param_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBParamGroup - 获取参数组详细参数信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - (Required) 分页显示的起始偏移,列表操作则指定

  • +
  • ClassType (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver)

  • +
  • GroupId (int) - 参数组id,如果指定则获取描述,否则是列表操作,需要 指定Offset/Limit

  • +
  • IsInUDBC (bool) - 是否选取专区中配置

  • +
  • RegionFlag (bool) - 当请求没有填写Zone时,如果指定为true,表示只拉取跨可用区的相关配置文件,否则,拉取所有机房的配置文件(包括每个单可用区和跨可用区)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBParamGroupSet 模型定义

  • +
  • TotalCount (int) - 参数组总数,列表操作时才会有该参数

  • +
+

Response Model

+

UDBParamMemberSet

+
    +
  • AllowedVal (str) - 允许的值(根据参数类型,用分隔符表示)

  • +
  • ApplyType (int) - 参数值应用类型,取值范围为{0,10,20},各值代表 意义为0-unknown、10-static、20-dynamic

  • +
  • FormatType (int) - 允许值的格式类型,取值范围为{0,10,20},意义分 别为PVFT_UNKOWN=0,PVFT_RANGE=10, PVFT_ENUM=20

  • +
  • Key (str) - 参数名称

  • +
  • Modifiable (bool) - 是否可更改,默认为false

  • +
  • Value (str) - 参数值

  • +
  • ValueType (int) - 参数值应用类型,取值范围为{0,10,20,30},各值 代表意义为 0-unknown、10-int、20-string、 30-bool

  • +
+

UDBParamGroupSet

+
    +
  • DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6 7:percona-5.6

  • +
  • Description (str) - 参数组描述

  • +
  • GroupId (int) - 参数组id

  • +
  • GroupName (str) - 参数组名称

  • +
  • Modifiable (bool) - 参数组是否可修改

  • +
  • ParamMember (list) - 见 UDBParamMemberSet 模型定义

  • +
  • RegionFlag (bool) -

  • +
  • Zone (str) -

  • +
+
+ +
+
+describe_udb_type(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDBType - 获取UDB支持的类型信息

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用DB的备库所在区域,仅当该可用区支持跨可用区高可用时填入。参见 可用区列表

  • +
  • DBClusterType (str) - DB实例类型,如mysql,sqlserver,mongo,postgresql

  • +
  • DiskType (str) - 返回支持某种磁盘类型的DB类型。如果没传,则表示任何磁盘类型均可。

  • +
  • InstanceMode (str) - 返回支持某种实例类型的DB类型。如果没传,则表示任何实例类型均可。normal:单点,ha:高可用,sharded_cluster:分片集群

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • DataSet (list) - 见 UDBTypeSet 模型定义

  • +
  • RetCode (int) - 返回码

  • +
+

Response Model

+

UDBTypeSet

+
    +
  • DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id, 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6

  • +
+
+ +
+
+edit_udb_backup_blacklist(req: Optional[dict] = None, **kwargs) → dict[source]
+

EditUDBBackupBlacklist - 编辑UDB实例的备份黑名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Blacklist (str) - (Required) 黑名单,规范示例,指定库mysql.%;test.%; 指定表city.address;

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+fetch_udb_instance_earliest_recover_time(req: Optional[dict] = None, **kwargs) → dict[source]
+

FetchUDBInstanceEarliestRecoverTime - 获取UDB最早可回档的时间点

+

Request

+ +

Response

+
    +
  • EarliestTime (int) - 获取最早可回档时间点

  • +
+
+ +
+
+modify_udb_instance_name(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUDBInstanceName - 重命名UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Name (str) - (Required) 实例的新名字, 长度要求为6~63位

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+modify_udb_instance_password(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUDBInstancePassword - 修改DB实例的管理员密码

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的ID,该值可以通过DescribeUDBInstance获取

  • +
  • Password (str) - (Required) 实例的新密码

  • +
  • AccountName (str) - sqlserver帐号,仅在sqlserver的情况下填该参数

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+promote_udb_instance_to_ha(req: Optional[dict] = None, **kwargs) → dict[source]
+

PromoteUDBInstanceToHA - 普通db升级为高可用(只针对mysql5.5及以上版本)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
+

Response

+
+ +
+
+promote_udb_slave(req: Optional[dict] = None, **kwargs) → dict[source]
+

PromoteUDBSlave - 从库提升为独立库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • IsForce (bool) - 是否强制(如果从库落后可能会禁止提升),默认false 如果落后情况下,强制提升丢失数据

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeUDBInstance - 修改(升级和降级)UDB实例的配置,包括内存和磁盘的配置,对于内存升级无需关闭实例,其他场景需要事先关闭实例。两套参数可以配置升降机:1.配置UseSSD和SSDType 2.配置InstanceType,不需要配置InstanceMode。这两套第二套参数的优先级更高

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G-3000G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/ 12000M/16000M/ 24000M/32000M/ 48000M/64000M/96000M。

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 默认是”Normal”

  • +
  • InstanceType (str) - UDB数据库机型: “Normal”: “标准机型” , “SATA_SSD”: “SSD机型” , “PCIE_SSD”: “SSD高性能机型” , “Normal_Volume”: “标准大容量机型”, “SATA_SSD_Volume”: “SSD大容量机型” , “PCIE_SSD_Volume”: “SSD高性能大容量机型”

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • StartAfterUpgrade (bool) - DB关闭状态下升降级,升降级后是否启动DB,默认为false

  • +
  • UDBCId (str) - 专区的ID,如果有值表示专区中的DB配置升降级

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+restart_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

RestartUDBInstance - 重启UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+start_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

StartUDBInstance - 启动UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+stop_udb_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

StopUDBInstance - 关闭UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • ForceToKill (bool) - 是否使用强制手段关闭DB,默认是false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+switch_udb_instance_to_ha(req: Optional[dict] = None, **kwargs) → dict[source]
+

SwitchUDBInstanceToHA - 普通UDB切换为高可用,原db状态为WaitForSwitch时,调用该api

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,不填则按现在单点计费执行

  • +
  • Quantity (str) - 购买时长,需要和 ChargeType 搭配使用,否则使用单点计费策略的值

  • +
  • Tag (str) - 业务组

  • +
+

Response

+
    +
  • DBId (str) - 切换后高可用db实例的Id

  • +
+
+ +
+
+update_udb_instance_backup_strategy(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateUDBInstanceBackupStrategy - 修改UDB自动备份策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 主节点的Id

  • +
  • BackupDate (str) - 备份时期标记位。共7位,每一位为一周中一天的备份情况,0表示关闭当天备份,1表示打开当天备份。最右边的一位为星期天的备份开关,其余从右到左依次为星期一到星期六的备份配置开关,每周必须至少设置两天备份。例如:1100000表示打开星期六和星期五的备份功能

  • +
  • BackupMethod (str) - 选择默认的备份方式,可选 snapshot 表示使用快照/物理备份,填 logic 表示使用逻辑备份。需要同时设置BackupDate字段。(注意现在只有SSD 版本的 MySQL实例支持物理备份)

  • +
  • BackupTime (int) - 备份的整点时间,范围[0,23]

  • +
  • ForceDump (bool) - 当导出某些数据遇到问题后,是否强制导出其他剩余数据默认是false需要同时设置BackupDate字段

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+update_udb_instance_slave_backup_switch(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateUDBInstanceSlaveBackupSwitch - 开启或者关闭UDB从库备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupSwitch (int) - (Required) 从库的备份开关,范围[0,1],0表示从库备份功能关闭,1 表示从库备份开关打开。

  • +
  • MasterDBId (str) - (Required) 主库的Id

  • +
  • SlaveDBId (str) - 从库的Id,如果从库备份开关设定为打开,则必须赋值。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+update_udb_param_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateUDBParamGroup - 更新UDB配置参数项

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (int) - (Required) 配置参数组id,使用DescribeUDBParamGroup获得

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Description (str) - 配置文件的描述,不传时认为不修改

  • +
  • Key (str) - 参数名称(与Value配合使用)

  • +
  • Name (str) - 配置文件的名字,不传时认为不修改名字,传了则不能为空

  • +
  • RegionFlag (bool) - 该配置文件是否是地域级别配置文件,默认是false

  • +
  • Value (str) - 参数值(与Key配合使用)

  • +
+

Response

+
+ +
+
+upload_udb_param_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

UploadUDBParamGroup - 导入UDB配置

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Content (str) - (Required) 配置内容,导入的配置内容采用base64编码

  • +
  • DBTypeId (str) - (Required) DB类型id,DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6

  • +
  • Description (str) - (Required) 参数组描述

  • +
  • GroupName (str) - (Required) 配置参数组名称

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ParamGroupTypeId (int) - 配置文件子类型 0-未知, 1-Shardsvr-MMAPv1, 2-Shardsvr-WiredTiger, 3-Configsvr-MMAPv1, 4-Configsvr-WiredTiger, 5-Mongos

  • +
  • RegionFlag (bool) - 该配置文件是否是地域级别配置文件,默认是false

  • +
+

Response

+
    +
  • GroupId (int) - 配置参数组id

  • +
+
+ +
+ +
+
+

UDPN

+
+
+class ucloud.services.udpn.client.UDPNClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_udpn(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateUDPN - 分配一条 UDPN 专线

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽

  • +
  • Peer1 (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • Peer2 (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • ChargeType (str) - 计费类型,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费

  • +
  • CouponId (str) - 代金劵

  • +
  • Quantity (int) - 计费时长,默认 1

  • +
+

Response

+
    +
  • UDPNId (str) - 资源名称

  • +
+
+ +
+
+describe_udpn(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDPN - 描述 UDPN

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度,默认为 20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为 0

  • +
  • UDPNId (str) - 申请到的 UDPN 资源 ID。若为空,则查询该用户在机房所有的专线信息。非默认项目资源,需填写ProjectId

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDPNData 模型定义

  • +
  • TotalCount (int) - 查询到的总数量

  • +
+

Response Model

+

UDPNData

+
    +
  • Bandwidth (int) - 带宽

  • +
  • ChargeType (str) - 计费类型

  • +
  • CreateTime (int) - unix 时间戳 创建时间

  • +
  • ExpireTime (int) - unix 时间戳 到期时间

  • +
  • Peer1 (str) - 可用区域 1

  • +
  • Peer2 (str) - 可用区域 2

  • +
  • UDPNId (str) - UDPN 资源短 ID

  • +
+
+ +
+
+get_udpn_line_list(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUDPNLineList - 获取当前支持的专线线路列表

+

Request

+ +

Response

+
    +
  • DataSet (list) - 见 UDPNLineSet 模型定义

  • +
  • TotalCount (int) - DataSet中的元素个数

  • +
+

Response Model

+

UDPNLineSet

+
    +
  • BandwidthUpperLimit (int) - 线路带宽上限,单位 M

  • +
  • LocalRegion (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky

  • +
  • RemoteRegion (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky

  • +
+
+ +
+
+get_udpn_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUDPNPrice - 获取 UDPN 价格

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽信息

  • +
  • Peer1 (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • Peer2 (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • ChargeType (str) - 计费类型

  • +
  • Quantity (int) - 购买时长

  • +
+

Response

+
    +
  • Price (float) - 专线价格

  • +
  • PurchaseValue (int) - 资源有效期 unix 时间戳

  • +
+
+ +
+
+get_udpn_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUDPNUpgradePrice - 获取专线升级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽

  • +
  • UDPNId (str) - (Required) 专线带宽资源 Id

  • +
+

Response

+
    +
  • Price (float) - 升级后的价格

  • +
+
+ +
+
+modify_udpn_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUDPNBandwidth - 修改带宽值

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 调整后专线带宽, 单位为Mbps,取值范围为大于等于2且小于等于1000([2-1000])的整数

  • +
  • UDPNId (str) - (Required) UDPN Id

  • +
  • CouponId (str) - 代金劵 ID

  • +
+

Response

+
+ +
+
+release_udpn(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReleaseUDPN - 释放 UDPN

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDPNId (str) - (Required) UDPN 资源 Id

  • +
+

Response

+
+ +
+ +
+
+

UDisk

+
+
+class ucloud.services.udisk.client.UDiskClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+attach_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

AttachUDisk - 将一个可用的UDisk挂载到某台主机上,当UDisk挂载成功后,还需要在主机内部进行文件系统操作

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要挂载的UDisk实例ID.

  • +
  • UHostId (str) - (Required) UHost实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • MultiAttach (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes )

  • +
+

Response

+
    +
  • UDiskId (str) - 挂载的UDisk实例ID

  • +
  • UHostId (str) - 挂载的UHost实例ID

  • +
+
+ +
+
+clone_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

CloneUDisk - 从UDisk创建UDisk克隆

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • SourceId (str) - (Required) 克隆父Disk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay 默认: Dynamic

  • +
  • Comment (str) - Disk注释

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • UDataArkMode (str) - 方舟是否开启,”Yes”:开启,”No”:关闭;默认为”No”

  • +
+

Response

+
    +
  • UDiskId (list) - 创建UDisk Id

  • +
+
+ +
+
+clone_udisk_snapshot(req: Optional[dict] = None, **kwargs) → dict[source]
+

CloneUDiskSnapshot - 从快照创建UDisk克隆

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限。

  • +
  • SourceId (str) - (Required) 克隆父Snapshot的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay 默认: Dynamic

  • +
  • Comment (str) - Disk注释

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • UDataArkMode (str) - 是否开启数据方舟 默认:No

  • +
+

Response

+
    +
  • UDiskId (list) - 创建UDisk Id

  • +
+
+ +
+
+create_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDisk - 创建UDisk磁盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,普通盘: 范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限;SSD盘: 范围[1~4000]。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic, Postpay, Trial 默认: Dynamic

  • +
  • CmkId (str) - 加密需要的cmk id,UKmsMode为Yes时,必填

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DiskType (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),默认值(DataDisk)

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 是否开启数据方舟

  • +
  • UKmsMode (str) - 是否加密。Yes:加密,No:不加密,默认值(No)

  • +
+

Response

+
    +
  • UDiskId (list) - UDisk实例Id

  • +
+
+ +
+
+create_udisk_snapshot(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUDiskSnapshot - 创建snapshot快照

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 快照名称

  • +
  • UDiskId (str) - (Required) 快照的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic 默认: Dynamic

  • +
  • Comment (str) - 快照描述

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
+

Response

+
    +
  • SnapshotId (list) - 快照Id

  • +
+
+ +
+
+delete_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDisk - 删除UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 要删除的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+delete_udisk_snapshot(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUDiskSnapshot - 删除Snapshot

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • SnapshotId (str) - 快照Id(填写后不能填写UDisk Id)

  • +
  • UDiskId (str) - UDisk Id,删除该盘所创建出来的所有快照(填写后不能填写SnapshotId)

  • +
+

Response

+
+ +
+
+describe_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDisk - 获取UDisk实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskType (str) - ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:”CLOUD_NORMAL”,IsBoot:”False”; 普通系统盘:DiskType:”CLOUD_NORMAL”,IsBoot:”True”;SSD数据盘:DiskType:”CLOUD_SSD”,IsBoot:”False”;SSD系统盘:DiskType:”CLOUD_SSD”,IsBoot:”True”;RSSD数据盘:DiskType:”CLOUD_RSSD”,IsBoot:”False”;为空拉取所有。ProtocolVersion字段为0或没有该字段时,可设为以下几个值:普通数据盘:DataDisk;普通系统盘;SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;为空拉取所有。

  • +
  • IsBoot (str) - ProtocolVersion字段为1且DiskType不为空时,必须设置,设置规则请参照DiskType;ProtocolVersion字段为1且DiskType为空时,该字段无效。ProtocolVersion字段为0或没有该字段时,该字段无效。

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • ProtocolVersion (int) - 请求协议版本,建议升级为1,为1时DiskType与UHost磁盘类型定义一致;默认为0

  • +
  • UDiskId (str) - UDisk Id(留空返回全部)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskDataSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UDiskDataSet

+
    +
  • ArkSwitchEnable (int) - 是否支持开启方舟,1支持 ,0不支持

  • +
  • ChargeType (str) - Year,Month,Dynamic,Trial,Postpay

  • +
  • CloneEnable (int) - 是否支持克隆,1支持 ,0不支持

  • +
  • CmkId (str) - 该盘的cmk id

  • +
  • CmkIdAlias (str) - cmk id 别名

  • +
  • CmkIdStatus (str) - 该盘cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘)

  • +
  • CreateTime (int) - 创建时间

  • +
  • DataKey (str) - 该盘的密文密钥

  • +
  • DeviceName (str) - 挂载的设备名称

  • +
  • DiskType (str) - 请求中的ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:”CLOUD_NORMAL”,IsBoot:”False”; 普通系统盘:DiskType:”CLOUD_NORMAL”,IsBoot:”True”;SSD数据盘:DiskType:”CLOUD_SSD”,IsBoot:”False”;SSD系统盘:DiskType:”CLOUD_SSD”,IsBoot:”True”;RSSD数据盘:DiskType:”CLOUD_RSSD”,IsBoot:”False”。请求中的ProtocolVersion字段为0或没有该字段时,云硬盘类型参照如下:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk。

  • +
  • ExpiredTime (int) - 过期时间

  • +
  • IsBoot (str) - 是否是系统盘,是:”True”, 否:”False”

  • +
  • IsExpire (str) - 资源是否过期,过期:”Yes”, 未过期:”No”

  • +
  • Name (str) - 实例名称

  • +
  • Size (int) - 容量单位GB

  • +
  • SnapEnable (int) - 是否支持快照,1支持 ,0不支持

  • +
  • SnapshotCount (int) - 该盘快照个数

  • +
  • SnapshotLimit (int) - 该盘快照上限

  • +
  • Status (str) - 状态:Available(可用),Attaching(挂载中), InUse(已挂载), Detaching(卸载中), Initializating(分配中), Failed(创建失败),Cloning(克隆中),Restoring(恢复中),RestoreFailed(恢复失败),

  • +
  • Tag (str) - 业务组名称

  • +
  • UDataArkMode (str) - 是否开启数据方舟,开启:”Yes”, 不支持:”No”

  • +
  • UDiskId (str) - UDisk实例Id

  • +
  • UHostIP (str) - 挂载的UHost的IP

  • +
  • UHostId (str) - 挂载的UHost的Id

  • +
  • UHostName (str) - 挂载的UHost的Name

  • +
  • UKmsMode (str) - 是否是加密盘,是:”Yes”, 否:”No”

  • +
  • Version (str) - 是否支持数据方舟,支持:”2.0”, 不支持:”1.0”

  • +
  • Zone (str) - 可用区

  • +
+
+ +
+
+describe_udisk_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDiskPrice - 获取UDisk实例价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,范围[1~1000]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic

  • +
  • DiskType (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDDataDisk(RSSD数据盘),默认值(DataDisk)

  • +
  • Quantity (int) - 购买UDisk的时长,默认值为1

  • +
  • UDataArkMode (str) - 是否打开数据方舟, 打开”Yes”,关闭”No”, 默认关闭

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskPriceDataSet 模型定义

  • +
+

Response Model

+

UDiskPriceDataSet

+
    +
  • ChargeName (str) - “UDataArk”,”UDisk”

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial

  • +
  • OriginalPrice (int) - 用户折后价

  • +
  • Price (int) - 价格 (单位: 分)

  • +
+
+ +
+
+describe_udisk_snapshot(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDiskSnapshot - 获取UDisk快照

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • SnapshotId (str) - 快照id,SnapshotId , UDiskId 同时传SnapshotId优先

  • +
  • UDiskId (str) - UDiskId,返回该盘所做快照.(必须同时传Zone)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskSnapshotSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UDiskSnapshotSet

+
    +
  • CmkId (str) - 该快照的cmk id

  • +
  • CmkIdAlias (str) - cmk id 别名

  • +
  • CmkIdStatus (str) - 该快照cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘)

  • +
  • Comment (str) - 快照描述

  • +
  • CreateTime (int) - 创建时间

  • +
  • DataKey (str) - 该快照的密文密钥

  • +
  • DiskType (int) - 磁盘类型,0:数据盘,1:系统盘

  • +
  • ExpiredTime (int) - 过期时间

  • +
  • IsUDiskAvailable (bool) - 对应磁盘是否处于可用状态

  • +
  • Name (str) - 快照名称

  • +
  • Size (int) - 容量单位GB

  • +
  • SnapshotId (str) - 快照Id

  • +
  • Status (str) - 快照状态,Normal:正常,Failed:失败,Creating:制作中

  • +
  • UDiskId (str) - 快照的源UDisk的Id

  • +
  • UDiskName (str) - 快照的源UDisk的Name

  • +
  • UHostId (str) - 对应磁盘制作快照时所挂载的主机

  • +
  • UKmsMode (str) - 是否是加密盘快照,是:”Yes”, 否:”No”

  • +
  • Version (str) - 快照版本

  • +
+
+ +
+
+describe_udisk_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUDiskUpgradePrice - 获取UDisk升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,范围[1~2000], 权限位控制可达8T,若需要请申请开通相关权限。

  • +
  • SourceId (str) - (Required) 升级目标UDisk ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DiskType (str) - 磁盘类型,SSDDataDisk:ssd数据盘,DataDisk:普通数据盘,SystemDisk:普通系统盘,SSDSystemDisk:ssd系统盘。默认为DataDisk

  • +
  • UDataArkMode (str) - 是否打开数据方舟, 打开”Yes”,关闭”No”, 默认关闭

  • +
+

Response

+
    +
  • OriginalPrice (int) - 用户折后价

  • +
  • Price (int) - 价格

  • +
+
+ +
+
+detach_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

DetachUDisk - 卸载某个已经挂载在指定UHost实例上的UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要卸载的UDisk实例ID

  • +
  • UHostId (str) - (Required) UHost实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UDiskId (str) - 卸载的UDisk实例ID

  • +
  • UHostId (str) - 卸载的UHost实例ID

  • +
+
+ +
+
+rename_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

RenameUDisk - 重命名UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 重命名的UDisk的Id

  • +
  • UDiskName (str) - (Required) 重命名UDisk的name

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeUDisk - 调整UDisk容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 调整后大小, 单位:GB, 范围[1~2000],权限位控制可达8000,若需要请申请开通相关权限。

  • +
  • UDiskId (str) - (Required) UDisk Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 使用的代金券id

  • +
+

Response

+
+ +
+
+restore_udisk(req: Optional[dict] = None, **kwargs) → dict[source]
+

RestoreUDisk - 从备份恢复数据至UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要恢复的盘id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • SnapshotId (str) - 从指定的快照恢复

  • +
  • SnapshotTime (int) - 指定从方舟恢复的备份时间点

  • +
+

Response

+
+ +
+
+set_udisk__udataark_mode(req: Optional[dict] = None, **kwargs) → dict[source]
+

SetUDiskUDataArkMode - 设置UDisk数据方舟的状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDataArkMode (str) - (Required) 是否开启数据方舟,开启:”Yes”, 不支持:”No”

  • +
  • UDiskId (str) - (Required) 需要设置数据方舟的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+ +
+
+

UHost

+
+
+class ucloud.services.uhost.client.UHostClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+copy_custom_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

CopyCustomImage - 复制自制镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SourceImageId (str) - (Required) 源镜像Id, 参见 DescribeImage

  • +
  • TargetProjectId (str) - (Required) 目标项目Id, 参见 GetProjectList

  • +
  • TargetImageDescription (str) - 目标镜像描述

  • +
  • TargetImageName (str) - 目标镜像名称

  • +
  • TargetRegion (str) - 目标地域,不跨地域不用填

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • TargetImageId (str) - 目标镜像Id

  • +
+
+ +
+
+create_custom_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateCustomImage - 从指定UHost实例,生成自定义镜像。

+

Request

+ +

Response

+
    +
  • ImageId (str) - 镜像Id

  • +
+
+ +
+
+create_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUHostInstance - 创建UHost实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - (Required) 镜像ID。 请通过 DescribeImage 获取

  • +
  • LoginMode (str) - (Required) 主机登陆模式。密码(默认选项): Password。

  • +
  • Password (str) - (Required) UHost密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AlarmTemplateId (int) - 告警模板id,如果传了告警模板id,且告警模板id正确,则绑定告警模板。绑定告警模板失败只会在后台有日志,不会影响创建主机流程,也不会在前端报错。

  • +
  • BootDiskSpace (int) - 【待废弃,不建议调用】系统盘大小。 单位:GB, 范围[20,100], 步长:10

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时付费 默认为月付

  • +
  • CouponId (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看

  • +
  • DiskPassword (str) - 【待废弃,不建议调用】加密盘的密码。若输入此字段,自动选择加密盘。加密盘需要权限位。

  • +
  • DiskSpace (int) - 【待废弃,不建议调用】数据盘大小。 单位:GB, 范围[0,8000], 步长:10, 默认值:20,云盘支持0-8000;本地普通盘支持0-2000;本地SSD盘(包括所有GPU机型)支持100-1000

  • +
  • Disks (list) - 见 CreateUHostInstanceParamDisks 模型定义

  • +
  • GPU (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与UHostType相关)

  • +
  • GpuType (str) - GPU类型,枚举值[“K80”, “P40”, “V100”]

  • +
  • HostType (str) - 【已废弃】宿主机类型,N2,N1

  • +
  • HotplugFeature (bool) - 是否开启热升级特性。True为开启,False为未开启,默认False。

  • +
  • InstallAgent (str) - 【暂不支持】是否安装UGA。’yes’: 安装;其他或者不填:不安装。

  • +
  • IsolationGroup (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。

  • +
  • KeyPair (str) - 【暂不支持】Keypair公钥,LoginMode为KeyPair时此项必须

  • +
  • MachineType (str) - 云主机机型(V2.0),枚举值[“N”, “C”, “G”, “O”]。参考 云主机机型说明

  • +
  • MaxCount (int) - 【批量创建主机时必填】最大创建主机数量,取值范围是[1,100];

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192

  • +
  • MinimalCpuPlatform (str) - 最低cpu平台,枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”。

  • +
  • Name (str) - UHost实例名称。默认:UHost。请遵照 字段规范 设定实例名称。

  • +
  • NetCapability (str) - 网络增强。枚举值:Normal(默认),不开启; Super,开启网络增强1.0; Ultra,开启网络增强2.0(仅支持部分可用区,请参考控制台)

  • +
  • NetworkId (str) - 【已废弃】网络ID(VPC2.0情况下无需填写)。VPC1.0情况下,若不填写,代表优先选择基础网络; 若填写,代表选择子网。参见DescribeSubnet。

  • +
  • NetworkInterface (list) - 见 CreateUHostInstanceParamNetworkInterface 模型定义

  • +
  • PrivateIp (list) - 【数组】创建云主机时指定内网IP。若不传值,则随机分配当前子网下的IP。调用方式举例:PrivateIp.0=x.x.x.x。当前只支持一个内网IP。

  • +
  • PrivateMac (str) - 【批量创建该参数无效】【内部字段】创建云主机时指定Mac。调用方式举例:PrivateMac=”xx:xx:xx:xx:xx:xx”。

  • +
  • Quantity (int) - 购买时长。默认:值 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表购买至月末。

  • +
  • ResourceType (int) - 【内部参数】资源类型

  • +
  • SecurityGroupId (str) - 防火墙Id,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 DescribeSecurityGroup

  • +
  • SetId (int) -

  • +
  • StorageType (str) - 【待废弃,不建议调用】磁盘类型,同时设定系统盘和数据盘的磁盘类型。枚举值为:LocalDisk,本地磁盘; UDisk,云硬盘;默认为LocalDisk。仅部分可用区支持云硬盘方式的主机存储方式,具体请查询控制台。

  • +
  • SubnetId (str) - 子网 ID。默认为当前地域的默认子网。

  • +
  • Tag (str) - 业务组。默认:Default(Default即为未分组)。请遵照 字段规范 设定业务组。

  • +
  • TimemachineFeature (str) - 【待废弃,不建议调用】是否开启方舟特性。Yes为开启方舟,No为关闭方舟。目前仅选择普通本地盘+普通本地盘 或 SSD云盘+普通云盘的组合支持开启方舟。

  • +
  • UHostType (str) - 【建议后续不再使用】云主机机型V1.0。参考 云主机机型说明

  • +
  • UserDataScript (str) - 【暂不支持】cloudinit方式下,用户初始化脚本

  • +
  • VPCId (str) - VPC ID。默认为当前地域的默认VPC。

  • +
+

Response

+
    +
  • IPs (list) - 【批量创建不会返回】IP信息

  • +
  • UHostIds (list) - UHost实例Id集合

  • +
+

Request Model

+

CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH

+
    +
  • Area (str) - 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填一个

  • +
  • AreaCode (str) - GlobalSSH的。AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个

  • +
  • Port (int) - SSH端口,1-65535且不能使用80,443端口

  • +
+

CreateUHostInstanceParamNetworkInterfaceEIP

+
    +
  • Bandwidth (int) - 【如果绑定EIP这个参数必填】弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-800]

  • +
  • CouponId (str) - 当前EIP代金券id。请通过DescribeCoupon接口查询,或登录用户中心查看

  • +
  • GlobalSSH (dict) - 见 CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH 模型定义

  • +
  • OperatorName (str) - 【如果绑定EIP这个参数必填】弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International

  • +
  • PayMode (str) - 弹性IP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; “ShareBandwidth”,共享带宽模式. “Free”:免费带宽模式.默认为 “Bandwidth”.

  • +
  • ShareBandwidthId (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效

  • +
+

CreateUHostInstanceParamDisks

+
    +
  • BackupType (str) - 磁盘备份方案。枚举值:> NONE,无备份 > DATAARK,数据方舟 当前磁盘支持的备份模式参考 磁盘类型

  • +
  • CouponId (str) - 云盘代金券id。不适用于系统盘/本地盘。请通过DescribeCoupon接口查询,或登录用户中心查看

  • +
  • Encrypted (bool) - 【功能仅部分可用区开放,详询技术支持】磁盘是否加密。加密:true, 不加密: false加密必须传入对应的的KmsKeyId

  • +
  • IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。

  • +
  • KmsKeyId (str) - 【功能仅部分可用区开放,详询技术支持】kms key id。选择加密盘时必填。

  • +
  • Size (int) - 磁盘大小,单位GB。请参考 磁盘类型

  • +
  • Type (str) - 磁盘类型。请参考 磁盘类型

  • +
+

CreateUHostInstanceParamNetworkInterface

+
    +
  • EIP (dict) - 见 CreateUHostInstanceParamNetworkInterfaceEIP 模型定义

  • +
+
+ +
+
+describe_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeImage - 获取指定数据中心镜像列表,用户可通过指定操作系统类型,镜像Id进行过滤。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - 镜像Id

  • +
  • ImageType (str) - 镜像类型。标准镜像:Base,镜像市场:Business, 自定义镜像:Custom,默认返回所有类型

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • OsType (str) - 操作系统类型:Linux, Windows 默认返回所有类型

  • +
  • PriceSet (int) - 是否返回价格:1返回,0不返回;默认不返回

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • ImageSet (list) - 见 UHostImageSet 模型定义

  • +
  • TotalCount (int) - 满足条件的镜像总数

  • +
+

Response Model

+

UHostImageSet

+
    +
  • CreateTime (int) - 创建时间,格式为Unix时间戳

  • +
  • Features (list) - 特殊状态标识, 目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra](网络增强2.0)

  • +
  • FuncType (str) - 行业镜像类型(仅行业镜像将返回这个值)

  • +
  • ImageDescription (str) - 镜像描述

  • +
  • ImageId (str) - 镜像ID

  • +
  • ImageName (str) - 镜像名称

  • +
  • ImageSize (int) - 镜像大小

  • +
  • ImageType (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom

  • +
  • IntegratedSoftware (str) - 集成软件名称(仅行业镜像将返回这个值)

  • +
  • Links (str) - 介绍链接(仅行业镜像将返回这个值)

  • +
  • MinimalCPU (str) - 默认值为空’’’。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell”

  • +
  • OsName (str) - 操作系统名称

  • +
  • OsType (str) - 操作系统类型:Liunx,Windows

  • +
  • State (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable

  • +
  • Vendor (str) - 供应商(仅行业镜像将返回这个值)

  • +
  • Zone (str) - 可用区,参见 可用区列表 |

  • +
+
+ +
+
+describe_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUHostInstance - 获取主机或主机列表信息,并可根据数据中心,主机ID等参数进行过滤。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • IsolationGroup (str) - 硬件隔离组id。通过硬件隔离组筛选主机。

  • +
  • LifeCycle (int) - 1:普通云主机;2:抢占型云主机;如不传此参数,默认全部获取

  • +
  • Limit (int) - 返回数据长度,默认为20,最大100

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • SubnetId (str) - 子网id。通过子网筛选主机。北京一地域无效。

  • +
  • Tag (str) - 要查询的业务组名称

  • +
  • UHostIds (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。

  • +
  • VPCId (str) - vpc id。通过VPC筛选主机。北京一地域无效。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • TotalCount (int) - UHostInstance总数

  • +
  • UHostSet (list) - 见 UHostInstanceSet 模型定义

  • +
+

Response Model

+

UHostDiskSet

+
    +
  • BackupType (str) - 备份方案。若开通了数据方舟,则为DataArk

  • +
  • DiskId (str) - 磁盘ID

  • +
  • DiskType (str) - 磁盘类型。请参考 磁盘类型

  • +
  • Drive (str) - 磁盘盘符

  • +
  • Encrypted (bool) - true: 加密盘 false:非加密盘

  • +
  • IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。

  • +
  • Name (str) - UDisk名字(仅当磁盘是UDisk时返回)

  • +
  • Size (int) - 磁盘大小,单位: GB

  • +
  • Type (str) - 【建议不再使用】磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk

  • +
+

UHostIPSet

+
    +
  • Bandwidth (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息)

  • +
  • Default (str) - 是否默认的弹性网卡的信息。true: 是默认弹性网卡;其他值:不是。

  • +
  • IP (str) - IP地址

  • +
  • IPId (str) - IP资源ID (内网IP无对应的资源ID)

  • +
  • SubnetId (str) - IP地址对应的子网 ID(北京一当前字段为空)

  • +
  • Type (str) - 国际: Internation,BGP: Bgp,内网: Private

  • +
  • VPCId (str) - IP地址对应的VPC ID(北京一当前字段为空)

  • +
+

UHostInstanceSet

+
    +
  • AutoRenew (str) - 是否自动续费,自动续费:“Yes”,不自动续费:“No”

  • +
  • BasicImageId (str) - 基础镜像ID(指当前自定义镜像的来源镜像)

  • +
  • BasicImageName (str) - 基础镜像名称(指当前自定义镜像的来源镜像)

  • +
  • BootDiskState (str) - 系统盘状态 Normal表示初始化完成;Initializing表示在初始化。仍在初始化的系统盘无法制作镜像。

  • +
  • CPU (int) - 虚拟CPU核数,单位: 个

  • +
  • ChargeType (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限);

  • +
  • CreateTime (int) - 创建时间,格式为Unix时间戳

  • +
  • DiskSet (list) - 见 UHostDiskSet 模型定义

  • +
  • ExpireTime (int) - 到期时间,格式为Unix时间戳

  • +
  • GPU (int) - GPU个数

  • +
  • HostType (str) - 【建议不再使用】主机系列:N2,表示系列2;N1,表示系列1

  • +
  • HotplugFeature (bool) - true: 开启热升级; false,未开启热升级

  • +
  • IPSet (list) - 见 UHostIPSet 模型定义

  • +
  • ImageId (str) - 【建议不再使用】主机的系统盘ID。

  • +
  • IsolationGroup (str) - 隔离组id,不在隔离组则返回””

  • +
  • LifeCycle (str) - 主机的生命周期类型。目前仅支持Normal:普通;

  • +
  • MachineType (str) - 云主机机型(新)。参考 云主机机型说明

  • +
  • Memory (int) - 内存大小,单位: MB

  • +
  • Name (str) - UHost实例名称

  • +
  • NetCapability (str) - 网络增强。Normal: 无;Super: 网络增强1.0; Ultra: 网络增强2.0

  • +
  • NetworkState (str) - 【建议不再使用】网络状态。 连接:Connected, 断开:NotConnected

  • +
  • OsName (str) - 创建主机的最初来源镜像的操作系统名称(若直接通过基础镜像创建,此处返回和BasicImageName一致)

  • +
  • OsType (str) - 操作系统类别。返回”Linux”或者”Windows”

  • +
  • Remark (str) - 备注

  • +
  • State (str) - 实例状态,枚举值:>初始化: Initializing; >启动中: Starting; > 运行中: Running; > 关机中: Stopping; >关机: Stopped >安装失败: Install Fail; >重启中: Rebooting

  • +
  • StorageType (str) - 【建议不再使用】主机磁盘类型。 枚举值为:> LocalDisk,本地磁盘; > UDisk 云盘。只要有一块磁盘为本地盘,即返回LocalDisk。

  • +
  • SubnetType (str) - 【建议不再使用】仅北京A的云主机会返回此字段。基础网络模式:Default;子网模式:Private

  • +
  • Tag (str) - 业务组名称

  • +
  • TimemachineFeature (str) - 【建议不再使用】数据方舟模式。枚举值:> Yes: 开启方舟; > no,未开启方舟

  • +
  • TotalDiskSpace (int) - 总的数据盘存储空间。

  • +
  • UHostId (str) - UHost实例ID

  • +
  • UHostType (str) - 【建议不再使用】云主机机型(旧)。参考 云主机机型说明

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+
+ +
+
+describe_uhost_tags(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUHostTags - 获取指定数据中心的业务组列表。

+

Request

+ +

Response

+
    +
  • TagSet (list) - 见 UHostTagSet 模型定义

  • +
  • TotalCount (int) - 已有主机的业务组总个数

  • +
+

Response Model

+

UHostTagSet

+
    +
  • Tag (str) - 业务组名称

  • +
  • TotalCount (int) - 该业务组中包含的主机个数

  • +
  • Zone (str) - 可用区

  • +
+
+ +
+
+get_uhost_instance_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUHostInstancePrice - 根据UHost实例配置,获取UHost实例的价格。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CPU (int) - (Required) CPU核数。可选参数:1-64。可选范围参照控制台。默认值: 4

  • +
  • Count (int) - (Required) 购买台数,范围[1,5]

  • +
  • ImageId (str) - (Required) 镜像Id,可通过 DescribeImage 获取镜像ID

  • +
  • Memory (int) - (Required) 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参照好控制台)。默认值:8192

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时付费 默认为月付。

  • +
  • DiskSpace (int) - 【待废弃】数据盘大小,单位: GB,范围[0,1000],步长: 10,默认值: 0

  • +
  • Disks (list) - 见 GetUHostInstancePriceParamDisks 模型定义

  • +
  • GPU (int) - GPU卡核心数。仅GPU机型支持此字段。

  • +
  • GpuType (str) - GPU类型,枚举值[“K80”, “P40”, “V100”]

  • +
  • LifeCycle (int) - 【未支持】1:普通云主机;2:抢占性云主机;默认普通

  • +
  • MachineType (str) - 云主机机型(V2版本概念)。枚举值[“N”, “C”, “G”, “O”]。参考 云主机机型说明

  • +
  • NetCapability (str) - 网络增强。枚举值:Normal,不开启; Super,开启网络增强1.0。 默认值为Normal。

  • +
  • Quantity (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。

  • +
  • StorageType (str) - 【待废弃】磁盘类型,同时设定系统盘和数据盘, 枚举值为:LocalDisk,本地磁盘; UDisk,云硬盘; 默认为LocalDisk 仅部分可用区支持云硬盘方式的主机存储方式,具体请查询控制台。

  • +
  • TimemachineFeature (str) - 【待废弃】方舟机型。No,Yes。默认是No。

  • +
  • UHostType (str) - 【待废弃】云主机机型(V1版本概念)。参考 云主机机型说明

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PriceSet (list) - 见 UHostPriceSet 模型定义

  • +
+

Request Model

+

GetUHostInstancePriceParamDisks

+
    +
  • BackupType (str) - 磁盘备份方案。枚举值:> NONE,无备份 > DATAARK,数据方舟 当前磁盘支持的备份模式参考 磁盘类型

  • +
  • IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。

  • +
  • Size (int) - 磁盘大小,单位GB。请参考 磁盘类型

  • +
  • Type (str) - 磁盘类型。请参考 磁盘类型

  • +
+

Response Model

+

UHostPriceSet

+
    +
  • ChargeType (str) - 计费类型。Year,Month,Dynamic

  • +
  • Price (float) - 价格,单位: 元,保留小数点后两位有效数字

  • +
+
+ +
+
+get_uhost_instance_vnc_info(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUHostInstanceVncInfo - 获取指定UHost实例的管理VNC配置详细信息。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
  • VncIP (str) - Vnc登录IP

  • +
  • VncPassword (str) - Vnc 登录密码

  • +
  • VncPort (int) - Vnc登录端口

  • +
+
+ +
+
+get_uhost_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUHostUpgradePrice - 获取UHost实例升级配置的价格。可选配置范围请参考 云主机机型说明

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例ID。 参见 DescribeUHostInstance

  • +
  • BootDiskSpace (int) - 【待废弃】系统大小,单位: GB,范围[20,100],步长: 10。

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-64(可选范围参考控制台)。默认值为当前实例的CPU核数。

  • +
  • DiskSpace (int) - 【待废弃】数据盘大小,单位: GB,范围[0,1000],步长: 10, 默认值是该主机当前数据盘大小。

  • +
  • HostType (str) - 【待废弃】主机系列,目前支持N1,N2

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值为当前实例的内存大小。

  • +
  • NetCapValue (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变)

  • +
  • TimemachineFeature (str) - 方舟机型。No,Yes。默认是No。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (float) - 规格调整差价。精确到小数点后2位。

  • +
+
+ +
+
+import_custom_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

ImportCustomImage - 把UFile的镜像文件导入到UHost,生成自定义镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Auth (bool) - (Required) 是否授权。必须填true

  • +
  • Format (str) - (Required) 镜像格式,可选RAW、VHD、VMDK、qcow2

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • OsName (str) - (Required) 操作系统详细版本,请参考控制台的镜像版本;OsType为Other时,输入参数为Other

  • +
  • OsType (str) - (Required) 操作系统平台,比如CentOS、Ubuntu、Windows、RedHat等,请参考控制台的镜像版本;若导入控制台上没有的操作系统,参数为Other

  • +
  • UFileUrl (str) - (Required) UFile私有空间地址

  • +
  • ImageDescription (str) - 镜像描述

  • +
+

Response

+
    +
  • ImageId (str) - 镜像Id

  • +
+
+ +
+
+modify_uhost_instance_name(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUHostInstanceName - 修改指定UHost实例名称,需要给出数据中心,UHostId,及新的实例名称。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+modify_uhost_instance_remark(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUHostInstanceRemark - 修改指定UHost实例备注信息。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+modify_uhost_instance_tag(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUHostInstanceTag - 修改指定UHost实例业务组标识。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+poweroff_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

PoweroffUHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+reboot_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

RebootUHostInstance - 重新启动UHost实例,需要指定数据中心及UHostID两个参数的值。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+reinstall_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReinstallUHostInstance - 重新安装指定UHost实例的操作系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例资源ID 参见 DescribeUHostInstance

  • +
  • BootDiskSpace (int) - 系统盘大小。 单位:GB, 范围[20,100], 步长:10

  • +
  • DNSServers (list) - 针对非私有子网主机,可自定义DNS。n可为0-2

  • +
  • ImageId (str) - 镜像Id,默认使用原镜像 参见 DescribeImage

  • +
  • Password (str) - 如果创建UHost实例时LoginMode为Password,则必须填写,如果LoginMode为KeyPair,不需要填写 (密码格式使用BASE64编码;LoginMode不可变更)

  • +
  • ReserveDisk (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes;如果是从Windows重装为Linux或反之,则无法保留数据盘

  • +
  • ResourceType (int) - 云灾备指明191

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UhostId (str) - UHost实例资源ID

  • +
+
+ +
+
+reset_uhost_instance_password(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResetUHostInstancePassword - 重置UHost实例的管理员密码。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Password (str) - (Required) UHost新密码(密码格式使用BASE64编码)

  • +
  • UHostId (str) - (Required) UHost实例ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+resize_attached_disk(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeAttachedDisk - 修改挂载的磁盘大小,包含系统盘和数据盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskId (str) - (Required) 磁盘ID。参见 DescribeUHostInstance 返回值中的DiskSet。

  • +
  • DiskSpace (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 磁盘类型

  • +
  • UHostId (str) - (Required) UHost实例ID。 参见 DescribeUHostInstance

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DiskId (str) - 改配成功的磁盘id

  • +
+
+ +
+
+resize_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeUHostInstance - 修改指定UHost实例的资源配置,如CPU核心数,内存容量大小,网络增强等。可选配置范围请参考 云主机机型说明

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例ID 参见 DescribeUHostInstance

  • +
  • BootDiskSpace (int) - 【待废弃】系统盘大小,单位:GB,范围[20,100],步长:10,系统盘不支持缩容,因此不允许输入比当前实例系统盘小的值

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-32(可选范围与UHostType相关)。默认值为当前实例的CPU核数

  • +
  • DiskSpace (int) - 【待废弃】数据盘大小,单位:GB,范围[10,1000]; SSD机型,单位:GB,范围[100,500];步长:10,默认值为当前实例的数据盘大小,数据盘不支持缩容,因此不允许输入比当前实例数据盘大小的值

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围与UHostType相关)。默认值为当前实例的内存大小。

  • +
  • NetCapValue (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+start_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

StartUHostInstance - 启动处于关闭状态的UHost实例,需要指定数据中心及UHostID两个参数的值。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+stop_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

StopUHostInstance - 指停止处于运行状态的UHost实例,需指定数据中心及UhostID。

+

Request

+ +

Response

+
    +
  • UhostId (str) - UHost实例ID

  • +
+
+ +
+
+terminate_custom_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

TerminateCustomImage - 删除用户自定义镜像

+

Request

+ +

Response

+
    +
  • ImageId (str) - 自制镜像Id

  • +
+
+ +
+
+terminate_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

TerminateUHostInstance - 删除指定数据中心的UHost实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost资源Id 参见 DescribeUHostInstance

  • +
  • Destroy (int) - 是否直接删除,0表示按照原来的逻辑(有回收站权限,则进入回收站),1表示直接删除

  • +
  • ReleaseEIP (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。

  • +
  • ReleaseUDisk (bool) - 是否删除挂载的数据盘。true删除,其他不删除。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • InRecycle (str) - 放入回收站:”Yes”, 彻底删除:“No”

  • +
  • UHostId (str) - UHost 实例 Id

  • +
+
+ +
+
+upgrade_to_ark_uhost_instance(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpgradeToArkUHostInstance - 普通升级为方舟机型

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostIds (list) - (Required) UHost主机的资源ID,例如UHostIds.0代表希望升级的主机1,UHostIds.1代表主机2。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 代金券ID 请参考DescribeCoupon接口

  • +
+

Response

+
    +
  • UHostSet (list) - UHost主机的资源ID数组

  • +
+
+ +
+ +
+
+

ULB

+
+
+class ucloud.services.ulb.client.ULBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_backend(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateBackend - 添加ULB后端资源实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ResourceId (str) - (Required) 所添加的后端资源的资源ID

  • +
  • ResourceType (str) - (Required) 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器,默认值为“UHost”

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • VServerId (str) - (Required) VServer实例的ID

  • +
  • Enabled (int) - 后端实例状态开关,枚举值: 1:启用; 0:禁用 默认为启用

  • +
  • Port (int) - 所添加的后端资源服务端口,取值范围[1-65535],默认80

  • +
  • Weight (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1

  • +
+

Response

+
    +
  • BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关),可用于 UpdateBackendAttribute/UpdateBackendAttributeBatch/ReleaseBackend

  • +
+
+ +
+
+allocate_backend_batch(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateBackendBatch - 批量添加VServer后端节点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Backends (list) - (Required) 用| 分割字段,格式:ResourceId| ResourceType| Port| Enabled|IP| Weight。ResourceId:所添加的后端资源的资源ID;ResourceType:所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器,默认值为“UHost”;Port:所添加的后端资源服务端口,取值范围[1-65535];Enabled:后端实例状态开关,枚举值: 1:启用; 0:禁用;IP:后端资源内网ip;Weight:所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • VServerId (str) - (Required) VServer实例的ID

  • +
  • ApiVersion (int) -

  • +
+

Response

+
    +
  • BackendSet (list) - 见 BackendSet 模型定义

  • +
+

Response Model

+

BackendSet

+
    +
  • BackendId (str) - rs的资源ID

  • +
  • ResourceId (str) - rs对应的UHost ID

  • +
+
+ +
+
+bind_ssl(req: Optional[dict] = None, **kwargs) → dict[source]
+

BindSSL - 将SSL证书绑定到VServer

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的Id

  • +
  • ULBId (str) - (Required) 所绑定ULB实例ID

  • +
  • VServerId (str) - (Required) 所绑定VServer实例ID

  • +
+

Response

+
+ +
+
+create_policy(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreatePolicy - 创建VServer内容转发策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId

  • +
  • Match (str) - (Required) 内容转发匹配字段

  • +
  • ULBId (str) - (Required) 需要添加内容转发策略的负载均衡实例ID

  • +
  • VServerId (str) - (Required) 需要添加内容转发策略的VServer实例ID

  • +
  • Type (str) - 内容转发匹配字段的类型

  • +
+

Response

+
    +
  • PolicyId (str) - 内容转发策略ID

  • +
+
+ +
+
+create_ssl(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLName (str) - (Required) SSL证书的名字,默认值为空

  • +
  • CaCert (str) - CA证书

  • +
  • PrivateKey (str) - 加密证书的私钥

  • +
  • SSLContent (str) - SSL证书的完整内容,包括用户证书、加密证书的私钥、CA证书

  • +
  • SSLType (str) - 所添加的SSL证书类型,目前只支持Pem格式

  • +
  • UserCert (str) - 用户的证书

  • +
+

Response

+
    +
  • SSLId (str) - SSL证书的Id

  • +
+
+ +
+
+create_ulb(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateULB - 创建负载均衡实例,可以选择内网或者外网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - ULB 所属的业务组ID,如果不传则使用默认的业务组

  • +
  • ChargeType (str) - 付费方式

  • +
  • IPVersion (str) - ULB ip类型,枚举值:IPv6 / IPv4 (内部测试,暂未对外开放)

  • +
  • InnerMode (str) - 创建的ULB是否为内网模式

  • +
  • ListenType (str) - ULB 监听器类型,枚举值:RequestProxy / PacketsTransmit (内部测试,暂未对外开放)

  • +
  • OuterMode (str) - 创建的ULB是否为外网模式,默认即为外网模式

  • +
  • PrivateIp (str) - 创建内网ULB时指定内网IP。若不传值,则随机分配当前子网下的IP(暂时不对外开放,创建外网ULB该字段会忽略)

  • +
  • Remark (str) - 备注

  • +
  • SubnetId (str) - 内网ULB 所属的子网ID,如果不传则使用默认的子网

  • +
  • Tag (str) - 业务组

  • +
  • ULBName (str) - 负载均衡的名字,默认值为“ULB”

  • +
  • VPCId (str) - ULB所在的VPC的ID, 如果不传则使用默认的VPC

  • +
+

Response

+
    +
  • ULBId (str) - 负载均衡实例的Id

  • +
+
+ +
+
+create_vserver(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateVServer - 创建VServer实例,定义监听的协议和端口以及负载均衡算法

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例ID

  • +
  • ClientTimeout (int) - ListenType为RequestProxy时表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;ListenType为PacketsTransmit时表示连接保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持

  • +
  • Domain (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名

  • +
  • FrontendPort (int) - VServer后端端口,取值范围[1-65535];默认值为80

  • +
  • ListenType (str) - 监听器类型,枚举值为:RequestProxy -> 请求代理;PacketsTransmit -> 报文转发;默认为”RequestProxy”

  • +
  • Method (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin在请求代理和报文转发中使用。默认为:”Roundrobin”

  • +
  • MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;

  • +
  • Path (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径

  • +
  • PersistenceInfo (str) - 根据PersistenceType确认; None和ServerInsert: 此字段无意义; UserDefined:此字段传入自定义会话保持String

  • +
  • PersistenceType (str) - VServer会话保持方式,默认关闭会话保持。枚举值:None -> 关闭;ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY。

  • +
  • Protocol (str) - VServer实例的协议,请求代理模式下有 HTTP、HTTPS、TCP,报文转发下有 TCP,UDP。默认为“HTTP”

  • +
  • VServerName (str) - VServer实例名称,默认为”VServer”

  • +
+

Response

+
    +
  • VServerId (str) - VServer实例的Id

  • +
+
+ +
+
+delete_policy(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeletePolicy - 删除内容转发策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PolicyId (str) - (Required) 内容转发策略ID

  • +
  • GroupId (str) - 内容转发策略组ID

  • +
  • VServerId (str) - VServer 资源ID

  • +
+

Response

+
+ +
+
+delete_ssl(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteSSL - 删除SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的ID

  • +
+

Response

+
+ +
+
+delete_ulb(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteULB - 删除负载均衡实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • ReleaseEip (bool) - 删除ulb时是否释放绑定的EIP,false标识只解绑EIP,true表示会释放绑定的EIP,默认是false

  • +
+

Response

+
+ +
+
+delete_vserver(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteVServer - 删除VServer实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • VServerId (str) - (Required) VServer实例的ID

  • +
+

Response

+
+ +
+
+describe_ssl(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeSSL - 获取SSL证书信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值,默认为20

  • +
  • Offset (int) - 数据偏移量,默认值为0

  • +
  • SSLId (str) - SSL证书的Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBSSLSet 模型定义

  • +
  • TotalCount (int) - 满足条件的SSL证书总数

  • +
+

Response Model

+

ULBSSLSet

+
    +
  • HashValue (str) -

  • +
  • SSLId (str) - SSL证书的Id

  • +
  • SSLName (str) - SSL证书的名字

  • +
+
+ +
+
+describe_ulb(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeULB - 获取ULB详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - ULB所属的业务组ID

  • +
  • Limit (int) - 数据分页值,默认为20

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
  • SubnetId (str) - ULB所属的子网ID

  • +
  • ULBId (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息

  • +
  • VPCId (str) - ULB所属的VPC

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBSet 模型定义

  • +
  • TotalCount (int) - 满足条件的ULB总数

  • +
+

Response Model

+

PolicyBackendSet

+
    +
  • BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关

  • +
  • ObjectId (str) - 后端资源的对象ID

  • +
  • Port (int) - 所添加的后端资源服务端口

  • +
  • PrivateIP (str) - 后端资源的内网IP

  • +
  • ResourceName (str) - 后端资源的实例名称

  • +
+

ULBPolicySet

+
    +
  • BackendSet (list) - 见 PolicyBackendSet 模型定义

  • +
  • Match (str) - 内容转发匹配字段;默认内容转发类型下为空。

  • +
  • PolicyId (str) - 内容转发Id,默认内容转发类型下为空。

  • +
  • PolicyPriority (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。

  • +
  • PolicyType (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发

  • +
  • TotalCount (int) - 默认内容转发类型下返回当前rs总数

  • +
  • Type (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空

  • +
  • VServerId (str) - 所属VServerId

  • +
+

ULBBackendSet

+
    +
  • BackendId (str) - 后端资源实例的Id

  • +
  • Enabled (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用

  • +
  • Port (int) - 后端提供服务的端口

  • +
  • PrivateIP (str) - 后端提供服务的内网IP

  • +
  • ResourceId (str) - 资源实例的资源Id

  • +
  • ResourceName (str) - 资源实例的资源名称

  • +
  • ResourceType (str) - 资源实例的类型

  • +
  • Status (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常

  • +
  • SubResourceId (str) - 资源绑定的虚拟网卡实例的资源Id

  • +
  • SubResourceName (str) - 资源绑定的虚拟网卡实例的资源名称

  • +
  • SubResourceType (str) - 资源绑定的虚拟网卡实例的类型

  • +
  • SubnetId (str) - 后端提供服务的资源所在的子网的ID

  • +
  • Weight (int) -

  • +
+

ULBSSLSet

+
    +
  • HashValue (str) -

  • +
  • SSLId (str) - SSL证书的Id

  • +
  • SSLName (str) - SSL证书的名字

  • +
+

ULBVServerSet

+
    +
  • BackendSet (list) - 见 ULBBackendSet 模型定义

  • +
  • ClientTimeout (int) - 空闲连接的回收时间,单位:秒。

  • +
  • Domain (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名

  • +
  • FrontendPort (int) - VServer服务端口

  • +
  • ListenType (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发

  • +
  • Method (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。

  • +
  • MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;

  • +
  • Path (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径

  • +
  • PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。

  • +
  • PersistenceType (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。

  • +
  • PolicySet (list) - 见 ULBPolicySet 模型定义

  • +
  • Protocol (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。

  • +
  • SSLSet (list) - 见 ULBSSLSet 模型定义

  • +
  • Status (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。

  • +
  • VServerId (str) - VServer实例的Id

  • +
  • VServerName (str) - VServer实例的名字

  • +
+

ULBIPSet

+
    +
  • Bandwidth (int) - 弹性IP的带宽值(暂未对外开放)

  • +
  • BandwidthType (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放)

  • +
  • EIP (str) - 弹性IP地址

  • +
  • EIPId (str) - 弹性IP的ID

  • +
  • OperatorName (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP

  • +
+

ULBSet

+
    +
  • Bandwidth (int) - 带宽

  • +
  • BandwidthType (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽

  • +
  • BusinessId (str) - ULB 所属的业务组ID

  • +
  • CreateTime (int) - ULB的创建时间,格式为Unix Timestamp

  • +
  • ExpireTime (int) - ULB的到期时间,格式为Unix Timestamp

  • +
  • IPSet (list) - 见 ULBIPSet 模型定义

  • +
  • Name (str) - 负载均衡的资源名称(资源系统中),缺省值“ULB”

  • +
  • PrivateIP (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空

  • +
  • Remark (str) - 负载均衡的备注,缺省值“”

  • +
  • Resource (list) - ULB的详细信息列表(废弃)

  • +
  • SubnetId (str) - ULB 为 InnerMode 时,ULB 所属的子网ID,默认为空

  • +
  • Tag (str) - 负载均衡的业务组名称,缺省值“Default”

  • +
  • ULBId (str) - 负载均衡的资源ID

  • +
  • ULBName (str) - 负载均衡的资源名称(内部记载,废弃)

  • +
  • ULBType (str) - ULB 的类型

  • +
  • VPCId (str) - ULB所在的VPC的ID

  • +
  • VServerSet (list) - 见 ULBVServerSet 模型定义

  • +
+
+ +
+
+describe_vserver(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeVServer - 获取ULB下的VServer的详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的Id

  • +
  • Limit (int) - 数据分页值

  • +
  • Offset (int) - 数据偏移量

  • +
  • VServerId (str) - VServer实例的Id;若指定则返回指定的VServer实例的信息; 若不指定则返回当前负载均衡实例下所有VServer的信息

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBVServerSet 模型定义

  • +
  • TotalCount (int) - 满足条件的VServer总数

  • +
+

Response Model

+

PolicyBackendSet

+
    +
  • BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关

  • +
  • ObjectId (str) - 后端资源的对象ID

  • +
  • Port (int) - 所添加的后端资源服务端口

  • +
  • PrivateIP (str) - 后端资源的内网IP

  • +
  • ResourceName (str) - 后端资源的实例名称

  • +
+

ULBSSLSet

+
    +
  • HashValue (str) -

  • +
  • SSLId (str) - SSL证书的Id

  • +
  • SSLName (str) - SSL证书的名字

  • +
+

ULBPolicySet

+
    +
  • BackendSet (list) - 见 PolicyBackendSet 模型定义

  • +
  • Match (str) - 内容转发匹配字段;默认内容转发类型下为空。

  • +
  • PolicyId (str) - 内容转发Id,默认内容转发类型下为空。

  • +
  • PolicyPriority (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。

  • +
  • PolicyType (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发

  • +
  • TotalCount (int) - 默认内容转发类型下返回当前rs总数

  • +
  • Type (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空

  • +
  • VServerId (str) - 所属VServerId

  • +
+

ULBBackendSet

+
    +
  • BackendId (str) - 后端资源实例的Id

  • +
  • Enabled (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用

  • +
  • Port (int) - 后端提供服务的端口

  • +
  • PrivateIP (str) - 后端提供服务的内网IP

  • +
  • ResourceId (str) - 资源实例的资源Id

  • +
  • ResourceName (str) - 资源实例的资源名称

  • +
  • ResourceType (str) - 资源实例的类型

  • +
  • Status (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常

  • +
  • SubResourceId (str) - 资源绑定的虚拟网卡实例的资源Id

  • +
  • SubResourceName (str) - 资源绑定的虚拟网卡实例的资源名称

  • +
  • SubResourceType (str) - 资源绑定的虚拟网卡实例的类型

  • +
  • SubnetId (str) - 后端提供服务的资源所在的子网的ID

  • +
  • Weight (int) -

  • +
+

ULBVServerSet

+
    +
  • BackendSet (list) - 见 ULBBackendSet 模型定义

  • +
  • ClientTimeout (int) - 空闲连接的回收时间,单位:秒。

  • +
  • Domain (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名

  • +
  • FrontendPort (int) - VServer服务端口

  • +
  • ListenType (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发

  • +
  • Method (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。

  • +
  • MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;

  • +
  • Path (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径

  • +
  • PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。

  • +
  • PersistenceType (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。

  • +
  • PolicySet (list) - 见 ULBPolicySet 模型定义

  • +
  • Protocol (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。

  • +
  • SSLSet (list) - 见 ULBSSLSet 模型定义

  • +
  • Status (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。

  • +
  • VServerId (str) - VServer实例的Id

  • +
  • VServerName (str) - VServer实例的名字

  • +
+
+ +
+
+release_backend(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReleaseBackend - 从VServer释放后端资源实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID)

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
+

Response

+
+ +
+
+unbind_ssl(req: Optional[dict] = None, **kwargs) → dict[source]
+

UnbindSSL - 从VServer解绑SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的Id

  • +
  • ULBId (str) - (Required) 所绑定ULB实例ID

  • +
  • VServerId (str) - (Required) 所绑定VServer实例ID

  • +
+

Response

+
+ +
+
+update_backend_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateBackendAttribute - 更新ULB后端资源实例(服务节点)属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID)

  • +
  • ULBId (str) - (Required) 负载均衡资源ID

  • +
  • Enabled (int) - 后端实例状态开关

  • +
  • Port (int) - 后端资源服务端口,取值范围[1-65535]

  • +
  • Weight (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1

  • +
+

Response

+
+ +
+
+update_policy(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdatePolicy - 更新内容转发规则,包括转发规则后的服务节点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId

  • +
  • Match (str) - (Required) 内容转发匹配字段

  • +
  • PolicyId (str) - (Required) 转发规则的ID

  • +
  • ULBId (str) - (Required) 需要添加内容转发策略的负载均衡实例ID

  • +
  • VServerId (str) - (Required) 需要添加内容转发策略的VServer实例ID

  • +
  • Type (str) - 内容转发匹配字段的类型

  • +
+

Response

+
    +
  • PolicyId (str) - 转发规则的ID

  • +
+
+ +
+
+update_ulb_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateULBAttribute - 更新ULB名字业务组备注等属性字段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) ULB资源ID

  • +
  • Name (str) - 名字

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务

  • +
+

Response

+
+ +
+
+update_vserver_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateVServerAttribute - 更新VServer实例属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例ID

  • +
  • VServerId (str) - (Required) VServer实例ID

  • +
  • ClientTimeout (int) - 请求代理的VServer下表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;报文转发的VServer下表示回话保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持

  • +
  • Domain (str) - MonitorType 为 Path 时指定健康检查发送请求时HTTP HEADER 里的域名

  • +
  • Method (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin在请求代理和报文转发中使用。默认为:”Roundrobin”

  • +
  • MonitorType (str) - 健康检查的类型,Port:端口,Path:路径

  • +
  • Path (str) - MonitorType 为 Path 时指定健康检查发送请求时的路径,默认为 /

  • +
  • PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert, 此字段无意义; UserDefined, 则此字段传入用户自定义会话保持String. 若无此字段则不做修改

  • +
  • PersistenceType (str) - VServer会话保持模式,若无此字段则不做修改。枚举值:None:关闭;ServerInsert:自动生成KEY;UserDefined:用户自定义KEY。

  • +
  • Protocol (str) - VServer协议类型,请求代理只支持修改为 HTTP/HTTPS,报文转发VServer只支持修改为 TCP/UDP

  • +
  • VServerName (str) - VServer实例名称,若无此字段则不做修改

  • +
+

Response

+
+ +
+ +
+
+

UMem

+
+
+class ucloud.services.umem.client.UMemClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_umem_cache_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUMemcacheGroup - 创建单机Memcache

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 请求创建组的名称 范围[6-60]

  • +
  • ChargeType (str) - 计费模式,Year , Month, Dynamic 默认: Month

  • +
  • ConfigId (str) - 配置ID,目前仅支持默认配置id 默认配置id:”9a891891-c245-4b66-bce8-67e59430d67c”

  • +
  • CouponId (str) - 代金券ID

  • +
  • Protocol (str) -

  • +
  • Quantity (int) - 购买时长,默认为1

  • +
  • Size (int) - 每个节点的内存大小,单位GB,默认1GB 目前仅支持1/2/4/8/16/32这几档

  • +
  • SubnetId (str) -

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • VPCId (str) -

  • +
  • Version (str) - Memcache版本信息,默认为1.4.31

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • GroupId (str) - 创建的组ID

  • +
+
+ +
+
+create_umem_space(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUMemSpace - 创建UMem内存空间

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 空间名称,长度(6<=size<=63)

  • +
  • Size (int) - (Required) 内存大小, 单位:GB, 范围[1~1024]

  • +
  • ChargeType (str) - Year , Month, Dynamic, Trial 默认: Month

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Password (str) - URedis密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。

  • +
  • Protocol (str) - 协议:memcache, redis (默认redis).注意:redis无single类型

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • SubnetId (str) -

  • +
  • Tag (str) -

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • VPCId (str) -

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • SpaceId (str) - 创建内存空间ID列表

  • +
+
+ +
+
+create_uredis_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateURedisGroup - 创建主备redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • HighAvailability (str) - (Required) 是否开启高可用,enable或disable

  • +
  • Name (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AutoBackup (str) - 是否自动备份,enable或disable,默认disable

  • +
  • BackupId (str) - 有此项代表从备份中创建,无代表正常创建

  • +
  • BackupTime (int) - 自动备份开始时间,范围[0-23],默认3点

  • +
  • ChargeType (str) - 计费模式,Year , Month, Dynamic 默认: Month

  • +
  • ConfigId (str) - 配置ID,目前支持 3.0版本配置ID:”03f58ca9-b64d-4bdd-abc7-c6b9a46fd801”,3.2版本配置ID:”3e45ac48-f8a2-a9q2-261d-l342dab130gf”, 4.0版本配置ID:”6c9298a3-9d7f-428c-b1d0-e87ab3b8a1ea”,默认版本3.0,从备份创建为必传项

  • +
  • CouponId (str) - 代金券ID

  • +
  • MasterGroupId (str) - Master Redis Group的ID,创建只读Slave时,必须填写

  • +
  • Password (str) - 初始化密码,需要 base64 编码

  • +
  • Quantity (int) - 购买时长,默认为1

  • +
  • Size (int) - 每个节点的内存大小,单位GB,默认1GB,目前仅支持1/2/4/8/16/32,六种

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • SubnetId (str) -

  • +
  • Tag (str) - 业务组名称

  • +
  • VPCId (str) -

  • +
  • Version (str) - Redis版本信息(详见DescribeURedisVersion返回结果),默认版本3.0

  • +
+

Response

+
    +
  • GroupId (str) - 创建的组ID

  • +
+
+ +
+
+delete_umem_cache_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUMemcacheGroup - 删除单机Memcache

+

Request

+ +

Response

+
+ +
+
+delete_umem_space(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUMemSpace - 删除UMem内存空间

+

Request

+ +

Response

+
+ +
+
+delete_uredis_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteURedisGroup - 删除主备redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组ID

  • +
+

Response

+
+ +
+
+describe_umem_cache_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemcacheGroup - 显示Memcache

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit

  • +
  • Limit (int) - 分页显示的条目数, 默认值为20

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemcacheGroupSet 模型定义

  • +
  • TotalCount (int) - 组的总的节点个数

  • +
+

Response Model

+

UMemcacheGroupSet

+
    +
  • ChargeType (str) - 计费类型:Year,Month,Dynamic 默认Dynamic

  • +
  • ConfigId (str) - 节点的配置ID

  • +
  • CreateTime (int) - 创建时间 (UNIX时间戳)

  • +
  • ExpireTime (int) - 过期时间 (UNIX时间戳)

  • +
  • GroupId (str) - 组ID

  • +
  • ModifyTime (int) - 修改时间 (UNIX时间戳)

  • +
  • Name (str) - 组名称

  • +
  • Port (int) - 节点分配的服务端口

  • +
  • Size (int) - 容量单位GB

  • +
  • State (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中

  • +
  • SubnetId (str) -

  • +
  • Tag (str) - 业务组名称

  • +
  • UsedSize (int) - 使用量单位MB

  • +
  • VPCId (str) -

  • +
  • Version (str) - Memcache版本信息,默认为1.4.31

  • +
  • VirtualIP (str) - 节点的虚拟IP地址

  • +
+
+ +
+
+describe_umem_cache_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemcachePrice - 获取umemcache组价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 容量大小,单位:GB 取值范围[1-32]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,Year, Month, Dynamic,默认: Dynamic 默认: 获取所有计费模式的价格

  • +
  • Quantity (int) - 购买umemcache的时长,默认值为1

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemcachePriceSet 模型定义

  • +
+

Response Model

+

UMemcachePriceSet

+
    +
  • ChargeType (str) - 计费模式,Year, Month, Dynamic

  • +
  • OriginalPrice (int) - 原价

  • +
  • Price (int) - 总价格,单位: 元,保留小数点后两位有效数字

  • +
+
+ +
+
+describe_umem_cache_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemcacheUpgradePrice - 获取umemcache升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 需要升级的空间的GroupId,请参考DescribeUMemcacheGroup接口

  • +
  • Size (int) - (Required) 购买umemcache大小,单位:GB

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (dict) - 见 PriceDataSet 模型定义

  • +
  • Price (int) - 价格,单位:元

  • +
+

Response Model

+

PriceDataSet

+
    +
  • CustomPrice (int) - 用户折后价

  • +
  • PurchaseValue (int) - 资源有效期

  • +
  • TotalPrice (int) - 升降级资源的价格

  • +
+
+ +
+
+describe_umem_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemPrice - 获取UMem实例价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买umem大小,单位:GB,范围[1~1024]

  • +
  • Type (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial 如果不指定,则一次性获取三种计费

  • +
  • Quantity (int) - 购买UMem的时长,默认值为1

  • +
  • RegionFlag (bool) -

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemPriceSet 模型定义

  • +
+

Response Model

+

UMemPriceSet

+
    +
  • ChargeType (str) - Year, Month, Dynamic,Trial

  • +
  • OriginalPrice (int) - 原价

  • +
  • Price (int) - 现价,单位: 元,保留小数点后两位有效数字

  • +
+
+ +
+
+describe_umem_space(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemSpace - 获取UMem内存空间列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • SpaceId (str) - 内存空间ID (无ID,则获取所有)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemSpaceSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UMemSpaceAddressSet

+
    +
  • IP (str) - UMem实例访问IP

  • +
  • Port (int) - UMem实例访问Port

  • +
+

UMemSpaceSet

+
    +
  • Address (list) - 见 UMemSpaceAddressSet 模型定义

  • +
  • ChargeType (str) - Year, Month, Dynamic, Trial

  • +
  • CreateTime (int) - 创建时间

  • +
  • ExpireTime (int) - 到期时间

  • +
  • Name (str) - 内存空间名称

  • +
  • Protocol (str) - 协议类型: memcache, redis

  • +
  • RewriteTime (int) - 运维时间0 //0点1 //1点依次类推

  • +
  • Size (int) - 容量单位GB

  • +
  • SpaceId (str) - 内存空间ID

  • +
  • State (str) - Starting:创建中 Running:运行中 Fail:失败

  • +
  • SubnetId (str) -

  • +
  • Tag (str) -

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)

  • +
  • UsedSize (int) - 使用量单位MB

  • +
  • VPCId (str) -

  • +
  • Zone (str) - 可用区,参见 可用区列表

  • +
+
+ +
+
+describe_umem_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeUMemUpgradePrice - 获取UMem升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UMem大小,单位:GB

  • +
  • SpaceId (str) - (Required) 需要升级的空间的SpaceId

  • +
  • Type (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (dict) - 见 PriceDataSet 模型定义

  • +
  • Price (int) - 价格(兼容老版本)

  • +
+

Response Model

+

PriceDataSet

+
    +
  • CustomPrice (int) - 用户折后价

  • +
  • PurchaseValue (int) - 资源有效期

  • +
  • TotalPrice (int) - 升降级资源的价格

  • +
+
+ +
+
+describe_uredis_backup(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeURedisBackup - 查询主备redis备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID

  • +
  • Limit (int) - 分页显示的条目数, 默认值为10

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisBackupSet 模型定义

  • +
  • TotalCount (int) - 用户名下总的备份个数

  • +
+

Response Model

+

URedisBackupSet

+
    +
  • BackupId (str) - 备份ID

  • +
  • BackupName (str) - 备份的名称

  • +
  • BackupSize (int) - 备份文件大小, 以字节为单位

  • +
  • BackupTime (int) - 备份时间 (UNIX时间戳)

  • +
  • BackupType (str) - 备份类型: Manual 手动 Auto 自动

  • +
  • GroupId (str) - 对应的实例ID

  • +
  • GroupName (str) - 组名称

  • +
  • State (str) - 备份的状态: Backuping 备份中 Success 备份成功 Error 备份失败 Expired 备份过期

  • +
  • Zone (str) - 可用区,参见 可用区列表

  • +
+
+ +
+
+describe_uredis_backup_url(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeURedisBackupURL - 获取主备Redis备份下载链接

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (str) - (Required) 备份ID

  • +
  • GroupId (str) - 实例名称

  • +
  • RegionFlag (bool) - 是否是跨机房URedis(默认false)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - 备份文件公网的地址

  • +
  • BackupURL (str) - 备份文件公网的地址

  • +
  • InnerBackupPath (str) -

  • +
+
+ +
+
+describe_uredis_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeURedisGroup - 查询主备Redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit

  • +
  • Limit (int) - 分页显示的条目数, 默认值为20

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
  • Zone (str) -

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisGroupSet 模型定义

  • +
  • TotalCount (int) - 组的总的节点个数

  • +
+

Response Model

+

URedisGroupSet

+
    +
  • AutoBackup (str) - 是否需要自动备份,enable,disable

  • +
  • BackupTime (int) - 组自动备份开始时间,单位小时计,范围[0-23]

  • +
  • ChargeType (str) - 计费类型:Year,Month,Dynamic 默认Dynamic

  • +
  • ConfigId (str) - 节点的配置ID

  • +
  • CreateTime (int) - 创建时间 (UNIX时间戳)

  • +
  • ExpireTime (int) - 过期时间 (UNIX时间戳)

  • +
  • GroupId (str) - 组ID

  • +
  • GroupName (str) - 组名称

  • +
  • HighAvailability (str) - 是否开启高可用,enable,disable

  • +
  • MemorySize (int) - 容量单位GB

  • +
  • ModifyTime (int) - 修改时间 (UNIX时间戳)

  • +
  • Name (str) - 组名称

  • +
  • Port (int) - 节点分配的服务端口

  • +
  • Protocol (str) - 协议

  • +
  • RewriteTime (int) - 返回运维时间 0 //0点 1 //1点 以此类推

  • +
  • Size (int) - 容量单位GB

  • +
  • SlaveZone (str) - 跨机房URedis,slave redis所在可用区,参见 可用区列表

  • +
  • State (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败

  • +
  • SubnetId (str) -

  • +
  • Tag (str) - 业务组名称

  • +
  • Type (str) -

  • +
  • UsedSize (int) - 使用量单位MB

  • +
  • VPCId (str) -

  • +
  • Version (str) - Redis版本信息

  • +
  • VirtualIP (str) - 节点的虚拟IP地址

  • +
  • Zone (str) - 实例所在可用区,或者master redis所在可用区,参见 可用区列表

  • +
+
+ +
+
+describe_uredis_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeURedisPrice - 取uredis价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 量大小,单位:GB 取值范围[1-32]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,Year, Month, Dynamic;如果不指定,则一次性获取三种计费

  • +
  • ProductType (str) - 产品类型:MS_Redis(标准主备版),S_Redis(从库),默认为MS_Redis

  • +
  • Quantity (int) - 计费模式为Dynamic时,购买的时长, 默认为1

  • +
  • RegionFlag (bool) - 是否是跨机房URedis(默认false)

  • +
  • Type (str) -

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisPriceSet 模型定义

  • +
+

Response Model

+

URedisPriceSet

+
    +
  • ChargeType (str) - Year, Month, Dynamic,Trial

  • +
  • OriginalPrice (int) - 原价

  • +
  • Price (int) - 总价格,单位: 元,保留小数点后两位有效数字

  • +
+
+ +
+
+describe_uredis_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeURedisUpgradePrice - 获取uredis升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 要升级的空间的GroupId,请参考DescribeURedisGroup接口

  • +
  • Size (int) - (Required) 购买uredis大小,单位:GB,范围是[1-32]

  • +
  • Type (str) -

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (dict) - 见 PriceDataSet 模型定义

  • +
  • Price (int) - 扩容差价,单位: 元,保留小数点后两位有效数字(兼容老版本)

  • +
+

Response Model

+

PriceDataSet

+
    +
  • CustomPrice (int) - 用户折后价

  • +
  • PurchaseValue (int) - 资源有效期

  • +
  • TotalPrice (int) - 升降级资源的价格

  • +
+
+ +
+
+get_umem_space_state(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUMemSpaceState - 获取UMem内存空间列表

+

Request

+ +

Response

+
    +
  • State (str) - Starting:创建中 Running:运行中 Fail:失败

  • +
+
+ +
+
+modify_umem_space_name(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyUMemSpaceName - 修改UMem内存空间名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 新的名称,长度(6<=size<=63)

  • +
  • SpaceId (str) - (Required) UMem内存空间ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+modify_uredis_group_name(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyURedisGroupName - 修改主备redis名称

+

Request

+ +

Response

+
+ +
+
+resize_udredis_space(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeUDredisSpace - 调整内存空间容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024)

  • +
  • SpaceId (str) - (Required) 高性能UMem 内存空间Id

  • +
  • CouponId (str) - 使用的代金券Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_umem_space(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeUMemSpace - 调整内存空间容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024)

  • +
  • SpaceId (str) - (Required) UMem 内存空间Id

  • +
  • ChargeType (str) -

  • +
  • CouponId (str) - 使用的代金券Id

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_uredis_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeURedisGroup - 调整主备redis容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组ID

  • +
  • Size (int) - (Required) 内存大小, 单位:GB (需要大于原size,且小于等于32) 目前仅支持1/2/4/8/16/32 G 六种容量规格

  • +
  • ChargeType (str) -

  • +
  • CouponId (int) - 代金券ID 请参考DescribeCoupon接口

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+restart_umem_cache_group(req: Optional[dict] = None, **kwargs) → dict[source]
+

RestartUMemcacheGroup - 重启单机Memcache

+

Request

+ +

Response

+
+ +
+ +
+
+

UNet

+
+
+class ucloud.services.unet.client.UNetClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_eip(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateEIP - 根据提供信息, 申请弹性IP

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-200],带宽计费[1-800]

  • +
  • OperatorName (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); Trial, 试用(需开启权限) 默认为按月付费

  • +
  • CouponId (str) - 代金券ID, 默认不使用

  • +
  • Name (str) - 弹性IP的名称, 默认为 “EIP”

  • +
  • PayMode (str) - 弹性IP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; “ShareBandwidth”,共享带宽模式. 默认为 “Bandwidth”.

  • +
  • Quantity (int) - 购买时长, 默认: 1

  • +
  • Remark (str) - 弹性IP的备注, 默认为空

  • +
  • ShareBandwidthId (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效

  • +
  • Tag (str) - 业务组名称, 默认为 “Default”

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetAllocateEIPSet 模型定义

  • +
+

Response Model

+

UnetEIPAddrSet

+
    +
  • IP (str) - IP地址

  • +
  • OperatorName (str) - 运营商信息如: 电信: Telecom, 联通: Unicom, 国际: International, Duplet: 双线IP(电信+联通), BGP: Bgp

  • +
+

UnetAllocateEIPSet

+
    +
  • EIPAddr (list) - 见 UnetEIPAddrSet 模型定义

  • +
  • EIPId (str) - 申请到的EIP资源ID

  • +
+
+ +
+
+allocate_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateShareBandwidth - 开通共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 付费方式:Year 按年,Month 按月,Dynamic 按时;

  • +
  • Name (str) - (Required) 共享带宽名字

  • +
  • ShareBandwidth (int) - (Required) 共享带宽值

  • +
  • BwType (str) - 共享带宽类型,ipv4或者ipv6,不传默认ipv4

  • +
  • Quantity (int) - 购买时长

  • +
  • ShareBandwidthGuarantee (int) - 共享带宽保底值(后付费)

  • +
+

Response

+
    +
  • ShareBandwidthId (str) - 共享带宽资源Id

  • +
+
+ +
+
+allocate_vip(req: Optional[dict] = None, **kwargs) → dict[source]
+

AllocateVIP - 根据提供信息,申请内网VIP(Virtual IP),多用于高可用程序作为漂移IP。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • VPCId (str) - (Required) 指定vip所属的VPC

  • +
  • BusinessId (str) - 业务组

  • +
  • Count (int) - 申请数量,默认: 1

  • +
  • Ip (str) - 指定ip

  • +
  • Name (str) - vip名,默认为VIP

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
    +
  • DataSet (list) - 申请到的VIP地址

  • +
  • VIPSet (list) - 见 VIPSet 模型定义

  • +
+

Response Model

+

VIPSet

+
    +
  • VIP (str) - 虚拟ip

  • +
  • VIPId (str) - 虚拟ip id

  • +
  • VPCId (str) - VPC id

  • +
+
+ +
+
+associate_eip_with_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

AssociateEIPWithShareBandwidth - 将EIP加入共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。

  • +
  • EIPIds (list) - (Required) 要加入共享带宽的EIP的资源Id

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
+

Response

+
+ +
+
+bind_eip(req: Optional[dict] = None, **kwargs) → dict[source]
+

BindEIP - 将尚未使用的弹性IP绑定到指定的资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • ResourceId (str) - (Required) 弹性IP请求绑定的资源ID

  • +
  • ResourceType (str) - (Required) 弹性IP请求绑定的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:natgw;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni:虚拟网卡。

  • +
+

Response

+
+ +
+
+create_bandwidth_package(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateBandwidthPackage - 为非共享带宽模式下, 已绑定资源实例的带宽计费弹性IP附加临时带宽包

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域

  • +
  • Bandwidth (int) - (Required) 带宽大小(单位Mbps), 取值范围[2,800] (最大值受地域限制)

  • +
  • EIPId (str) - (Required) 所绑定弹性IP的资源ID

  • +
  • TimeRange (int) - (Required) 带宽包有效时长, 取值范围为大于0的整数, 即该带宽包在EnableTime到 EnableTime+TimeRange时间段内生效

  • +
  • CouponId (str) - 代金券ID

  • +
  • EnableTime (int) - 生效时间, 格式为 Unix timestamp, 默认为立即开通

  • +
+

Response

+
    +
  • BandwidthPackageId (str) - 所创建带宽包的资源ID

  • +
+
+ +
+
+create_firewall(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateFirewall - 创建防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • Name (str) - (Required) 防火墙名称

  • +
  • Rule (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注

  • +
  • Remark (str) - 防火墙描述,默认为空

  • +
  • Tag (str) - 防火墙业务组,默认为Default

  • +
+

Response

+
    +
  • FWId (str) - 防火墙ID

  • +
+
+ +
+
+delete_bandwidth_package(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteBandwidthPackage - 删除弹性IP上已附加带宽包

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • BandwidthPackageId (str) - (Required) 带宽包资源ID

  • +
+

Response

+
+ +
+
+delete_firewall(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteFirewall - 删除防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
+

Response

+
+ +
+
+describe_bandwidth_package(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeBandwidthPackage - 获取某地域下的带宽包信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20

  • +
  • Offset (int) - 返回数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSets (list) - 见 UnetBandwidthPackageSet 模型定义

  • +
  • TotalCount (int) - 满足条件的带宽包总数

  • +
+

Response Model

+

EIPAddrSet

+
    +
  • IP (str) - 弹性IP地址

  • +
  • OperatorName (str) - 运营商信息, 枚举值为: Telecom 电信; Unicom: 联通; Duplet: 双线; Bgp: BGP; International: 国际.

  • +
+

UnetBandwidthPackageSet

+
    +
  • Bandwidth (int) - 带宽包的临时带宽值, 单位Mbps

  • +
  • BandwidthPackageId (str) - 带宽包的资源ID

  • +
  • CreateTime (int) - 创建时间, 格式为 Unix Timestamp

  • +
  • DisableTime (int) - 失效时间, 格式为 Unix Timestamp

  • +
  • EIPAddr (list) - 见 EIPAddrSet 模型定义

  • +
  • EIPId (str) - 带宽包所绑定弹性IP的资源ID

  • +
  • EnableTime (int) - 生效时间, 格式为 Unix Timestamp

  • +
+
+ +
+
+describe_bandwidth_usage(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeBandwidthUsage - 获取带宽用量信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPIds (list) - 弹性IP的资源Id. 如果为空, 则返回当前 Region中符合条件的所有EIP的带宽用量, n为自然数

  • +
  • Limit (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20

  • +
  • OffSet (int) - 返回数据偏移量, 默认为0

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetBandwidthUsageEIPSet 模型定义

  • +
  • TotalCount (int) - EIPSet中的元素个数

  • +
+

Response Model

+

UnetBandwidthUsageEIPSet

+
    +
  • CurBandwidth (float) - 最近5分钟带宽用量, 单位Mbps

  • +
  • EIPId (str) - 弹性IP资源ID

  • +
+
+ +
+
+describe_eip(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeEIP - 获取弹性IP信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • EIPIds (list) - 弹性IP的资源ID如果为空, 则返回当前 Region中符合条件的的所有EIP

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetEIPSet 模型定义

  • +
  • TotalBandwidth (int) - 满足条件的弹性IP带宽总和, 单位Mbps

  • +
  • TotalCount (int) - 满足条件的弹性IP总数

  • +
+

Response Model

+

ShareBandwidthSet

+
    +
  • ShareBandwidth (int) - 共享带宽带宽值

  • +
  • ShareBandwidthId (str) - 共享带宽ID

  • +
  • ShareBandwidthName (str) - 共享带宽的资源名称

  • +
+

UnetEIPAddrSet

+
    +
  • IP (str) - IP地址

  • +
  • OperatorName (str) - 运营商信息如: 电信: Telecom, 联通: Unicom, 国际: International, Duplet: 双线IP(电信+联通), BGP: Bgp

  • +
+

UnetEIPResourceSet

+
    +
  • EIPId (str) - 弹性IP的资源ID

  • +
  • ResourceId (str) - 已绑定资源的资源ID

  • +
  • ResourceName (str) - 已绑定的资源名称

  • +
  • ResourceType (str) - 已绑定的资源类型, 枚举值为: uhost, 云主机;natgw:NAT网关;ulb:负载均衡器;upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;vpngw:IPSec VPN;ucdr:云灾备;dbaudit:数据库审计,uni:虚拟网卡。

  • +
  • SubResourceId (str) - 资源绑定的虚拟网卡的ID

  • +
  • SubResourceName (str) - 资源绑定的虚拟网卡的名称

  • +
  • SubResourceType (str) - 资源绑定的虚拟网卡的类型。uni,虚拟网卡。

  • +
+

UnetEIPSet

+
    +
  • Bandwidth (int) - 弹性IP的带宽, 单位为Mbps, 当BandwidthType=1时, 该处显示为共享带宽值. 当BandwidthType=0时, 该处显示这个弹性IP的带宽.

  • +
  • BandwidthType (int) - 带宽模式, 枚举值为: 0: 非共享带宽模式, 1: 共享带宽模式

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按小时付费; Trial, 试用. 按小时付费和试用这两种付费模式需要开通权限.

  • +
  • CreateTime (int) - 弹性IP的创建时间, 格式为Unix Timestamp

  • +
  • EIPAddr (list) - 见 UnetEIPAddrSet 模型定义

  • +
  • EIPId (str) - 弹性IP的资源ID

  • +
  • Expire (bool) - 弹性IP是否到期

  • +
  • ExpireTime (int) - 弹性IP的到期时间, 格式为Unix Timestamp

  • +
  • Name (str) - 弹性IP的名称,缺省值为 “EIP”

  • +
  • PayMode (str) - 弹性IP的计费模式, 枚举值为: “Bandwidth”, 带宽计费; “Traffic”, 流量计费; “ShareBandwidth”,共享带宽模式. 默认为 “Bandwidth”.

  • +
  • Remark (str) - 弹性IP的备注, 缺省值为 “”

  • +
  • Resource (dict) - 见 UnetEIPResourceSet 模型定义

  • +
  • ShareBandwidthSet (dict) - 见 ShareBandwidthSet 模型定义

  • +
  • Status (str) - 弹性IP的资源绑定状态, 枚举值为: used: 已绑定, free: 未绑定, freeze: 已冻结

  • +
  • Tag (str) - 弹性IP的业务组标识, 缺省值为 “Default”

  • +
  • Weight (int) - 外网出口权重, 默认为50, 范围[0-100]

  • +
+
+ +
+
+describe_firewall(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeFirewall - 获取防火墙组信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • FWId (str) - 防火墙ID,默认为返回所有防火墙

  • +
  • Limit (int) - 返回数据长度,默认为20,最大10000000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceId (str) - 绑定防火墙组的资源ID

  • +
  • ResourceType (str) - 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:”unatgw”,NAT网关; “uhost”,云主机; “upm”,物理云主机; “hadoophost”,hadoop节点; “fortresshost”,堡垒机; “udhost”,私有专区主机;”udockhost”,容器;”dbaudit”,数据库审计.

  • +
+

Response

+
    +
  • DataSet (list) - 见 FirewallDataSet 模型定义

  • +
  • TotalCount (int) -

  • +
+

Response Model

+

FirewallRuleSet

+
    +
  • DstPort (str) - 目标端口

  • +
  • Priority (str) - 优先级

  • +
  • ProtocolType (str) - 协议类型

  • +
  • Remark (str) - 防火墙规则备注

  • +
  • RuleAction (str) - 防火墙动作

  • +
  • SrcIP (str) - 源地址

  • +
+

FirewallDataSet

+
    +
  • CreateTime (int) - 防火墙组创建时间,格式为Unix Timestamp

  • +
  • FWId (str) - 防火墙ID

  • +
  • GroupId (str) - 安全组ID(即将废弃)

  • +
  • Name (str) - 防火墙名称

  • +
  • Remark (str) - 防火墙备注

  • +
  • ResourceCount (int) - 防火墙绑定资源数量

  • +
  • Rule (list) - 见 FirewallRuleSet 模型定义

  • +
  • Tag (str) - 防火墙业务组

  • +
  • Type (str) - 防火墙组类型,枚举值为: “user defined”, 用户自定义防火墙; “recommend web”, 默认Web防火墙; “recommend non web”, 默认非Web防火墙

  • +
+
+ +
+
+describe_firewall_resource(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeFirewallResource - 获取防火墙组所绑定资源的外网IP

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙ID

  • +
  • Limit (int) - 返回数据长度,默认为20,最大10000000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • ResourceSet (list) - 见 ResourceSet 模型定义

  • +
  • TotalCount (int) - 绑定资源总数

  • +
+

Response Model

+

ResourceSet

+
    +
  • Name (str) - 名称

  • +
  • PrivateIP (str) - 内网IP

  • +
  • Remark (str) - 备注

  • +
  • ResourceID (str) - 绑定该防火墙的资源id

  • +
  • ResourceType (str) - 绑定资源的资源类型,如”uhost”,”upm”,”umem”,”uhive”,”uvip”,”uredis”,”uhadoop”,”ufortress”,”dbaudit”,”udw”,”udocker”, “umemcache”

  • +
  • Status (int) - 状态

  • +
  • Tag (str) - 业务组

  • +
  • Zone (int) - 可用区

  • +
+
+ +
+
+describe_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeShareBandwidth - 获取共享带宽信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ShareBandwidthIds (list) - 需要返回的共享带宽Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 UnetShareBandwidthSet 模型定义

  • +
  • TotalCount (int) - 符合条件的共享带宽总数,大于等于返回DataSet长度

  • +
+

Response Model

+

EIPAddrSet

+
    +
  • IP (str) - 弹性IP地址

  • +
  • OperatorName (str) - 运营商信息, 枚举值为: Telecom 电信; Unicom: 联通; Duplet: 双线; Bgp: BGP; International: 国际.

  • +
+

EIPSetData

+
    +
  • Bandwidth (int) - EIP带宽值

  • +
  • EIPAddr (list) - 见 EIPAddrSet 模型定义

  • +
  • EIPId (str) - EIP资源Id

  • +
+

UnetShareBandwidthSet

+
    +
  • BandwidthGuarantee (int) - 共享带宽保底值(后付费)

  • +
  • ChargeType (str) - 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需;后付费:PostPay(按月)

  • +
  • CreateTime (int) - 创建时间, 格式为Unix Timestamp

  • +
  • EIPSet (list) - 见 EIPSetData 模型定义

  • +
  • ExpireTime (int) - 过期时间, 格式为Unix Timestamp

  • +
  • Name (str) - 共享带宽名称

  • +
  • PostPayStartTime (int) - 共享带宽后付费开始计费时间(后付费)

  • +
  • ShareBandwidth (int) - 共享带宽值(预付费)/共享带宽峰值(后付费), 单位Mbps

  • +
  • ShareBandwidthId (str) - 共享带宽的资源ID

  • +
+
+ +
+
+describe_vip(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeVIP - 获取内网VIP详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组

  • +
  • SubnetId (str) - 子网id,不指定则获取VPCId下的所有vip

  • +
  • Tag (str) - 业务组名称, 默认为 Default

  • +
  • VPCId (str) - vpc的id,指定SubnetId时必填

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 内网VIP地址列表

  • +
  • TotalCount (int) - vip数量

  • +
  • VIPSet (list) - 见 VIPDetailSet 模型定义

  • +
+

Response Model

+

VIPDetailSet

+
    +
  • CreateTime (int) - 创建时间

  • +
  • Name (str) -

  • +
  • RealIp (str) - 真实主机ip

  • +
  • SubnetId (str) - 子网id

  • +
  • VIP (str) - 虚拟ip

  • +
  • VIPId (str) - 虚拟ip id

  • +
  • VPCId (str) - VPC id

  • +
  • Zone (str) - 地域

  • +
+
+ +
+
+disassociate_eip_with_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

DisassociateEIPWithShareBandwidth - 将EIP移出共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 移出共享带宽后,EIP的外网带宽, 单位为Mbps. 各地域带宽范围如下: 流量计费[1-200],带宽计费[1-800]

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
  • EIPIds (list) - EIP的资源Id;默认移出该共享带宽下所有的EIP

  • +
  • PayMode (str) - 移出共享带宽后,EIP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; 默认为 “Bandwidth”.

  • +
+

Response

+
+ +
+
+get_eip_pay_mode(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetEIPPayMode - 获取弹性IP计费模式

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • EIPId (list) - (Required) 弹性IP的资源Id

  • +
+

Response

+
    +
  • EIPPayMode (list) - 见 EIPPayModeSet 模型定义

  • +
+

Response Model

+

EIPPayModeSet

+
    +
  • EIPId (str) - EIP的资源ID

  • +
  • EIPPayMode (str) - EIP的计费模式. 枚举值为:Bandwidth, 带宽计费;Traffic, 流量计费; “ShareBandwidth”,共享带宽模式

  • +
+
+ +
+
+get_eip_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetEIPPrice - 获取弹性IP价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [0-800]

  • +
  • OperatorName (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International,泉州为移动单线cn-qz:ChinaMobile

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费; 默认为获取三种价格

  • +
  • PayMode (str) - 弹性IP计费方式r. 枚举值为: Traffic, 流量计费; Bandwidth, 带宽计费; “ShareBandwidth”,共享带宽模式. 默认为Bandwidth

  • +
  • Quantity (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末

  • +
+

Response

+
    +
  • PriceSet (list) - 见 EIPPriceDetailSet 模型定义

  • +
+

Response Model

+

EIPPriceDetailSet

+
    +
  • ChargeType (str) - 弹性IP付费方式

  • +
  • Price (float) - 弹性IP价格, 单位”元”

  • +
  • PurchaseValue (int) - 资源有效期, 以Unix Timestamp表示

  • +
+
+ +
+
+get_eip_upgrade_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetEIPUpgradePrice - 获取弹性IP带宽改动价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
    +
  • Price (float) - 调整带宽后的EIP价格, 单位为”元”, 如需退费此处为负值

  • +
+
+ +
+
+grant_firewall(req: Optional[dict] = None, **kwargs) → dict[source]
+

GrantFirewall - 将防火墙应用到资源上

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • ResourceId (str) - (Required) 所应用资源ID

  • +
  • ResourceType (str) - (Required) 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:”unatgw”,NAT网关; “uhost”,云主机; “upm”,物理云主机; “hadoophost”,hadoop节点; “fortresshost”,堡垒机; “udhost”,私有专区主机;”udockhost”,容器;”dbaudit”,数据库审计,”uni“,虚拟网卡。

  • +
+

Response

+
+ +
+
+modify_eip_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyEIPBandwidth - 调整弹性IP的外网带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 各地域的带宽值范围如下:流量计费[1-200],带宽计费[1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
+ +
+
+modify_eip_weight(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyEIPWeight - 修改弹性IP的外网出口权重

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
  • Weight (int) - (Required) 外网出口权重, 范围[0-100] 取值为0时, 该弹性IP不会被使用. 取值为100时, 同主机下只会使用这个弹性IP,其他弹性IP不会被使用 请勿将多个绑定在同一资源的弹性IP设置为相同权重

  • +
+

Response

+
+ +
+
+release_eip(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReleaseEIP - 释放弹性IP资源, 所释放弹性IP必须为非绑定状态.

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
+ +
+
+release_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReleaseShareBandwidth - 关闭共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPBandwidth (int) - (Required) 关闭共享带宽后,各EIP恢复为的带宽值

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
  • PayMode (str) - Bandwidth 带宽计费, Traffic 转流量计费

  • +
+

Response

+
+ +
+
+release_vip(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReleaseVIP - 释放VIP资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • VIPId (str) - (Required) 内网VIP的id

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
+ +
+
+resize_share_bandwidth(req: Optional[dict] = None, **kwargs) → dict[source]
+

ResizeShareBandwidth - 调整共享带宽的带宽值

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ShareBandwidth (int) - (Required) 带宽值,单位为Mb,范围 [20-5000] (最大值受地域限制)

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽的Id

  • +
+

Response

+
+ +
+
+set_eip_pay_mode(req: Optional[dict] = None, **kwargs) → dict[source]
+

SetEIPPayMode - 设置弹性IP计费模式, 切换时会涉及付费/退费.

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 调整的目标带宽值, 单位Mbps. 各地域的带宽值范围如下: 流量计费[1-200],其余情况[1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • PayMode (str) - (Required) 计费模式. 枚举值:”Traffic”, 流量计费模式; “Bandwidth”, 带宽计费模式

  • +
+

Response

+
+ +
+
+un_bind_eip(req: Optional[dict] = None, **kwargs) → dict[source]
+

UnBindEIP - 将弹性IP从资源上解绑

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • ResourceId (str) - (Required) 弹性IP请求解绑的资源ID

  • +
  • ResourceType (str) - (Required) 弹性IP请求解绑的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:NAT网关;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni,虚拟网卡。

  • +
+

Response

+
+ +
+
+update_eip_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateEIPAttribute - 更新弹性IP名称,业务组,备注等属性字段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) EIP资源ID

  • +
  • Name (str) - 名字(Name Tag Remark都为空则报错)

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务

  • +
+

Response

+
+ +
+
+update_firewall(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateFirewall - 更新防火墙规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • Rule (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注

  • +
+

Response

+
    +
  • FWId (str) - 防火墙id

  • +
+
+ +
+
+update_firewall_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateFirewallAttribute - 更新防火墙规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • Name (str) - 防火墙名称,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
  • Remark (str) - 防火墙备注,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
  • Tag (str) - 防火墙业务组,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
+

Response

+
+ +
+ +
+
+

UPHost

+
+
+class ucloud.services.uphost.client.UPHostClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreatePHost - 指定数据中心,根据资源使用量创建指定数量的UPHost物理云主机实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - (Required) 镜像ID。 请通过 [DescribePHostImage]获取

  • +
  • Password (str) - (Required) 密码(密码需使用base64进行编码)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,枚举值为:year, 按年付费; month,按月付费;dynamic,按需付费,(需开启权限) trial, 试用(需开启权限)。默认为按月付费

  • +
  • Cluster (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G

  • +
  • Count (int) - 购买数量,默认为1,(暂不支持)

  • +
  • CouponId (str) - 代金券

  • +
  • Name (str) - 物理机名称,默认为phost

  • +
  • Quantity (str) - 购买时长,默认为1,范围[1-10]

  • +
  • Raid (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid

  • +
  • Remark (str) - 物理机备注,默认为空

  • +
  • SecurityGroupId (str) - 防火墙Id,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 DescribeSecurityGroup

  • +
  • SubnetId (str) - 子网ID,不填为默认,VPC2.0下需要填写此字段。

  • +
  • Tag (str) - 业务组,默认为default

  • +
  • Type (str) - 物理机类型,默认为:db-2(基础型-SAS-V3)

  • +
  • VPCId (str) - VPC ID,不填为默认,VPC2.0下需要填写此字段。

  • +
+

Response

+
    +
  • PHostId (list) - PHost的资源ID数组

  • +
+
+ +
+
+describe_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribePHost - 获取物理机详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
  • PHostId (list) - PHost资源ID,若为空,则返回当前Region所有PHost。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostSet (list) - 见 PHostSet 模型定义

  • +
  • TotalCount (int) - 满足条件的PHost总数

  • +
+

Response Model

+

PHostDiskSet

+
    +
  • Count (int) - 磁盘数量

  • +
  • IOCap (int) - 磁盘IO性能,单位MB/s(待废弃)

  • +
  • Name (str) - 磁盘名称,sys/data

  • +
  • Space (int) - 单盘大小,单位GB

  • +
  • Type (str) - 磁盘属性

  • +
+

PHostCPUSet

+
    +
  • CoreCount (int) - CPU核数

  • +
  • Count (int) - CPU个数

  • +
  • Frequence (float) - CPU主频

  • +
  • Model (str) - CPU型号

  • +
+

PHostIPSet

+
    +
  • Bandwidth (int) - IP对应带宽,单位Mb,内网IP不显示带宽信息

  • +
  • IPAddr (str) - IP地址,

  • +
  • IPId (str) - IP资源ID(内网IP无资源ID)(待废弃)

  • +
  • MACAddr (str) - MAC地址

  • +
  • OperatorName (str) - 国际: Internation, BGP: BGP, 内网: Private

  • +
  • SubnetId (str) - 子网ID

  • +
  • VPCId (str) - VPC ID

  • +
+

PHostSet

+
    +
  • AutoRenew (str) - 自动续费

  • +
  • CPUSet (list) - 见 PHostCPUSet 模型定义

  • +
  • ChargeType (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限)默认为月付

  • +
  • Cluster (str) - 网络环境。枚举值:千兆:1G ,万兆:10G

  • +
  • Components (str) - 组件信息(暂不支持)

  • +
  • CreateTime (int) - 创建时间

  • +
  • DiskSet (list) - 见 PHostDiskSet 模型定义

  • +
  • ExpireTime (int) - 到期时间

  • +
  • IPSet (list) - 见 PHostIPSet 模型定义

  • +
  • ImageName (str) - 镜像名称

  • +
  • IsSupportKVM (str) - 是否支持紧急登录

  • +
  • Memory (int) - 内存大小,单位:MB

  • +
  • Name (str) - 物理机名称

  • +
  • OSType (str) - 操作系统类型

  • +
  • OSname (str) - 操作系统名称

  • +
  • PHostId (str) - PHost资源ID

  • +
  • PHostType (str) - 物理机类型,参见DescribePHostMachineType返回值

  • +
  • PMStatus (str) - 物理云主机状态。枚举值:> 初始化:Initializing; > 启动中:Starting; > 运行中:Running;> 关机中:Stopping; > 安装失败:InstallFailed; > 重启中:Rebooting;> 关机:Stopped;

  • +
  • PowerState (str) - 电源状态,on 或 off

  • +
  • RaidSupported (str) - 是否支持Raid。枚举值:Yes:支持;No:不支持。

  • +
  • Remark (str) - 物理机备注

  • +
  • SN (str) - 物理机序列号

  • +
  • Tag (str) - 业务组

  • +
  • Zone (str) - 可用区,参见 可用区列表

  • +
+
+ +
+
+describe_phost_image(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribePHostImage - 获取物理云主机镜像列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ImageId (list) - 镜像ID

  • +
  • ImageType (str) - 镜像类别,枚举为:Base,标准镜像;默认为标准镜像。

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
+

Response

+
    +
  • ImageSet (list) - 见 PHostImageSet 模型定义

  • +
  • TotalCount (int) - 满足条件的镜像总数

  • +
+

Response Model

+

PHostImageSet

+
    +
  • ImageId (str) - 镜像ID

  • +
  • ImageName (str) - 镜像名称

  • +
  • OsName (str) - 操作系统名称

  • +
  • OsType (str) - 操作系统类型

  • +
+
+ +
+
+describe_phost_tags(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribePHostTags - 获取物理机tag列表(业务组)

+

Request

+ +

Response

+
    +
  • TagSet (list) - 见 PHostTagSet 模型定义

  • +
  • TotalCount (int) - Tag的个数

  • +
+

Response Model

+

PHostTagSet

+
    +
  • Tag (str) - 业务组名称

  • +
  • TotalCount (int) - 该业务组中包含的主机个数

  • +
+
+ +
+
+get_phost_price(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetPHostPrice - 获取物理机价格列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 计费模式,枚举值为: Year/Month/Trial/Dynamic

  • +
  • Count (int) - (Required) 购买数量,范围[1-5]

  • +
  • Quantity (int) - (Required) 购买时长,1-10个月或1-10年

  • +
  • Cluster (str) - 网络环境,可选千兆:1G ,万兆:10G

  • +
  • Type (str) - 默认为:DB(数据库型)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PriceSet (list) - 见 PHostPriceSet 模型定义

  • +
+

Response Model

+

PHostPriceSet

+
    +
  • ChargeType (str) - Year/Month/Trial/Dynamic

  • +
  • Price (float) - 价格, 单位:元, 保留小数点后两位有效数字

  • +
+
+ +
+
+modify_phost_info(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyPHostInfo - 更改物理机信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) 物理机资源ID

  • +
  • Name (str) - 物理机名称,默认不更改

  • +
  • Remark (str) - 物理机备注,默认不更改

  • +
  • Tag (str) - 业务组,默认不更改

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+poweroff_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

PoweroffPHost - 断电物理云主机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+reboot_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

RebootPHost - 重启物理机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+reinstall_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

ReinstallPHost - 重装物理机操作系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) PHost资源ID

  • +
  • Password (str) - (Required) 密码

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ImageId (str) - 镜像Id,参考镜像列表,默认使用原镜像

  • +
  • Name (str) - 物理机名称,默认不更改

  • +
  • Raid (str) - 不保留数据盘重装,可选Raid

  • +
  • Remark (str) - 物理机备注,默认为不更改。

  • +
  • ReserveDisk (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes

  • +
  • Tag (str) - 业务组,默认不更改。

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+start_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

StartPHost - 启动物理机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+terminate_phost(req: Optional[dict] = None, **kwargs) → dict[source]
+

TerminatePHost - 删除物理云主机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) PHost资源ID

  • +
  • ReleaseEIP (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+ +
+
+

USMS

+
+
+class ucloud.services.usms.client.USMSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_usms_signature(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUSMSSignature - 调用接口CreateUSMSSignature申请短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CertificateType (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • Description (str) - (Required) 短信签名申请原因

  • +
  • File (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB

  • +
  • SigContent (str) - (Required) 短信签名名称;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • ProxyFile (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
  • SigContent (str) - 短信签名名称

  • +
  • SigId (str) - 短信签名ID(短信签名申请时的工单ID)

  • +
+
+ +
+
+create_usms_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateUSMSTemplate - 调用接口CreateUSMSTemplate申请短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Purpose (int) - (Required) 短信模板用途类型:1-验证码类短信模板;2-系统通知类短信模板;3-会员推广类短信模板;

  • +
  • Template (str) - (Required) 短信模板内容,说明如下:字数不超过500,每个中文、符号、英文、数组等都计为一个字;模板中的变量填写格式:{N},其中N为大于1的整数,有多个参数时,建议N从1开始顺次,例如:{1}、{2}等;短信模板禁止仅包括变量的情况;

  • +
  • TemplateName (str) - (Required) 短信模板名称,不超过32个字符,每个中文、符号、英文、数字等都计为1个字。

  • +
  • Remark (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。

  • +
  • UnsubscribeInfo (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
  • TemplateId (str) - 短信模板ID(短信模板申请时的工单ID)

  • +
+
+ +
+
+delete_usms_signature(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUSMSSignature - 调用接口DeleteUSMSSignature删除短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigIds (list) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+delete_usms_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteUSMSTemplate - 调用接口DeleteUSMSTemplate删除短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TemplateIds (list) - (Required) 模板ID(也即短信模板申请时的工单ID),支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1…TemplateIds.N方式传入

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+get_usms_send_receipt(req: Optional[dict] = None, **kwargs) → dict[source]
+

GetUSMSSendReceipt - 获取短信发送回执信息。下游服务提供商回执信息返回会有一定延时,建议发送完短信以后,5-10分钟后再调用该接口拉取回执信息。若超过12小时未返回,则请联系技术支持确认原因

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SessionNoSet (list) - (Required) 发送短信时返回的SessionNo集合,SessionNoSet.0,SessionNoSet.1….格式

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Data (list) - 见 ReceiptPerSession 模型定义

  • +
  • Message (str) - 错误描述

  • +
+

Response Model

+

ReceiptPerPhone

+
    +
  • CostCount (int) - 消耗短信条数

  • +
  • Phone (str) - 手机号码

  • +
  • ReceiptDesc (str) - 回执结果描述

  • +
  • ReceiptResult (str) - 回执结果

  • +
  • ReceiptTime (int) - 回执返回时间

  • +
+

ReceiptPerSession

+
    +
  • ReceiptSet (list) - 见 ReceiptPerPhone 模型定义

  • +
  • SessionNo (str) - 发送短信时返回的SessionNo

  • +
+
+ +
+
+query_usms_signature(req: Optional[dict] = None, **kwargs) → dict[source]
+

QueryUSMSSignature - 调用接口QueryUSMSSignature查询短信签名申请状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigContent (str) - 签名内容;签名ID和签名至少需填写1项;

  • +
  • SigId (str) - 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项;

  • +
+

Response

+
    +
  • Data (dict) - 见 OutSignature 模型定义

  • +
  • Message (str) - 发生错误时,表示具体错误描述

  • +
+

Response Model

+

OutSignature

+
    +
  • ErrDesc (str) - 签名审核失败原因

  • +
  • SigContent (str) - 签名内容

  • +
  • SigId (str) - 签名ID

  • +
  • Status (int) - 签名状态。0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用

  • +
+
+ +
+
+query_usms_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

QueryUSMSTemplate - 调用接口QueryUSMSTemplate查询短信模板申请状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TemplateId (str) - (Required) 模板ID

  • +
+

Response

+
    +
  • Data (dict) - 见 OutTemplate 模型定义

  • +
  • Message (str) - 当RetCode不为0时,Message中显示具体错误描述

  • +
+

Response Model

+

OutTemplate

+
    +
  • CreateTime (int) - 创建时间

  • +
  • ErrDesc (str) - 审核失败原因

  • +
  • Purpose (int) - 模板类型,选项:1-验证码类 2-通知类 3-会员推广类

  • +
  • Remark (str) - 模板说明

  • +
  • Status (int) - 短信模板状态;状态说明:0-待审核,1-审核中,2-审核通过,3-审核未通过,4-被禁用

  • +
  • Template (str) - 短信模板内容

  • +
  • TemplateId (str) - 短信模板ID

  • +
  • TemplateName (str) - 短信模板名称

  • +
  • UnsubscribeInfo (str) - 退订信息;一般填写方式“回T退订”,当purpose为3(也即会员推广类)时,为必填项

  • +
+
+ +
+
+send_usms_message(req: Optional[dict] = None, **kwargs) → dict[source]
+

SendUSMSMessage - 发送短信息。短信字数超过70个后,按照每66个进行切割(因为要加上1/3), 2/3)等字样,占用4个字长)。短信最大长度不能超过600个字。每个汉字、数字、字母、字符都按一个字计

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PhoneNumbers (list) - (Required) 电话号码数组,电话号码格式为(60)1xxxxxxxx,()中为国际长途区号(如中国为86或0086,两种格式都支持),后面为电话号码.若不传入国际区号,如1851623xxxx,则默认为国内手机号

  • +
  • TemplateId (str) - (Required) 模板ID。若指定的模板ID审核未通过(status不等于2)则不允许发送

  • +
  • TemplateParams (list) - (Required) 模板参数数组,以TempalteParams.0,TempalteParams.1.。。格式。若模板ID指定的模板无可变参数,则不传入该参数。模板参数个数与模板不匹配,则不允许发送

  • +
  • SigContent (str) - 使用的签名,如果不输入则使用默认签名,若没有申请默认签名不允许发送;若输入的签名没有申请,则无法发送

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • Message (str) - 发生错误时表示错误描述

  • +
  • RetCode (int) - 返回码

  • +
  • SessionNo (str) - 本次提交发送的短信的唯一ID,可根据该值查询本次发送的短信列表

  • +
+
+ +
+
+update_usms_signature(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateUSMSSignature - 调用接口UpdateUSMSSignature修改未通过审核的短信签名,并重新提交审核

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • File (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB

  • +
  • SigContent (str) - (Required) 新的短信签名名称;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加

  • +
  • SigId (str) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • CertificateType (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • ProxyFile (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+update_usms_template(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateUSMSTemplate - 调用接口UpdateUSMSTemplate修改未通过审核的短信模板,并重新提交审核

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Template (str) - (Required) 新的模板内容。模板名称和模板内容必须提供一个,否则会报错。小于等于600个字

  • +
  • TemplateId (str) - (Required) 短信模板ID

  • +
  • Remark (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。

  • +
  • TemplateName (str) - 新的模板名称。小于等于32个字,每个中文、英文、数组、符合都计为一个字

  • +
  • UnsubscribeInfo (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 发生错误时表示错误描述

  • +
+
+ +
+ +
+
+

VPC

+
+
+class ucloud.services.vpc.client.VPCClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_vpc_network(req: Optional[dict] = None, **kwargs) → dict[source]
+

AddVPCNetwork - 添加VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 增加网段

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
+

Response

+
+ +
+
+associate_route_table(req: Optional[dict] = None, **kwargs) → dict[source]
+

AssociateRouteTable - 绑定子网的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表ID,仅限自定义路由表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+clone_route_table(req: Optional[dict] = None, **kwargs) → dict[source]
+

CloneRouteTable - 根据一张现有路由表复制一张新的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 被克隆的路由表ID

  • +
+

Response

+
+ +
+
+create_route_table(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateRouteTable - 创建路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC ID

  • +
  • Name (str) - 路由表名称 Default RouteTable

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组

  • +
+

Response

+
    +
  • RouteTableId (str) - 路由表ID

  • +
+
+ +
+
+create_subnet(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateSubnet - 创建子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Subnet (str) - (Required) 子网网络地址,例如192.168.0.0

  • +
  • VPCId (str) - (Required) VPC资源ID

  • +
  • Netmask (int) - 子网网络号位数,默认为24

  • +
  • Remark (str) - 备注

  • +
  • SubnetName (str) - 子网名称,默认为Subnet

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
+

Response

+
    +
  • SubnetId (str) - 子网ID

  • +
+
+ +
+
+create_vpc(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateVPC - 创建VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) VPC名称

  • +
  • Network (list) - (Required) VPC网段

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
  • Type (int) - VPC类型

  • +
+

Response

+
    +
  • VPCId (str) - VPC资源Id

  • +
+
+ +
+
+create_vpc_intercom(req: Optional[dict] = None, **kwargs) → dict[source]
+

CreateVPCIntercom - 新建VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC项目ID。默认与源VPC同项目。

  • +
  • DstRegion (str) - 目的VPC所在地域,默认与源VPC同地域。

  • +
+

Response

+
+ +
+
+delete_route_table(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteRouteTable - 删除自定义路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由ID

  • +
+

Response

+
+ +
+
+delete_subnet(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteSubnet - 删除子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+delete_vpc(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteVPC - 删除VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC资源Id

  • +
+

Response

+
+ +
+
+delete_vpc_intercom(req: Optional[dict] = None, **kwargs) → dict[source]
+

DeleteVPCIntercom - 删除VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC所在项目ID,默认为源VPC所在项目ID

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为源VPC所在地域

  • +
+

Response

+
+ +
+
+describe_route_table(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeRouteTable - 获取路由表详细信息(包括路由策略)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组ID

  • +
  • Limit (int) - Limit

  • +
  • OffSet (int) - OffSet

  • +
  • RouteTableId (str) - 路由表ID

  • +
  • VPCId (str) - VPC ID

  • +
+

Response

+
    +
  • RouteTables (list) - 见 RouteTableInfo 模型定义

  • +
  • TotalCount (int) - RouteTables字段的数量

  • +
+

Response Model

+

RouteRuleInfo

+
    +
  • DstAddr (str) - 目的地址,比如10.10.8/24

  • +
  • NexthopId (str) - 路由下一跳ID,比如uvnet-3eljvj

  • +
  • NexthopType (str) - 下一跳类型,比如local、vnet

  • +
  • Remark (str) - 路由规则备注

  • +
  • RouteRuleId (str) - 规则ID

  • +
  • RuleType (int) - 路由规则类型(0表示系统路由,1表示自定义路由)

  • +
+

RouteTableInfo

+
    +
  • CreateTime (int) - 创建时间戳

  • +
  • Remark (str) - 路由表备注

  • +
  • RouteRules (list) - 见 RouteRuleInfo 模型定义

  • +
  • RouteTableId (str) - 路由表ID

  • +
  • RouteTableType (int) - 路由表类型,1为默认,0为自定义

  • +
  • SubnetCount (str) - 绑定了该路由表的子网数量

  • +
  • Tag (str) - 业务组

  • +
  • VPCId (str) - 路由表所属vpc

  • +
  • VPCName (str) - vpc名称

  • +
+
+ +
+
+describe_subnet(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeSubnet - 获取子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组

  • +
  • Limit (int) - 列表长度,默认为20

  • +
  • Offset (int) - 偏移量,默认为0

  • +
  • RouteTableId (str) - 路由表Id

  • +
  • SubnetId (str) - 子网id,适用于一次查询一个子网信息

  • +
  • SubnetIds (list) - 子网id数组,适用于一次查询多个子网信息

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • VPCId (str) - VPC资源id

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetInfo 模型定义

  • +
  • TotalCount (int) - 子网总数量

  • +
+

Response Model

+

SubnetInfo

+
    +
  • CreateTime (int) - 创建时间

  • +
  • Gateway (str) - 子网网关

  • +
  • HasNATGW (bool) - 是否有natgw

  • +
  • IPv6Network (str) - 子网关联的IPv6网段

  • +
  • Netmask (int) - 子网掩码

  • +
  • OperatorName (str) - 子网关联的IPv6网段所属运营商

  • +
  • Remark (str) - 备注

  • +
  • RouteTableId (str) - 路由表Id

  • +
  • Subnet (str) - 子网网段

  • +
  • SubnetId (str) - 子网Id

  • +
  • SubnetName (str) - 子网名称

  • +
  • SubnetType (int) - 子网类型

  • +
  • Tag (str) - 业务组

  • +
  • VPCId (str) - VPCId

  • +
  • VPCName (str) - VPC名称

  • +
  • Zone (str) - 可用区名称

  • +
+
+ +
+
+describe_subnet_resource(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeSubnetResource - 展示子网资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • Limit (int) - 单页返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceType (str) - 资源类型,默认为全部资源类型。枚举值为:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetResource 模型定义

  • +
  • TotalCount (int) - 总数

  • +
+

Response Model

+

SubnetResource

+
    +
  • IP (str) - 资源ip

  • +
  • IPv6Address (str) - 资源的IPv6地址

  • +
  • Name (str) - 资源名称

  • +
  • ResourceId (str) - 资源Id

  • +
  • ResourceType (str) - 资源类型。对应的资源类型:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

  • +
  • SubResourceId (str) - 资源绑定的虚拟网卡的实例ID

  • +
  • SubResourceName (str) - 资源绑定的虚拟网卡的实例名称

  • +
  • SubResourceType (str) - 资源绑定的虚拟网卡的类型

  • +
+
+ +
+
+describe_vpc(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeVPC - 获取VPC信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) -

  • +
  • Offset (int) -

  • +
  • Tag (str) - 业务组名称

  • +
  • VPCIds (list) - VPCId

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCInfo 模型定义

  • +
+

Response Model

+

VPCNetworkInfo

+
    +
  • Network (str) - vpc地址空间

  • +
  • SubnetCount (int) - 地址空间中子网数量

  • +
+

VPCInfo

+
    +
  • CreateTime (int) -

  • +
  • IPv6Network (str) - VPC关联的IPv6网段

  • +
  • Name (str) -

  • +
  • Network (list) -

  • +
  • NetworkInfo (list) - 见 VPCNetworkInfo 模型定义

  • +
  • OperatorName (str) - VPC关联的IPv6网段所属运营商

  • +
  • SubnetCount (int) -

  • +
  • Tag (str) -

  • +
  • UpdateTime (int) -

  • +
  • VPCId (str) - VPCId

  • +
+
+ +
+
+describe_vpc_intercom(req: Optional[dict] = None, **kwargs) → dict[source]
+

DescribeVPCIntercom - 获取VPC互通信息

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC短ID

  • +
  • DstProjectId (str) - 目的项目ID,默认为全部项目

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为全部地域

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCIntercomInfo 模型定义

  • +
+

Response Model

+

VPCIntercomInfo

+
    +
  • DstRegion (str) - 所属地域

  • +
  • Name (str) - VPC名字

  • +
  • Network (list) - VPC的地址空间

  • +
  • ProjectId (str) - 项目Id

  • +
  • Tag (str) - 业务组(未分组显示为 Default)

  • +
  • VPCId (str) - VPCId

  • +
+
+ +
+
+modify_route_rule(req: Optional[dict] = None, **kwargs) → dict[source]
+

ModifyRouteRule - 路由策略增、删、改

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteRule (list) - (Required) 格式: RouteRuleId | 目的网段 | 下一跳类型 | 下一跳 |优先级| 备注 | 增、删、改标志 (下一跳类型为instance或者vip,下一跳为云主机id或者vip的id,优先级使用0,动作标志为add/delete/update) 。”添加”示例: test_id | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| add (添加的RouteRuleId填任意非空字符串) 。”删除”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| delete (RouteRuleId来自DescribeRouteTable中) 。“修改”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-cjksa2 | 0 | Default Route Rule| update (RouteRuleId来自DescribeRouteTable中)

  • +
  • RouteTableId (str) - (Required) 通过DescribeRouteTable拿到

  • +
+

Response

+
+ +
+
+update_route_table_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateRouteTableAttribute - 更新路由表基本信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表ID

  • +
  • Name (str) - 名称

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
+ +
+
+update_subnet_attribute(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateSubnetAttribute - 更新子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
  • Name (str) - 子网名称(如果Name不填写,Tag必须填写)

  • +
  • Tag (str) - 业务组名称(如果Tag不填写,Name必须填写)

  • +
+

Response

+
+ +
+
+update_vpc_network(req: Optional[dict] = None, **kwargs) → dict[source]
+

UpdateVPCNetwork - 更新VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 需要保留的VPC网段。当前仅支持删除VPC网段,添加网段请参考 AddVPCNetwork

  • +
  • VPCId (str) - (Required) VPC的ID

  • +
+

Response

+
    +
  • Message (str) - 错误信息

  • +
+
+ +
+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/build/html/usage.html b/docs/build/html/usage.html new file mode 100644 index 00000000..4084582e --- /dev/null +++ b/docs/build/html/usage.html @@ -0,0 +1,196 @@ + + + + + + + Usage — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Usage

+
+

Type System

+

UCloud Python SDK has type system for runtime checking.

+

For example:

+
client.uhost().create_uhost_instance({
+    'CPU': "i am not a integer",
+})
+
+
+

it will raise ValidationException with invalid integer and some required field is miss matched.

+
+
+

Wait State Changed

+

SDK also provide state waiter helper to improver usage experience.

+

When using it?

+

Waiter can wait for remote state is achieved to target state. such as,

+
    +
  • create and wait for resource state is completed.

  • +
  • invoke/start/stop a resource and wait for it is finished.

  • +
  • custom retry policies and wait for retrying is finished.

  • +
+

For example:

+
def mget_uhost_states(uhost_ids):
+    resp = client.uhost().describe_uhost_instance({'UHostIds': uhost_ids})
+    return [inst.get('State') for inst in resp.get('UHostSet')]
+
+# Stop all instances
+for uhost_id in uhost_ids:
+    client.uhost().stop_uhost_instance({'UHostId': uhost_id})
+
+# Wait all instances is stopped
+wait.wait_for_state(
+    target=['stopped'], pending=['pending'],
+    timeout=300, # wait 5min
+    refresh=lambda: (
+        'stopped' if all([state == 'Stopped' for state in mget_uhost_states(uhost_ids)]) else 'pending'
+    ),
+)
+
+# Remove all instances
+for uhost_id in uhost_ids:
+    client.uhost().terminate_uhost_instance({'UHostId': uhost_id})
+
+
+

By the default, waiter will use exponential back-off delay between twice request. +it will raise WaitTimeoutException when timeout is reached.

+
+
+

Client/Transport Middleware

+

UCloud SDK provide middleware feature to client or transport level request.

+

It allowed to add custom logic into the lifecycle of request/response.

+

For example:

+
@client.middleware.request
+def log_params(req):
+    print('[REQ]', req)
+
+@client.middleware.response
+def log_response(resp):
+    print('[RESP]', resp)
+
+
+

or transport:

+
from ucloud.core.transport import RequestsTransport
+
+transport = RequestsTransport()
+
+@transport.middleware.request
+def log_request(req):
+    print('[REQ]', req)
+
+@transport.middleware.response
+def log_response(resp):
+    print('[RESP]', resp)
+
+Client({'Region': 'cn-bj2'}, transport=transport)
+
+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index 848c6f1d..00000000 --- a/docs/conf.py +++ /dev/null @@ -1,56 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = "ucloud-sdk-python3" -copyright = "2019, ucloud" -author = "ucloud" - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.doctest", - "sphinx.ext.todo", - "sphinx.ext.viewcode", -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "alabaster" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] diff --git a/examples/auth/README.md b/examples/auth/README.md deleted file mode 100644 index b5cbf070..00000000 --- a/examples/auth/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# UCloud SDK Auth Example - -## What is the goal - -Create signature from request payload. - -## Setup Environment - -Don't need. - -## How to run - -```sh -python main.py -``` diff --git a/examples/auth/main.py b/examples/auth/main.py deleted file mode 100644 index 8348488c..00000000 --- a/examples/auth/main.py +++ /dev/null @@ -1,14 +0,0 @@ -from ucloud.core import auth - - -def main(): - cred = auth.Credential( - "ucloudsomeone@example.com1296235120854146120", - "46f09bb9fab4f12dfc160dae12273d5332b5debe", - ) - d = {"Action": "DescribeUHostInstance", "Region": "cn-bj2", "Limit": 10} - print(cred.verify_ac(d)) - - -if __name__ == "__main__": - main() diff --git a/examples/two-tier/README.md b/examples/two-tier/README.md deleted file mode 100644 index 7f8aab0a..00000000 --- a/examples/two-tier/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# UCloud SDK Two-Tier Example - -## What is the goal - -Build a two-tier architecture with ulb and uhost, and remove all example data. - -## Setup Environment - -```go -export UCLOUD_PUBLIC_KEY="your public key" -export UCLOUD_PRIVATE_KEY="your private key" -export UCLOUD_PROJECT_ID="your project id" -``` - -## How to run - -```sh -python main.py -``` diff --git a/examples/two-tier/main.py b/examples/two-tier/main.py deleted file mode 100644 index 92bd6ec0..00000000 --- a/examples/two-tier/main.py +++ /dev/null @@ -1,151 +0,0 @@ -import os -import logging -import random - -from ucloud.client import Client -from ucloud.helpers import wait, utils - -logger = logging.getLogger("ucloud") -logger.setLevel(logging.DEBUG) - -# NOTE: find your public/private key at -# website `UAPI `_ -client = Client( - { - "region": "cn-bj2", - "project_id": os.getenv("UCLOUD_PROJECT_ID"), - "public_key": os.getenv("UCLOUD_PUBLIC_KEY"), - "private_key": os.getenv("UCLOUD_PRIVATE_KEY"), - } -) - - -def main(): - image_id = describe_image() - - uhost_ids = create_uhost_batch(image_id, 2) - - ulb_id = create_ulb() - - vserver_id = create_vserver(ulb_id) - - backend_ids = allocate_backend_batch(ulb_id, vserver_id, uhost_ids) - - backend_ids and release_backend_batch(ulb_id, vserver_id, backend_ids) - - vserver_id and delete_vserver(ulb_id, vserver_id) - - ulb_id and delete_ulb(ulb_id) - - uhost_ids and delete_uhost_batch(uhost_ids) - - -def describe_image(): - images = ( - client.uhost().describe_image({"ImageType": "Base"}).get("ImageSet", []) - ) - if not images: - return - image = random.choice(images) - return image.get("ImageId") - - -def mget_uhost_states(uhost_ids): - resp = client.uhost().describe_uhost_instance({"UHostIds": uhost_ids}) - return [inst.get("State") for inst in resp.get("UHostSet")] - - -def create_uhost_batch(image_id, count): - resp = client.uhost().create_uhost_instance( - { - "Name": "sdk-python3-example-two-tier", - "Zone": "cn-bj2-05", - "ImageId": image_id, - "LoginMode": "Password", - "Password": utils.gen_password(20), - "CPU": 1, - "Memory": 1024, - "MaxCount": count, - } - ) - uhost_ids = resp.get("UHostIds", []) - wait.wait_for_state( - target=["running"], - pending=["pending"], - timeout=300, - refresh=lambda: ( - "running" - if all( - [state == "Running" for state in mget_uhost_states(uhost_ids)] - ) - else "pending" - ), - ) - return uhost_ids - - -def create_ulb(): - resp = client.ulb().create_ulb({"Name": "sdk-python3-example-two-tier"}) - return resp.get("ULBId") - - -def create_vserver(ulb_id): - resp = client.ulb().create_vserver( - {"Name": "sdk-python3-example-two-tier", "ULBId": ulb_id} - ) - return resp.get("VServerId") - - -def allocate_backend_batch(ulb_id, vserver_id, uhost_ids): - backend_ids = [] - for uhost_id in uhost_ids: - resp = client.ulb().allocate_backend( - { - "ULBId": ulb_id, - "VServerId": vserver_id, - "ResourceId": uhost_id, - "ResourceType": "UHost", - } - ) - backend_ids.append(resp.get("BackendId")) - return backend_ids - - -def release_backend_batch(ulb_id, vserver_id, backend_ids): - for backend_id in backend_ids: - client.ulb().release_backend( - {"ULBId": ulb_id, "VServerId": vserver_id, "BackendId": backend_id} - ) - - -def delete_vserver(ulb_id, vserver_id): - client.ulb().delete_vserver({"ULBId": ulb_id, "VServerId": vserver_id}) - - -def delete_ulb(ulb_id): - client.ulb().delete_ulb({"ULBId": ulb_id}) - - -def delete_uhost_batch(uhost_ids): - for uhost_id in uhost_ids: - client.uhost().stop_uhost_instance({"UHostId": uhost_id}) - - wait.wait_for_state( - target=["stopped"], - pending=["pending"], - timeout=300, - refresh=lambda: ( - "stopped" - if all( - [state == "Stopped" for state in mget_uhost_states(uhost_ids)] - ) - else "pending" - ), - ) - - for uhost_id in uhost_ids: - client.uhost().terminate_uhost_instance({"UHostId": uhost_id}) - - -if __name__ == "__main__": - main() diff --git a/examples/uhost/README.md b/examples/uhost/README.md deleted file mode 100644 index e4553bc0..00000000 --- a/examples/uhost/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# UCloud SDK UHost Example - -## What is the goal - -Create an uhost, wait it created, and remove all example data. - -## Setup Environment - -```go -export UCLOUD_PUBLIC_KEY="your public key" -export UCLOUD_PRIVATE_KEY="your private key" -export UCLOUD_PROJECT_ID="your project id" -``` - -## How to run - -```sh -python main.py -``` diff --git a/examples/uhost/main.py b/examples/uhost/main.py deleted file mode 100644 index 06eaa00c..00000000 --- a/examples/uhost/main.py +++ /dev/null @@ -1,97 +0,0 @@ -import os -import logging -import random - -from ucloud.client import Client -from ucloud.helpers import wait, utils - -logger = logging.getLogger("ucloud") -logger.setLevel(logging.DEBUG) - - -def main(): - client = Client( - { - "region": "cn-bj2", - "project_id": os.getenv("UCLOUD_PROJECT_ID"), - "public_key": os.getenv("UCLOUD_PUBLIC_KEY"), - "private_key": os.getenv("UCLOUD_PRIVATE_KEY"), - } - ) - - logger.info("finding image, random choice one") - images = ( - client.uhost() - .describe_image({"ImageType": "Base", "OsType": "Linux"}) - .get("ImageSet", []) - ) - - assert len(images) > 0 - - logger.info("creating uhost instance ...") - image = random.choice(images) - - resp = client.uhost().create_uhost_instance( - { - "Name": "sdk-python-example", - "Zone": image["Zone"], - "ImageId": image["ImageId"], - "LoginMode": "Password", - "Password": utils.gen_password(20), - "CPU": 1, - "Memory": 1024, - "Disks": [ - { - "Size": image["ImageSize"], - "Type": "LOCAL_NORMAL", - "IsBoot": "True", - } - ], - } - ) - uhost_id = utils.first(resp["UHostIds"]) - logger.info("uhost instance is created") - - def refresh_state(): - uhost = utils.first( - client.uhost() - .describe_uhost_instance({"UHostIds": [uhost_id]}) - .get("UHostSet", []) - ) - if uhost.get("State") in ["Running", "Stopped"]: - return uhost["State"].lower() - return "pending" - - logger.info("wait uhost state is running ...") - try: - wait.wait_for_state( - pending=["pending"], - target=["running"], - timeout=300, - refresh=refresh_state, - ) - except wait.WaitTimeoutException as e: - logger.error(e) - logger.info("uhost instance is running") - - logger.info("stopping uhost for clean up resources ...") - client.uhost().stop_uhost_instance({"UHostId": uhost_id}) - - try: - wait.wait_for_state( - pending=["pending"], - target=["stopped"], - timeout=180, - refresh=refresh_state, - ) - except wait.WaitTimeoutException as e: - logger.error(e) - else: - logger.info("uhost instance is stopped") - - logger.info("remove uhost instance from cloud") - client.uhost().terminate_uhost_instance({"UHostId": uhost_id}) - - -if __name__ == "__main__": - main() diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..e7a37e24 --- /dev/null +++ b/genindex.html @@ -0,0 +1,1513 @@ + + + + + + + + Index — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | I + | L + | M + | P + | Q + | R + | S + | T + | U + | V + | W + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

I

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

P

+ + + +
+ +

Q

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + +
+ + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/helpers.html b/helpers.html new file mode 100644 index 00000000..517cf4c3 --- /dev/null +++ b/helpers.html @@ -0,0 +1,209 @@ + + + + + + + + + Helpers — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Helpers

+
+

Wait Resource State

+
+
+ucloud.helpers.wait.wait_for_state(pending: List[str], target: List[str], refresh: Callable, timeout: float, startup_delay: float = 0, min_backoff_interval: float = 0.1, max_backoff_interval: float = 10)[source]
+

wait_for_state is a utilities function to wait the state return by refresh function achieve the specific state, +the generally usage is wait the cloud resource, such as uhost, udb … is +ready after created.

+
>>> wait_for_state(
+...     pending=["pending"],
+...     target=["running"],
+...     refresh=lambda: "running",
+...     timeout=0.5,
+... )
+
+
+
+
Parameters
+
    +
  • pending – pending is the list of pending state, the state is returned by refresh function

  • +
  • target – target is the list of target state, it is usually the terminate state, eg. running and fail

  • +
  • refresh – the customized refresh function, expect no arguments and return a state

  • +
  • timeout – timeout is the total time to wait state is achieved

  • +
  • startup_delay – the time to wait before first refresh function is called

  • +
  • min_backoff_interval – the backoff time for first refresh interval

  • +
  • max_backoff_interval – the max backoff time for refresh interval

  • +
+
+
+
+ +
+
+

Utilities

+
+
+ucloud.helpers.utils.b64decode(s: str) str[source]
+

base64 decode

+
+
Parameters
+

s (str) – base64 string

+
+
Returns
+

output string

+
+
+
+ +
+
+ucloud.helpers.utils.b64encode(s: str) str[source]
+

base64 encode

+
+
Parameters
+

s (str) – input string

+
+
Returns
+

base64 string

+
+
+
+ +
+
+ucloud.helpers.utils.gen_password(n: int, lower_letters: str = 'abcdefghijklmnopqrstuvwxyz', upper_letters: str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', number_letters: str = '0123456789', special_letters: str = '_', min_lower: int = 1, min_upper: int = 1, min_number: int = 1, min_specials: int = 1)[source]
+

generate password for any resource

+
>>> len(gen_password(20))
+20
+
+
+
+
Parameters
+
    +
  • n (int) – password total length

  • +
  • lower_letters (str) – all lowercase letters

  • +
  • upper_letters (str) – all uppercase letters

  • +
  • number_letters (str) – all number letters

  • +
  • special_letters (str) – all special letters

  • +
  • min_lower (int) – minimal number of lowercase letters

  • +
  • min_upper (int) – minimal number of uppercase letters

  • +
  • min_number (int) – minimal number of number letters

  • +
  • min_specials (int) – minimal number of special letters

  • +
+
+
Returns
+

+
+
+
+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..145d4179 --- /dev/null +++ b/index.html @@ -0,0 +1,267 @@ + + + + + + + + + UCloud SDK Python 3 — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

UCloud SDK Python 3

+

UCloud SDK is a Python client library for accessing the UCloud API.

+

This client can run on Linux, macOS and Windows.

+ +Latest Version +Travis CI Status +Codecov Status +Doc Status +
+

Guide

+ +
+
+
+

QuickStart

+
+

Installation

+

Install with pip:

+
pip install ucloud-sdk-python3
+
+
+

Install with source code:

+
clone https://github.com/ucloud/ucloud-sdk-python3.git
+cd ucloud-sdk-python3
+python setup.py install
+
+
+
+
+

QuickStart

+

Currently, user public key & private key is the only method of authenticating with the API. You could get your keys here:

+ +

You can then use your keys to create a new client of uhost service:

+
from ucloud.core import exc
+from ucloud.client import Client
+
+client = Client({
+    "region": "cn-bj2",
+    "project_id": "...",
+    "public_key": "...",
+    "private_key": "...",
+})
+
+try:
+    resp = client.uhost().create_uhost_instance({
+        'Name': 'sdk-python-quickstart',
+        'Zone': image["zone"],
+        'ImageId': image["image_id"],
+        'LoginMode': "Password",
+        'Password': utils.b64encode(utils.gen_password(20)),
+        'CPU': 1,
+        'Memory': 1,
+        'Disks': [{
+            'Size': 10,
+            'Type': 'CLOUD_SSD'
+        }],
+    })
+except exc.UCloudException as e:
+    print(e)
+else:
+    print(resp)
+
+
+
+

Note

+

UHost created above cannot be accessed via Internet unless an EIP is created and bind to the UHost.

+
+
+
+

API Reference

+ +
+
+

Indices and tables

+ +
+
+

Feedback & Contribution

+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..ed598575 Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 00000000..19ba8a49 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,129 @@ + + + + + + + + Python Module Index — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Python Module Index

+ +
+ u +
+ + + + + + + + + + +
 
+ u
+ ucloud +
    + ucloud.helpers.utils +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index da0fde0d..00000000 --- a/pytest.ini +++ /dev/null @@ -1,5 +0,0 @@ -[pytest] -log_cli = 1 -log_cli_level = INFO -testpaths = tests -addopts = -v diff --git a/quick_start.html b/quick_start.html new file mode 100644 index 00000000..4680d301 --- /dev/null +++ b/quick_start.html @@ -0,0 +1,173 @@ + + + + + + + + + QuickStart — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

QuickStart

+
+

Installation

+

Install with pip:

+
pip install ucloud-sdk-python3
+
+
+

Install with source code:

+
clone https://github.com/ucloud/ucloud-sdk-python3.git
+cd ucloud-sdk-python3
+python setup.py install
+
+
+
+
+

QuickStart

+

Currently, user public key & private key is the only method of authenticating with the API. You could get your keys here:

+ +

You can then use your keys to create a new client of uhost service:

+
from ucloud.core import exc
+from ucloud.client import Client
+
+client = Client({
+    "region": "cn-bj2",
+    "project_id": "...",
+    "public_key": "...",
+    "private_key": "...",
+})
+
+try:
+    resp = client.uhost().create_uhost_instance({
+        'Name': 'sdk-python-quickstart',
+        'Zone': image["zone"],
+        'ImageId': image["image_id"],
+        'LoginMode': "Password",
+        'Password': utils.b64encode(utils.gen_password(20)),
+        'CPU': 1,
+        'Memory': 1,
+        'Disks': [{
+            'Size': 10,
+            'Type': 'CLOUD_SSD'
+        }],
+    })
+except exc.UCloudException as e:
+    print(e)
+else:
+    print(resp)
+
+
+
+

Note

+

UHost created above cannot be accessed via Internet unless an EIP is created and bind to the UHost.

+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index f2293605..00000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -requests diff --git a/scripts/codegen.sh b/scripts/codegen.sh deleted file mode 100644 index 5f5a0cfa..00000000 --- a/scripts/codegen.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -#set -u -set -e - -if [ -n "$PRODUCT" ]; then - ucloud-model sync --lang python --product "$PRODUCT" - ucloud-model sdk apis --type public --product "$PRODUCT" --lang python --template "$U_MODEL_HOME"/providers/python/templates/scripts-api.tpl --output scripts/gen-apis.sh - bash ./scripts/gen-apis.sh -fi - -if [ -n "$TEST" ]; then - IFS=',' read -ra TL <<< "$TEST" - for i in "${TL[@]}"; do - ucloud-model sdk test --name "$i" --lang python --template "$U_MODEL_HOME"/providers/python/templates/testing.tpl --output tests/test_services/test_set_"$i".py - done -fi diff --git a/scripts/release.py b/scripts/release.py deleted file mode 100644 index 4a47942c..00000000 --- a/scripts/release.py +++ /dev/null @@ -1,163 +0,0 @@ -import logging -import subprocess -import copy -from datetime import datetime - -import ucloud.version - - -logger = logging.getLogger(__name__) - - -def shell(cmd): - print(cmd) - p = subprocess.check_output(cmd) - return p.decode().strip() - - -class Bumper: - def __init__(self, version): - self.version = version - versioned = version.split('.') - if len(versioned) != 3: - raise ValueError('invalid version {}'.format(version)) - - major, minor, patch = versioned - self.major = int(major) - self.minor = int(minor) - self.patch = int(patch) - - def bump_major(self): - clone = copy.deepcopy(self) - clone.major += 1 - clone.minor = 0 - clone.patch = 0 - return clone - - def bump_minor(self): - clone = copy.deepcopy(self) - clone.minor += 1 - clone.patch = 0 - return clone - - def bump_patch(self): - clone = copy.deepcopy(self) - clone.patch += 1 - return clone - - -class StepWriteChangelog: - classifier_tokens = ['FEATURES', 'ENHANCEMENTS', 'BUG FIXES'] - - def __init__(self, changelog_file='CHANGELOG.md', is_prerelease=True, is_dry_run=True): - self.state = '' - self.logs = {} - self.changelog_file = changelog_file - self.is_prerelease = is_prerelease - self.is_dry_run = is_dry_run - - @staticmethod - def get_git_logs(): - version = shell('git describe --tags --abbrev=0') - commit_sha = shell('git show-ref -s {}'.format(version)) - return shell('git log --format=%B {}..HEAD'.format(commit_sha)) - - def get_change_logs(self): - logs = {} - for line in self.get_git_logs().split('\n'): - line = line.strip() - if not line: - continue - - if line.strip(':') in self.classifier_tokens: - self.state = line - logs.setdefault(line, []) - continue - - if line.startswith('- ') and self.state: - logs[self.state].append(line) - else: - logger.warning('ignore changelog: {}'.format(line)) - - return logs - - def write_changelog(self, logs): - buffer_lines = [] - should_bump = None - - # render change logs - for i, token in enumerate(self.classifier_tokens): - items = logs.get(token) - if not items: - continue - - buffer_lines.append(token) - for item in items: - buffer_lines.append('- ' + item) - - if should_bump is None: - should_bump = i - - if should_bump is None: - logger.warning('no content should be release') - # raise ValueError('no content should be release') - - # auto increase version number - bumper = Bumper(ucloud.version.version) - if should_bump == 0: - if not self.is_prerelease: - bumper = bumper.bump_major() - else: - bumper = bumper.bump_minor() - elif should_bump == 1: - bumper = bumper.bump_minor() - else: - bumper = bumper.bump_patch() - - if not self.is_dry_run: - # insert change logs at the begin of changelog file - with open('CHANGELOG.md', 'r+') as f: - content = f.read() - f.seek(0) - f.write('\n\n'.join([ - '## {} ({})'.format(bumper.version, datetime.now().date().isoformat()), - '\n'.join(buffer_lines), - content, - ])) - - return bumper.version - - def write_version(self, version): - version_code = 'version = "{}"'.format(version) - if self.is_dry_run: - print(version_code) - return - - with open('./ucloud/version.py', 'w') as f: - f.write(version_code + '\n') - - -def main(): - import argparse - - parser = argparse.ArgumentParser(description='Process some integers.') - parser.add_argument('--changelog-file', default='CHANGELOG.md', - help='the file path of changelog file') - parser.add_argument('--production', default=False, action='store_true', help='is prerelease') - parser.add_argument('--dry-run', default=False, action='store_true', help='is dry run') - - args = parser.parse_args() - print(args) - - step1 = StepWriteChangelog( - changelog_file=args.changelog_file, - is_dry_run=args.dry_run, - is_prerelease=not args.production, - ) - logs = step1.get_change_logs() - version = step1.write_changelog(logs) - step1.write_version(version) - - -if __name__ == '__main__': - main() diff --git a/search.html b/search.html new file mode 100644 index 00000000..b7d8e46f --- /dev/null +++ b/search.html @@ -0,0 +1,128 @@ + + + + + + + + Search — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..8fc5d98d --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["core","helpers","index","quick_start","services","usage"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["core.rst","helpers.rst","index.rst","quick_start.rst","services.rst","usage.rst"],objects:{"ucloud.core.auth":[[0,0,1,"","Credential"]],"ucloud.core.client":[[0,0,1,"","Client"],[0,0,1,"","Config"]],"ucloud.core.client.Client":[[0,1,1,"","invoke"]],"ucloud.core.transport":[[0,0,1,"","RequestsTransport"]],"ucloud.core.transport.RequestsTransport":[[0,2,1,"","middleware"],[0,1,1,"","send"]],"ucloud.core.utils.middleware":[[0,0,1,"","Middleware"]],"ucloud.core.utils.middleware.Middleware":[[0,1,1,"","exception"],[0,1,1,"","request"],[0,1,1,"","response"]],"ucloud.helpers":[[1,3,0,"-","utils"]],"ucloud.helpers.utils":[[1,4,1,"","b64decode"],[1,4,1,"","b64encode"],[1,4,1,"","gen_password"]],"ucloud.helpers.wait":[[1,4,1,"","wait_for_state"]],"ucloud.services.cube.client":[[4,0,1,"","CubeClient"]],"ucloud.services.cube.client.CubeClient":[[4,1,1,"","create_cube_deployment"],[4,1,1,"","create_cube_pod"],[4,1,1,"","delete_cube_deployment"],[4,1,1,"","delete_cube_pod"],[4,1,1,"","get_cube_deployment"],[4,1,1,"","get_cube_exec_token"],[4,1,1,"","get_cube_extend_info"],[4,1,1,"","get_cube_metrics"],[4,1,1,"","get_cube_pod"],[4,1,1,"","get_cube_price"],[4,1,1,"","get_cube_token"],[4,1,1,"","list_cube_deployment"],[4,1,1,"","list_cube_pod"],[4,1,1,"","modify_cube_extend_info"],[4,1,1,"","modify_cube_tag"],[4,1,1,"","renew_cube_pod"],[4,1,1,"","update_cube_deployment"]],"ucloud.services.iam.client":[[4,0,1,"","IAMClient"]],"ucloud.services.iam.client.IAMClient":[[4,1,1,"","create_project"],[4,1,1,"","delete_project"]],"ucloud.services.ipsecvpn.client":[[4,0,1,"","IPSecVPNClient"]],"ucloud.services.ipsecvpn.client.IPSecVPNClient":[[4,1,1,"","create_remote_vpn_gateway"],[4,1,1,"","create_vpn_gateway"],[4,1,1,"","create_vpn_tunnel"],[4,1,1,"","delete_remote_vpn_gateway"],[4,1,1,"","delete_vpn_gateway"],[4,1,1,"","delete_vpn_tunnel"],[4,1,1,"","describe_remote_vpn_gateway"],[4,1,1,"","describe_vpn_gateway"],[4,1,1,"","describe_vpn_tunnel"],[4,1,1,"","get_vpn_gateway_price"],[4,1,1,"","get_vpn_gateway_upgrade_price"],[4,1,1,"","update_vpn_gateway"],[4,1,1,"","update_vpn_tunnel_attribute"]],"ucloud.services.isms.client":[[4,0,1,"","ISMSClient"]],"ucloud.services.isms.client.ISMSClient":[[4,1,1,"","create_isms_signature"],[4,1,1,"","create_isms_template"],[4,1,1,"","delete_isms_signature"],[4,1,1,"","delete_isms_template"],[4,1,1,"","get_isms_send_receipt"],[4,1,1,"","query_isms_signature"],[4,1,1,"","query_isms_template"],[4,1,1,"","send_isms_message"],[4,1,1,"","update_isms_signature"]],"ucloud.services.pathx.client":[[4,0,1,"","PathXClient"]],"ucloud.services.pathx.client.PathXClient":[[4,1,1,"","bind_path_xssl"],[4,1,1,"","create_global_ssh_instance"],[4,1,1,"","create_path_xssl"],[4,1,1,"","create_uga_forwarder"],[4,1,1,"","create_uga_instance"],[4,1,1,"","create_upath"],[4,1,1,"","delete_global_ssh_instance"],[4,1,1,"","delete_path_xssl"],[4,1,1,"","delete_uga_forwarder"],[4,1,1,"","delete_uga_instance"],[4,1,1,"","delete_upath"],[4,1,1,"","describe_global_ssh_area"],[4,1,1,"","describe_global_ssh_instance"],[4,1,1,"","describe_path_x_line_config"],[4,1,1,"","describe_path_xssl"],[4,1,1,"","describe_uga_instance"],[4,1,1,"","describe_upath"],[4,1,1,"","describe_upath_template"],[4,1,1,"","get_global_ssh_price"],[4,1,1,"","get_global_ssh_update_price"],[4,1,1,"","get_path_x_metric"],[4,1,1,"","modify_global_ssh_port"],[4,1,1,"","modify_global_ssh_remark"],[4,1,1,"","modify_global_ssh_type"],[4,1,1,"","modify_upath_bandwidth"],[4,1,1,"","modify_upath_template"],[4,1,1,"","uga_bind_upath"],[4,1,1,"","uga_un_bind_upath"],[4,1,1,"","un_bind_path_xssl"],[4,1,1,"","update_path_x_whitelist"]],"ucloud.services.stepflow.client":[[4,0,1,"","StepFlowClient"]],"ucloud.services.stepflow.client.StepFlowClient":[[4,1,1,"","create_sf_workflow_from_template"],[4,1,1,"","get_sf_workflow_template"]],"ucloud.services.tidb.client":[[4,0,1,"","TiDBClient"]],"ucloud.services.tidb.client.TiDBClient":[[4,1,1,"","create_ti_db_service"],[4,1,1,"","delete_ti_db_service"],[4,1,1,"","set_ti_db_config"]],"ucloud.services.uaccount.client":[[4,0,1,"","UAccountClient"]],"ucloud.services.uaccount.client.UAccountClient":[[4,1,1,"","add_member_to_project"],[4,1,1,"","create_character"],[4,1,1,"","create_project"],[4,1,1,"","describe_character_list"],[4,1,1,"","describe_member_list"],[4,1,1,"","freeze_member"],[4,1,1,"","get_network_mask"],[4,1,1,"","get_project_list"],[4,1,1,"","get_region"],[4,1,1,"","get_user_info"],[4,1,1,"","invite_subaccount"],[4,1,1,"","modify_character"],[4,1,1,"","modify_project"],[4,1,1,"","remove_member_from_project"],[4,1,1,"","set_network_mask"],[4,1,1,"","terminate_character"],[4,1,1,"","terminate_member"],[4,1,1,"","terminate_project"]],"ucloud.services.ubill.client":[[4,0,1,"","UBillClient"]],"ucloud.services.ubill.client.UBillClient":[[4,1,1,"","get_balance"],[4,1,1,"","get_bill_data_file_url"],[4,1,1,"","list_u_bill_detail"],[4,1,1,"","list_u_bill_overview"]],"ucloud.services.ucdn.client":[[4,0,1,"","UCDNClient"]],"ucloud.services.ucdn.client.UCDNClient":[[4,1,1,"","add_certificate"],[4,1,1,"","batch_describe_new_ucdn_domain"],[4,1,1,"","batch_refresh_new_ucdn_domain_cache"],[4,1,1,"","control_ucdn_domain_cache_access"],[4,1,1,"","delete_certificate"],[4,1,1,"","describe_new_ucdn_prefetch_cache_task"],[4,1,1,"","describe_new_ucdn_refresh_cache_task"],[4,1,1,"","get_certificate_v2"],[4,1,1,"","get_new_ucdn_domain_bandwidth"],[4,1,1,"","get_new_ucdn_domain_hit_rate"],[4,1,1,"","get_new_ucdn_domain_http_code"],[4,1,1,"","get_new_ucdn_domain_http_code_v2"],[4,1,1,"","get_new_ucdn_domain_request_num"],[4,1,1,"","get_new_ucdn_log_referer_statistics"],[4,1,1,"","get_new_ucdn_log_url_statistics"],[4,1,1,"","get_ucdn_domain_95bandwidth_v2"],[4,1,1,"","get_ucdn_domain_bandwidth_v2"],[4,1,1,"","get_ucdn_domain_config"],[4,1,1,"","get_ucdn_domain_hit_rate"],[4,1,1,"","get_ucdn_domain_http_code_v2"],[4,1,1,"","get_ucdn_domain_info_list"],[4,1,1,"","get_ucdn_domain_log"],[4,1,1,"","get_ucdn_domain_origin_http_code"],[4,1,1,"","get_ucdn_domain_origin_http_code_detail"],[4,1,1,"","get_ucdn_domain_origin_request_num"],[4,1,1,"","get_ucdn_domain_prefetch_enable"],[4,1,1,"","get_ucdn_domain_request_num_v2"],[4,1,1,"","get_ucdn_domain_request_num_v3"],[4,1,1,"","get_ucdn_domain_traffic"],[4,1,1,"","get_ucdn_pass_bandwidth"],[4,1,1,"","get_ucdn_pass_bandwidth_v2"],[4,1,1,"","get_ucdn_pro_isp_bandwidth_v2"],[4,1,1,"","get_ucdn_pro_isp_request_num_v2"],[4,1,1,"","get_ucdn_traffic"],[4,1,1,"","get_ucdn_traffic_v2"],[4,1,1,"","prefetch_new_ucdn_domain_cache"],[4,1,1,"","query_ip_location"],[4,1,1,"","refresh_new_ucdn_domain_cache"],[4,1,1,"","switch_ucdn_charge_type"]],"ucloud.services.udb.client":[[4,0,1,"","UDBClient"]],"ucloud.services.udb.client.UDBClient":[[4,1,1,"","backup_udb_instance"],[4,1,1,"","backup_udb_instance_binlog"],[4,1,1,"","backup_udb_instance_error_log"],[4,1,1,"","backup_udb_instance_slow_log"],[4,1,1,"","change_udb_param_group"],[4,1,1,"","check_recover_udb_instance"],[4,1,1,"","check_udb_instance_to_ha_allowance"],[4,1,1,"","clear_udb_log"],[4,1,1,"","create_mongo_db_replica_set"],[4,1,1,"","create_udb_instance"],[4,1,1,"","create_udb_instance_by_recovery"],[4,1,1,"","create_udb_param_group"],[4,1,1,"","create_udb_replication_instance"],[4,1,1,"","create_udb_route_instance"],[4,1,1,"","create_udb_slave"],[4,1,1,"","delete_udb_backup"],[4,1,1,"","delete_udb_instance"],[4,1,1,"","delete_udb_log_package"],[4,1,1,"","delete_udb_param_group"],[4,1,1,"","describe_udb_backup"],[4,1,1,"","describe_udb_backup_blacklist"],[4,1,1,"","describe_udb_binlog_backup_url"],[4,1,1,"","describe_udb_instance"],[4,1,1,"","describe_udb_instance_backup_state"],[4,1,1,"","describe_udb_instance_backup_url"],[4,1,1,"","describe_udb_instance_binlog"],[4,1,1,"","describe_udb_instance_binlog_backup_state"],[4,1,1,"","describe_udb_instance_log"],[4,1,1,"","describe_udb_instance_price"],[4,1,1,"","describe_udb_instance_state"],[4,1,1,"","describe_udb_instance_upgrade_price"],[4,1,1,"","describe_udb_log_backup_url"],[4,1,1,"","describe_udb_log_package"],[4,1,1,"","describe_udb_param_group"],[4,1,1,"","describe_udb_splitting_info"],[4,1,1,"","describe_udb_type"],[4,1,1,"","disable_udb_rw_splitting"],[4,1,1,"","edit_udb_backup_blacklist"],[4,1,1,"","enable_udb_rw_splitting"],[4,1,1,"","extract_udb_param_group"],[4,1,1,"","fetch_udb_instance_earliest_recover_time"],[4,1,1,"","get_udb_client_conn_num"],[4,1,1,"","modify_udb_instance_name"],[4,1,1,"","modify_udb_instance_password"],[4,1,1,"","promote_udb_instance_to_ha"],[4,1,1,"","promote_udb_slave"],[4,1,1,"","resize_udb_instance"],[4,1,1,"","restart_rw_splitting"],[4,1,1,"","restart_udb_instance"],[4,1,1,"","set_udb_rw_splitting"],[4,1,1,"","start_udb_instance"],[4,1,1,"","stop_udb_instance"],[4,1,1,"","switch_udb_ha_to_sentinel"],[4,1,1,"","switch_udb_instance_to_ha"],[4,1,1,"","update_udb_instance_backup_strategy"],[4,1,1,"","update_udb_instance_slave_backup_switch"],[4,1,1,"","update_udb_param_group"],[4,1,1,"","upgrade_udb_instance_to_ha"],[4,1,1,"","upload_udb_param_group"]],"ucloud.services.uddb.client":[[4,0,1,"","UDDBClient"]],"ucloud.services.uddb.client.UDDBClient":[[4,1,1,"","change_uddb_instance_name"],[4,1,1,"","change_uddb_slave_count"],[4,1,1,"","create_uddb_instance"],[4,1,1,"","delete_uddb_instance"],[4,1,1,"","describe_uddb_instance"],[4,1,1,"","describe_uddb_instance_price"],[4,1,1,"","describe_uddb_instance_upgrade_price"],[4,1,1,"","restart_uddb_instance"],[4,1,1,"","start_uddb_instance"],[4,1,1,"","stop_uddb_instance"],[4,1,1,"","upgrade_uddb_data_node"],[4,1,1,"","upgrade_uddb_instance"]],"ucloud.services.udisk.client":[[4,0,1,"","UDiskClient"]],"ucloud.services.udisk.client.UDiskClient":[[4,1,1,"","attach_udisk"],[4,1,1,"","clone_udisk"],[4,1,1,"","clone_udisk_snapshot"],[4,1,1,"","clone_udisk_udataark"],[4,1,1,"","create_attach_udisk"],[4,1,1,"","create_udisk"],[4,1,1,"","create_udisk_snapshot"],[4,1,1,"","delete_udisk"],[4,1,1,"","delete_udisk_snapshot"],[4,1,1,"","describe_recycle_udisk"],[4,1,1,"","describe_udisk"],[4,1,1,"","describe_udisk_price"],[4,1,1,"","describe_udisk_snapshot"],[4,1,1,"","describe_udisk_upgrade_price"],[4,1,1,"","detach_udisk"],[4,1,1,"","recover_udisk"],[4,1,1,"","rename_udisk"],[4,1,1,"","resize_udisk"],[4,1,1,"","restore_udisk"],[4,1,1,"","set_udisk_udataark_mode"]],"ucloud.services.udpn.client":[[4,0,1,"","UDPNClient"]],"ucloud.services.udpn.client.UDPNClient":[[4,1,1,"","allocate_udpn"],[4,1,1,"","describe_udpn"],[4,1,1,"","get_udpn_line_list"],[4,1,1,"","get_udpn_price"],[4,1,1,"","get_udpn_upgrade_price"],[4,1,1,"","modify_udpn_bandwidth"],[4,1,1,"","release_udpn"]],"ucloud.services.udts.client":[[4,0,1,"","UDTSClient"]],"ucloud.services.udts.client.UDTSClient":[[4,1,1,"","check_udts_task"],[4,1,1,"","create_udts_task"],[4,1,1,"","get_udts_task_history"],[4,1,1,"","get_udts_task_status"],[4,1,1,"","list_udts_task"],[4,1,1,"","start_udts_task"],[4,1,1,"","stop_udts_task"]],"ucloud.services.uec.client":[[4,0,1,"","UECClient"]],"ucloud.services.uec.client.UECClient":[[4,1,1,"","bind_u_ec_firewall"],[4,1,1,"","create_u_ec_custom_image"],[4,1,1,"","create_u_ec_firewall"],[4,1,1,"","create_u_ec_holder"],[4,1,1,"","create_u_ec_subnet"],[4,1,1,"","create_u_ec_v_host"],[4,1,1,"","delete_u_ec_custom_image"],[4,1,1,"","delete_u_ec_holder"],[4,1,1,"","delete_u_ec_subnet"],[4,1,1,"","delete_u_ec_v_host"],[4,1,1,"","describe_u_ec_firewall"],[4,1,1,"","describe_u_ec_firewall_resource"],[4,1,1,"","describe_u_ec_holder"],[4,1,1,"","describe_u_ec_holder_idc"],[4,1,1,"","describe_u_ec_idc"],[4,1,1,"","describe_u_ec_subnet"],[4,1,1,"","describe_u_ec_v_host"],[4,1,1,"","describe_u_ec_v_host_isp"],[4,1,1,"","get_u_ec_holder_log"],[4,1,1,"","get_u_ec_holder_metrics"],[4,1,1,"","get_u_ec_idc_cut_info"],[4,1,1,"","get_u_ec_idcv_host_data"],[4,1,1,"","get_u_ec_image"],[4,1,1,"","get_u_ec_pod_price"],[4,1,1,"","get_u_ec_upgrade_price"],[4,1,1,"","get_u_ec_v_host_data"],[4,1,1,"","get_u_ec_v_host_price"],[4,1,1,"","import_u_ec_custom_image"],[4,1,1,"","login_u_ec_docker"],[4,1,1,"","modify_u_ec_bandwidth"],[4,1,1,"","modify_u_ec_holder_name"],[4,1,1,"","modify_u_ec_image_name"],[4,1,1,"","poweroff_u_ec_v_host"],[4,1,1,"","reinstall_u_ec_v_host"],[4,1,1,"","restart_u_ec_holder"],[4,1,1,"","restart_u_ec_v_host"],[4,1,1,"","start_u_ec_v_host"],[4,1,1,"","stop_u_ec_v_host"],[4,1,1,"","un_bind_u_ec_firewall"],[4,1,1,"","update_u_ec_firewall"],[4,1,1,"","update_u_ec_firewall_attribute"],[4,1,1,"","update_u_ec_subnet"]],"ucloud.services.ufile.client":[[4,0,1,"","UFileClient"]],"ucloud.services.ufile.client.UFileClient":[[4,1,1,"","create_bucket"],[4,1,1,"","create_ufile_token"],[4,1,1,"","delete_bucket"],[4,1,1,"","delete_ufile_token"],[4,1,1,"","describe_bucket"],[4,1,1,"","describe_ufile_token"],[4,1,1,"","get_ufile_daily_report"],[4,1,1,"","get_ufile_quota"],[4,1,1,"","get_ufile_quota_info"],[4,1,1,"","get_ufile_quota_price"],[4,1,1,"","get_ufile_report"],[4,1,1,"","set_ufile_referer"],[4,1,1,"","update_bucket"],[4,1,1,"","update_ufile_token"]],"ucloud.services.ufs.client":[[4,0,1,"","UFSClient"]],"ucloud.services.ufs.client.UFSClient":[[4,1,1,"","create_ufs_volume"],[4,1,1,"","describe_ufs_volume_2"],[4,1,1,"","extend_ufs_volume"],[4,1,1,"","remove_ufs_volume"]],"ucloud.services.uhost.client":[[4,0,1,"","UHostClient"]],"ucloud.services.uhost.client.UHostClient":[[4,1,1,"","copy_custom_image"],[4,1,1,"","create_custom_image"],[4,1,1,"","create_isolation_group"],[4,1,1,"","create_uhost_instance"],[4,1,1,"","create_uhost_key_pair"],[4,1,1,"","delete_isolation_group"],[4,1,1,"","delete_uhost_key_pairs"],[4,1,1,"","describe_image"],[4,1,1,"","describe_isolation_group"],[4,1,1,"","describe_uhost_instance"],[4,1,1,"","describe_uhost_instance_snapshot"],[4,1,1,"","describe_uhost_key_pairs"],[4,1,1,"","describe_uhost_tags"],[4,1,1,"","get_attached_disk_upgrade_price"],[4,1,1,"","get_uhost_instance_price"],[4,1,1,"","get_uhost_instance_vnc_info"],[4,1,1,"","get_uhost_upgrade_price"],[4,1,1,"","import_custom_image"],[4,1,1,"","import_uhost_key_pairs"],[4,1,1,"","leave_isolation_group"],[4,1,1,"","modify_uhost_instance_name"],[4,1,1,"","modify_uhost_instance_remark"],[4,1,1,"","modify_uhost_instance_tag"],[4,1,1,"","modify_uhost_ip"],[4,1,1,"","poweroff_uhost_instance"],[4,1,1,"","reboot_uhost_instance"],[4,1,1,"","reinstall_uhost_instance"],[4,1,1,"","reset_uhost_instance_password"],[4,1,1,"","resize_attached_disk"],[4,1,1,"","resize_uhost_instance"],[4,1,1,"","start_uhost_instance"],[4,1,1,"","stop_uhost_instance"],[4,1,1,"","terminate_custom_image"],[4,1,1,"","terminate_uhost_instance"],[4,1,1,"","upgrade_to_ark_uhost_instance"]],"ucloud.services.uhub.client":[[4,0,1,"","UHubClient"]],"ucloud.services.uhub.client.UHubClient":[[4,1,1,"","create_repo"],[4,1,1,"","delete_repo"],[4,1,1,"","delete_repo_image"],[4,1,1,"","get_image_tag"],[4,1,1,"","get_repo"],[4,1,1,"","get_repo_image"],[4,1,1,"","update_repo"]],"ucloud.services.uk8s.client":[[4,0,1,"","UK8SClient"]],"ucloud.services.uk8s.client.UK8SClient":[[4,1,1,"","add_uk8s_existing_uhost"],[4,1,1,"","add_uk8s_node_group"],[4,1,1,"","add_uk8s_phost_node"],[4,1,1,"","add_uk8s_uhost_node"],[4,1,1,"","create_uk8s_cluster_v2"],[4,1,1,"","del_uk8s_cluster"],[4,1,1,"","del_uk8s_cluster_node_v2"],[4,1,1,"","describe_uk8s_cluster"],[4,1,1,"","describe_uk8s_image"],[4,1,1,"","describe_uk8s_node"],[4,1,1,"","list_uk8s_cluster_node_v2"],[4,1,1,"","list_uk8s_cluster_v2"],[4,1,1,"","list_uk8s_node_group"],[4,1,1,"","remove_uk8s_node_group"]],"ucloud.services.ulb.client":[[4,0,1,"","ULBClient"]],"ucloud.services.ulb.client.ULBClient":[[4,1,1,"","allocate_backend"],[4,1,1,"","allocate_backend_batch"],[4,1,1,"","bind_ssl"],[4,1,1,"","create_policy"],[4,1,1,"","create_ssl"],[4,1,1,"","create_ulb"],[4,1,1,"","create_vserver"],[4,1,1,"","delete_policy"],[4,1,1,"","delete_ssl"],[4,1,1,"","delete_ulb"],[4,1,1,"","delete_vserver"],[4,1,1,"","describe_ssl"],[4,1,1,"","describe_ulb"],[4,1,1,"","describe_ulb_simple"],[4,1,1,"","describe_vserver"],[4,1,1,"","release_backend"],[4,1,1,"","unbind_ssl"],[4,1,1,"","update_backend_attribute"],[4,1,1,"","update_policy"],[4,1,1,"","update_ulb_attribute"],[4,1,1,"","update_vserver_attribute"]],"ucloud.services.umem.client":[[4,0,1,"","UMemClient"]],"ucloud.services.umem.client.UMemClient":[[4,1,1,"","check_udredis_space_allowance"],[4,1,1,"","check_uredis_allowance"],[4,1,1,"","create_umem_backup"],[4,1,1,"","create_umem_cache_group"],[4,1,1,"","create_umem_space"],[4,1,1,"","create_uredis_backup"],[4,1,1,"","create_uredis_group"],[4,1,1,"","delete_umem_cache_group"],[4,1,1,"","delete_umem_space"],[4,1,1,"","delete_uredis_group"],[4,1,1,"","describe_ud_redis_proxy_info"],[4,1,1,"","describe_ud_redis_slowlog"],[4,1,1,"","describe_umem"],[4,1,1,"","describe_umem_backup"],[4,1,1,"","describe_umem_backup_url"],[4,1,1,"","describe_umem_block_info"],[4,1,1,"","describe_umem_cache_group"],[4,1,1,"","describe_umem_cache_price"],[4,1,1,"","describe_umem_cache_upgrade_price"],[4,1,1,"","describe_umem_price"],[4,1,1,"","describe_umem_space"],[4,1,1,"","describe_umem_upgrade_price"],[4,1,1,"","describe_uredis_backup"],[4,1,1,"","describe_uredis_backup_url"],[4,1,1,"","describe_uredis_config"],[4,1,1,"","describe_uredis_group"],[4,1,1,"","describe_uredis_price"],[4,1,1,"","describe_uredis_slowlog"],[4,1,1,"","describe_uredis_upgrade_price"],[4,1,1,"","describe_uredis_version"],[4,1,1,"","flushall_uredis_group"],[4,1,1,"","get_umem_space_state"],[4,1,1,"","i_solation_uredis_group"],[4,1,1,"","modify_umem_space_name"],[4,1,1,"","modify_uredis_group_name"],[4,1,1,"","modify_uredis_group_password"],[4,1,1,"","remove_ud_redis_data"],[4,1,1,"","resize_umem_space"],[4,1,1,"","resize_uredis_group"],[4,1,1,"","restart_umem_cache_group"],[4,1,1,"","restart_uredis_group"],[4,1,1,"","shutdown_uredis_group"],[4,1,1,"","start_uredis_group"],[4,1,1,"","update_uredis_backup_strategy"]],"ucloud.services.unet.client":[[4,0,1,"","UNetClient"]],"ucloud.services.unet.client.UNetClient":[[4,1,1,"","allocate_eip"],[4,1,1,"","allocate_share_bandwidth"],[4,1,1,"","associate_eip_with_share_bandwidth"],[4,1,1,"","bind_eip"],[4,1,1,"","create_bandwidth_package"],[4,1,1,"","create_firewall"],[4,1,1,"","delete_bandwidth_package"],[4,1,1,"","delete_firewall"],[4,1,1,"","describe_bandwidth_package"],[4,1,1,"","describe_bandwidth_usage"],[4,1,1,"","describe_eip"],[4,1,1,"","describe_firewall"],[4,1,1,"","describe_firewall_resource"],[4,1,1,"","describe_share_bandwidth"],[4,1,1,"","describe_share_bandwidth_price"],[4,1,1,"","describe_share_bandwidth_update_price"],[4,1,1,"","disassociate_eip_with_share_bandwidth"],[4,1,1,"","disassociate_firewall"],[4,1,1,"","get_eip_pay_mode"],[4,1,1,"","get_eip_price"],[4,1,1,"","get_eip_upgrade_price"],[4,1,1,"","get_throughput_daily_billing_info"],[4,1,1,"","grant_firewall"],[4,1,1,"","modify_eip_bandwidth"],[4,1,1,"","modify_eip_weight"],[4,1,1,"","release_eip"],[4,1,1,"","release_share_bandwidth"],[4,1,1,"","resize_share_bandwidth"],[4,1,1,"","set_eip_pay_mode"],[4,1,1,"","un_bind_eip"],[4,1,1,"","update_eip_attribute"],[4,1,1,"","update_firewall"],[4,1,1,"","update_firewall_attribute"]],"ucloud.services.unvs.client":[[4,0,1,"","UNVSClient"]],"ucloud.services.unvs.client.UNVSClient":[[4,1,1,"","get_mobile"],[4,1,1,"","verify_mobile"]],"ucloud.services.uphost.client":[[4,0,1,"","UPHostClient"]],"ucloud.services.uphost.client.UPHostClient":[[4,1,1,"","create_phost"],[4,1,1,"","create_phost_image"],[4,1,1,"","describe_baremetal_machine_type"],[4,1,1,"","describe_phost"],[4,1,1,"","describe_phost_image"],[4,1,1,"","describe_phost_machine_type"],[4,1,1,"","describe_phost_tags"],[4,1,1,"","get_phost_disk_upgrade_price"],[4,1,1,"","get_phost_price"],[4,1,1,"","modify_phost_image_info"],[4,1,1,"","modify_phost_info"],[4,1,1,"","poweroff_phost"],[4,1,1,"","reboot_phost"],[4,1,1,"","reinstall_phost"],[4,1,1,"","reset_phost_password"],[4,1,1,"","resize_phost_attached_disk"],[4,1,1,"","start_phost"],[4,1,1,"","stop_phost"],[4,1,1,"","terminate_phost"],[4,1,1,"","terminate_phost_image"]],"ucloud.services.usms.client":[[4,0,1,"","USMSClient"]],"ucloud.services.usms.client.USMSClient":[[4,1,1,"","create_usms_signature"],[4,1,1,"","create_usms_template"],[4,1,1,"","delete_usms_signature"],[4,1,1,"","delete_usms_template"],[4,1,1,"","get_usms_send_receipt"],[4,1,1,"","query_usms_signature"],[4,1,1,"","query_usms_template"],[4,1,1,"","send_batch_usms_message"],[4,1,1,"","send_usms_message"],[4,1,1,"","update_usms_signature"],[4,1,1,"","update_usms_template"]],"ucloud.services.utsdb.client":[[4,0,1,"","UTSDBClient"]],"ucloud.services.utsdb.client.UTSDBClient":[[4,1,1,"","check_uinfluxdb_allowance"],[4,1,1,"","create_uinfluxdb_database"],[4,1,1,"","create_uinfluxdb_database_rp"],[4,1,1,"","create_uinfluxdb_instance"],[4,1,1,"","delete_uinfluxdb_database"],[4,1,1,"","delete_uinfluxdb_database_rp"],[4,1,1,"","delete_uinfluxdb_instance"],[4,1,1,"","describe_uinfluxdb_database"],[4,1,1,"","describe_uinfluxdb_database_rp"],[4,1,1,"","describe_uinfluxdb_instance"],[4,1,1,"","describe_uinfluxdb_price"],[4,1,1,"","describe_uinfluxdb_upgrade_price"],[4,1,1,"","modify_uinfluxdb_database_policy"],[4,1,1,"","reboot_uinfluxdb_instance"],[4,1,1,"","reset_uinfluxdb_instance_name"],[4,1,1,"","start_uinfluxdb_instance"],[4,1,1,"","stop_uinfluxdb_instance"],[4,1,1,"","upgrade_uinfluxdb_instance"]],"ucloud.services.uvms.client":[[4,0,1,"","UVMSClient"]],"ucloud.services.uvms.client.UVMSClient":[[4,1,1,"","send_uvms_message"]],"ucloud.services.vpc.client":[[4,0,1,"id0","VPCClient"]],"ucloud.services.vpc.client.VPCClient":[[4,1,1,"id1197","add_snat_rule"],[4,1,1,"id1200","add_vpc_network"],[4,1,1,"id1203","add_white_list_resource"],[4,1,1,"id1206","allocate_secondary_ip"],[4,1,1,"id1210","allocate_vip"],[4,1,1,"id1212","associate_route_table"],[4,1,1,"id1215","clone_route_table"],[4,1,1,"id1218","create_natgw"],[4,1,1,"id1221","create_natgw_policy"],[4,1,1,"id1224","create_network_acl"],[4,1,1,"id1227","create_network_acl_association"],[4,1,1,"id1230","create_network_acl_entry"],[4,1,1,"id1233","create_route_table"],[4,1,1,"id1236","create_subnet"],[4,1,1,"id1239","create_vpc"],[4,1,1,"id1242","create_vpc_intercom"],[4,1,1,"id1245","delete_natgw"],[4,1,1,"id1248","delete_natgw_policy"],[4,1,1,"id1251","delete_network_acl"],[4,1,1,"id1254","delete_network_acl_association"],[4,1,1,"id1257","delete_network_acl_entry"],[4,1,1,"id1260","delete_route_table"],[4,1,1,"id1263","delete_secondary_ip"],[4,1,1,"id1267","delete_snat_rule"],[4,1,1,"id1270","delete_subnet"],[4,1,1,"id1273","delete_vpc"],[4,1,1,"id1276","delete_vpc_intercom"],[4,1,1,"id1279","delete_white_list_resource"],[4,1,1,"id1282","describe_natgw"],[4,1,1,"id1285","describe_natgw_policy"],[4,1,1,"id1288","describe_network_acl"],[4,1,1,"id1291","describe_network_acl_association"],[4,1,1,"id1294","describe_network_acl_association_by_subnet"],[4,1,1,"id1297","describe_network_acl_entry"],[4,1,1,"id1300","describe_route_table"],[4,1,1,"id1303","describe_secondary_ip"],[4,1,1,"id1307","describe_snat_rule"],[4,1,1,"id1310","describe_subnet"],[4,1,1,"id1313","describe_subnet_resource"],[4,1,1,"id1316","describe_vip"],[4,1,1,"id1320","describe_vpc"],[4,1,1,"id1323","describe_vpc_intercom"],[4,1,1,"id1326","describe_white_list_resource"],[4,1,1,"id1328","enable_white_list"],[4,1,1,"id1331","get_available_resource_for_policy"],[4,1,1,"id1334","get_available_resource_for_snat_rule"],[4,1,1,"id1337","get_available_resource_for_white_list"],[4,1,1,"id1340","get_network_acl_target_resource"],[4,1,1,"id1343","list_subnet_for_natgw"],[4,1,1,"id1346","modify_route_rule"],[4,1,1,"id1349","release_vip"],[4,1,1,"id1350","set_gw_default_export"],[4,1,1,"id1353","update_natgw_policy"],[4,1,1,"id1356","update_natgw_subnet"],[4,1,1,"id1359","update_network_acl"],[4,1,1,"id1362","update_network_acl_entry"],[4,1,1,"id1365","update_route_table_attribute"],[4,1,1,"id1368","update_snat_rule"],[4,1,1,"id1371","update_subnet_attribute"],[4,1,1,"id1374","update_vip_attribute"],[4,1,1,"id1377","update_vpc_network"]]},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","property","Python property"],"3":["py","module","Python module"],"4":["py","function","Python function"]},objtypes:{"0":"py:class","1":"py:method","2":"py:property","3":"py:module","4":"py:function"},terms:{"0":[0,1,2,4],"000":4,"01":4,"0123456789":1,"02":4,"03f58ca9":4,"05\u4e4b\u540e\u7684\u67e5\u8be2":4,"08":4,"0\u4e0b\u9700\u8981\u586b\u5199\u6b64\u5b57\u6bb5":4,"0\u4e0d\u5b58\u5728":4,"0\u4e0d\u652f\u6301":4,"0\u4e0d\u8fd4\u56de":4,"0\u4e3a\u81ea\u5b9a\u4e49\u8def\u7531\u8868":4,"0\u4ee3\u8868":4,"0\u4ee3\u8868\u4e3b\u8282\u70b9\u7684\u53ea\u8bfb\u6bd4\u4f8b":4,"0\u4ee3\u8868\u5e0c\u671b\u5347\u7ea7\u7684\u4e3b\u673a1":4,"0\u4ee3\u8868\u5e0c\u671b\u83b7\u53d6\u4fe1\u606f":4,"0\u4ee3\u8868\u5e0c\u671b\u83b7\u53d6\u4fe1\u606f\u7684vpn\u96a7\u90531":4,"0\u4ee3\u8868\u5e0c\u671b\u83b7\u53d6\u5ba2\u6237vpn\u7f51\u51731\u7684\u4fe1\u606f":4,"0\u4ee3\u8868\u5e0c\u671b\u83b7\u53d6vpn\u7f51\u51731\u7684\u4fe1\u606f":4,"0\u5065\u5eb7\u68c0\u67e5\u5065\u5eb7\u72b6\u6001":4,"0\u53c2\u6570":4,"0\u5f00\u59cb":4,"0\u603b\u662f":4,"0\u65f6":4,"0\u70b9":4,"0\u70b91":4,"0\u7248\u672c\u914d\u7f6eid":4,"0\u7528\u6237\u81ea\u5b9a\u4e49\u955c\u50cf":4,"0\u767d\u540d\u5355":4,"0\u8868\u793a\u4e0d\u53d8":4,"0\u8868\u793a\u4ece\u5e93\u5907\u4efd\u529f\u80fd\u5173\u95ed":4,"0\u8868\u793a\u516c\u6709\u4e91vpc":4,"0\u8868\u793a\u5173\u95ed":4,"0\u8868\u793a\u5173\u95ed\u5f53\u5929\u5907\u4efd":4,"0\u8868\u793a\u53ef\u7528\u533a\u8d44\u6e90\u4e0d\u8db3\u4e0d\u80fd\u6269\u5bb9":4,"0\u8868\u793a\u6210\u529f":4,"0\u8868\u793a\u6309\u6d41\u91cf\u964d\u5e8f\u6392\u5217":4,"0\u8868\u793a\u6309\u71675\u5206\u949f\u7c92\u5ea6":4,"0\u8868\u793a\u663e\u793a\u90e8\u5206token\u4fe1\u606f":4,"0\u8868\u793a\u672a\u6b20\u8d39":4,"0\u8868\u793a\u81ea\u52a8":4,"0\u8868\u793a\u8ba1\u8d39\u5230\u6708\u5e95":4,"0\u8868\u793a\u8be5\u57df\u540d\u672a\u5f00\u542f\u9884\u53d6":4,"0\u8ba1\u8d39\u5230\u6708\u5e95":4,"0cpu\u4f7f\u7528\u7387":4,"1":[0,1,2,3,4],"10":[0,1,2,3,4],"100":4,"1000":4,"10000":4,"100000":4,"10000000":4,"1000m":4,"100gb":4,"1024":4,"1080ti":4,"10\u4e2a\u6708\u62161":4,"10\u4f4d\u65f6\u95f4\u6233":4,"10\u4f4d\u957f\u5ea6\u65f6\u95f4\u6233":4,"10\u5df2\u7ecf\u5220\u9664":4,"10\u5e74":4,"10\u79d2":4,"10d":4,"10g":4,"10w":4,"11":4,"1100000":4,"1100000\u8868\u793a\u6253\u5f00\u661f\u671f\u516d\u548c\u661f\u671f\u4e94\u7684\u5907\u4efd\u529f\u80fd":4,"11\u5f02\u5e38":4,"12":4,"12000m":4,"123":4,"123456":4,"128":4,"128000m":4,"12\u4e2a\u5b57\u7b26":4,"13":4,"13512345678\u4e3a\u624b\u673a\u53f7":4,"14":4,"15":4,"15000":4,"15000m":4,"1500m":4,"16":4,"16000m":4,"164":4,"168":4,"16c64g":4,"16k":4,"17":4,"18":4,"18500000123":4,"1851623xxxx":4,"19":4,"192":4,"192000m":4,"1966080":4,"1\u4e07\u6b21":4,"1\u4e3a\u9ed8\u8ba4\u8def\u7531\u8868":4,"1\u4ee3\u8868":4,"1\u4ee3\u8868\u4e3b\u673a2":4,"1\u4ee3\u8868\u4ece\u8282\u70b91\u7684\u8bfb\u5199\u6bd4\u4f8b":4,"1\u4ee3\u8868\u5ba2\u6237vpn\u7f51\u51732":4,"1\u4ee3\u8868\u6574\u6708":4,"1\u4ee3\u8868vpn\u7f51\u51732":4,"1\u4ee3\u8868vpn\u96a7\u90532":4,"1\u5185\u5b58\u4f7f\u7528\u7387":4,"1\u53ef\u7528":4,"1\u5931\u8d25\u662f":4,"1\u5982\u679c\u4e3afalse\u8868\u793abackuporiginip\u4e3a\u7a7a":4,"1\u5b58\u5728":4,"1\u5bf9\u5e94\u591a\u4e2aport":4,"1\u6309\u65f6":4,"1\u652f\u6301":4,"1\u65f6":4,"1\u6807\u51c6\u955c\u50cf":4,"1\u6838":4,"1\u683c\u5f0f":4,"1\u70b9":4,"1\u70b9\u4ee5\u6b64\u7c7b\u63a8\u5355\u673a\u7248memcache\u4e0d\u8fd4\u56de\u8be5\u9879":4,"1\u70b9\u4f9d\u6b21\u7c7b\u63a8":4,"1\u8868\u793a\u5171\u4eab\u5e26\u5bbd":4,"1\u8868\u793a\u5f00\u542f":4,"1\u8868\u793a\u624b\u52a8":4,"1\u8868\u793a\u6253\u5f00\u5f53\u5929\u5907\u4efd":4,"1\u8868\u793a\u6258\u7ba1vpc":4,"1\u8868\u793a\u6309\u71671\u5c0f\u65f6\u7c92\u5ea6":4,"1\u8868\u793a\u6309\u7167\u4e0b\u8f7d\u6b21\u6570\u964d\u5e8f\u6392\u5217":4,"1\u8868\u793a\u6b20\u8d39":4,"1\u8868\u793a\u8be5\u57df\u540d\u5df2\u5f00\u542f\u9884\u53d6":4,"1\u8fd4\u56de":4,"1\u90e8\u7f72\u4e2d":4,"1\u9ed1\u540d\u5355":4,"1d":4,"1g":4,"1gb":4,"1gi":4,"1wz5rqte":4,"1xx\u6570\u91cf":4,"1xxxxxxxx":4,"2":[0,2,4],"20":[0,1,2,3,4],"200":4,"2000000":4,"20000000":4,"2000m":4,"206\u72b6\u6001\u7801":4,"2080ti":4,"212":4,"22":4,"23":4,"24":4,"240":4,"24000m":4,"255":4,"256":4,"256000m":4,"25g":4,"25g\u7f51\u7edc":4,"261d":4,"262144":4,"2\u4e0d\u53ef\u7528":4,"2\u4e2d\u95f4\u4ef6\u8282\u70b9":4,"2\u5f85\u542f\u52a8":4,"2\u6309\u6708":4,"2\u6c38\u4e0d":4,"2\u7248\u672c\u914d\u7f6eid":4,"2\u767d\u540d\u5355":4,"2\u7f51\u5361\u51fa\u5e26\u5bbd":4,"2\u884c\u4e1a\u955c\u50cf":4,"2\u8868\u793a\u6309\u7167\u4e00\u5929\u7684\u7c92\u5ea6":4,"2\u8868\u793a\u6309\u7167\u4e00\u5929\u7c92\u5ea6":4,"2\u8868\u793a\u964d\u7ea7":4,"2\u9519\u8bef":4,"2c8g":4,"2d":4,"2w":4,"2xx\u6570\u91cf":4,"3":[0,4],"30":[0,4],"300":[4,5],"3000":4,"30000":4,"30000m":4,"3000g":4,"3000m":4,"31":4,"32":4,"32000":4,"320000m":4,"32000g":4,"32000gb":4,"32000m":4,"32\u516d\u79cd\u89c4\u683c":4,"32\u8fd9\u51e0\u6863":4,"32c128g":4,"32t":4,"33":4,"3306":4,"3389":4,"34":4,"36\u4e2a\u5b57\u7b26":4,"37":4,"3\u5236\u4f5c\u4e2d":4,"3\u542f\u52a8\u4e2d":4,"3\u6309\u5e74":4,"3\u7f51\u5361\u5165\u5e26\u5bbd":4,"3\u7f51\u5361\u5165\u6d41\u91cf":4,"3\u81ea\u5b9a\u4e49\u955c\u50cf":4,"3\u8868\u793a1\u5206\u949f\u7c92\u5ea6":4,"3\u8868\u793a\u6309\u71671\u5206\u949f\u7c92\u5ea6":4,"3\u8868\u793a\u6309\u7167\u4e00\u5206\u949f\u7684\u7c92\u5ea6":4,"3\u8868\u793a\u6309\u7167\u4e00\u5206\u949f\u7c92\u5ea6":4,"3d\u7b49":4,"3de":4,"3e45ac48":4,"3xx\u6570\u91cf":4,"4":4,"40":4,"4000":4,"4000m":4,"404":4,"4096":4,"4102416000":4,"428c":4,"443":4,"443\u7aef\u53e3":4,"456":4,"48000m":4,"4\u79fb\u52a8":4,"4\u7f51\u5361\u51fa\u5305\u6570":4,"4\u7f51\u5361\u51fa\u5305\u91cf":4,"4\u8fd0\u884c\u4e2d":4,"4b66":4,"4bdd":4,"4c":4,"4c16g":4,"4xx\u6570\u91cf":4,"5":[1,4],"50":4,"500":[0,4],"5000":4,"500g":4,"500gb":4,"502":0,"504":0,"5\u53ca\u4ee5\u4e0a\u7248\u672cnvme\u673a\u578b\u7684\u5b9e\u4f8b":4,"5\u53ca\u4ee5\u4e0a\u7248\u672cssd\u673a\u578b\u7684\u5b9e\u4f8b":4,"5\u6b63\u5728\u505c\u6b62":4,"5\u7b49\u955c\u50cf\u4f1a\u6807\u8bb0\u4e3a":4,"5\u7f51\u5361\u5165\u5305\u6570":4,"5\u7f51\u5361\u5165\u5305\u91cf":4,"5min":5,"5w":4,"5wfeelfre":4,"5xx\u6570\u91cf":4,"5yaf5a65":4,"6":4,"60":4,"6000m":4,"600m":4,"604800":4,"63":4,"63\u4e2a\u82f1\u6587\u6216\u4e2d\u6587\u5b57\u7b26":4,"63\u4f4d":4,"64":4,"64000m":4,"65123\u7aef\u53e3":4,"6553":4,"65535":4,"65535\u4e14\u4e0d\u80fd\u4f7f\u752880":4,"67e59430d67c":4,"6\u5df2\u505c\u6b62":4,"6\u78c1\u76d8\u8bfb\u6d41\u91cf":4,"6c9298a3":4,"7":[0,4],"75":4,"76":4,"7\u6b63\u5728\u66f4\u65b0":4,"7\u78c1\u76d8\u5199\u6d41\u91cf":4,"8":4,"800":4,"8000":4,"8000m":4,"800mbp":4,"8080":4,"8090":4,"8192":4,"86":4,"8613512345678":4,"86400":4,"86\u4e3a\u56fd\u5bb6\u7801":4,"8\u6b63\u5728\u91cd\u542f":4,"8\u78c1\u76d8\u8bfb\u6b21\u6570":4,"8c32g":4,"9":4,"900":4,"96000":4,"96000m":4,"99":4,"9999":4,"9\u6b63\u5728\u5220\u9664":4,"9\u78c1\u76d8\u5199\u6b21\u6570":4,"9a891891":4,"9d7f":4,"\u4e00":4,"\u4e00\u53f0\u7269\u7406\u673a\u67092\u4e2a\u8282\u70b9":4,"\u4e00\u5929\u5185\u5907\u4efd\u65f6\u95f4\u95f4\u9694":4,"\u4e00\u6b21\u53ea\u80fd\u67e5\u8be2\u4e00\u4e2a\u8fd0\u8425\u5546":4,"\u4e00\u6b21\u5c01\u7981\u591a\u4e2aurl\u65f6\u6700\u591a\u4e00\u6b2130\u6761":4,"\u4e00\u6b21\u6700\u591a\u63d0\u4ea41000\u4e2a":4,"\u4e00\u6b21\u6700\u591a\u63d0\u4ea430\u4e2a":4,"\u4e00\u6bb5\u7eaf\u6587\u672c":4,"\u4e00\u79cd\u7c7b\u578b":4,"\u4e00\u7ebf\u57ce\u5e02\u5355\u7ebf":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u5185\u5b58\u5927\u5c0f":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u6570\u636e\u76d8\u7c7b\u578b":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u6570\u91cf":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u7cfb\u7edf\u76d8\u7c7b\u578b":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u865a\u62dfcpu\u6838\u6570":4,"\u4e00\u7ec4node\u8282\u70b9\u7684\u9694\u79bb\u7ec4id":4,"\u4e00\u7ec4node\u8282\u70b9\u7684gpu\u5361\u6838\u5fc3\u6570":4,"\u4e00\u7ec4node\u8282\u70b9\u7684gpu\u7c7b\u578b":4,"\u4e00\u7ec4nodes\u8282\u70b9\u4e91\u4e3b\u673a\u673a\u578b":4,"\u4e00\u7ec4nodes\u8282\u70b9\u6240\u5c5e\u53ef\u7528\u533a":4,"\u4e00\u81f4":4,"\u4e00\u81f4\u6027\u54c8\u5e0c":4,"\u4e00\u822c\u586b\u5199\u65b9\u5f0f":4,"\u4e00\u952e\u521b\u5efadb\u526f\u672c\u96c6":4,"\u4e00\u952e\u767b\u5f55":4,"\u4e07\u5146":4,"\u4e07\u5146\u7f51\u7edc\u96c6\u7fa4":4,"\u4e07\u6b21":4,"\u4e09\u4e2a":4,"\u4e09\u4e2a\u8282\u70b9\u53ef\u90e8\u7f72\u5728\u4e0d\u540c\u53ef\u7528\u533a":4,"\u4e09\u8bc1\u5408\u4e00":4,"\u4e0a\u4f20\u5230bucket\u4f7f\u7528\u7684token\u7684tokenid":4,"\u4e0a\u6d77":4,"\u4e0a\u6d772a":4,"\u4e0a\u6d77\u4e00":4,"\u4e0a\u6d77\u4e8c":4,"\u4e0a\u6d77\u91d1\u878d\u4e91":4,"\u4e0a\u8ff0dataset\u603b\u6570\u91cf":4,"\u4e0a\u96501\u5e74":4,"\u4e0b\u4e00\u4e2aactivity\u7684\u540d\u5b57":4,"\u4e0b\u4e00\u8df3":4,"\u4e0b\u4e00\u8df3\u7c7b\u578b":4,"\u4e0b\u5168\u90e8\u5b9e\u4f8b\u4e14\u7b26\u5408\u5206\u9875\u8981\u6c42":4,"\u4e0b\u6240\u6709\u7684\u7ebf\u8def\u8d44\u6e90":4,"\u4e0b\u8f7d\u6b21\u6570":4,"\u4e0b\u8f7d\u6d41\u91cf":4,"\u4e0b\u8f7d\u94fe\u63a5\u7684url":4,"\u4e0d\u4e00\u81f4":4,"\u4e0d\u4e3a0\u5219\u83b7\u53d6\u539f\u59cb\u5e26\u5bbd":4,"\u4e0d\u4e3a\u7a7a\u5219\u6309\u8bc1\u4e66\u540d\u79f0":4,"\u4e0d\u4f1a\u5f71\u54cd\u521b\u5efa\u4e3b\u673a\u6d41\u7a0b":4,"\u4e0d\u4f1a\u6267\u884c\u5b9e\u9645\u64cd\u4f5c":4,"\u4e0d\u4f20\u5206\u9875\u83b7\u53d6\u8bc1\u4e66\u5217\u8868":4,"\u4e0d\u4f20\u5219\u67e5\u6240\u6709\u534f\u8bae\u7684\u5e26\u5bbd":4,"\u4e0d\u4f20\u5219\u67e5\u8be2\u6240\u6709\u7701\u4efd":4,"\u4e0d\u4f20\u53c2\u8868\u793a\u65b0\u5bfc\u5165\u955c\u50cf":4,"\u4e0d\u4f20\u65f6\u8ba4\u4e3a\u4e0d\u4fee\u6539":4,"\u4e0d\u4f20\u65f6\u8ba4\u4e3a\u4e0d\u4fee\u6539\u540d\u5b57":4,"\u4e0d\u4f20\u83b7\u53d6\u9879\u76ee\u4e0b\u5168\u90e8\u5b9e\u4f8b":4,"\u4e0d\u4f20\u8868\u793a\u66f4\u65b0\u8f6c\u53d1\u8282\u70b9\u4e3a\u7a7a":4,"\u4e0d\u4f20\u9012\u548c\u5176\u4ed6\u60c5\u51b5\u8868\u793a\u663e\u793a\u5168\u90e8token\u4fe1\u606f":4,"\u4e0d\u4f20\u9012\u9ed8\u8ba4\u53d6\u6240\u6709\u8fd0\u8425\u5546":4,"\u4e0d\u4f20\u9ed8\u8ba4\u503cdomain":4,"\u4e0d\u4f20\u9ed8\u8ba4ipv4":4,"\u4e0d\u4fdd\u7559":4,"\u4e0d\u4fdd\u7559\u6570\u636e\u76d8\u91cd\u88c5":4,"\u4e0d\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u4e0d\u516c\u5f00\u4e3afals":4,"\u4e0d\u5220\u9664":4,"\u4e0d\u52a0\u5bc6":4,"\u4e0d\u5305\u542b":4,"\u4e0d\u533a\u5206\u5927\u5c0f\u5199":4,"\u4e0d\u53ef\u4ece\u6536\u8d39\u7248\u964d\u7ea7\u4e3a\u514d\u8d39\u7248":4,"\u4e0d\u53ef\u4ee5\u4e3afals":4,"\u4e0d\u53ef\u4f7f\u7528\u5bc6\u7801\u4fdd\u62a4":4,"\u4e0d\u53ef\u4fee\u6539":4,"\u4e0d\u53ef\u7528":4,"\u4e0d\u540c\u7684\u57df\u540d\u53ef\u4ee5\u914d\u7f6e\u4e3a\u540c\u4e00\u4e2acachehost\u6765\u5b9e\u73b0\u7f13\u5b58\u5171\u4eab":4,"\u4e0d\u5728\u9694\u79bb\u7ec4\u5219\u8fd4\u56de":4,"\u4e0d\u586b\u4e3a\u9ed8\u8ba4":4,"\u4e0d\u586b\u5199\u4e3a\u521b\u5efa\u65f6\u95f4\u6700\u65e9\u7684\u9879\u76ee":4,"\u4e0d\u586b\u5199\u4e3a\u67e5\u8be2\u6240\u6709\u9879\u76ee":4,"\u4e0d\u586b\u5199\u4e3a\u9ed8\u8ba4\u9879\u76ee":4,"\u4e0d\u586b\u5199\u65f6\u4e3a\u9ed8\u8ba4\u9879\u76ee":4,"\u4e0d\u586b\u5219\u6309\u73b0\u5728\u5355\u70b9\u8ba1\u8d39\u6267\u884c":4,"\u4e0d\u586b\u5219\u968f\u673a\u9009\u62e9\u53ef\u7528\u7684\u57fa\u7840\u955c\u50cf":4,"\u4e0d\u586b\u6216\u8005\u5176\u5b83\u4efb\u4f55\u503c\u4e3a\u9ed8\u8ba4\u7684\u903b\u8f91\u5907\u4efd":4,"\u4e0d\u586b\u65f6\u540e\u53f0\u7a0b\u5e8f\u4f1a\u81ea\u52a8\u9009\u7528\u4e00\u4e2a\u53ef\u7528\u7684\u955c\u50cf":4,"\u4e0d\u586b\u65f6\u9ed8\u8ba4\u4f7f\u7528\u4e4b\u524d\u7684\u53c2\u6570":4,"\u4e0d\u586b\u65f6\u9ed8\u8ba4\u5168\u90e8\u53ef\u7528\u533a":4,"\u4e0d\u586b\u9ed8\u8ba4\u4e3a\u5168\u90e8\u533a\u57df":4,"\u4e0d\u586b\u9ed8\u8ba4\u662f\u7b2c1\u9875":4,"\u4e0d\u586b\u9ed8\u8ba4\u6bcf\u987520\u4e2a":4,"\u4e0d\u586b\u9ed8\u8ba4ye":4,"\u4e0d\u5e26\u955c\u50cfid\u65f6\u5fc5\u586b":4,"\u4e0d\u5e26haproxi":4,"\u4e0d\u5efa\u8bae\u4f7f\u7528":4,"\u4e0d\u5f00\u542f":4,"\u4e0d\u5f97\u4e0e\u73b0\u6709\u89d2\u8272\u91cd\u540d":4,"\u4e0d\u5f97\u4e0e\u73b0\u6709\u9879\u76ee\u91cd\u540d":4,"\u4e0d\u5f97\u91cd\u590d":4,"\u4e0d\u5ffd\u7565":4,"\u4e0d\u62a5\u7559":4,"\u4e0d\u6307\u5b9a\u5219\u83b7\u53d6vpcid\u4e0b\u7684\u6240\u6709vip":4,"\u4e0d\u6307\u5b9a\u7684\u8bdd\u9ed8\u8ba4\u4e3a\u5f53\u524d\u652f\u6301\u7684\u6700\u9ad8\u7248\u672c":4,"\u4e0d\u6307\u5b9atag\u5219\u5220\u9664\u5168\u90e8tag":4,"\u4e0d\u652f\u6301":4,"\u4e0d\u652f\u6301\u7b26\u53f7":4,"\u4e0d\u652f\u6301\u9ad8\u7248\u672c\u964d\u7ea7\u5230\u4f4e\u7248\u672c":4,"\u4e0d\u662f":4,"\u4e0d\u663e\u793a":4,"\u4e0d\u7b49\u4e8e\u6e90\u7ad9port\u503c":4,"\u4e0d\u7ed1\u5b9a":4,"\u4e0d\u80fd\u4e3a\u7a7a":4,"\u4e0d\u80fd\u4f7f\u752880":4,"\u4e0d\u80fd\u548c\u73b0\u6709\u7684":4,"\u4e0d\u80fd\u91cd\u590d":4,"\u4e0d\u81ea\u52a8\u6302\u8f7d":4,"\u4e0d\u81ea\u52a8\u7eed\u8d39":4,"\u4e0d\u8d85\u8fc732\u4e2a\u5b57\u7b26":4,"\u4e0d\u8d85\u8fc77":4,"\u4e0d\u8ddf\u968f":4,"\u4e0d\u8de8\u5730\u57df\u4e0d\u7528\u586b":4,"\u4e0d\u9002\u7528\u4e8e\u7cfb\u7edf\u76d8":4,"\u4e0d\u9009\u5219\u968f\u673a":4,"\u4e0d\u91ca\u653e":4,"\u4e0d\u9650\u5236\u767b\u5f55ip":4,"\u4e0d\u9700\u8981\u586b\u5199":4,"\u4e0d\u9700\u8981\u914d\u7f6einstancemod":4,"\u4e0e":4,"\u4e0e\u6b64\u540c\u65f6":4,"\u4e0e\u6e90\u7ad9port\u503c\u76f8\u540c":4,"\u4e0e\u8d44\u6e90\u81ea\u8eabid\u65e0\u5173":4,"\u4e0ebegintime\u7684\u5dee\u503c\u4e0d\u8d85\u8fc724\u5c0f\u65f6":4,"\u4e0ebucket\u5173\u8054\u7684cnd\u52a0\u901f\u57df\u540d\u7684id\u5217\u8868":4,"\u4e0ekey\u914d\u5408\u4f7f\u7528":4,"\u4e0euserdata\u4e0d\u540c":4,"\u4e0euserdata\u7684\u533a\u522b\u5728\u4e8einitscript\u5728\u8282\u70b9\u521d\u59cb\u5316\u5b8c\u6bd5\u540e\u624d\u6267\u884c":4,"\u4e0evalue\u914d\u5408\u4f7f\u7528":4,"\u4e13\u4eab\u7248":4,"\u4e13\u4eab\u7269\u7406\u673a":4,"\u4e13\u533a\u7684id":4,"\u4e13\u533aid":4,"\u4e13\u533aid\u4fe1\u606f":4,"\u4e13\u5c5e\u53f7\u7801\u65f6\u4f20\u5165\u5df2\u8d2d\u4e70\u7684\u53f7\u7801":4,"\u4e13\u7ebf":4,"\u4e13\u7ebf\u4ef7\u683c":4,"\u4e13\u7ebf\u53ef\u7528\u533a1":4,"\u4e13\u7ebf\u53ef\u7528\u533a2":4,"\u4e13\u7ebf\u5e26\u5bbd\u8d44\u6e90":4,"\u4e14\u4e0d\u53ef\u76f8\u540c":4,"\u4e14\u4e0d\u80fd\u4e3a80":4,"\u4e14\u53ea\u80fd\u5305\u542b\u82f1\u6587":4,"\u4e14\u544a\u8b66\u6a21\u677fid\u6b63\u786e":4,"\u4e14\u548c\u4e3b\u673a\u5185\u90e8\u7684\u914d\u7f6e\u6587\u4ef6\u4e00\u81f4":4,"\u4e14\u5c0f\u4e8e\u7b49\u4e8e32":4,"\u4e14\u5e26\u5bbd\u503c\u9ad8\u4e8e2g":4,"\u4e14\u5fc5\u586b":4,"\u4e1a\u52a1":4,"\u4e1a\u52a1\u65e0\u611f\u77e5":4,"\u4e1a\u52a1\u7ec4":4,"\u4e1a\u52a1\u7ec4\u4fe1\u606f":4,"\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u4e1a\u52a1\u7ec4id":4,"\u4e1a\u52a1id":4,"\u4e1c\u4eac":4,"\u4e24\u5957\u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u5347\u964d\u673a":4,"\u4e24\u79cd\u683c\u5f0f\u90fd\u652f\u6301":4,"\u4e24\u8005\u90fd\u663e\u793a":4,"\u4e2a":4,"\u4e2d":4,"\u4e2d\u4e3a\u56fd\u9645\u957f\u9014\u533a\u53f7":4,"\u4e2d\u5fc5\u4f20\u53c2\u6570\u4e3a":4,"\u4e2d\u5fc5\u987b\u586b\u5199\u4efb\u610f\u4e00\u4e2a":4,"\u4e2d\u65ad":4,"\u4e2d\u7684\u5177\u4f53\u5b57\u6bb5\u6709":4,"\u4e2d\u9009\u62e91\u4e2a\u4f5c\u4e3a\u8f6c\u53d1\u673a\u623f":4,"\u4e2d\u901a\u8fc7":4,"\u4e2d\u95f4\u4ef6\u8def\u7531\u8282\u70b9\u8d39\u7528":4,"\u4e34\u65f6\u7981\u7528\u76ee\u6807":4,"\u4e3a":4,"\u4e3a1\u4ee3\u8868\u5141\u8bb8null":4,"\u4e3a1\u65f6disktype\u4e0euhost\u78c1\u76d8\u7c7b\u578b\u5b9a\u4e49\u4e00\u81f4":4,"\u4e3a\u4e3b\u673a\u4ef7\u683c":4,"\u4e3a\u4e86\u4fdd\u8bc1\u8282\u70b9\u6b63\u5e38\u8fd0\u884c":4,"\u4e3a\u4ee4\u724c\u8fc7\u671f\u65f6\u95f4\u70b9":4,"\u4e3a\u53ef\u8bfb\u7684\u65e5\u671f\u65f6\u95f4":4,"\u4e3a\u5fc5\u586b\u9879":4,"\u4e3a\u62a2\u5360\u5f0f\u5b9e\u4f8b":4,"\u4e3a\u6307\u5b9a\u5e93":4,"\u4e3a\u661f\u671f\u5929\u7684\u5907\u4efd\u5f00\u5173":4,"\u4e3a\u7a7a\u5219\u4e0d\u505a\u4fee\u6539":4,"\u4e3a\u7a7a\u62c9\u53d6\u6240\u6709":4,"\u4e3a\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u4e0b":4,"\u4e3aflase\u7684\u60c5\u51b5\u4e0b":4,"\u4e3amongodb\u65f6":4,"\u4e3atrue\u4ee3\u8868\u5141\u8bb8\u7a7areferer\u8bbf\u95ee":4,"\u4e3atrue\u4ee3\u8868\u5141\u8bb8nul":4,"\u4e3auk8s\u96c6\u7fa4\u6dfb\u52a0\u4e00\u53f0\u6216\u591a\u53f0\u7269\u7406\u4e91\u4e3b\u673a\u7c7b\u578b\u7684\u8282\u70b9":4,"\u4e3auk8s\u96c6\u7fa4\u6dfb\u52a0\u4e00\u53f0node\u8282\u70b9":4,"\u4e3aulb\u7cfb\u7edf\u4e2d\u4f7f\u7528":4,"\u4e3b\u4ece\u7ed3\u5bf9\u6570\u91cf":4,"\u4e3b\u52a8\u6a21\u5f0f":4,"\u4e3b\u53eb\u53f7\u7801":4,"\u4e3b\u5907\u6240\u5728\u5bbf\u4e3b\u673a\u8d44\u6e90\u4e0d\u8db3\u9700\u8981\u8fc1\u79fb\u5b8c\u6210\u6269\u5bb9":4,"\u4e3b\u5907\u6a21\u5f0f":4,"\u4e3b\u5907\u7248redi":4,"\u4e3b\u5907redis\u548c\u5206\u5e03\u5f0fredis\u8fd0\u7ef4\u65f6\u95f40":4,"\u4e3b\u5907redis\u8fd4\u56de\u8fd0\u7ef4\u65f6\u95f4":4,"\u4e3b\u5b9e\u4f8bid":4,"\u4e3b\u5e93":4,"\u4e3b\u5e93\u7684id":4,"\u4e3b\u673a\u4ee3\u91d1\u5238id":4,"\u4e3b\u673a\u540d":4,"\u4e3b\u673a\u540d\u79f0":4,"\u4e3b\u673a\u5bc6\u94a5\u5bf9\u72b6\u6001":4,"\u4e3b\u673a\u72b6\u6001":4,"\u4e3b\u673a\u767b\u9646\u6a21\u5f0f":4,"\u4e3b\u673a\u7684\u751f\u547d\u5468\u671f\u7c7b\u578b":4,"\u4e3b\u673a\u7684\u7cfb\u7edf\u76d8id":4,"\u4e3b\u673a\u78c1\u76d8\u7c7b\u578b":4,"\u4e3b\u673a\u7cfb\u5217":4,"\u4e3b\u673aid":4,"\u4e3b\u673aid\u7b49\u53c2\u6570\u8fdb\u884c\u8fc7\u6ee4":4,"\u4e3b\u6a21\u5f0f":4,"\u4e3b\u6e90\u54cd\u5e94\u7684\u56de\u6e90\u9519\u8bef\u7801":4,"\u4e3b\u8282\u70b9\u5199\u5165\u6570\u636e\u4e4b\u540e":4,"\u4e3b\u8282\u70b9\u7684id":4,"\u4e3b\u8d26\u53f7":4,"\u4e3brs1":4,"\u4e3e\u4f8b":4,"\u4e3e\u4f8b\u5982\u4e0b":4,"\u4e4b\u524dlog":4,"\u4e4b\u95f4\u7684\u6574\u6570":4,"\u4e5f\u4e0d\u4f1a\u5728\u524d\u7aef\u62a5\u9519":4,"\u4e5f\u5373\u4f1a\u5458\u63a8\u5e7f\u7c7b":4,"\u4e5f\u5373\u4f1a\u5458\u63a8\u5e7f\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u4e5f\u5373\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u4e5f\u5373\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u4e5f\u5373sigpurpose\u4e3a1":4,"\u4e5f\u53ef\u4ee5\u586b\u5199\u96c6\u7fa4\u540cvpc\u5185\u7684\u5b50\u7f51id":4,"\u4e5f\u53ef\u586b\u5199\u7aef\u53e3\u8303\u56f4":4,"\u4e5f\u5c31\u662f\u8bf4":4,"\u4e702\u4e2a\u6708":4,"\u4e8b\u4ef6\u65f6\u95f4":4,"\u4e8c\u7ebf\u57ce\u5e02\u5355\u7ebf":4,"\u4e91\u4e3b\u673a":4,"\u4e91\u4e3b\u673a\u673a\u578b":4,"\u4e91\u4e3b\u673a\u673a\u578b\u8bf4\u660e":4,"\u4e91\u4e3b\u673acpu\u5e73\u53f0":4,"\u4e91\u4e3b\u673aid":4,"\u4e91\u6570\u636e\u5e93\u4e1a\u52a1":4,"\u4e91\u707e\u5907":4,"\u4e91\u76d8":4,"\u4e91\u76d8\u4ee3\u91d1\u5238id":4,"\u4e91\u76d8\u88f8\u91d1\u5c5e\u673a\u578b":4,"\u4e91\u786c\u76d8\u653e\u5165\u4e00\u5f20\u8ba2\u5355":4,"\u4e91\u786c\u76d8\u7c7b\u578b\u53c2\u7167\u5982\u4e0b":4,"\u4e91\u786c\u76d8\u8d44\u6e90id":4,"\u4e9a\u592a":4,"\u4ea4\u6613\u8d26\u5355\u6570\u636e\u4e0b\u8f7durl":4,"\u4ea7\u54c1\u5206\u7c7b":4,"\u4ea7\u54c1\u5217\u8868\u4ef7":4,"\u4ea7\u54c1\u5c0f\u7c7b\u540d\u79f0":4,"\u4ea7\u54c1\u5c0f\u7c7b\u89c4\u683c":4,"\u4ea7\u54c1\u7c7b\u578b":4,"\u4ea7\u54c1\u7c7b\u578b\u4ee3\u7801":4,"\u4ea7\u54c1\u7c7b\u578bucdn":4,"\u4ea7\u751f":4,"\u4ec5\u4fdd\u7ba1\u516c\u94a5\u90e8\u5206":4,"\u4ec5\u5317\u4eaca\u7684\u4e91\u4e3b\u673a\u4f1a\u8fd4\u56de\u6b64\u5b57\u6bb5":4,"\u4ec5\u5728sqlserver\u7684\u60c5\u51b5\u4e0b\u586b\u8be5\u53c2\u6570":4,"\u4ec5\u5f53\u53d1\u9001\u65f6\u4f20\u5165\u6709\u6548\u7684userid":4,"\u4ec5\u5f53\u78c1\u76d8\u662fudisk\u65f6\u8fd4\u56de":4,"\u4ec5\u5f53\u8be5\u53ef\u7528\u533a\u652f\u6301\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528\u65f6\u586b\u5165":4,"\u4ec5\u5f53paymode\u4e3asharebandwidth\u65f6\u6709\u6548":4,"\u4ec5\u5feb\u6770\u4e91\u4e3b\u673a\u8fd4\u56de\u8be5\u503c":4,"\u4ec5\u62a2\u5360\u5f0f\u5b9e\u4f8b\u8fd4\u56de":4,"\u4ec5\u652f\u6301\u4e00\u4e2a\u53f7\u7801":4,"\u4ec5\u652f\u6301\u4f4e\u7248\u672c\u5347\u7ea7\u5230\u9ad8\u7248\u672c":4,"\u4ec5\u652f\u6301\u67e5\u8be2\u5f00\u542f\u5feb\u7167\u670d\u52a1\u7684\u4ef7\u683c":4,"\u4ec5\u652f\u6301\u90e8\u5206\u53ef\u7528\u533a":4,"\u4ec5\u652f\u6301ipv4\u5730\u5740":4,"\u4ec5\u663e\u793a\u5df2\u652f\u4ed8\u8ba2\u5355":4,"\u4ec5\u663e\u793a\u672a\u652f\u4ed8\u8ba2\u5355":4,"\u4ec5\u884c\u4e1a\u955c\u50cf\u5c06\u8fd4\u56de\u8fd9\u4e2a\u503c":4,"\u4ec5\u9650globalssh":4,"\u4ec5\u9700\u8981\u5176\u4e2d1\u4e2a\u5b57\u6bb5\u5373\u53ef":4,"\u4ec5gpu\u673a\u578b\u652f\u6301\u6b64\u5b57\u6bb5":4,"\u4ec5rssd\u8fd4\u56de\u8be5\u503c":4,"\u4ecb\u7ecd\u94fe\u63a5":4,"\u4ecd\u5728\u521d\u59cb\u5316\u7684\u7cfb\u7edf\u76d8\u65e0\u6cd5\u5236\u4f5c\u955c\u50cf":4,"\u4ece0\u5f00\u59cb":4,"\u4ece\u514d\u8d39\u7248\u5347\u7ea7\u5230\u4ed8\u8d39\u7248\u53ef\u4e0d\u586b":4,"\u4ece\u514d\u8d39\u7248\u5347\u7ea7\u5230\u4ed8\u8d39\u7248\u5fc5\u987b\u4f20":4,"\u4ece\u56de\u6536\u7ad9\u4e2d\u6062\u590d\u4e91\u786c\u76d8":4,"\u4ece\u5907\u4efd\u521b\u5efa\u4e3a\u5fc5\u4f20\u9879":4,"\u4ece\u5907\u4efd\u6062\u590d\u6570\u636e\u81f3udisk":4,"\u4ece\u5df2\u6709\u914d\u7f6e\u6587\u4ef6\u521b\u5efa\u65b0\u914d\u7f6e\u6587\u4ef6":4,"\u4ece\u5e93":4,"\u4ece\u5e93\u5b9e\u4f8b":4,"\u4ece\u5e93\u63d0\u5347\u4e3a\u72ec\u7acb\u5e93":4,"\u4ece\u5e93\u7684\u5907\u4efd\u5f00\u5173":4,"\u4ece\u5e93\u7684id":4,"\u4ece\u5feb\u7167\u521b\u5efaudisk\u514b\u9686":4,"\u4ece\u6307\u5b9a\u7684\u5feb\u7167\u6062\u590d":4,"\u4ece\u6307\u5b9a\u865a\u62df\u673a":4,"\u4ece\u6307\u5b9auhost\u5b9e\u4f8b":4,"\u4ece\u6570\u636e\u65b9\u821f\u7684\u5907\u4efd\u521b\u5efaudisk":4,"\u4ece\u800c\u548c\u6570\u636e\u8282\u70b9\u4fdd\u6301\u4e00\u81f4":4,"\u4ece\u81ea\u7136\u65700\u5f00\u59cb":4,"\u4ece\u8d77\u59cb\u65f6\u95f4\u5230\u7ed3\u675f\u65f6\u95f4\u5185\u7684\u6240\u4f7f\u7528\u7684cdn\u603b\u6d41\u91cf":4,"\u4ece\u9879\u76ee\u4e2d\u79fb\u9664\u6210\u5458":4,"\u4ecedomainid":4,"\u4eceudisk\u521b\u5efaudisk\u514b\u9686":4,"\u4ecevserver\u89e3\u7ed1ssl\u8bc1\u4e66":4,"\u4ecevserver\u91ca\u653e\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u4ed3\u5e93\u521b\u5efa\u65f6\u95f4":4,"\u4ed3\u5e93\u540d\u79f0":4,"\u4ed3\u5e93\u5730\u5740":4,"\u4ed3\u5e93\u5907\u6ce8":4,"\u4ed3\u5e93\u66f4\u65b0\u65f6\u95f4":4,"\u4ed6\u7528":4,"\u4ed8\u8d39\u5468\u671f\u6570\u91cf":4,"\u4ed8\u8d39\u65b9\u5f0f":4,"\u4ed8\u8d39\u6a21\u5f0f":4,"\u4ed8\u8d39\u7c7b\u578b":4,"\u4ee3\u7406\u72b6\u6001":4,"\u4ee3\u7406\u8d44\u6e90id":4,"\u4ee3\u7406id":4,"\u4ee3\u7406ip":4,"\u4ee3\u88681\u5230n\u4e2a\u4ece\u8282\u70b9":4,"\u4ee3\u8868\u4e0b\u8f7d":4,"\u4ee3\u8868\u4e86\u8d2d\u4e70\u81f3\u6708\u672b":4,"\u4ee3\u8868\u4f20\u7edf\u672c\u5730\u76d8\u673a\u578b":4,"\u4ee3\u8868\u5931\u8d25":4,"\u4ee3\u8868\u610f\u4e49\u4e3a":4,"\u4ee3\u8868\u6210\u529f":4,"\u4ee3\u8868\u672a\u77e5":4,"\u4ee3\u8868\u67e5\u8be2\u8be5tag":4,"\u4ee3\u8868\u7b2c\u4e00\u4e2a\u4ee3\u91d1\u5238id":4,"\u4ee3\u8868\u8d2d\u4e70\u5230\u6708\u5e95":4,"\u4ee3\u8868\u8d2d\u4e70\u81f3\u6708\u672b":4,"\u4ee3\u8868\u8def\u5f84\u5237\u65b0":4,"\u4ee3\u8868http\u68c0\u67e5\u57df\u540d":4,"\u4ee3\u8868http\u68c0\u67e5\u8def\u5f84":4,"\u4ee3\u8868udb\u4e3b\u8282\u70b9":4,"\u4ee3\u8868udp\u68c0\u67e5\u53d1\u51fa\u7684\u8bf7\u6c42\u62a5\u6587":4,"\u4ee3\u8868udp\u68c0\u67e5\u8bf7\u6c42\u5e94\u6536\u5230\u7684\u54cd\u5e94\u62a5\u6587":4,"\u4ee3\u91d1\u5238":4,"\u4ee3\u91d1\u5238\u62b5\u6263":4,"\u4ee3\u91d1\u5238id":4,"\u4ee3\u91d1\u52b5":4,"\u4ee4\u724c\u5141\u8bb8\u6267\u884c\u7684\u64cd\u4f5c":4,"\u4ee4\u724c\u5141\u8bb8\u64cd\u4f5c\u7684bucket":4,"\u4ee4\u724c\u5141\u8bb8\u64cd\u4f5c\u7684key\u524d\u7f00":4,"\u4ee4\u724c\u516c\u94a5":4,"\u4ee4\u724c\u540d\u79f0":4,"\u4ee4\u724c\u7684\u8d85\u65f6\u65f6\u95f4\u70b9":4,"\u4ee4\u724c\u79c1\u94a5":4,"\u4ee4\u724cid":4,"\u4ee5":4,"\u4ee5\u53ca\u4e3b\u5907redis\u7684\u6269\u5bb9\u8d44\u6e90\u9884\u68c0\u67e5":4,"\u4ee5\u53ca\u5206\u7247\u6269\u5bb9\u524d\u7684\u8d44\u6e90\u9884\u68c0\u67e5":4,"\u4ee5\u53ca\u76f4\u63a5\u6269\u5bb9":4,"\u4ee5\u5929\u4e3a\u5355\u4f4d":4,"\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d":4,"\u4ee5\u5b57\u8282\u8ba1":4,"\u4ee5\u6570\u7ec4\u7684\u65b9\u5f0f\u586b\u5199":4,"\u4ee5\u6b64\u7c7b\u63a8":4,"\u4ee5\u7a7a\u683c\u952e\u5206\u5272":4,"\u4ee5json\u683c\u5f0f\u63cf\u8ff0":4,"\u4ee5sigid":4,"\u4ee5taskidset":4,"\u4ee5templateid":4,"\u4ee5unix":4,"\u4ef2\u88c1\u8282\u70b9\u6309\u6700\u5c0f\u673a\u578b\u521b\u5efa":4,"\u4ef7\u683c":4,"\u4efb\u52a1":4,"\u4efb\u52a1\u540d\u79f0":4,"\u4efb\u52a1\u5b8c\u6210\u65f6\u95f4":4,"\u4efb\u52a1\u63d0\u4f9b\u9884\u68c0\u67e5\u529f\u80fd":4,"\u4efb\u52a1\u72b6\u6001":4,"\u4efb\u52a1\u77ed":4,"\u4efb\u52a1\u7c7b\u578b":4,"\u4efb\u52a1id":4,"\u4f01\u4e1a\u7248":4,"\u4f01\u4e1a\u8425\u4e1a\u6267\u7167":4,"\u4f18\u5148":4,"\u4f18\u5148\u7ea7":4,"\u4f1a\u53d6\u5e76\u96c6\u67e5\u8be2":4,"\u4f1a\u5458\u63a8\u5e7f\u7c7b":4,"\u4f1a\u5458\u63a8\u5e7f\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u4f1a\u5458\u8425\u9500":4,"\u4f1a\u62c9\u53d6\u8be5\u5b9e\u4f8b\u4fe1\u606f":4,"\u4f1a\u6309\u7167\u6570\u636e\u8282\u70b9\u65b0\u7684\u78c1\u76d8\u548c\u5185\u5b58\u5927\u5c0f\u91cd\u65b0\u8ba1\u8d39\u5982\u4e0b\u72b6\u6001\u7684\u6570\u636e\u8282\u70b9\u5b9e\u4f8b\u53ef\u4ee5\u8fdb\u884c\u8fd9\u4e2a\u64cd\u4f5c":4,"\u4f1a\u95ea\u65ad\u53ca\u8d1f\u8f7d\u5347\u9ad8":4,"\u4f20":4,"\u4f20\u4e86\u5219\u4e0d\u80fd\u4e3a\u7a7a":4,"\u4f20\u5165":4,"\u4f20\u5165\u5176\u5b83\u6216\u4e0d\u4f20\u8868\u793a\u4e0d\u7981\u7528":4,"\u4f20\u53c2\u8868\u793a\u5df2\u6709\u955c\u50cf\u5206\u53d1\u5230\u6307\u5b9a\u673a\u623f":4,"\u4f20\u5b9e\u4f8bid\u83b7\u53d6\u5355\u4e2a\u5b9e\u4f8b\u4fe1\u606f":4,"\u4f30\u7b97\u603b\u8017\u65f6\u95f4":4,"\u4f38\u7f29\u7ec4id\u4e3adefault":4,"\u4f46\u4e0d\u80fd\u6b63\u5e38\u63d0\u4f9b\u670d\u52a1":4,"\u4f46\u662f\u66f4\u5efa\u8bae\u76f4\u63a5\u8c03\u7528\u65b0\u7684api\u63a5\u53e3":4,"\u4f46\u662fip\u4e0d\u53d8":4,"\u4f4d":4,"\u4f4e":4,"\u4f4e\u9891\u5b58\u50a8\u91cf":4,"\u4f4e\u9891\u6570\u636e\u53d6\u56de\u91cf":4,"\u4f53\u9a8c\u7248":4,"\u4f5c":4,"\u4f7f\u7528":4,"\u4f7f\u7528\u4ee3\u91d1\u5238\u53ef\u51b2\u62b5\u90e8\u5206\u8d39\u7528":4,"\u4f7f\u7528\u7684\u4ee3\u91d1\u5238id":4,"\u4f7f\u7528\u7684\u5907\u4efd\u65b9\u5f0f":4,"\u4f7f\u7528\u7684\u5b89\u5168\u534f\u8bae":4,"\u4f7f\u7528\u7684\u77ed\u4fe1\u6a21\u677f\u5fc5\u987b\u662f\u5df2\u7533\u8bf7\u5e76\u901a\u8fc7\u5ba1\u6838":4,"\u4f7f\u7528\u7684\u77ed\u4fe1\u7b7e\u540d\u5fc5\u987b\u662f\u5df2\u7533\u8bf7\u5e76\u4e14\u901a\u8fc7\u5ba1\u6838":4,"\u4f7f\u7528\u8be5\u5b57\u6bb5\u67e5\u8be2\u56de\u6267\u4fe1\u606f":4,"\u4f7f\u7528\u91cf\u5355\u4f4dmb":4,"\u4f7f\u7528base64\u7f16\u7801":4,"\u4f7f\u7528bgp\u7ebf\u8def\u7684\u5730\u57df":4,"\u4f7f\u7528describeudbparamgroup\u83b7\u5f97":4,"\u4f7f\u7528insertpathxwhitelist\u63a5\u53e3":4,"\u4f8b\u5982":4,"\u4f8b\u598210":4,"\u4f8b\u5982106":4,"\u4f8b\u5982192":4,"\u4f8b\u59822021":4,"\u4f8b\u59822022":4,"\u4f8b\u5982\u4e0d\u586b\u5219\u4e3a\u6e05\u7a7a\u767d\u540d\u5355\u89c4\u5219":4,"\u4f8b\u5982\u5982":4,"\u4f8b\u5982remotevpngatewayid":4,"\u4f8b\u5982uhostid":4,"\u4f8b\u5982vpngatewayid":4,"\u4f8b\u5982vpntunnelid":4,"\u4f9b\u5e94\u5546":4,"\u4fdd\u7559":4,"\u4fdd\u7559\u5b57\u6bb5":4,"\u4fdd\u7559\u5c0f\u6570\u70b9\u540e\u4e24\u4f4d\u6709\u6548\u6570\u5b57":4,"\u4fdd\u7559\u7b56\u7565":4,"\u4fdd\u7559\u7b56\u7565\u540d":4,"\u4fe1\u606f":4,"\u4fe1\u7528\u8d26\u6237\u4f59\u989d":4,"\u4fee\u6539":4,"\u4fee\u6539\u4e1a\u52a1\u7ec4\u540d\u5b57":4,"\u4fee\u6539\u4e3b\u5907\u5bc6\u7801":4,"\u4fee\u6539\u4e3b\u5907redis\u540d\u79f0":4,"\u4fee\u6539\u4e91\u4e3b\u673a\u5185\u7f51":4,"\u4fee\u6539\u5206\u5e03\u5f0f\u6570\u636e\u5e93\u4e2d\u95f4\u4ef6\u540d\u79f0":4,"\u4fee\u6539\u52a0\u901f\u7ebf\u8def\u5e26\u5bbd":4,"\u4fee\u6539\u5bb9\u5668\u7ec4\u540d\u79f0":4,"\u4fee\u6539\u5e26\u5bbd\u503c":4,"\u4fee\u6539\u5f39\u6027ip\u7684\u5916\u7f51\u51fa\u53e3\u6743\u91cd":4,"\u4fee\u6539\u6302\u8f7d\u7684\u78c1\u76d8\u5927\u5c0f":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u4e1a\u52a1\u7ec4\u6807\u8bc6":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u540d\u79f0":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u5907\u6ce8\u4fe1\u606f":4,"\u4fee\u6539\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u8d44\u6e90\u914d\u7f6e":4,"\u4fee\u6539\u65f6\u95f4":4,"\u4fee\u6539\u7684\u53c2\u6570\u540d":4,"\u4fee\u6539\u7684\u540d\u5b57":4,"\u4fee\u6539\u81ea\u5b9a\u4e49\u955c\u50cf\u540d\u79f0\u548c\u5907\u6ce8":4,"\u4fee\u6539\u8282\u70b9\u5e26\u5bbd\u9650\u5236":4,"\u4fee\u6539\u88f8\u91d1\u5c5e\u7269\u7406\u4e91\u5df2\u7ecf\u6302\u8f7d\u7684\u4e91\u76d8\u5bb9\u91cf\u5927\u5c0f":4,"\u4fee\u6539\u89d2\u8272":4,"\u4fee\u6539\u914d\u7f6e\u6587\u4ef6":4,"\u4fee\u6539\u955c\u50cf\u540d\u79f0":4,"\u4fee\u6539cube\u989d\u5916\u4fe1\u606f":4,"\u4fee\u6539db\u5b9e\u4f8b\u7684\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u4fee\u6539globalssh\u5b9e\u4f8b\u7c7b\u578b":4,"\u4fee\u6539globalssh\u7aef\u53e3":4,"\u4fee\u6539nat\u7f51\u5173\u767d\u540d\u5355\u5f00\u5173":4,"\u4fee\u6539udb\u81ea\u52a8\u5907\u4efd\u7b56\u7565":4,"\u4fee\u6539umem\u5185\u5b58\u7a7a\u95f4\u540d\u79f0":4,"\u4fee\u6539upath\u76d1\u63a7\u544a\u8b66\u9879":4,"\u503c":4,"\u503c\u4e3a":4,"\u503c\u53ef\u4ee5\u662f":4,"\u504f\u79fb":4,"\u504f\u79fb\u503c":4,"\u504f\u79fb\u91cf":4,"\u505c\u6b62":4,"\u505c\u6b62\u4e2d":4,"\u505c\u6b62\u63d0\u4f9b\u670d\u52a1":4,"\u505c\u6b62udts\u4efb\u52a1":4,"\u505c\u6b62uec\u865a\u62df\u673a":4,"\u5065\u5eb7\u68c0\u67e5\u5f02\u5e38":4,"\u5065\u5eb7\u68c0\u67e5\u7c7b\u578b":4,"\u5141\u8bb8\u4e00\u4e2a\u6216\u8005\u4e09\u4e2a":4,"\u5141\u8bb8\u503c\u7684\u683c\u5f0f\u7c7b\u578b":4,"\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u5141\u8bb8\u7684\u503c":4,"\u5143":4,"\u514b\u9686\u4e2d":4,"\u514b\u9686\u51fa\u7684\u4e91\u76d8\u53ef\u76f4\u63a5\u6302\u8f7d\u5230\u8be5\u4e3b\u673a\u4e0a":4,"\u514b\u9686\u7236disk\u7684id":4,"\u514b\u9686\u7236snapshot\u7684id":4,"\u514d\u8d39\u5e26\u5bbd\u6a21\u5f0f":4,"\u514d\u8d39\u7248":4,"\u514d\u8d39\u7248\u4e0d\u652f\u6301\u4fee\u6539\u7aef\u53e3":4,"\u514d\u8d39\u7248\u672c":4,"\u514d\u8d39\u8bd5\u7528":4,"\u514d\u8d39\u9881\u53d1":4,"\u5165\u5411\u5e26\u5bbd":4,"\u5165\u5411\u5e26\u5bbd\u4f7f\u7528\u7387":4,"\u5165\u95e8\u7248":4,"\u5168\u56fd\u4e09\u901a":4,"\u5168\u56fd\u6559\u80b2\u7f51":4,"\u5168\u7f51\u552f\u4e00":4,"\u516c\u4f17\u53f7\u6216\u5c0f\u7a0b\u5e8f\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u516c\u4f17\u53f7\u6216\u5c0f\u7a0b\u5e8f\u7684\u7ba1\u7406\u754c\u9762\u622a\u56fe":4,"\u516c\u5171\u670d\u52a1\u8def\u7531":4,"\u516c\u53f8\u6216\u4f01\u4e1a\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u516c\u5f00\u4e3atrue":4,"\u516c\u94a5":4,"\u516d\u7684\u5907\u4efd\u914d\u7f6e\u5f00\u5173":4,"\u516d\u79cd":4,"\u516d\u79cd\u5bb9\u91cf\u89c4\u683c":4,"\u51717\u4f4d":4,"\u5171\u4eab\u5e26\u5bbd":4,"\u5171\u4eab\u5e26\u5bbd\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u5347\u964d\u7ea7\u4ef7\u683c":4,"\u5171\u4eab\u5e26\u5bbd\u540d\u5b57":4,"\u5171\u4eab\u5e26\u5bbd\u540d\u79f0":4,"\u5171\u4eab\u5e26\u5bbd\u5cf0\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u5e26\u5bbd\u503c":4,"\u5171\u4eab\u5e26\u5bbd\u603b\u4ef7\u683c":4,"\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f":4,"\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u5fc5\u987b\u6307\u5b9a0m\u5e26\u5bbd":4,"\u5171\u4eab\u5e26\u5bbd\u7684\u8d44\u6e90\u540d\u79f0":4,"\u5171\u4eab\u5e26\u5bbd\u7684\u8d44\u6e90id":4,"\u5171\u4eab\u5e26\u5bbd\u7684id":4,"\u5171\u4eab\u5e26\u5bbd\u7c7b\u578b":4,"\u5171\u4eab\u5e26\u5bbd\u8d44\u6e90id":4,"\u5171\u4eab\u5e26\u5bbdid":4,"\u5173\u673a":4,"\u5173\u673a\u4e2d":4,"\u5173\u95ed":4,"\u5173\u95ed\u4e2d":4,"\u5173\u95ed\u4e3b\u5907\u5b9e\u4f8b":4,"\u5173\u95ed\u4f1a\u8bdd\u4fdd\u6301":4,"\u5173\u95ed\u5171\u4eab\u5e26\u5bbd":4,"\u5173\u95ed\u5171\u4eab\u5e26\u5bbd\u540e":4,"\u5173\u95ed\u7269\u7406\u673a":4,"\u5173\u95ed\u9632\u76d7\u94fe\u4f1a\u6e05\u7a7a\u9632\u76d7\u94fe\u53c2\u6570\u8bbe\u7f6e":4,"\u5173\u95eddb\u7684\u8bfb\u5199\u5206\u79bb\u529f\u80fd":4,"\u5173\u95edudb\u5b9e\u4f8b":4,"\u5173\u95eduddb\u5b9e\u4f8b":4,"\u5173\u95eduinfluxdb\u5b9e\u4f8b":4,"\u5173\u95eduredi":4,"\u5176\u4e2d\u4e3b\u8981\u5305\u62ec\u53ef\u7528\u533a\u8d44\u6e90\u4e0d\u8db3\u65e0\u6cd5\u6269\u5bb9":4,"\u5176\u4e2d\u524d\u9762\u6709\u4e00\u4e2a":4,"\u5176\u4e2d\u5fc5\u4f20\u53c2\u6570\u4e3a":4,"\u5176\u4e2dcongfigsrv\u5206\u4e3asccc\u548ccsrs\u4e24\u79cd\u6a21\u5f0f":4,"\u5176\u4e2dn\u4e3a\u5927\u4e8e1\u7684\u6574\u6570":4,"\u5176\u4e2dtcp\u534f\u8bae\u4ec5\u652f\u6301port":4,"\u5176\u4ed6\u4ed8\u8d39\u7248\u9ed8\u8ba4\u914d\u7f6e\u4e09\u4e2a\u8f6c\u53d1\u673a\u623f":4,"\u5176\u4ed6\u503c":4,"\u5176\u4ed6\u503c\u6216\u4e0d\u586b":4,"\u5176\u4ed6\u503c\u975e\u6cd5":4,"\u5176\u4ed6\u534f\u8bae\u652f\u6301port\u548cpath":4,"\u5176\u4ed6\u5355\u4f4d\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5176\u4ed6\u5730\u57df\u5747\u4f7f\u7528\u56fd\u9645\u7ebf\u8def":4,"\u5176\u4ed6\u5730\u57df\u65e0\u9700\u586b\u5199\u8be5\u5b57\u6bb5":4,"\u5176\u4ed6\u573a\u666f\u9700\u8981\u4e8b\u5148\u5173\u95ed\u5b9e\u4f8b":4,"\u5176\u4ed6\u5f39\u6027ip\u4e0d\u4f1a\u88ab\u4f7f\u7528":4,"\u5176\u4ed6\u60c5\u51b5\u4e0d\u9700\u8981\u4f20":4,"\u5176\u4ed6\u60c5\u51b5\u5fc5\u586b":4,"\u5176\u4ed6\u60c5\u51b5\u5fc5\u987b\u4e3a\u5927\u4e8e0\u7684\u6574\u6570":4,"\u5176\u4ed6\u60c5\u51b5\u5fc5\u987b\u4e3a\u6b63\u6574\u6570":4,"\u5176\u4ed6\u6d77\u5916\u7ebf\u8def\u5747\u4e3a":4,"\u5176\u4ed6\u7248\u672c":4,"\u5176\u4ed6\u7c7b\u578b\u4e91\u4e3b\u673a\u8fd4\u56de":4,"\u5176\u4ed6\u7c7b\u578b\u4e91\u76d8\u8fd4\u56de":4,"\u5176\u4ed6uga":4,"\u5176\u4f59\u4e3a\u4e03\u5c42\u8f6c\u53d1":4,"\u5176\u4f59\u4ece\u53f3\u5230\u5de6\u4f9d\u6b21\u4e3a\u661f\u671f\u4e00\u5230\u661f\u671f":4,"\u5176\u4f59\u4ece\u53f3\u5230\u5de6\u4f9d\u6b21\u4e3a\u661f\u671f\u4e00\u5230\u661f\u671f\u516d\u7684\u5907\u4efd\u914d\u7f6e\u5f00\u5173":4,"\u5176\u4f59\u5730\u57df\u4ec5\u6709v6":4,"\u5176\u4f59\u60c5\u51b5":4,"\u5176\u53d6\u503c\u5982\u4e0b":4,"\u5176\u5b83":4,"\u5177\u4f53\u5230\u53f7\u7801\u7c92\u5ea6\u7684\u53d1\u9001\u5185\u5bb9":4,"\u5177\u4f53\u6570\u503c\u53c2\u8003udb\u7684\u5185\u5b58\u53d6\u503c":4,"\u5177\u4f53\u6570\u503c\u53c2\u8003udb\u7684\u78c1\u76d8\u5927\u5c0f\u53d6\u503c":4,"\u5177\u4f53\u673a\u578b":4,"\u5177\u4f53\u673a\u578b\u4e0ecpu\u7684\u5bf9\u5e94\u5173\u7cfb\u53c2\u7167\u63a7\u5236\u53f0":4,"\u5177\u4f53\u7ebf\u8defid":4,"\u5177\u4f53\u8bf7\u53c2\u7167\u4e91\u4e3b\u673a\u673a\u578b":4,"\u5177\u6709\u5168\u5c40\u552f\u4e00\u6027":4,"\u517c\u5bb9\u578b":4,"\u5185\u5b58":4,"\u5185\u5b58\u5927\u5c0f":4,"\u5185\u5b58\u5b58\u50a8":4,"\u5185\u5b58\u5bb9\u91cf\u5927\u5c0f":4,"\u5185\u5b58\u7a7a\u95f4\u540d\u79f0":4,"\u5185\u5b58\u7a7a\u95f4id":4,"\u5185\u5b58\u914d\u7f6e":4,"\u5185\u5b58\u9650\u5236":4,"\u5185\u5bb9\u683c\u5f0f\u5982\u4e0b":4,"\u5185\u5bb9\u7c7b\u578b":4,"\u5185\u5bb9\u8f6c\u53d1\u4f18\u5148\u7ea7":4,"\u5185\u5bb9\u8f6c\u53d1\u5339\u914d\u5b57\u6bb5":4,"\u5185\u5bb9\u8f6c\u53d1\u5339\u914d\u5b57\u6bb5\u7684\u7c7b\u578b":4,"\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u5e94\u7528\u7684\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b\u7684id":4,"\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565id":4,"\u5185\u5bb9\u8f6c\u53d1id":4,"\u5185\u5bb9md5\u503c":4,"\u5185\u6838\u7248\u672c":4,"\u5185\u7f51":4,"\u5185\u7f51ip":4,"\u5185\u7f51ip\u4e0d\u663e\u793a\u5e26\u5bbd\u4fe1\u606f":4,"\u5185\u7f51ip\u5217\u8868":4,"\u5185\u7f51ip\u65e0\u5bf9\u5e94\u7684\u8d44\u6e90id":4,"\u5185\u7f51ip\u65e0\u8d44\u6e90id":4,"\u5185\u7f51ulb":4,"\u5185\u7f51vip":4,"\u5185\u7f51vip\u5730\u5740\u5217\u8868":4,"\u5185\u7f51vip\u6240\u5c5e\u7684\u4e1a\u52a1\u7ec4":4,"\u5185\u7f51vip\u7684\u540d\u79f0":4,"\u5185\u7f51vip\u7684\u5907\u6ce8":4,"\u5185\u7f51vip\u7684\u8d44\u6e90id":4,"\u5185\u7f51vip\u7684id":4,"\u5185\u90e8":4,"\u5185\u90e8\u6d4b\u8bd5":4,"\u51b7\u5b58":4,"\u51b7\u5b58\u6fc0\u6d3b\u91cf":4,"\u51bb\u7ed3\u6210\u5458":4,"\u51bb\u7ed3\u8d26\u6237\u91d1\u989d":4,"\u51fa\u53e3\u89c4\u5219":4,"\u51fa\u5411\u5e26\u5bbd":4,"\u51fa\u5411\u5e26\u5bbd\u4f7f\u7528\u7387":4,"\u51fa\u5411\u6216\u8005\u5165\u5411":4,"\u5206":4,"\u5206\u4e3a":4,"\u5206\u4e3a\u4e09\u79cd":4,"\u5206\u4e3a\u9ad8\u53ef\u7528udb":4,"\u5206\u522b\u4ee3\u8868\u4e0d\u5c0f\u4e8e\u548c\u4e0d\u5927\u4e8e":4,"\u5206\u522b\u4ee3\u8868\u4f01\u4e1a\u7248":4,"\u5206\u522b\u4ee3\u8868\u65d7\u8230\u7248":4,"\u5206\u522b\u5bf9\u5e94\u4f01\u4e1a\u7248\u548c\u57fa\u7840\u7248":4,"\u5206\u522b\u5bf9\u5e94\u6307\u6570\u9012\u589e":4,"\u5206\u522b\u5bf9\u5e94uhost\u7684machinetype\u6216phost\u7684phosttyp":4,"\u5206\u5272":4,"\u5206\u5e03\u5f0f\u6d88\u606f\u7cfb\u7edf":4,"\u5206\u5e03\u5f0f\u7248redi":4,"\u5206\u7247\u7684\u6570\u91cf":4,"\u5206\u7247\u7aef\u53e3":4,"\u5206\u7247\u7ef4\u62a4\u7684\u952e\u69fd\u7ed3\u675f\u503c":4,"\u5206\u7247\u7ef4\u62a4\u7684\u952e\u69fd\u8d77\u59cb\u503c":4,"\u5206\u7247\u96c6\u7fa4":4,"\u5206\u7247id":4,"\u5206\u7247ip":4,"\u5206\u914d\u4e00\u6761":4,"\u5206\u914d\u4e2d":4,"\u5206\u914d\u7ed9udt":4,"\u5206\u914dip":4,"\u5206\u949f":4,"\u5206\u9694":4,"\u5206\u9875":4,"\u5206\u9875\u663e\u793a\u6570\u91cf":4,"\u5206\u9875\u663e\u793a\u7684\u6761\u76ee\u6570":4,"\u5206\u9875\u663e\u793a\u7684\u8d77\u59cb\u504f\u79fb":4,"\u5206\u9875\u663e\u793a\u8d77\u59cb\u504f\u79fb\u4f4d\u7f6e":4,"\u5206\u9875\u7684\u5927\u5c0f":4,"\u5206\u9875\u8fd4\u56de\u7ed3\u679c":4,"\u5207\u6362\u540e\u9ad8\u53ef\u7528db\u5b9e\u4f8b\u7684id":4,"\u5207\u6362\u65f6\u4f1a\u6d89\u53ca\u4ed8\u8d39":4,"\u5207\u6362\u8d26\u53f7\u8ba1\u8d39\u65b9\u5f0f":4,"\u5217\u51fauk8s\u8282\u70b9\u6c60":4,"\u5217\u8868\u4e0a\u770b\u4e0d\u5230\u5bf9\u5e94\u7684uddb\u5b9e\u4f8b":4,"\u5217\u8868\u4ef7\u683c":4,"\u5217\u8868\u504f\u79fb\u91cf":4,"\u5217\u8868\u64cd\u4f5c\u5219\u6307\u5b9a":4,"\u5217\u8868\u64cd\u4f5c\u65f6\u5fc5\u586b":4,"\u5217\u8868\u64cd\u4f5c\u65f6\u624d\u4f1a\u6709\u8be5\u53c2\u6570":4,"\u5217\u8868\u83b7\u53d6\u7684\u4e2a\u6570\u9650\u5236":4,"\u5217\u8868\u8d77\u59cb\u4f4d\u7f6e\u504f\u79fb\u91cf":4,"\u5217\u8868\u957f\u5ea6":4,"\u5217\u8868udb\u5b9e\u4f8b\u5907\u4efd\u4fe1\u606f":4,"\u5217\u8868udb\u5b9e\u4f8bbinlog\u6216slowlog\u6216errorlog\u5907\u4efd\u4fe1\u606f":4,"\u5219\u4e00\u6b21\u6027\u83b7\u53d6\u4e09\u79cd\u8ba1\u8d39":4,"\u5219\u4e3adataark":4,"\u5219\u4ee5hostidforattachment\u5b57\u6bb5\u4e3a\u51c6":4,"\u5219\u53ea\u5141\u8bb8\u7ed1\u5b9a\u5728\u5feb\u6770\u578b\u4e91\u4e3b\u673a\u548culb":4,"\u5219\u53ea\u6709master":4,"\u5219\u53ea\u83b7\u53d6\u8be5db\u7684\u5907\u4efd\u4fe1\u606f":4,"\u5219\u53ef\u9009\u662f\u5426\u9009\u53d6\u7279\u5b9adb\u7c7b\u578b\u7684\u914d\u7f6e":4,"\u5219\u5c55\u793a\u5f39\u6027\u7f51\u5361\u7684\u8d44\u6e90\u540d\u79f0":4,"\u5219\u5c55\u793a\u5f39\u6027\u7f51\u5361\u7684\u8d44\u6e90id":4,"\u5219\u5fc5\u586b":4,"\u5219\u5fc5\u9009":4,"\u5219\u5fc5\u987b\u586b\u5199":4,"\u5219\u5fc5\u987b\u8d4b\u503c":4,"\u5219\u610f\u5473\u7740\u8bf7\u6c42\u91cf\u5360\u603b\u91cf\u7684":4,"\u5219\u610f\u5473\u7740\u9650\u5236\u91cf\u5360\u603b\u91cf\u7684":4,"\u5219\u6309\u521b\u5efa\u65f6\u95f4\u964d\u5e8f":4,"\u5219\u63d0\u4f9b\u82f1\u6587\u7248\u672c\u8d26\u5355":4,"\u5219\u65e0\u6cd5\u4fdd\u7559\u6570\u636e\u76d8":4,"\u5219\u662f\u8be5db\u5907\u4efd\u603b\u6570":4,"\u5219\u67e5\u8be2\u8be5\u7528\u6237\u5728\u673a\u623f\u6240\u6709\u7684\u4e13\u7ebf\u4fe1\u606f":4,"\u5219\u6839\u636ezone\u83b7\u53d6\u9ed8\u8ba4\u5b50\u7f51\u8fdb\u884c\u521b\u5efa":4,"\u5219\u6b64\u5b57\u6bb5\u4f20\u5165\u7528\u6237\u81ea\u5b9a\u4e49\u4f1a\u8bdd\u4fdd\u6301string":4,"\u5219\u7ed1\u5b9a\u544a\u8b66\u6a21\u677f":4,"\u5219\u83b7\u53d6\u6240\u6709":4,"\u5219\u83b7\u53d6\u6240\u6709bucket":4,"\u5219\u83b7\u53d6\u76f8\u5e94\u5730\u57df\u4e0b\u6240\u6709\u7a7a\u95f4\u7684\u7a7a\u95f4\u540d\u79f0":4,"\u5219\u8868\u660e\u4ece\u5907\u4efd\u6062\u590d\u5b9e\u4f8b":4,"\u5219\u8868\u793a\u4e0d\u662f\u4ece\u5907\u4efd\u521b\u5efa":4,"\u5219\u8868\u793a\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u578b\u5747\u53ef":4,"\u5219\u8868\u793a\u4efb\u4f55\u78c1\u76d8\u7c7b\u578b\u5747\u53ef":4,"\u5219\u8be5\u4e91\u4e3b\u673a\u901a\u8fc7\u8be5\u7279\u5b9a\u7684eip\u8bbf\u95ee\u4e92\u8054\u7f51":4,"\u5219\u8be5\u5904\u4f7f\u7528\u5df2\u4e0a\u4f20\u5ba1\u6838\u6750\u6599\u7684url\u94fe\u63a5":4,"\u5219\u8be5\u5904\u586b\u5199\u5df2\u4e0a\u4f20\u7684\u6388\u6743\u59d4\u6258\u6587\u4ef6\u7684url\u94fe\u63a5":4,"\u5219\u8be5\u9879\u4e3a\u5fc5\u586b\u9879":4,"\u5219\u8be5\u9879\u53ef\u4e0d\u586b\u5199":4,"\u5219\u8fd4\u56de\u5168\u90e8\u673a\u578b":4,"\u5219\u8fd4\u56de\u5339\u914d\u5b9e\u4f8bid\u7684\u8bb0\u5f55":4,"\u5219\u8fd4\u56de\u5f53\u524d":4,"\u5219\u8fd4\u56de\u5f53\u524dregion":4,"\u5219\u8fd4\u56de\u5f53\u524dregion\u4e2d\u6240\u6709\u5ba2\u6237vpn\u7f51\u5173\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u5219\u8fd4\u56de\u5f53\u524dregion\u4e2d\u6240\u6709\u7684vpn\u96a7\u9053\u5b9e\u4f8b":4,"\u5219\u8fd4\u56de\u5f53\u524dregion\u4e2d\u6240\u6709vpn\u7f51\u5173\u7684\u4fe1\u606f":4,"\u5219\u8fd4\u56de\u5f53\u524dregion\u6240\u6709phost":4,"\u5219\u8fd4\u56de\u7f3a\u5c11\u53c2":4,"\u5219\u968f\u673a\u5206\u914d\u5f53\u524d\u5b50\u7f51\u4e0b\u7684ip":4,"\u5219\u9700\u8981\u6307\u5b9a":4,"\u5219\u9ed8\u8ba420":4,"\u5219\u9ed8\u8ba4\u4e0d\u7ed1\u5b9a\u9632\u706b\u5899":4,"\u5219\u9ed8\u8ba4\u4e3a\u56fd\u5185\u624b\u673a\u53f7":4,"\u5219\u9ed8\u8ba4\u4e3aha":4,"\u5219\u9ed8\u8ba4\u4e3amysql":4,"\u5219\u9ed8\u8ba4\u4e3asata_ssd":4,"\u5219value\u662f1\u5c0f\u65f6\u7684\u5e26\u5bbd\u5cf0\u503c":4,"\u5219value\u662f\u4e00\u5929\u5185\u7684\u5e26\u5bbd\u5cf0\u503c":4,"\u5219value\u662f\u4e94\u5206\u949f\u7c92\u5ea6\u7684\u5e26\u5bbd\u503c":4,"\u521b\u5efa\u4e0e\u865a\u673a\u5728\u540c\u4e00podid\u4e0b\u7684\u4e91\u76d8":4,"\u521b\u5efa\u4e2d":4,"\u521b\u5efa\u4e3b\u5907redi":4,"\u521b\u5efa\u4e3b\u5907redis\u5907\u4efd":4,"\u521b\u5efa\u4e3b\u673a\u5bc6\u94a5\u5bf9\u4fe1\u606f":4,"\u521b\u5efa\u4e3b\u673a\u7684\u6700\u521d\u6765\u6e90\u955c\u50cf\u7684\u64cd\u4f5c\u7cfb\u7edf\u540d\u79f0":4,"\u521b\u5efa\u4e91\u4e3b\u673a\u65f6\u6307\u5b9a\u5185\u7f51ip":4,"\u521b\u5efa\u4ece\u8282\u70b9\u7684dbid":4,"\u521b\u5efa\u4ee4\u724c\u7684token_id":4,"\u521b\u5efa\u5168\u7403\u52a0\u901f\u914d\u7f6e\u9879":4,"\u521b\u5efa\u5185\u5b58\u7a7a\u95f4id\u5217\u8868":4,"\u521b\u5efa\u5206\u5e03\u5f0fredis\u5907\u4efd":4,"\u521b\u5efa\u521b\u5efa\u5206\u5e03\u5f0f\u6570\u636e\u5e93uddb\u5b9e\u4f8b":4,"\u521b\u5efa\u52a0\u901f\u57df\u540d\u65f6\u751f\u6210":4,"\u521b\u5efa\u52a0\u901f\u57df\u540d\u751f\u6210\u7684cdn\u57df\u540d":4,"\u521b\u5efa\u52a0\u901f\u5b9e\u4f8b\u8f6c\u53d1\u5668":4,"\u521b\u5efa\u5355\u673amemcach":4,"\u521b\u5efa\u53ea\u8bfbslave\u65f6":4,"\u521b\u5efa\u57df\u540d\u65f6\u751f\u6210\u7684\u8d44\u6e90id":4,"\u521b\u5efa\u57df\u540d\u65f6\u751f\u6210\u7684id":4,"\u521b\u5efa\u5916\u7f51\u9632\u706b\u5899":4,"\u521b\u5efa\u5931\u8d25":4,"\u521b\u5efa\u5b50\u7f51":4,"\u521b\u5efa\u5b9e\u4f8b\u7684\u5bb9\u91cf\u5927\u5c0f":4,"\u521b\u5efa\u5b9e\u4f8b\u7684\u6570\u91cf":4,"\u521b\u5efa\u5b9e\u4f8b\u8d44\u6e90\u65f6":4,"\u521b\u5efa\u5ba2\u6237vpn\u7f51\u5173":4,"\u521b\u5efa\u5bb9\u5668\u7ec4":4,"\u521b\u5efa\u5e76\u6302\u8f7dudisk\u78c1\u76d8":4,"\u521b\u5efa\u6587\u4ef6\u7cfb\u7edf":4,"\u521b\u5efa\u65f6\u5206\u914d\u7684\u7b56\u7565id":4,"\u521b\u5efa\u65f6\u95f4":4,"\u521b\u5efa\u65f6\u95f4\u6233":4,"\u521b\u5efa\u6a21\u677f\u65f6\u672a\u5411\u8be5\u8fd0\u8425\u5546\u62a5\u5907":4,"\u521b\u5efa\u7684\u52a0\u901f\u57df\u540d\u7684\u5f53\u524d\u7684\u72b6\u6001":4,"\u521b\u5efa\u7684\u5de5\u4f5c\u6d41\u7248\u672c\u53f7":4,"\u521b\u5efa\u7684\u7ec4id":4,"\u521b\u5efa\u7684\u7ed1\u5b9a\u5173\u7cfb\u7684id":4,"\u521b\u5efa\u7684acl\u7684id":4,"\u521b\u5efa\u7684entry\u7684id":4,"\u521b\u5efa\u7684ulb\u662f\u5426\u4e3a\u5185\u7f51\u6a21\u5f0f":4,"\u521b\u5efa\u7684ulb\u662f\u5426\u4e3a\u5916\u7f51\u6a21\u5f0f":4,"\u521b\u5efa\u7684unix\u65f6\u95f4\u6233":4,"\u521b\u5efa\u786c\u4ef6\u9694\u79bb\u7ec4":4,"\u521b\u5efa\u7aef\u53e3":4,"\u521b\u5efa\u7f51\u7edcacl":4,"\u521b\u5efa\u8282\u70b9\u6570\u91cf":4,"\u521b\u5efa\u8282\u70b9\u65f6\u751f\u6210\u7684id":4,"\u521b\u5efa\u865a\u62df\u673av2":4,"\u521b\u5efa\u88f8\u91d1\u5c5e2":4,"\u521b\u5efa\u89d2\u8272":4,"\u521b\u5efa\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b":4,"\u521b\u5efa\u8def\u7531\u8868":4,"\u521b\u5efa\u955c\u50cf\u4ed3\u5e93":4,"\u521b\u5efa\u9632\u706b\u5899":4,"\u521b\u5efa\u96c6\u7fa4\u65f6\u5224\u65ad\u5982\u679c\u4e3anoresource\u5219\u4e3a\u6ca1\u8d44\u6e90":4,"\u521b\u5efa\u9879\u76ee":4,"\u521b\u5efaacl\u7684\u7ed1\u5b9a\u5173\u7cfb":4,"\u521b\u5efaacl\u7684\u89c4\u5219":4,"\u521b\u5efabucket":4,"\u521b\u5efacube\u7684deploy":4,"\u521b\u5efadb":4,"\u521b\u5efaglobalssh\u5b9e\u4f8b":4,"\u521b\u5efainfluxdb\u6570\u636e\u5e93":4,"\u521b\u5efaipv6\u4e3atru":4,"\u521b\u5efamongodb\u7684\u526f\u672c\u8282\u70b9":4,"\u521b\u5efamongos\u5b9e\u4f8b":4,"\u521b\u5efanat\u7f51\u5173":4,"\u521b\u5efanode\u8282\u70b9\u6570\u91cf":4,"\u521b\u5efapod":4,"\u521b\u5efaslave\u7684dbid":4,"\u521b\u5efasnapshot\u5feb\u7167":4,"\u521b\u5efassl\u8bc1\u4e66":4,"\u521b\u5efatidb\u670d\u52a1":4,"\u521b\u5efaudb\u5b9e\u4f8b":4,"\u521b\u5efaudb\u5b9e\u4f8b\u7684slav":4,"\u521b\u5efaudisk":4,"\u521b\u5efaudisk\u78c1\u76d8":4,"\u521b\u5efaudts\u4efb\u52a1":4,"\u521b\u5efauhost\u5b9e\u4f8b":4,"\u521b\u5efauinfluxdb\u5b9e\u4f8b":4,"\u521b\u5efauk8s\u96c6\u7fa4":4,"\u521b\u5efaumem\u5185\u5b58\u7a7a\u95f4":4,"\u521b\u5efaupath":4,"\u521b\u5efaus3\u4ee4\u724c":4,"\u521b\u5efavpc":4,"\u521b\u5efavpn\u7f51\u5173":4,"\u521b\u5efavpn\u96a7\u9053":4,"\u521b\u5efavserver\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565":4,"\u521b\u5efavserver\u5b9e\u4f8b":4,"\u521d\u59cb\u503c\u7b49\u4e8enodeid":4,"\u521d\u59cb\u5316":4,"\u521d\u59cb\u5316\u4e2d":4,"\u521d\u59cb\u5316\u5931\u8d25":4,"\u521d\u59cb\u5316\u5931\u8d25shutoff":4,"\u521d\u59cb\u5316\u5bc6\u7801":4,"\u521d\u59cb\u7684\u6570\u636e\u8282\u70b9\u4e2a\u6570":4,"\u5220":4,"\u5220\u9664":4,"\u5220\u9664\u4e00\u4e2a\u670d\u52a1":4,"\u5220\u9664\u4e00\u5bf9\u6216\u8005\u591a\u5bf9\u5bc6\u94a5\u5bf9":4,"\u5220\u9664\u4e2d":4,"\u5220\u9664\u4e3b\u5907redi":4,"\u5220\u9664\u4e3b\u673a\u65f6\u662f\u5426\u540c\u65f6\u5220\u9664\u6302\u8f7d\u7684\u6570\u636e\u76d8":4,"\u5220\u9664\u4e3b\u673a\u65f6\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u5220\u9664\u4ee4\u724c":4,"\u5220\u9664\u5168\u7403\u52a0\u901f\u670d\u52a1\u52a0\u901f\u914d\u7f6e":4,"\u5220\u9664\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565":4,"\u5220\u9664\u524d\u52a1\u5fc5\u5148\u5c06\u5176\u4e2d\u7684pod\u9a71\u9010":4,"\u5220\u9664\u52a0\u901f\u5b9e\u4f8b\u8f6c\u53d1\u5668":4,"\u5220\u9664\u5355\u673amemcach":4,"\u5220\u9664\u5931\u8d25":4,"\u5220\u9664\u5b50\u7f51":4,"\u5220\u9664\u5ba2\u6237vpn\u7f51\u5173":4,"\u5220\u9664\u5bb9\u5668\u7ec4":4,"\u5220\u9664\u5f39\u6027ip\u4e0a\u5df2\u9644\u52a0\u5e26\u5bbd\u5305":4,"\u5220\u9664\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u7684uhost\u5b9e\u4f8b":4,"\u5220\u9664\u6307\u5b9a\u6570\u636e\u5e93\u4e0b\u9762\u7684\u4e00\u4e2a\u6570\u636e\u4fdd\u7559\u7b56\u7565":4,"\u5220\u9664\u6307\u5b9a\u7684\u51fa\u53e3\u89c4\u5219":4,"\u5220\u9664\u65f6\u95f4\u70b9":4,"\u5220\u9664\u7269\u7406\u4e91\u4e3b\u673a":4,"\u5220\u9664\u7528\u6237\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u5220\u9664\u7528\u6237\u89d2\u8272\u7ba1\u7406\u5217\u8868\u4e2d\u7684\u6307\u5b9a\u89d2\u8272":4,"\u5220\u9664\u767d\u540d\u5355\u7684\u8d44\u6e90id":4,"\u5220\u9664\u786c\u4ef6\u9694\u79bb\u7ec4":4,"\u5220\u9664\u7ba1\u7406\u5458\u4eba\u5458\u7ba1\u7406\u9875\u9762\u7684\u6307\u5b9a\u5b50\u8d26\u53f7":4,"\u5220\u9664\u7f51\u7edcacl":4,"\u5220\u9664\u7f51\u7edcacl\u7ed1\u5b9a\u5173\u7cfb":4,"\u5220\u9664\u81ea\u5b9a\u4e49\u8def\u7531\u8868":4,"\u5220\u9664\u8282\u70b9":4,"\u5220\u9664\u8282\u70b9\u65f6\u662f\u5426\u91ca\u653e\u6570\u636e\u76d8":4,"\u5220\u9664\u88f8\u91d1\u5c5e2":4,"\u5220\u9664\u8bc1\u4e66":4,"\u5220\u9664\u8be5\u76d8\u6240\u521b\u5efa\u51fa\u6765\u7684\u6240\u6709\u5feb\u7167":4,"\u5220\u9664\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b":4,"\u5220\u9664\u914d\u7f6e\u53c2\u6570\u7ec4":4,"\u5220\u9664\u955c\u50cf":4,"\u5220\u9664\u955c\u50cf\u4ed3\u5e93":4,"\u5220\u9664\u9632\u706b\u5899":4,"\u5220\u9664\u96c6\u7fa4\u4e2d\u7684node\u8282\u70b9":4,"\u5220\u9664\u9879\u76ee":4,"\u5220\u9664acl\u7684\u89c4\u5219":4,"\u5220\u9664bucket":4,"\u5220\u9664cube\u65f6\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u5220\u9664cube\u7684deploy":4,"\u5220\u9664globalssh\u5b9e\u4f8b":4,"\u5220\u9664influxdb\u5b9e\u4f8b\u7684\u6570\u636e\u5e93":4,"\u5220\u9664ip":4,"\u5220\u9664nat\u7f51\u5173":4,"\u5220\u9664nat\u7f51\u5173\u767d\u540d\u5355\u5217\u8868":4,"\u5220\u9664nat\u7f51\u5173\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219":4,"\u5220\u9664pathx":4,"\u5220\u9664pod":4,"\u5220\u9664snapshot":4,"\u5220\u9664ssl\u8bc1\u4e66":4,"\u5220\u9664udb\u5b9e\u4f8b":4,"\u5220\u9664udb\u65e5\u5fd7\u5305":4,"\u5220\u9664uddb\u5b9e\u4f8b":4,"\u5220\u9664udisk":4,"\u5220\u9664uedn\u5ba2\u6237\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u5220\u9664ufs\u6587\u4ef6\u7cfb\u7edf":4,"\u5220\u9664uinfluxdb\u5b9e\u4f8b":4,"\u5220\u9664uk8s\u8282\u70b9\u6c60":4,"\u5220\u9664uk8s\u96c6\u7fa4":4,"\u5220\u9664ulb\u65f6\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u5220\u9664umem\u5185\u5b58\u7a7a\u95f4":4,"\u5220\u9664upath":4,"\u5220\u9664vhost\u865a\u62df\u673a":4,"\u5220\u9664vpc":4,"\u5220\u9664vpc\u4e92\u901a\u5173\u7cfb":4,"\u5220\u9664vpn\u65f6\u662f\u5426\u4e00\u5e76\u91ca\u653eeip":4,"\u5220\u9664vpn\u7f51\u5173":4,"\u5220\u9664vpn\u96a7\u9053":4,"\u5220\u9664vserver\u5b9e\u4f8b":4,"\u522b\u4e3apvft_unkown":4,"\u522b\u540d":4,"\u5230\u671f\u65f6\u95f4":4,"\u5230dbid":4,"\u5236\u4f5c\u4e2d":4,"\u5237\u65b0\u4efb\u52a1\u521b\u5efa\u7684\u65f6\u95f4":4,"\u5237\u65b0\u4efb\u52a1\u7684\u5f53\u524d\u72b6\u6001":4,"\u5237\u65b0\u4efb\u52a1\u7684\u603b\u6570":4,"\u5237\u65b0\u591a\u4e2aurl\u5217\u8868\u65f6":4,"\u5237\u65b0\u7684\u5355\u6761url":4,"\u5237\u65b0\u7c7b\u578b":4,"\u5237\u65b0\u7f13\u5b58":4,"\u5237\u65b0\u8fdb\u5ea6":4,"\u524d\u65f6\u95f4\u70b9\u524d\u4e00\u5929":4,"\u524d\u7aef\u6682\u65f6\u53ea\u5f00\u653e\u5185\u5b58\u5b9a\u5236":4,"\u524d\u7aef\u7ed3\u675f\u67e5\u8be2":4,"\u5269\u4f59\u7684\u914d\u989d\u6570\u503c":4,"\u526f\u672c\u96c6\u6570\u91cf":4,"\u5272\u63a5\u5f00\u59cb\u65f6\u95f4":4,"\u5272\u63a5\u7c7b\u578b":4,"\u5272\u63a5\u7ed3\u675f\u65f6\u95f4":4,"\u529f\u80fd\u4ec5\u90e8\u5206\u53ef\u7528\u533a\u5f00\u653e":4,"\u52a0\u5bc6":4,"\u52a0\u5bc6\u76d8":4,"\u52a0\u5bc6\u76d8\u5bc6\u7801":4,"\u52a0\u5bc6\u8bc1\u4e66\u7684\u79c1\u94a5":4,"\u52a0\u5bc6\u9700\u8981\u7684cmk":4,"\u52a0\u6743\u8f6e\u8be2":4,"\u52a0\u8282\u70b9\u65f6\u5224\u65ad\u662f\u5426\u6ca1\u6709\u8d44\u6e90":4,"\u52a0\u8f7d\u4e2d":4,"\u52a0\u901f\u533a\u57df":4,"\u52a0\u901f\u57df\u540d":4,"\u52a0\u901f\u57df\u540d\u7684\u4e1a\u52a1\u7c7b\u578b":4,"\u52a0\u901f\u57df\u540d\u89e3\u6790\u4e0d\u51faip":4,"\u52a0\u901f\u5b9e\u4f8b":4,"\u52a0\u901f\u5b9e\u4f8b\u5728\u7ed1\u5b9a\u7ebf\u8def\u540e\u4f1a\u81ea\u52a8\u8bbe\u7f6e\u8be5\u503c":4,"\u52a0\u901f\u6e90\u57df\u540d":4,"\u52a0\u901f\u6e90ip":4,"\u52a0\u901f\u7aef\u53e3":4,"\u52a0\u901f\u7c7b\u578bhttp":4,"\u52a0\u901f\u7ebf\u8def":4,"\u52a0\u901f\u7ebf\u8def\u5b9e\u4f8bid":4,"\u52a0\u901f\u914d\u7f6e\u540d\u79f0":4,"\u52a0\u901f\u914d\u7f6e\u5b9e\u4f8b\u540d\u79f0":4,"\u52a0\u901f\u914d\u7f6e\u5b9e\u4f8bid":4,"\u52a0\u901f\u914d\u7f6eid":4,"\u5305\u542b":4,"\u5305\u542b\u7cfb\u7edf\u76d8\u548c\u6570\u636e\u76d8":4,"\u5305\u62ec":4,"\u5305\u62ec2":4,"\u5305\u62ec\u4ef2\u88c1":4,"\u5305\u62ec\u5185\u5b58\u548c\u78c1\u76d8\u7684\u914d\u7f6e":4,"\u5305\u62ec\u521b\u5efamysql":4,"\u5305\u62ec\u52a0\u5bc6\u8bc1\u4e66\u7684\u79c1\u94a5":4,"\u5305\u62ec\u6bcf\u4e2a\u5355\u53ef\u7528\u533a\u548c\u8de8\u53ef\u7528\u533a":4,"\u5305\u62ec\u7528\u6237\u8bc1\u4e66":4,"\u5305\u62ec\u8def\u7531\u7b56\u7565":4,"\u5305\u62ec\u8f6c\u53d1\u89c4\u5219\u540e\u7684\u670d\u52a1\u8282\u70b9":4,"\u5305\u62ecmaster":4,"\u5305\u62ecmaster\u548cnod":4,"\u5317\u4eac":4,"\u5317\u4eac2b":4,"\u5317\u4eac2e":4,"\u5317\u4eac\u4e00\u4e0d\u652f\u6301":4,"\u5317\u4eac\u4e00\u5730\u57df\u65e0\u6548":4,"\u5317\u4eac\u4e8c":4,"\u5317\u4eac\u662f\u4e00\u5ea7\u7f8e\u4e3d\u7684\u57ce\u5e02":4,"\u5339\u914d\u89c4\u5219\u7684\u52a8\u4f5c":4,"\u533a\u57df\u822a\u7a7a\u6e2f\u56fd\u9645\u901a\u7528\u4ee3\u7801":4,"\u5343\u5146":4,"\u5343\u5146\u7f51\u7edc\u96c6\u7fa4":4,"\u5347\u7ea7\u4e2d":4,"\u5347\u7ea7\u540e\u7684\u4ef7\u683c":4,"\u5347\u7ea7\u540e\u7684\u5b9e\u4f8b\u7c7b\u578b":4,"\u5347\u7ea7\u548c\u964d\u7ea7":4,"\u5347\u7ea7\u5dee\u4ef7":4,"\u5347\u7ea7\u63d2\u4ef6":4,"\u5347\u7ea7\u76ee\u6807udisk":4,"\u5347\u7ea7\u8017\u65f65":4,"\u5347\u7ea7\u96c6\u7fa4\u4e2d":4,"\u5347\u7ea7uddb\u65f6":4,"\u5347\u964d\u7ea7\u4ef7\u683c":4,"\u5347\u964d\u7ea7\u5206\u5e03\u5f0f\u6570\u636e\u5e93\u4e2d\u95f4\u4ef6\u7684\u914d\u7f6e":4,"\u5347\u964d\u7ea7\u5206\u5e03\u5f0f\u6570\u636e\u5e93\u6570\u636e\u8282\u70b9\u7684\u914d\u7f6e":4,"\u5347\u964d\u7ea7\u540e\u662f\u5426\u542f\u52a8db":4,"\u5347\u964d\u7ea7uddb\u8282\u70b9\u914d\u7f6e\u4e2d":4,"\u5347\u964d\u7ea7uddb\u914d\u7f6e\u4e2d":4,"\u534e\u76db\u987f":4,"\u534f\u8bae":4,"\u534f\u8bae\u7c7b\u578b":4,"\u534f\u8bae\u89c4\u5219\u63cf\u8ff0":4,"\u534f\u8bae\u8bbe\u7f6e\u6210tcp":4,"\u5355\u4e2a\u9694\u79bb\u7ec4\u6700\u591a\u53ea\u80fd\u5bb9\u7eb38\u4e2a\u8282\u70b9":4,"\u5355\u4f4d":4,"\u5355\u4f4d\u4e2a":4,"\u5355\u4f4d\u4e3a":4,"\u5355\u4f4d\u4e3a\u5206":4,"\u5355\u4f4d\u4e3a\u6beb\u6838":4,"\u5355\u4f4d\u4e3ag":4,"\u5355\u4f4d\u4e3agb":4,"\u5355\u4f4d\u4e3amb":4,"\u5355\u4f4d\u4e3ambp":4,"\u5355\u4f4d\u5b57\u8282":4,"\u5355\u4f4d\u5c0f\u65f6":4,"\u5355\u4f4d\u5c0f\u65f6\u8ba1":4,"\u5355\u4f4d\u662f":4,"\u5355\u4f4d\u79d2":4,"\u5355\u4f4dbyte":4,"\u5355\u4f4dgb":4,"\u5355\u4f4dm":4,"\u5355\u4f4dmb":4,"\u5355\u4f4dmbp":4,"\u5355\u5f15\u53f7":4,"\u5355\u6b21\u544a\u8b66":4,"\u5355\u6b21\u8c03\u7528\u96c6\u5408\u6570\u9700\u63a7\u5236\u5728100\u4e2a\u4ee5\u5185":4,"\u5355\u70b9":4,"\u5355\u76d8\u5927\u5c0f":4,"\u5355\u9875\u8fd4\u56de\u6570\u636e\u957f\u5ea6":4,"\u537310\u5929":4,"\u5373\u4e24\u5468":4,"\u5373\u51fa\u53e3\u89c4\u5219\u540d\u79f0":4,"\u5373\u5217\u8868\u4ef7\u4e58\u4ee5\u5546\u52a1\u6298\u6263\u540e\u7684\u5355\u4ef7":4,"\u5373\u5c06\u5e9f\u5f03":4,"\u5373\u5f52\u6863\u6570\u636e\u53d6\u56de\u91cf":4,"\u5373\u5f53\u524dunix\u65f6\u95f4\u6233":4,"\u5373\u6709\u5bf9\u5e94\u6570\u636e\u6587\u4ef6":4,"\u5373\u8be5\u5e26\u5bbd\u5305\u5728enabletime\u5230":4,"\u5373\u8fd4\u56delocaldisk":4,"\u5378\u8f7d\u4e2d":4,"\u5378\u8f7d\u67d0\u4e2a\u5df2\u7ecf\u6302\u8f7d\u5728\u6307\u5b9auhost\u5b9e\u4f8b\u4e0a\u7684udisk":4,"\u5378\u8f7d\u7684host\u5b9e\u4f8bid":4,"\u5378\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u5378\u8f7d\u7684uhost\u5b9e\u4f8bid":4,"\u539f\u4ef7":4,"\u539f\u4ef7\u683c":4,"\u539f\u59cb\u5e26\u5bbd":4,"\u539fdb\u72b6\u6001\u4e3awaitforswitch\u65f6":4,"\u53c2\u6570":4,"\u53c2\u6570\u4e2a\u6570\u9700\u4e0e\u53d8\u91cf\u4e2a\u6570\u4fdd\u6301\u4e00\u81f4":4,"\u53c2\u6570\u4e3aother":4,"\u53c2\u6570\u503c":4,"\u53c2\u6570\u503c\u5e94\u7528\u7c7b\u578b":4,"\u53c2\u6570\u540d\u79f0":4,"\u53c2\u6570\u7c7b\u578b":4,"\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u53c2\u6570\u7ec4\u603b\u6570":4,"\u53c2\u6570\u7ec4\u63cf\u8ff0":4,"\u53c2\u6570\u7ec4\u662f\u5426\u53ef\u4fee\u6539":4,"\u53c2\u6570\u7ec4id":4,"\u53c2\u8003":4,"\u53c2\u8003\u955c\u50cf\u5217\u8868":4,"\u53c2\u8003qp":4,"\u53c2\u89c1":4,"\u53c2\u89c1describeisolationgroup":4,"\u53c2\u89c1describephostmachinetype\u8fd4\u56de\u503c":4,"\u53ca\u65b0\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u53cd\u4e4b":4,"\u53d1\u751f\u9519\u8bef\u65f6":4,"\u53d1\u751f\u9519\u8bef\u65f6\u8868\u793a\u9519\u8bef\u5b57\u7b26\u4e32":4,"\u53d1\u751f\u9519\u8bef\u65f6\u8868\u793a\u9519\u8bef\u63cf\u8ff0":4,"\u53d1\u9001\u5185\u5bb9base64\u7f16\u7801\u540e":4,"\u53d1\u9001\u5185\u5bb9json\u6570\u7ec4":4,"\u53d1\u9001\u5185\u5bb9json\u6570\u7ec4\u4e2d":4,"\u53d1\u9001\u5931\u8d25":4,"\u53d1\u9001\u5931\u8d25\u539f\u56e0":4,"\u53d1\u9001\u6210\u529f":4,"\u53d1\u9001\u77ed\u4fe1\u65f6\u8fd4\u56de\u7684sessionno":4,"\u53d1\u9001\u77ed\u4fe1\u65f6\u8fd4\u56de\u7684sessionno\u96c6\u5408":4,"\u53d1\u9001\u77ed\u4fe1\u65f6\u8fd4\u56de\u7684taskid":4,"\u53d1\u9001\u89c6\u9891\u77ed\u4fe1":4,"\u53d1\u9001\u8bb0\u5f55taskid\u96c6\u5408":4,"\u53d6\u503c":4,"\u53d6\u503c\u4e3a0\u62161":4,"\u53d6\u503c\u4e3a0\u65f6":4,"\u53d6\u503c\u4e3a100\u65f6":4,"\u53d6\u503c\u4e3a1024\u7684\u500d\u6570":4,"\u53d6\u503c\u4e3astorag":4,"\u53d6\u503c\u5fc5\u987b":4,"\u53d6\u503c\u8303\u56f4":4,"\u53d6\u503c\u8303\u56f43306\u81f365535":4,"\u53d6\u503c\u8303\u56f4\u4e3a":4,"\u53d6\u503c\u8303\u56f4\u4e3a\u5927\u4e8e0\u7684\u6574\u6570":4,"\u53d6\u503c\u8303\u56f4\u4e3a\u5927\u4e8e\u7b49\u4e8e2\u4e14\u5c0f\u4e8e\u7b49\u4e8e1000":4,"\u53d6\u503c\u8303\u56f4\u662f":4,"\u53d6\u503c\u8303\u56f4\u7f29\u5c0f\u4e3a":4,"\u53d6\u503c\u8303\u56f4\u9700\u5927\u4e8e\u5f53\u524d\u78c1\u76d8\u5927\u5c0f":4,"\u53d6\u503corg\u8868\u793a\u6309\u9879\u76ee\u67e5\u8be2":4,"\u53d6uredis\u4ef7\u683c\u4fe1\u606f":4,"\u53d7\u9080\u6210\u5458\u59d3\u540d":4,"\u53d7\u9080\u6210\u5458\u624b\u673a\u53f7\u7801":4,"\u53d7\u9080\u6210\u5458\u90ae\u7bb1\u5730\u5740":4,"\u53e6\u4e00\u7ec4\u662fgpu":4,"\u53ea\u4f1a\u8fd4\u56de\u64cd\u4f5c\u7684\u9884\u671f\u7ed3\u679c":4,"\u53ea\u5305\u542b\u4e91\u76d8\u53ca\u5173\u8054\u4e3b\u673a\u7684\u8d44\u6e90\u4fe1\u606f":4,"\u53ea\u5728\u62a5\u6587\u8f6c\u53d1\u4e2d\u4f7f\u7528":4,"\u53ea\u652f\u63012018":4,"\u53ea\u652f\u6301\u56fd\u5185":4,"\u53ea\u652f\u6301\u5f53\u524dzone\u7684\u5c55\u793a\u673a\u578b":4,"\u53ea\u652f\u6301\u8bf7\u6c42\u4ee3\u7406\u6a21\u5f0f\u4e0b":4,"\u53ea\u662f\u88f8\u91d1\u5c5e\u673a\u578b\u624d\u8fd4\u56de\u6b64\u53c2\u6570":4,"\u53ea\u6709\u521b\u5efa\u63a5\u53e3\u624d\u4f1a\u8fd4\u56de":4,"\u53ea\u6709\u5f53elasticip\u4e3ayes\u65f6":4,"\u53ea\u6709\u5f53vserver\u7684backup\u5c5e\u6027\u4e3a1\u65f6\u624d\u4f1a\u6709\u6b64\u5b57\u6bb5":4,"\u53ea\u6709\u6570\u636e\u96c6\u6210\u65f6\u8be5\u53c2\u6570\u624d\u6709\u6548":4,"\u53ea\u6709\u903b\u8f91\u5907\u4efd\u4e0b\u5907\u4efd\u9ed1\u540d\u5355\u624d\u751f\u6548":4,"\u53ea\u80fd\u5305\u542b\u82f1\u6587":4,"\u53ea\u80fd\u586btrue\u6216fals":4,"\u53ea\u80fd\u5bf9\u8868\u793a\u6587\u4ef6\u7684url\u8fdb\u884c\u64cd\u4f5c":4,"\u53ea\u8981\u6709\u4e00\u5757\u78c1\u76d8\u4e3a\u672c\u5730\u76d8":4,"\u53ea\u89e3\u7ed1\u4e0d\u91ca\u653e":4,"\u53ea\u89e3\u7ed1eip\u4e0d\u5220\u9664eip":4,"\u53ea\u8bfb\u5b9e\u4f8b\u53ef\u4ee5\u4f7f\u5f97\u6570\u636e\u7531\u591a\u4efd\u590d\u5236":4,"\u53ea\u8bfb\u5b9e\u4f8b\u628a\u8fd9\u6b21\u7684\u5199\u5165\u64cd\u4f5c\u8fdb\u884c\u66f4\u65b0":4,"\u53ea\u8bfb\u5b9e\u4f8b\u72b6\u6001":4,"\u53ea\u8bfb\u5b9e\u4f8b\u8d39\u7528":4,"\u53ea\u8bfb\u5b9e\u4f8bid":4,"\u53ea\u8fd4\u56de\u6307\u5b9a\u4ee4\u724c\u540d\u79f0\u4fe1\u606f":4,"\u53ea\u8fd4\u56de\u6307\u5b9aid\u4fe1\u606f":4,"\u53ea\u8fd4\u56de\u7a7a\u95f4\u540d\u79f0\u4fe1\u606f":4,"\u53ea\u9488\u5bf9mysql5":4,"\u53ef\u4e0d\u4f20":4,"\u53ef\u4e0d\u586b":4,"\u53ef\u4eceuk8s\u63a7\u5236\u53f0\u83b7\u53d6":4,"\u53ef\u4ee5\u4e0d\u4f20\u6216\u4e3a\u7a7a":4,"\u53ef\u4ee5\u4e3a\u7a7a":4,"\u53ef\u4ee5\u4e3ature":4,"\u53ef\u4ee5\u4ecedescribeudblogpackage\u7ed3\u679c\u5f53\u4e2d\u83b7\u5f97":4,"\u53ef\u4ee5\u4f20\u591a\u4e2a":4,"\u53ef\u4ee5\u505a\u8bf7\u6c42\u7684\u8bfb\u5199\u5206\u79bb":4,"\u53ef\u4ee5\u628a\u6574\u4e2a":4,"\u53ef\u4ee5\u662f":4,"\u53ef\u4ee5\u6839\u636e\u7528\u6237\u90ae\u7bb1\u6765\u8fdb\u884c\u7b5b\u9009":4,"\u53ef\u4ee5\u6dfb\u52a0\u591a\u6761\u89c4\u5219":4,"\u53ef\u4ee5\u83b7\u53d6\u591a\u4e2a\u7c7b\u578b\u7684\u65e5\u5fd7\u8bb0\u5f55":4,"\u53ef\u4ee5\u8fd9\u6837\u8868\u8ff0":4,"\u53ef\u4ee5\u9009\u62e9\u5185\u7f51\u6216\u8005\u5916\u7f51":4,"\u53ef\u4ee5\u901a\u8fc7":4,"\u53ef\u4ee5\u901a\u8fc7\u63a5\u53e3":4,"\u53ef\u4fee\u6539\u6027":4,"\u53ef\u514d\u8d39\u5f00\u542f\u6570\u636e\u65b9\u821f":4,"\u53ef\u521b\u5efa\u591a\u7ec4nodes\u8282\u70b9":4,"\u53ef\u521b\u5efa\u7684\u6570\u91cf":4,"\u53ef\u5305\u542b\u4e2d\u6587":4,"\u53ef\u53d6\u8303\u56f4":4,"\u53ef\u57fa\u4e8e\u8be5\u64cd\u4f5c\u7cfb\u7edf\u5236\u5b9a\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u53ef\u586b\u5199\u56fa\u5b9a\u7aef\u53e3":4,"\u53ef\u586b\u5199\u8303\u56f4\u4e3a1200":4,"\u53ef\u586b\u5199\u8303\u56f4\u4e3a600":4,"\u53ef\u62b5\u6263\u8d39\u7528\u7684\u5238":4,"\u53ef\u6309\u4ea7\u54c1":4,"\u53ef\u64cd\u4f5cbucket\u548c\u4ee4\u724c\u8d85\u65f6\u65f6\u95f4\u70b9":4,"\u53ef\u64cd\u4f5ckey\u7684\u524d\u7f00":4,"\u53ef\u6839\u636e\u8be5\u503c\u67e5\u8be2\u672c\u6b21\u53d1\u9001\u7684\u77ed\u4fe1\u5217\u8868":4,"\u53ef\u6839\u636e\u8be5\u503c\u67e5\u8be2\u672c\u6b21\u53d1\u9001\u8be6\u60c5":4,"\u53ef\u6dfb\u52a0\u767d\u540d\u5355\u7684\u8d44\u6e90id":4,"\u53ef\u7528":4,"\u53ef\u7528\u4e8e":4,"\u53ef\u7528\u4e8eterminal\u767b\u5f55":4,"\u53ef\u7528\u533a":4,"\u53ef\u7528\u533a\u4fe1\u606f":4,"\u53ef\u7528\u533a\u5217\u8868":4,"\u53ef\u7528\u533a\u540d\u5b57":4,"\u53ef\u7528\u533a\u540d\u79f0":4,"\u53ef\u7528\u533a\u57df":4,"\u53ef\u7528\u5730\u57df":4,"\u53ef\u7528ip\u6570":4,"\u53ef\u7528ip\u6570\u91cf":4,"\u53ef\u7b5b\u9009\u6302\u8f7d\u5728\u8be5\u7c7b\u578b\u5bbf\u4e3b\u4e0a\u7684\u4e91\u76d8":4,"\u53ef\u7f6e\u4e3atrue":4,"\u53ef\u8868\u793a\u4e3a":4,"\u53ef\u8868\u8ff0\u4e3a\u5982":4,"\u53ef\u8bbe\u4e3a\u4ee5\u4e0b\u51e0\u4e2a\u503c":4,"\u53ef\u9009":4,"\u53ef\u9009\u4e3a8000":4,"\u53ef\u9009\u503c":4,"\u53ef\u9009\u503c\u4e3a":4,"\u53ef\u9009\u503c\u4e3aconfigsrv":4,"\u53ef\u9009\u503c\u5982\u4e0b":4,"\u53ef\u9009\u5343\u5146":4,"\u53ef\u9009\u53c2\u6570":4,"\u53ef\u9009\u8303\u56f4":4,"\u53ef\u9009\u8303\u56f4\u4e0emachinetyp":4,"\u53ef\u9009\u8303\u56f4\u4e0euhosttype\u76f8\u5173":4,"\u53ef\u9009\u8303\u56f4\u53c2\u7167\u597d\u63a7\u5236\u53f0":4,"\u53ef\u9009\u8303\u56f4\u53c2\u7167\u63a7\u5236\u53f0":4,"\u53ef\u9009\u8303\u56f4\u53c2\u8003\u63a7\u5236\u53f0":4,"\u53ef\u9009\u914d\u7f6e\u8303\u56f4\u8bf7\u53c2\u8003":4,"\u53ef\u9009raid":4,"\u53ef\u9009raw":4,"\u53ef\u901a\u8fc7":4,"\u53ef\u901a\u8fc7describeisolationgroup\u83b7\u53d6":4,"\u53ef\u901a\u8fc7describeudbinstancebinlog\u83b7\u5f97":4,"\u53ef\u901a\u8fc7describeudblogpackage\u83b7\u5f97":4,"\u53ef\u901a\u8fc7describeudbparamgroup\u83b7\u53d6":4,"\u53ef\u964d\u4f4e\u8bf7\u6c42\u5ef6\u65f6":4,"\u53f7":4,"\u53f7\u7801\u68c0\u6d4b":4,"\u53f7\u7801\u968f\u673a\u65f6\u4e0d\u586b":4,"\u5404\u503c":4,"\u5404\u503c\u4ee3\u8868":4,"\u5404\u5730\u57df\u5141\u8bb8\u7684\u7ebf\u8def\u53c2\u6570\u5982\u4e0b":4,"\u5404\u5730\u57df\u5e26\u5bbd\u8303\u56f4\u5982\u4e0b":4,"\u5404\u5730\u57df\u7684\u5e26\u5bbd\u503c\u8303\u56f4\u5982\u4e0b":4,"\u5404\u5730\u57df\u975e\u5171\u4eab\u5e26\u5bbd\u7684\u5e26\u5bbd\u8303\u56f4\u5982\u4e0b":4,"\u5404\u7248\u672c\u4e0b\u7684\u8282\u70b9\u4e2a\u6570":4,"\u5404eip\u6062\u590d\u4e3a\u7684\u5e26\u5bbd\u503c":4,"\u540c\u4e3b\u673a\u4e0b\u53ea\u4f1a\u4f7f\u7528\u8fd9\u4e2a\u5f39\u6027ip":4,"\u540c\u53ef\u7528\u533a":4,"\u540c\u65f6\u4f20snapshotid\u4f18\u5148":4,"\u540c\u6b65\u4e2d":4,"\u540d":4,"\u540d\u5b57":4,"\u540d\u79f0":4,"\u540e\u4ed8\u8d39":4,"\u540e\u4ed8\u8d39\u9636\u6bb5\u56fa\u5b9a\u4e3a":4,"\u540e\u53f0\u4f1a\u8fd4\u56de\u4ece\u8be5\u503c\u5230\u5f53\u524d\u65f6\u95f4\u7684\u65e5\u5fd7\u5185\u5bb9":4,"\u540e\u7aef\u5b9e\u4f8b\u72b6\u6001\u5f00\u5173":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5185\u7f51ip":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5b9e\u4f8b\u542f\u7528\u4e0e\u5426":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u5b9e\u4f8b\u8fd0\u884c\u72b6\u6001":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u7aef\u53e3":4,"\u540e\u7aef\u63d0\u4f9b\u670d\u52a1\u7684\u8d44\u6e90\u6240\u5728\u7684\u5b50\u7f51\u7684id":4,"\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b\u7684id":4,"\u540e\u7aef\u8d44\u6e90\u670d\u52a1\u7aef\u53e3":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5185\u7f51ip":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u540e\u7aef\u8d44\u6e90\u7684\u5bf9\u8c61id":4,"\u540e\u7eed\u53ef\u901a\u8fc7\u7ba1\u7406api\u8c03\u6574":4,"\u540e\u7eed\u5c06\u6839\u636e\u4e1a\u52a1\u8bf7\u6c42\u91cf\u81ea\u52a8\u6269\u5c55":4,"\u540e\u9762\u4e3a":4,"\u540e\u9762\u4e3a\u7535\u8bdd\u53f7\u7801":4,"\u5411\u6307\u5b9a\u53f7\u7801\u62e8\u6253\u7535\u8bdd":4,"\u5426":4,"\u5426\u5219":4,"\u5426\u5219\u4e3a\u5217\u8868\u64cd":4,"\u5426\u5219\u4e3a\u5217\u8868\u64cd\u4f5c":4,"\u5426\u5219\u4e3a\u7a7a":4,"\u5426\u5219\u4f1a\u62a5\u9519":4,"\u5426\u5219\u4f7f\u7528\u5355\u70b9\u8ba1\u8d39\u7b56\u7565\u7684\u503c":4,"\u5426\u5219\u4f7f\u7528file\u53c2\u6570":4,"\u5426\u5219\u4f7f\u7528proxyfile\u53c2\u6570":4,"\u5426\u5219\u62c9\u53d6\u6240\u6709\u4ee4\u724c":4,"\u5426\u5219\u62c9\u53d6\u8be5\u5e10\u53f7\u6240\u6709\u4fe1\u606f":4,"\u5426\u5219\u65e0\u6cd5\u53d1\u9001":4,"\u5426\u5219\u662f\u5217\u8868\u64cd\u4f5c":4,"\u5426\u5219\u67e5\u5168\u90e8tag":4,"\u5426\u5219\u9ed8\u8ba4\u5168\u90e8":4,"\u5426\u5219zone\u5fc5\u987b\u4f20":4,"\u542b\u57df\u540d":4,"\u542f\u52a8\u4e2d":4,"\u542f\u52a8\u5904\u4e8e\u5173\u95ed\u72b6\u6001\u7684uhost\u5b9e\u4f8b":4,"\u542f\u52a8\u5931\u8d25":4,"\u542f\u52a8\u5b9e\u4f8b":4,"\u542f\u52a8\u7269\u7406\u673a":4,"\u542f\u52a8udb\u5b9e\u4f8b":4,"\u542f\u52a8uddb\u5b9e\u4f8b":4,"\u542f\u52a8udts\u670d\u52a1":4,"\u542f\u52a8uec\u865a\u62df\u673a":4,"\u542f\u52a8uinfluxdb\u5b9e\u4f8b":4,"\u542f\u7528":4,"\u544a\u8b66\u6307\u6807\u540d\u79f0":4,"\u544a\u8b66\u63a2\u6d4b\u5468\u671f":4,"\u544a\u8b66\u6a21\u677f\u7b56\u7565id":4,"\u544a\u8b66\u6a21\u677fid":4,"\u544a\u8b66\u7ec4id":4,"\u544a\u8b66\u89e6\u53d1\u5468\u671f":4,"\u544a\u8b66\u9608\u503c":4,"\u547d\u4e2d\u7c7b\u578b":4,"\u547d\u4ee4":4,"\u548c":4,"\u548c\u4e0b\u5212\u7ebf":4,"\u548c\u666e\u901audb":4,"\u548c_":4,"\u548cdrop":4,"\u552f\u4e00\u8bf7\u6c42":4,"\u552f\u4e00\u8d44\u6e90\u6807\u8bc6":4,"\u5546\u6807\u540d\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5546\u6807\u6ce8\u518c\u8bc1\u4e66":4,"\u56de\u4e3b\u6e90\u7684\u56de\u6e90\u5931\u8d25\u6570":4,"\u56de\u6267\u7801":4,"\u56de\u6267\u7ed3\u679c":4,"\u56de\u6267\u7ed3\u679c\u63cf\u8ff0":4,"\u56de\u6267\u8fd4\u56de\u65f6\u95f4":4,"\u56de\u6e90\u7aef\u53e3":4,"\u56de\u6e90http\u8bf7\u6c42\u5934\u90e8host":4,"\u56den\u9000\u8ba2":4,"\u56det\u9000\u8ba2":4,"\u56detd\u9000\u8ba2":4,"\u56fa\u5b9a\u4e3a2\u8282\u70b9":4,"\u56fa\u5b9a\u4e3a4\u4e2d\u95f4\u4ef6\u8282\u70b9":4,"\u56fa\u5b9a\u4e3a4\u8282\u70b9":4,"\u56fd\u5185":4,"\u56fd\u5185\u5e26\u5bbd\u6709\u6b20\u8d39":4,"\u56fd\u5185\u65e0\u6b64\u5b57\u6bb5":4,"\u56fd\u5185\u65e5\u5fd7url\u5217\u8868":4,"\u56fd\u5185\u6d41\u91cf\u6709\u6b20\u8d39":4,"\u56fd\u5185\u77ed\u4fe1":4,"\u56fd\u5185\u8bc1\u4e66\u540d\u79f0":4,"\u56fd\u5185https\u72b6\u6001":4,"\u56fd\u5916":4,"\u56fd\u5916\u5e26\u5bbd\u6709\u6b20\u8d39":4,"\u56fd\u5916\u65e5\u5fd7url\u5217\u8868":4,"\u56fd\u5916\u6d41\u91cf\u6709\u6b20\u8d39":4,"\u56fd\u5916\u8bc1\u4e66\u540d\u79f0":4,"\u56fd\u5916https\u72b6\u6001":4,"\u56fd\u5bb6\u4ee3\u7801":4,"\u56fd\u9645":4,"\u56fd\u9645\u77ed\u4fe1":4,"\u56fd\u9645\u7ebf\u8def":4,"\u56fd\u9645ip":4,"\u56fe\u7247":4,"\u56fe\u7247\u4e3ajpg":4,"\u56fe\u7247\u4f7f\u7528":4,"\u5728\u52a0\u6743\u8f6e\u8be2\u7b97\u6cd5\u4e0b\u6709\u6548":4,"\u5728\u63a7\u5236\u53f0\u5ba1\u6838\u901a\u8fc7\u7684\u6a21\u677f":4,"\u5728\u63a7\u5236\u53f0\u67e5\u770b\u5df2\u8d2d\u4e70\u7684\u53f7\u7801":4,"\u5728\u6570\u636e\u8282\u70b9\u548c\u53ea\u8bfb\u5b9e\u4f8b\u4e4b\u95f4":4,"\u5728\u672c\u5b57\u6bb5\u548c\u5b57\u6bb5machinetype\u4e2d":4,"\u5728\u672c\u5b57\u6bb5\u548c\u5b57\u6bb5uhosttype\u4e2d":4,"\u5728\u6b64\u586b\u4e0aeip\u7684\u8d44\u6e90id":4,"\u5728\u76ee\u6807\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3":4,"\u5728\u89c6\u9891\u77ed\u4fe1\u4e2d\u7684\u4f4d\u7f6e":4,"\u5730\u533a":4,"\u5730\u5740":4,"\u5730\u5740\u7a7a\u95f4\u4e2d\u5b50\u7f51\u6570\u91cf":4,"\u5730\u57df":4,"\u5730\u57df\u540d\u5b57":4,"\u5730\u57df\u548c\u53ef\u7528\u533a\u5217\u8868":4,"\u57ce\u5e02":4,"\u57ce\u5e02\u540d\u79f0":4,"\u57df\u540d":4,"\u57df\u540d\u521b\u5efa\u7684\u65f6\u95f4":4,"\u57df\u540d\u7684\u8d44\u6e90id":4,"\u57df\u540d\u8f6c\u53d1\u89c4\u5219":4,"\u57df\u540did":4,"\u57fa\u4e8evip\u548c\u54e8\u5175\u8282\u70b9\u7684\u67b6\u6784":4,"\u57fa\u7840\u578b":4,"\u57fa\u7840\u7248":4,"\u57fa\u7840\u7248\u672c":4,"\u57fa\u7840\u7f51\u7edc\u6a21\u5f0f":4,"\u57fa\u7840\u955c\u50cf":4,"\u57fa\u7840\u955c\u50cf\u540d\u79f0":4,"\u57fa\u7840\u955c\u50cfid":4,"\u5821\u5792\u673a":4,"\u586b":4,"\u586b\u51990\u5373\u53ef":4,"\u586b\u5199\u540e\u4e0d\u80fd\u586b\u5199snapshotid":4,"\u586b\u5199\u540e\u4e0d\u80fd\u586b\u5199udisk":4,"\u586b\u5199\u5bf9\u5e94\u7684\u76ee\u6807ip\u5730\u5740":4,"\u586b\u5199\u5bf9\u5e94\u7684eip":4,"\u586b\u5199\u5bf9\u996e\u7684\u76ee\u6807ip\u5730\u5740":4,"\u586b\u5199\u652f\u6301ssh\u8bbf\u95eeip\u7684\u5730\u533a\u540d\u79f0":4,"\u586b\u6b64\u53c2\u6570\u5219\u8fd4\u56deupath\u5b9e\u4f8bid\u5339\u914d\u7684\u7ebf\u8def":4,"\u589e":4,"\u589e\u52a0\u6027\u80fd\u5f53\u6539\u53d8\u4e86\u6570\u636e\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b\u4e2a\u6570\u4e4b\u540e":4,"\u589e\u52a0\u7f51\u6bb5":4,"\u589e\u5f3a\u578b":4,"\u589e\u91cf":4,"\u589e\u91cf\u4efb\u52a1\u4f1a\u81ea\u52a8\u8bbe\u7f6e":4,"\u589e\u91cf\u65f6\u9700\u8981\u6307\u5b9a\u7684":4,"\u5904\u7406\u4e2d":4,"\u5907\u4efd\u4e0b\u8f7d\u94fe\u63a5":4,"\u5907\u4efd\u4e2d":4,"\u5907\u4efd\u540d\u79f0":4,"\u5907\u4efd\u56de\u6e90http\u8bf7\u6c42\u5934\u90e8host":4,"\u5907\u4efd\u5916\u7f51url":4,"\u5907\u4efd\u5931\u8d25":4,"\u5907\u4efd\u5b8c\u6210\u65f6\u95f4":4,"\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u5907\u4efd\u603b\u6570":4,"\u5907\u4efd\u6210\u529f":4,"\u5907\u4efd\u6240\u5728\u53ef\u7528\u533a":4,"\u5907\u4efd\u6587\u4ef6\u4fdd\u7559\u7684\u6570\u91cf":4,"\u5907\u4efd\u6587\u4ef6\u516c\u7f51\u7684\u5730\u5740":4,"\u5907\u4efd\u6587\u4ef6\u540d\u79f0":4,"\u5907\u4efd\u6587\u4ef6\u5927\u5c0f":4,"\u5907\u4efd\u65b9\u6848":4,"\u5907\u4efd\u65e5\u671f\u6807\u8bb0\u4f4d":4,"\u5907\u4efd\u65f6\u671f\u6807\u8bb0\u4f4d":4,"\u5907\u4efd\u65f6\u95f4":4,"\u5907\u4efd\u65f6\u95f4\u95f4\u9694":4,"\u5907\u4efd\u6e90\u7ad9ip\u5373cdn\u670d\u52a1\u5668\u56de\u6e90\u8bbf\u95ee\u7684ip\u5730\u5740":4,"\u5907\u4efd\u72b6\u6001":4,"\u5907\u4efd\u7528\u6237\u7f51url":4,"\u5907\u4efd\u7684\u53ef\u7528\u533a":4,"\u5907\u4efd\u7684\u540d\u79f0":4,"\u5907\u4efd\u7684\u6574\u70b9\u65f6\u95f4":4,"\u5907\u4efd\u7684\u72b6\u6001":4,"\u5907\u4efd\u7b56\u7565":4,"\u5907\u4efd\u7c7b\u578b":4,"\u5907\u4efd\u8bb0\u5f55id":4,"\u5907\u4efd\u8fc7\u671f":4,"\u5907\u4efd\u9ed1\u540d\u5355":4,"\u5907\u4efd\u9ed1\u540d\u5355\u5217\u8868":4,"\u5907\u4efdid":4,"\u5907\u4efdudb\u5b9e\u4f8b":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684binlog\u5217\u8868":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684errorlog":4,"\u5907\u4efdudb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684slowlog\u5206\u6790\u7ed3\u679c":4,"\u5907\u4efdurl":4,"\u5907\u6848\u53f7":4,"\u5907\u6848\u670d\u52a1\u5546\u7684\u5907\u6848\u6210\u529f\u622a\u56fe":4,"\u5907\u6ce8":4,"\u5907\u6ce8\u4fe1\u606f":4,"\u5907\u6ce8\u7b49\u5c5e\u6027\u5b57\u6bb5":4,"\u5907r":4,"\u5907rs\u9ed8\u8ba4\u4e3a0":4,"\u590d\u5236\u540e\u65b0\u7684\u8def\u7531\u8868\u8d44\u6e90id":4,"\u590d\u5236\u81ea\u5236\u955c\u50cf":4,"\u5916\u7f51\u51fa\u53e3\u6743\u91cd":4,"\u5916\u7f51\u7ed1\u5b9a\u7684\u5e26\u5bbd":4,"\u5916\u7f51\u8def\u7531":4,"\u5916\u7f51\u9632\u62a4\u5899\u89c4\u5219\u7ec4":4,"\u5916\u7f51\u9632\u706b\u5899id":4,"\u5916\u7f51ip":4,"\u5916\u7f51ip\u7684":4,"\u5916\u7f51ip\u7684\u6570\u91cf":4,"\u5916\u7f51ip\u8d44\u6e90id":4,"\u591a\u4e2a\u503c\u7531\u534a\u89d2\u82f1\u6587\u9017\u53f7\u76f8\u9694":4,"\u591a\u4e2a\u53d8\u91cf\u7528\u52a0\u53f7":4,"\u591a\u4e2a\u6e90\u7ad9ip":4,"\u591a\u4e2a\u72b6\u6001\u7801\u7528\u7ad6\u7ebf":4,"\u591a\u4e2a\u7528":4,"\u591a\u4e2aip":4,"\u591a\u4e2aip\u4ee5\u82f1\u6587\u9017\u53f7\u5206\u9694":4,"\u591a\u4e2aip\u7528\u82f1\u6587\u534a\u89d2\u9017\u53f7":4,"\u591a\u4e2aip\u7528\u9017\u53f7\u9694\u5f00":4,"\u591a\u7528\u4e8e\u9ad8\u53ef\u7528\u7a0b\u5e8f\u4f5c\u4e3a\u6f02\u79fbip":4,"\u591a\u7b5b\u9009\u8bf7\u5728\u8bf7\u6c42\u53c2\u6570\u4e2d\u6dfb\u52a0\u591a\u4e2a\u5b57\u6bb5\u4f8bresourceid":4,"\u591a\u7b5b\u9009\u8bf7\u5728\u8bf7\u6c42\u53c2\u6570\u4e2d\u6dfb\u52a0\u591a\u4e2a\u5b57\u6bb5\u4f8bresourcetyp":4,"\u591a\u7ec4\u7528":4,"\u591a\u7ec4labels\u7528":4,"\u5927\u4e8e\u7b49\u4e8e\u8fd4\u56dedataset\u957f\u5ea6":4,"\u5927\u5c0f\u4e0d\u8d85\u8fc716kb":4,"\u5927\u6570\u636e\u96c6\u7fa4":4,"\u5929":4,"\u5931\u6548":4,"\u5931\u6548\u65f6\u95f4":4,"\u5931\u8d25":4,"\u5931\u8d25\u662f":4,"\u5931\u8d25\u7684\u9519\u8bef\u6d88\u606f":4,"\u5982":4,"\u5982106":4,"\u5982172":4,"\u59821851623xxxx":4,"\u5982\u4e00\u7ec4\u662fcpu":4,"\u5982\u4e0b":4,"\u5982\u4e0b\u72b6\u6001\u7684uddb\u5b9e\u4f8b\u53ef\u4ee5\u8fdb\u884c\u8fd9\u4e2a\u64cd\u4f5c":4,"\u5982\u4e0d\u5173\u5fc3\u5feb\u7167\u670d\u52a1\u4fe1\u606f":4,"\u5982\u4e0d\u5173\u5fc3\u8d26\u5355\u4fe1\u606f":4,"\u5982\u4e2d\u56fd\u4e3a86\u62160086":4,"\u5982\u4ec5\u9700\u8981\u57fa\u7840\u4fe1\u606f":4,"\u5982\u4f55\u67e5\u8be2securitygroupid\u8bf7\u53c2\u89c1":4,"\u5982\u5237\u65b0\u6587\u4ef6\u76ee\u5f55a\u4e0b\u9762\u6240\u6709img":4,"\u5982\u5237\u65b0\u6587\u4ef6\u76ee\u5f55a\u4e0b\u9762img":4,"\u5982\u5237\u65b0\u76ee\u5f55a\u4e0b\u6240\u6709\u6587\u4ef6":4,"\u5982\u5927\u4e8e2mbps\u5219\u544a\u8b66":4,"\u5982\u6309\u6708":4,"\u5982\u679c\u4e0d\u4f20":4,"\u5982\u679c\u4e0d\u4f20\u5165":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684\u4e1a\u52a1\u7ec4":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684\u5b50\u7f51":4,"\u5982\u679c\u4e0d\u4f20\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684vpc":4,"\u5982\u679c\u4e0d\u4f20\u67d0\u4e2a\u679a\u4e3e\u503c":4,"\u5982\u679c\u4e0d\u4f20\u7528\u9ed8\u8ba4\u5b50\u7f51":4,"\u5982\u679c\u4e0d\u4f20\u7528\u9ed8\u8ba4\u7684vpc":4,"\u5982\u679c\u4e0d\u586b":4,"\u5982\u679c\u4e0d\u586b\u53c2\u6570":4,"\u5982\u679c\u4e0d\u6307\u5b9a":4,"\u5982\u679c\u4e3a0":4,"\u5982\u679c\u4e3a\u7a7a":4,"\u5982\u679c\u4ece\u5e93\u5907\u4efd\u5f00\u5173\u8bbe\u5b9a\u4e3a\u6253\u5f00":4,"\u5982\u679c\u4ece\u5e93\u843d\u540e\u53ef\u80fd\u4f1a\u7981\u6b62\u63d0\u5347":4,"\u5982\u679c\u4f20\u4e86\u544a\u8b66\u6a21\u677fid":4,"\u5982\u679c\u4f20\u4e86\u5b9e\u4f8bid":4,"\u5982\u679c\u5173\u95ed\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5f02\u5e38":4,"\u5982\u679c\u5236\u5b9a\u4e86offset":4,"\u5982\u679c\u542f\u52a8\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5f02\u5e38":4,"\u5982\u679c\u586b\u5199":4,"\u5982\u679c\u6267\u884c\u5931\u8d25":4,"\u5982\u679c\u6307\u5b9a":4,"\u5982\u679c\u6307\u5b9a\u4e3atrue":4,"\u5982\u679c\u6307\u5b9a\u5219\u83b7\u53d6\u5355\u4e2adb\u5b9e\u4f8b\u7684\u63cf\u8ff0":4,"\u5982\u679c\u6307\u5b9a\u5219\u83b7\u53d6\u63cf\u8ff0":4,"\u5982\u679c\u6307\u5b9adbid":4,"\u5982\u679c\u63d0\u4f9b\u6b64\u53c2\u6570":4,"\u5982\u679c\u64cd\u4f5c\u6210\u529f":4,"\u5982\u679c\u65e5\u5fd7\u67e5\u8be2\u7ed3\u675f\u5219\u8fd4\u56de\u4e3a\u7a7a":4,"\u5982\u679c\u662f\u4e91\u76d8\u5305\u62ec\u4e86\u7cfb\u7edf\u76d8\u4ef7\u683c":4,"\u5982\u679c\u662f\u4ecewindows\u91cd\u88c5\u4e3alinux\u6216\u53cd\u4e4b":4,"\u5982\u679c\u662f\u5217\u8868\u64cd\u4f5c":4,"\u5982\u679c\u66f4\u6539\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5f02\u5e38":4,"\u5982\u679c\u6709\u503c\u8868\u793a\u4e13\u533a\u4e2d\u7684db\u914d\u7f6e\u5347\u964d\u7ea7":4,"\u5982\u679c\u6709\u8be5\u9009\u9879":4,"\u5982\u679c\u6709endtim":4,"\u5982\u679c\u672a\u6307\u5b9agroupid":4,"\u5982\u679c\u6ca1\u4f20":4,"\u5982\u679c\u6ca1\u4f20\u5219\u8fd4\u56de":4,"\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u8bc1\u4e66id\u4e5f\u6ca1\u6709\u7533\u8bf7\u514d\u8d39\u8bc1\u4e66":4,"\u5982\u679c\u6ca1\u6709endtim":4,"\u5982\u679c\u843d\u540e\u60c5\u51b5\u4e0b":4,"\u5982\u679c\u8981\u4f20\u5165\u591a\u4e2a\u6587\u4ef6\u540d":4,"\u5982\u679c\u8ba1\u8d39\u5355\u4f4d\u662f":4,"\u5982\u679c\u8bf7\u6c42\u53c2\u6570type\u4e3a0":4,"\u5982\u679c\u8d44\u6e90\u7ed1\u5b9a\u4e86\u5f39\u6027\u7f51\u5361":4,"\u5982\u679c\u8fd4\u56de\u5931\u8d25":4,"\u5982\u679c\u8fd4\u56denoresource\u5219\u4ee3\u8868\u6ca1\u6709\u8d44\u6e90\u4e86":4,"\u5982\u679c\u8fd9\u4e2a\u53c2\u6570\u5b58\u5728\u8fd9\u8bf4\u660e\u662f\u5728\u4e13\u533a\u4e2d\u521b\u5efadb":4,"\u5982\u679c\u91cd\u88c5uhost\u5b9e\u4f8b\u65f6loginmode\u4e3apassword":4,"\u5982\u679c\u955c\u50cfid\u4e0d\u4f20":4,"\u5982\u679cchargetype\u4e3amonth":4,"\u5982\u679ceip\u4e3a\u666e\u901a\u5e26\u5bbd\u8ba1\u8d39":4,"\u5982\u679cinstancetyp":4,"\u5982\u679cip\u4e0eeip\u90fd\u4f20":4,"\u5982\u679cloginmode\u4e3akeypair":4,"\u5982\u679cname\u4e0d\u586b\u5199":4,"\u5982\u679cport\u4e0d\u5b58\u5728\u5219\u4e0d\u4f1a\u7ed1\u5b9a":4,"\u5982\u679cregionflag":4,"\u5982\u679ctag\u4e0d\u586b\u5199":4,"\u5982\u679ctype\u4e3a1":4,"\u5982\u679ctype\u4e3a2":4,"\u5982\u679cudbid\u4e0d\u4e3a\u7a7a\u5219\u53ea\u67e5\u770b\u6b64\u4e13\u533a\u4e0b\u9762\u7684db":4,"\u5982\u679cuddb\u5b9e\u4f8b\u6709\u73b0\u6709\u7684\u6570\u636e\u8282\u70b9":4,"\u5982\u679cusessd\u4e3atru":4,"\u5982\u6ca1\u6709\u8d4b\u503c":4,"\u5982\u82e5\u9700\u8981\u589e\u91cf\u6dfb\u52a0":4,"\u5982\u8981\u53d6\u6d88\u5bc6\u7801":4,"\u5982\u8fd4\u56de\u503c\u4e3a":4,"\u5982\u955c\u50cf\u540d":4,"\u5982\u9700\u5f00\u901a\u8bf7\u8054\u7cfb":4,"\u5982\u9700\u66f4\u5927\u5e26\u5bbd":4,"\u5982\u9700\u6c42\u5176\u4ed6\u8bed\u8a00\u7248\u672c\u7684\u8d26\u5355\u5219\u4f7f\u7528\u6b64\u53c2\u6570":4,"\u5982\u9700\u9000\u8d39\u6b64\u5904\u4e3a\u8d1f\u503c":4,"\u5982\u975e\u5728":4,"\u5982cn":4,"\u5982cpu\u6838\u5fc3\u6570":4,"\u5982env":4,"\u5982linux\u6216window":4,"\u5982month":4,"\u5982mysql":4,"\u5982normal":4,"\u5982org":4,"\u5982uhost":4,"\u5982uk8":4,"\u5982upath":4,"\u5b50\u5e10\u53f7\u5fc5\u987b\u586b\u5199":4,"\u5b50\u7f51":4,"\u5b50\u7f51\u5173\u8054\u7684ipv6\u7f51\u6bb5":4,"\u5b50\u7f51\u5185\u5168\u90e8\u8d44\u6e90":4,"\u5b50\u7f51\u5185\u6307\u5b9a\u8d44\u6e90":4,"\u5b50\u7f51\u540d\u5b57":4,"\u5b50\u7f51\u540d\u79f0":4,"\u5b50\u7f51\u603b\u6570\u91cf":4,"\u5b50\u7f51\u63a9\u7801":4,"\u5b50\u7f51\u6a21\u5f0f":4,"\u5b50\u7f51\u7684id":4,"\u5b50\u7f51\u7c7b\u578b":4,"\u5b50\u7f51\u7f51\u5173":4,"\u5b50\u7f51\u7f51\u6bb5":4,"\u5b50\u7f51\u7f51\u7edc\u53f7\u4f4d\u6570":4,"\u5b50\u7f51\u7f51\u7edc\u5730\u5740":4,"\u5b50\u7f51cidr":4,"\u5b50\u7f51id":4,"\u5b50\u7f51id\u6570\u7ec4":4,"\u5b50\u8d26\u53f7":4,"\u5b57\u6570\u4e0d\u8d85\u8fc7128":4,"\u5b57\u6570\u4e0d\u8d85\u8fc7500":4,"\u5b57\u6bb5\u89c4\u8303":4,"\u5b57\u6bb5\u8fd4\u56de\u4e3a\u7a7a":4,"\u5b57\u7b26\u4e32":4,"\u5b57\u7b26\u4e32\u6570\u7ec4":4,"\u5b57\u7b26\u4e32\u683c\u5f0f":4,"\u5b57\u8282":4,"\u5b58\u50a8\u5377\u6302\u8f7d\u8def\u5f84":4,"\u5b58\u50a8\u5377\u6570\u91cf":4,"\u5b58\u50a8\u5377\u8d44\u6e90id":4,"\u5b58\u50a8\u5bb9\u91cf":4,"\u5b58\u50a8\u7a7a\u95f4\u540d\u79f0":4,"\u5b58\u50a8\u8282\u70b9\u548c\u53ea\u8bfb\u5b9e\u4f8b\u7684\u78c1\u76d8\u7c7b\u578b":4,"\u5b58\u50a8\u8282\u70b9\u7684\u9ad8\u53ef\u7528\u6a21\u5f0f":4,"\u5b58\u50a8\u8282\u70b9\u8d39\u7528":4,"\u5b58\u50a8\u91cf":4,"\u5b89\u5168\u7ec4id":4,"\u5b89\u88c5\u5931\u8d25":4,"\u5b8c\u6210":4,"\u5b8c\u6210\u8fdb\u5ea6":4,"\u5b9a\u4e49\u76d1\u542c\u7684\u534f\u8bae\u548c\u7aef\u53e3\u4ee5\u53ca\u8d1f\u8f7d\u5747\u8861\u7b97\u6cd5":4,"\u5b9a\u4f4d\u95ee\u9898\u65f6\u9700\u8981\u63d0\u4f9b\u8be5\u6b21\u8bf7\u6c42\u7684":4,"\u5b9e\u4f8b":4,"\u5b9e\u4f8b\u4e0d\u751f\u6548":4,"\u5b9e\u4f8b\u4f7f\u7528":4,"\u5b9e\u4f8b\u5173\u95ed\u72b6\u6001\u4e0b":4,"\u5b9e\u4f8b\u5185\u5b58":4,"\u5b9e\u4f8b\u540d\u79f0":4,"\u5b9e\u4f8b\u6240\u5728\u53ef\u7528\u533a":4,"\u5b9e\u4f8b\u6240\u5728\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u5b9e\u4f8b\u6838\u6570":4,"\u5b9e\u4f8b\u72b6\u6001":4,"\u5b9e\u4f8b\u7684\u65b0\u540d\u5b57":4,"\u5b9e\u4f8b\u7684\u65b0\u5bc6\u7801":4,"\u5b9e\u4f8b\u7684\u90e8\u7f72\u7c7b\u578b":4,"\u5b9e\u4f8b\u7684id":4,"\u5b9e\u4f8b\u7aef\u53e3":4,"\u5b9e\u4f8b\u7c7b\u578b":4,"\u5b9e\u4f8b\u8def\u7531":4,"\u5b9e\u4f8bid":4,"\u5b9e\u4f8bip":4,"\u5b9e\u529b\u5927\u5c0f":4,"\u5b9e\u9645\u4ef7\u683c":4,"\u5b9e\u9645\u53d1\u9001\u7684\u6a21\u677f\u53c2\u6570":4,"\u5b9e\u9645\u8c03\u7528\u672c\u63a5\u53e3\u65f6taskcontent\u4f20\u503c":4,"\u5ba1\u6838\u4e2d":4,"\u5ba1\u6838\u5931\u8d25\u539f\u56e0":4,"\u5ba1\u6838\u672a\u901a\u8fc7":4,"\u5ba1\u6838\u901a\u8fc7":4,"\u5ba2\u6237\u7aef\u54cd\u5e94http\u5934\u5217\u8868":4,"\u5ba2\u6237\u7aef\u6807\u8bc6":4,"\u5ba2\u6237\u7aef\u8bf7\u6c42\u7684ip":4,"\u5ba2\u6237\u7aef\u8bf7\u6c42\u7684refer":4,"\u5ba2\u6237\u7aefip":4,"\u5ba2\u6237\u7f51\u5173\u540d\u79f0":4,"\u5ba2\u6237\u7f51\u5173id":4,"\u5ba2\u6237\u7f51\u5173ip\u5730\u5740":4,"\u5ba2\u6237\u81ea\u5b9a\u4e49":4,"\u5ba2\u6237vpn\u7f51\u5173\u540d\u79f0":4,"\u5ba2\u6237vpn\u7f51\u5173\u5730\u5740":4,"\u5ba2\u6237vpn\u7f51\u5173\u7684\u8d44\u6e90id":4,"\u5bb9\u5668":4,"\u5bb9\u5668\u5185\u5b58":4,"\u5bb9\u5668\u53c2\u6570":4,"\u5bb9\u5668\u540d\u79f0":4,"\u5bb9\u5668\u5de5\u4f5c\u76ee\u5f55":4,"\u5bb9\u5668\u6570\u91cf":4,"\u5bb9\u5668\u72b6\u6001":4,"\u5bb9\u5668\u73af\u5883\u53d8\u91cf":4,"\u5bb9\u5668\u7ec4\u4ef7\u683c":4,"\u5bb9\u5668\u7ec4\u5185\u5b58\u5927\u5c0f":4,"\u5bb9\u5668\u7ec4\u5185\u7f51ip":4,"\u5bb9\u5668\u7ec4\u540d\u79f0":4,"\u5bb9\u5668\u7ec4\u5b50\u7f51id":4,"\u5bb9\u5668\u7ec4\u603b\u5185\u5b58":4,"\u5bb9\u5668\u7ec4\u603b\u5185\u5b58\u5927\u5c0f":4,"\u5bb9\u5668\u7ec4\u603bcpu\u6838\u5fc3\u6570":4,"\u5bb9\u5668\u7ec4\u8d44\u6e90id":4,"\u5bb9\u5668\u7ec4\u8fd0\u884c\u72b6\u60010":4,"\u5bb9\u5668\u7ec4cpu\u603b\u6838\u6570":4,"\u5bb9\u5668\u7ec4cpu\u6838\u6570":4,"\u5bb9\u5668\u8fd0\u884c\u65f6\u5207\u6362":4,"\u5bb9\u5668\u8fd0\u884c\u65f6\u7248\u672c":4,"\u5bb9\u5668\u8fd0\u884c\u9519\u8bef":4,"\u5bb9\u5668\u914d\u7f6e\u5b57\u5178":4,"\u5bb9\u5668\u955c\u50cf\u540d\u79f0":4,"\u5bb9\u5668\u96c6\u7fa4":4,"\u5bb9\u5668cpu\u6838\u6570":4,"\u5bb9\u5668id":4,"\u5bb9\u707e\u7c7b\u578b":4,"\u5bb9\u91cf":4,"\u5bb9\u91cf\u5355\u4f4dgb":4,"\u5bb9\u91cf\u5927\u5c0f":4,"\u5bb9\u91cf\u8c03\u6574\u4e2d":4,"\u5bb9\u91cf\u8c03\u6574\u5931\u8d25":4,"\u5bbd\u83b7\u53d6\u7684\u65f6\u95f4\u70b9":4,"\u5bbf\u4e3b\u4ea7\u54c1\u7c7b\u578b":4,"\u5bc6\u7801":4,"\u5bc6\u7801\u5b89\u5168\u7b56\u7565\u5f00\u542f\u65f6\u95f4":4,"\u5bc6\u7801\u683c\u5f0f\u4f7f\u7528base64\u7f16\u7801":4,"\u5bc6\u7801\u9700\u4f7f\u7528base64\u8fdb\u884c\u7f16\u7801":4,"\u5bc6\u7801\u9700\u5305\u542b\u6700\u5c11\u4e00\u4e2a\u5927\u5199\u5b57\u6bcd":4,"\u5bc6\u7801\u9700\u8981\u4f7f\u7528base64\u52a0\u5bc6":4,"\u5bc6\u94a5":4,"\u5bc6\u94a5\u5bf9\u540d\u79f0":4,"\u5bc6\u94a5\u5bf9\u603b\u6570":4,"\u5bc6\u94a5\u5bf9\u6307\u7eb9":4,"\u5bc6\u94a5\u5bf9\u6807\u8bc6":4,"\u5bc6\u94a5\u5bf9\u7684\u516c\u94a5\u5185\u5bb9":4,"\u5bc6\u94a5\u5bf9\u7684\u521b\u5efa\u65f6\u95f4":4,"\u5bc6\u94a5\u5bf9\u7684\u6307\u7eb9":4,"\u5bc6\u94a5\u5bf9\u7684\u79c1\u94a5\u5185\u5bb9":4,"\u5bc6\u94a5\u5bf9id":4,"\u5bf9":4,"\u5bf9\u4e8e":4,"\u5bf9\u4e8e\u4f20\u5165\u591a\u4e2a\u4ee3\u91d1\u5238id":4,"\u5bf9\u4e8e\u5185\u5b58\u5347\u7ea7\u65e0\u9700\u5173\u95ed\u5b9e\u4f8b":4,"\u5bf9\u4e8e\u540c\u6837\u7684direction\u6765\u8bf4":4,"\u5bf9\u4e8e\u5b9e\u65f6\u67e5\u8be2":4,"\u5bf9\u4e8e\u5b9e\u65f6\u67e5\u8be2\u4e0d\u4f20\u8be5\u503c":4,"\u5bf9\u4e8e\u73b0\u6709\u7684\u548c\u4ee5\u540e\u7684\u6bcf\u4e00\u4e2a\u6570\u636e\u8282\u70b9\u90fd\u91c7\u7528\u8fd9\u4e2a\u914d\u7f6e":4,"\u5bf9\u4e8e\u7ed1\u5b9a\u4e86\u591a\u4e2aeip\u7684nat\u7f51\u5173":4,"\u5bf9\u4e8envme\u673a\u578b\u7684\u5355\u70b9\u5347\u7ea7\u9ad8\u53ef\u7528":4,"\u5bf9\u4e91\u76d8\u5907\u4efd\u65e0\u6548":4,"\u5bf9\u4e91\u76d8\u5feb\u7167\u65e0\u6548":4,"\u5bf9\u5e94\u4fee\u6539\u7684\u53c2\u6570\u503c":4,"\u5bf9\u5e94\u6570\u636e\u8282\u70b9\u7684id":4,"\u5bf9\u5e94\u65f6\u95f4\u7c92\u5ea6\u7684\u6d41\u91cf":4,"\u5bf9\u5e94\u7684\u5b9e\u4f8bid":4,"\u5bf9\u5e94\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5bf9\u5e94\u7684db\u540d\u79f0":4,"\u5bf9\u5e94\u7684vserver\u7684\u540d\u5b57":4,"\u5bf9\u5e94\u78c1\u76d8\u5236\u4f5c\u5feb\u7167\u65f6\u6240\u6302\u8f7d\u7684\u4e3b\u673a":4,"\u5bf9\u5e94\u78c1\u76d8\u662f\u5426\u5904\u4e8e\u53ef\u7528\u72b6\u6001":4,"\u5bf9\u5e94\u8ba1\u8d39custompric":4,"\u5bf9\u5e94\u8ba1\u8d39originalpric":4,"\u5bf9\u5e94docker\u91cd\u542f":4,"\u5bf9\u7aef\u7f51\u5173\u540d\u5b57":4,"\u5bf9\u7aef\u7f51\u5173id":4,"\u5bf9master\u5219\u4e3a\u7a7a":4,"\u5bf9mongodb\u5219\u662f\u526f\u672c\u96c6id":4,"\u5bf9mysql\u7684slave\u800c\u8a00\u662fmaster\u7684dbid":4,"\u5bf9udt":4,"\u5bfc\u5165\u5bc6\u94a5\u5bf9\u540e":4,"\u5bfc\u5165\u5de5\u4f5c\u6d41\u5b9a\u4e49":4,"\u5bfc\u5165\u7684\u914d\u7f6e\u5185\u5bb9\u91c7\u7528base64\u7f16\u7801":4,"\u5bfc\u5165\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u5bfc\u5165udb\u914d\u7f6e":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u5b9a\u4e49":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684\u7248\u672c\u53f7":4,"\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684id":4,"\u5c01\u7981":4,"\u5c01\u7981\u89e3\u5c01\u7f13\u5b58\u8bbf\u95ee":4,"\u5c06\u4e00\u4e2a\u53ef\u7528\u7684udisk\u6302\u8f7d\u5230\u67d0\u53f0\u4e3b\u673a\u4e0a":4,"\u5c06\u5c1a\u672a\u4f7f\u7528\u7684\u5f39\u6027ip\u7ed1\u5b9a\u5230\u6307\u5b9a\u7684\u8d44\u6e90":4,"\u5c06\u5f39\u6027ip\u4ece\u8d44\u6e90\u4e0a\u89e3\u7ed1":4,"\u5c06\u65b0\u521b\u5efa\u7684db\u6062\u590d\u5230\u6307\u5b9adb\u67d0\u4e2a\u6307\u5b9a\u65f6\u95f4\u70b9":4,"\u5c06\u73b0\u6709\u7684\u8def\u7531\u8868\u590d\u5236\u4e3a\u4e00\u5f20\u65b0\u7684\u8def\u7531\u8868":4,"\u5c06\u8981\u521b\u5efa\u7684acl\u6240\u5c5evpc\u7684id":4,"\u5c06\u9632\u706b\u5899\u5e94\u7528\u5230\u8d44\u6e90\u4e0a":4,"\u5c06\u9884\u5148\u521b\u5efa\u597d\u7684\u4e91\u4e3b\u673a\u52a0\u5165\u5230uk8s\u96c6\u7fa4":4,"\u5c06eip\u52a0\u5165\u5171\u4eab\u5e26\u5bbd":4,"\u5c06eip\u79fb\u51fa\u5171\u4eab\u5e26\u5bbd":4,"\u5c06ssl\u8bc1\u4e66\u7ed1\u5b9a\u5230vserver":4,"\u5c0f\u4e8e\u7b49\u4e8e32\u4e2a\u5b57":4,"\u5c0f\u4e8e\u7b49\u4e8e600\u4e2a\u5b57":4,"\u5c0f\u65f6":4,"\u5c55\u793a\u5b50\u7f51\u8d44\u6e90":4,"\u5c55\u793anat\u7f51\u5173\u53ef\u7ed1\u5b9a\u7684\u5b50\u7f51\u5217\u8868":4,"\u5c55\u793anat\u7f51\u5173\u767d\u540d\u5355\u8d44\u6e90\u5217\u8868":4,"\u5c55\u793anat\u7f51\u5173\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219":4,"\u5c5e\u6027":4,"\u5de5\u4f5c\u76ee\u5f55":4,"\u5de5\u4fe1\u90e8\u5907\u6848\u7f51\u7ad9\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"\u5df2\u505c\u6b62":4,"\u5df2\u5165\u8d26":4,"\u5df2\u5165\u8d26\u65f6\u663e\u793a":4,"\u5df2\u5165\u8d26\u8ba2\u5355\u603b\u989d":4,"\u5df2\u5173\u95ed":4,"\u5df2\u5173\u95ed\u5f53\u8bf7\u6c42\u8fd4\u56de\u6210\u529f\u4e4b\u540e":4,"\u5df2\u51bb\u7ed3":4,"\u5df2\u5206\u914d\u5230\u5f53\u524d\u8282\u70b9\u7684":4,"\u5df2\u521b\u5efa":4,"\u5df2\u521b\u5efabucket\u7684\u540d\u79f0":4,"\u5df2\u521b\u5efabucket\u7684id":4,"\u5df2\u5220\u9664":4,"\u5df2\u540c\u6b65":4,"\u5df2\u542f\u52a8":4,"\u5df2\u5e9f\u5f03":4,"\u5df2\u5f00\u542f":4,"\u5df2\u6302\u8f7d":4,"\u5df2\u6709\u4e3b\u673a\u7684\u4e1a\u52a1\u7ec4\u603b\u6570":4,"\u5df2\u6fc0\u6d3b":4,"\u5df2\u7533\u8bf7\u7684\u77ed\u4fe1\u7b7e\u540did":4,"\u5df2\u7ecf\u5220\u9664":4,"\u5df2\u7ed1\u5b9a":4,"\u5df2\u7ed1\u5b9a\u7684\u8d44\u6e90\u540d\u79f0":4,"\u5df2\u7ed1\u5b9a\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5df2\u7ed1\u5b9a\u8d44\u6e90\u5b9e\u4f8b\u7684\u5e26\u5bbd\u8ba1\u8d39\u5f39\u6027ip\u9644\u52a0\u4e34\u65f6\u5e26\u5bbd\u5305":4,"\u5df2\u7ed1\u5b9a\u8d44\u6e90\u7684\u8d44\u6e90id":4,"\u5df2\u8017\u65f6\u95f4":4,"\u5df2\u8fc1\u79fb\u6761\u76ee\u6570":4,"\u5df2\u914d\u7f6e\u57df\u540d\u4e2a\u6570":4,"\u5df2\u914d\u7f6e\u7684\u57df\u540d\u5217\u8868":4,"\u5e26\u5bbd":4,"\u5e26\u5bbd\u4ed8\u8d39\u6216\u8005\u6d41\u91cf\u4ed8\u8d39":4,"\u5e26\u5bbd\u4f7f\u7528\u7387\u7684\u9608\u503c\u8303\u56f4\u662f":4,"\u5e26\u5bbd\u4fe1\u606f":4,"\u5e26\u5bbd\u503c":4,"\u5e26\u5bbd\u5305\u6240\u7ed1\u5b9a\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u5e26\u5bbd\u5305\u6709\u6548\u65f6\u957f":4,"\u5e26\u5bbd\u5305\u7684\u4e34\u65f6\u5e26\u5bbd\u503c":4,"\u5e26\u5bbd\u5305\u7684\u8d44\u6e90id":4,"\u5e26\u5bbd\u5305\u8d44\u6e90id":4,"\u5e26\u5bbd\u540e\u4ed8\u8d39\u6a21\u5f0f":4,"\u5e26\u5bbd\u544a\u8b66\u9608\u503c\u4e3a1000000\u7684\u500d\u6570":4,"\u5e26\u5bbd\u5927\u5c0f":4,"\u5e26\u5bbd\u65e5\u5cf0\u503c":4,"\u5e26\u5bbd\u6a21\u5f0f":4,"\u5e26\u5bbd\u7c7b\u578b":4,"\u5e26\u5bbd\u7c7b\u578b0\u6807\u51c6\u666e\u901a\u5e26\u5bbd":4,"\u5e26\u5bbd\u83b7\u53d6\u7684\u65f6\u95f4\u70b9":4,"\u5e26\u5bbd\u8ba1\u8d39":4,"\u5e26\u5bbd\u8ba1\u8d39\u6a21\u5f0f":4,"\u5e26\u673a\u623fid\u8868\u793a\u53ea\u5220\u9664\u6307\u5b9a\u673a\u623f\u955c\u50cf":4,"\u5e76\u4e14\u9700\u8981base64\u52a0\u5bc6":4,"\u5e76\u4e14quantity\u4e3a0":4,"\u5e76\u53ef\u6839\u636e\u6570\u636e\u4e2d\u5fc3":4,"\u5e76\u91ca\u653e":4,"\u5e76\u91cd\u65b0\u63d0\u4ea4\u5ba1\u6838":4,"\u5e7f\u4e1c":4,"\u5e7f\u5dde\u7684\u5bb9\u91cf\u578b\u5fc5\u987b\u4e3a1024\u7684\u6574\u6570\u500d":4,"\u5e7f\u5dde\u7b49":4,"\u5e93\u5b58\u72b6\u6001":4,"\u5e94\u7528\u5546\u5e97\u540e\u53f0\u5f00\u53d1\u8005\u7ba1\u7406\u622a\u56fe":4,"\u5e94\u7528\u76ee\u6807\u7c7b\u578b":4,"\u5e94\u7528\u76ee\u6807\u8d44\u6e90\u5217\u8868":4,"\u5e94\u7528\u76ee\u6807\u8d44\u6e90\u6570\u91cf":4,"\u5e94\u7528\u9632\u706b\u5899\u89c4\u5219":4,"\u5e9f\u5f03":4,"\u5efa\u8bae\u4e0d\u518d\u4f7f\u7528":4,"\u5efa\u8bae\u4f7f\u7528billingcycl":4,"\u5efa\u8bae\u4f7f\u7528hostid":4,"\u5efa\u8bae\u4f7f\u7528hostidforattach":4,"\u5efa\u8bae\u4f7f\u7528hostip":4,"\u5efa\u8bae\u4f7f\u7528hostnam":4,"\u5efa\u8bae\u5347\u7ea7\u4e3a1":4,"\u5efa\u8bae\u540e\u7eed\u4e0d\u518d\u4f7f\u7528":4,"\u5efa\u8bae\u9009\u586b":4,"\u5efa\u8baen\u4ece1\u5f00\u59cb\u987a\u6b21":4,"\u5f00\u542f":4,"\u5f00\u542f\u4e2d":4,"\u5f00\u542f\u5173\u95edreferer\u9632\u76d7\u94fe":4,"\u5f00\u542f\u5931\u8d25":4,"\u5f00\u542f\u5bb9\u5668\u7684\u547d\u4ee4":4,"\u5f00\u542f\u5bc6\u7801\u4fdd\u62a4\u540e":4,"\u5f00\u542f\u5feb\u7167\u670d\u52a1":4,"\u5f00\u542f\u6216\u8005\u5173\u95edudb\u4ece\u5e93\u5907\u4efd":4,"\u5f00\u542f\u6570\u636e\u65b9\u821f\u5165\u53e3\u5df2\u5173\u95ed":4,"\u5f00\u542f\u65b9\u821f":4,"\u5f00\u542f\u70ed\u5347\u7ea7":4,"\u5f00\u542f\u7f51\u7edc\u589e\u5f3a1":4,"\u5f00\u542f\u7f51\u7edc\u589e\u5f3a2":4,"\u5f00\u542f\u9632\u76d7\u94fe\u5fc5\u987b\u6307\u5b9a":4,"\u5f00\u542fdb\u7684\u8bfb\u5199\u5206\u79bb\u529f\u80fd":4,"\u5f00\u59cb":4,"\u5f00\u59cb\u5206\u914dcname\u65f6\u95f4":4,"\u5f00\u59cb\u63d0\u4f9b\u670d\u52a1":4,"\u5f00\u59cb\u65f6\u95f4":4,"\u5f00\u59cb\u65f6\u95f4\u6233":4,"\u5f00\u901a\u5171\u4eab\u5e26\u5bbd":4,"\u5f02\u5e38":4,"\u5f02\u5e38\u8fd0\u884c\u4e2d":4,"\u5f02\u5e38\u8fd0\u884c\u4e2d\u5f53\u8bf7\u6c42\u8fd4\u56de\u6210\u529f\u4e4b\u540e":4,"\u5f39\u6027\u7f51\u5361\u4e3a\u9ed8\u8ba4\u7f51\u5361\u65f6":4,"\u5f39\u6027ip\u4ed8\u8d39\u65b9\u5f0f":4,"\u5f39\u6027ip\u5730\u5740":4,"\u5f39\u6027ip\u662f\u5426\u5230\u671f":4,"\u5f39\u6027ip\u7684\u4e1a\u52a1\u7ec4\u6807\u8bc6":4,"\u5f39\u6027ip\u7684\u521b\u5efa\u65f6\u95f4":4,"\u5f39\u6027ip\u7684\u5230\u671f\u65f6\u95f4":4,"\u5f39\u6027ip\u7684\u539f\u4ef7":4,"\u5f39\u6027ip\u7684\u540d\u79f0":4,"\u5f39\u6027ip\u7684\u5907\u6ce8":4,"\u5f39\u6027ip\u7684\u5916\u7f51\u5e26\u5bbd":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd\u503c":4,"\u5f39\u6027ip\u7684\u5e26\u5bbd\u7c7b\u578b":4,"\u5f39\u6027ip\u7684\u7ebf\u8def":4,"\u5f39\u6027ip\u7684\u7ebf\u8def\u5982\u4e0b":4,"\u5f39\u6027ip\u7684\u8ba1\u8d39\u6a21\u5f0f":4,"\u5f39\u6027ip\u7684\u8d44\u6e90\u7ed1\u5b9a\u72b6\u6001":4,"\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u7684\u8d44\u6e90id\u5982\u679c\u4e3a\u7a7a":4,"\u5f39\u6027ip\u7684\u8fd0\u8425\u5546\u4fe1\u606f":4,"\u5f39\u6027ip\u7684id":4,"\u5f39\u6027ip\u7ebf\u8def":4,"\u5f39\u6027ip\u8ba1\u8d39\u65b9\u5f0fr":4,"\u5f39\u6027ip\u8bf7\u6c42\u7ed1\u5b9a\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5f39\u6027ip\u8bf7\u6c42\u7ed1\u5b9a\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u8bf7\u6c42\u89e3\u7ed1\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u5f39\u6027ip\u8bf7\u6c42\u89e3\u7ed1\u7684\u8d44\u6e90id":4,"\u5f39\u6027ip\u8d44\u6e90id":4,"\u5f3a\u5236\u63d0\u5347\u4e22\u5931\u6570\u636e":4,"\u5f52\u5c5e\u4e8e\u540c\u4e00\u9694\u79bb\u7ec4\u7684\u865a\u62df\u673a\u8282\u70b9\u5c06\u843d\u5728\u4e0d\u540c\u7684\u7269\u7406\u673a\u4e0a":4,"\u5f52\u6863":4,"\u5f53":4,"\u5f53\u4e3a\u6309\u6708\u8ba1\u8d39\u65f6":4,"\u5f53\u4e3b\u8282\u70b9\u7684\u6570\u636e\u5199\u5165\u5b8c\u6bd5\u540e":4,"\u5f53\u4e91\u4e3b\u673a\u53ea\u6709\u4e00\u4e2aip\u5730\u5740\u65f6":4,"\u5f53\u4e91\u4e3b\u673a\u7684\u6b64\u503c\u4e0erssd\u4e91\u76d8\u7684rdmaclusterid\u76f8\u540c\u65f6":4,"\u5f53\u4e91\u76d8\u7684\u6b64\u503c\u4e0e\u5feb\u6770\u4e91\u4e3b\u673a\u7684rdmaclusterid\u76f8\u540c\u65f6":4,"\u5f53\u521b\u5efa\u4e91\u76d8\u7c7b\u578b\u4e3arssddatadisk\u65f6":4,"\u5f53\u524d\u4e3b\u673a\u7684iops\u503c":4,"\u5f53\u524d\u4ec5\u652f\u6301\u5220\u9664vpc\u7f51\u6bb5":4,"\u5f53\u524d\u4ec5\u652f\u6301mongodb":4,"\u5f53\u524d\u4ec5\u652f\u6301mysql":4,"\u5f53\u524d\u4ec5\u6536\u8d39\u7248globalssh\u5b9e\u4f8b\u53ef\u4ee5\u4fee\u6539\u7aef\u53e3":4,"\u5f53\u524d\u5206\u7ec4\u7684\u603b\u72b6\u6001\u7801\u6570":4,"\u5f53\u524d\u53ea\u652f\u6301\u4e00\u4e2a\u5185\u7f51ip":4,"\u5f53\u524d\u53ea\u652f\u6301\u5177\u6709hpc\u7279\u6027\u7684\u673a\u578b":4,"\u5f53\u524d\u5730\u57df\u6240\u6709\u53ef\u7528\u533a\u4e2d\u786c\u4ef6\u9694\u79bb\u7ec4\u4e2d\u4e91\u4e3b\u673a\u7684\u6570\u91cf":4,"\u5f53\u524d\u5931\u8d25\u91cd\u8bd5\u6b21\u6570":4,"\u5f53\u524d\u5c06\u81ea\u52a8\u4e3amaster\u8282\u70b9\u521b\u5efa\u9694\u79bb\u7ec4":4,"\u5f53\u524d\u652f\u6301mysql\u548cpg":4,"\u5f53\u524d\u6587\u4ef6\u7cfb\u7edf\u5df2\u521b\u5efa\u7684\u6302\u8f7d\u70b9\u6570\u76ee":4,"\u5f53\u524d\u7248\u672c":4,"\u5f53\u524d\u7248\u672c\u6682\u4e0d\u652f\u6301window":4,"\u5f53\u524d\u78c1\u76d8\u652f\u6301\u7684\u5907\u4efd\u6a21\u5f0f\u53c2\u8003":4,"\u5f53\u524d\u7f51\u5361\u7684mac":4,"\u5f53\u524d\u8ba1\u8d39\u65b9\u5f0f":4,"\u5f53\u524deip\u4ee3\u91d1\u5238id":4,"\u5f53\u524deip\u7684\u6743\u91cd":4,"\u5f53\u53ea\u83b7\u53d6\u8fd9\u4e2a\u7279\u5b9adbid\u7684\u4fe1\u606f\u65f6":4,"\u5f53\u5bfc\u51fa\u67d0\u4e9b\u6570\u636e\u9047\u5230\u95ee\u9898\u540e":4,"\u5f53\u60a8\u662f\u4ee3\u7406\u5e76\u4f7f\u7528\u7b2c\u4e09\u65b9\u7684\u7b7e\u540d\u65f6":4,"\u5f53\u652f\u4ed8\u7c7b\u578b\u4e3a\u6309\u6708\u65f6":4,"\u5f53\u7ed1\u5b9a\u5916\u7f51ip\u65f6\u9ed8\u8ba41":4,"\u5f53\u7f51\u7edc\u7c7b\u578b\u4e3a":4,"\u5f53\u8bf7\u6c42\u6ca1\u6709\u586b\u5199zone\u65f6":4,"\u5f53\u955c\u50cf\u652f\u6301":4,"\u5f53\u955c\u50cf\u652f\u6301cloud":4,"\u5f53bandwidthtyp":4,"\u5f53cento":4,"\u5f53chargetype\u4e3amonth":4,"\u5f53db\u7c7b\u578b":4,"\u5f53db\u7c7b\u578b\u4e3amongodb\u65f6":4,"\u5f53hostidforattachment\u5b57\u6bb5\u4e0d\u4e3a\u7a7a\u65f6":4,"\u5f53monitortype\u4e3acustomize\u65f6":4,"\u5f53monitortype\u4e3apath\u65f6":4,"\u5f53monitortype\u4e3aport\u65f6":4,"\u5f53purpose\u4e3a3":4,"\u5f53purpose\u4e3a3\u65f6":4,"\u5f53resourcetyp":4,"\u5f53retcode\u4e0d\u4e3a0\u65f6":4,"\u5f53status\u4e3afailed\u65f6":4,"\u5f53type\u4e3adefault\u65f6":4,"\u5f53uddb\u5b9e\u4f8b\u5173\u95ed\u6210\u529f\u4e4b\u540e":4,"\u5f53uddb\u5b9e\u4f8b\u5347\u7ea7\u6210\u529f\u4e4b\u540e":4,"\u5f53uddb\u5b9e\u4f8b\u5347\u7ea7\u7ed3\u675f\u4e4b\u540e":4,"\u5f53uddb\u5b9e\u4f8b\u542f\u52a8\u6210\u529f\u4e4b\u540e":4,"\u5f53uddb\u66f4\u6539\u6570\u636e\u5206\u533a\u7684\u53ea\u8bfb\u5b9e\u4f8b\u4e2a\u6570\u6210\u529f\u4e4b\u540e":4,"\u5f53udisk\u6302\u8f7d\u6210\u529f\u540e":4,"\u5f53ulbtype\u4e3aoutermode\u65f6":4,"\u5f62\u5f0f\u4e3akei":4,"\u5f7b\u5e95\u5220\u9664":4,"\u5f85\u4fee\u6539bucket\u7684\u540d\u79f0":4,"\u5f85\u5165\u8d26":4,"\u5f85\u5165\u8d26\u65f6\u663e\u793a":4,"\u5f85\u5165\u8d26\u8ba2\u5355\u603b\u989d":4,"\u5f85\u5173\u95ed\u8bfb\u5199\u5206\u79bb\u4e2d\u95f4\u952eproxyid":4,"\u5f85\u521b\u5efabucket\u7684\u540d\u79f0":4,"\u5f85\u5220\u9664":4,"\u5f85\u5220\u9664bucket\u7684\u540d\u79f0":4,"\u5f85\u5237\u65b0url\u5217\u8868":4,"\u5f85\u5ba1\u6838":4,"\u5f85\u5c01\u7981\u7684url":4,"\u5f85\u5e9f\u5f03":4,"\u5f85\u652f\u4ed8\u4ef7\u683c":4,"\u5f85\u67e5\u7684\u786c\u4ef6\u9694\u79bb\u7ec4id":4,"\u5f85\u83b7\u53d6bucket\u7684\u540d\u79f0":4,"\u5fc5\u586b":4,"\u5fc5\u987b":4,"\u5fc5\u987b\u4ee5":4,"\u5fc5\u987b\u4f20":4,"\u5fc5\u987b\u5173\u95ed\u540e\u542f\u52a8\u5b9e\u4f8b\u624d\u80fd\u4f7f\u7528\u6269\u5bb9\u7684\u78c1\u76d8\u7a7a\u95f4":4,"\u5fc5\u987b\u540c\u65f6\u4f20zone":4,"\u5fc5\u987b\u548czone\u5728\u540c\u4e00region":4,"\u5fc5\u987b\u5728mysql\u96c6\u7fa4\u4e2d\u552f\u4e00":4,"\u5fc5\u987b\u586b\u5199":4,"\u5fc5\u987b\u586btrue":4,"\u5fc5\u987b\u5927\u4e8e\u5f00\u59cb\u65f6\u95f4":4,"\u5fc5\u987b\u662f10gb\u7684\u6574\u6570\u500d":4,"\u5fc5\u987b\u8981\u5e26\u4e0a\u548ctype\u76f8\u540c\u7684\u540e\u7f00":4,"\u5fc5\u987b\u8bbe\u7f6e":4,"\u5fd9\u65f6\u6d41\u91cf":4,"\u5feb\u6770\u666e\u901adb\u5347\u7ea7\u4e3a\u9ad8\u53ef\u7528":4,"\u5feb\u6770\u673a\u578b":4,"\u5feb\u7167":4,"\u5feb\u7167\u540d\u79f0":4,"\u5feb\u7167\u5907\u4efd\u5373\u7269\u7406\u5907\u4efd":4,"\u5feb\u7167\u5907\u4efd\u5907\u4efd\u9ed1\u540d\u5355\u4e0b\u65e0\u6548":4,"\u5feb\u7167\u5f53\u524d\u78c1\u76d8\u652f\u6301\u7684\u5907\u4efd\u6a21\u5f0f\u53c2\u8003":4,"\u5feb\u7167\u63cf\u8ff0":4,"\u5feb\u7167\u670d\u52a1":4,"\u5feb\u7167\u7248\u672c":4,"\u5feb\u7167\u72b6\u6001":4,"\u5feb\u7167\u7684\u6e90udisk\u7684id":4,"\u5feb\u7167\u7684\u6e90udisk\u7684nam":4,"\u5feb\u7167\u7684udisk\u7684id":4,"\u5feb\u7167id":4,"\u5ffd\u7565":4,"\u5ffd\u7565\u65f6\u95f4\u90e8\u5206":4,"\u5ffd\u7565backuporiginip":4,"\u6027\u80fd\u578b\u6587\u4ef6\u7cfb\u7edfsize\u6700\u5c0f\u4e3a100gb":4,"\u603b\u4ef7\u683c":4,"\u603b\u6570":4,"\u603b\u6570\u636e\u91cf\u5927\u5c0f\u4e0d\u8d85\u591a16k":4,"\u603b\u6570\u636e\u91cf\u5927\u5c0f\u4e0d\u8d85\u8fc7":4,"\u603b\u662f":4,"\u603b\u6761\u76ee\u6570":4,"\u603b\u6d41\u91cf\u547d\u4e2d\u7387":4,"\u603b\u7248\u672c\u4e2a\u6570":4,"\u603b\u7684\u4ed3\u5e93\u6570\u91cf":4,"\u603b\u7684\u6570\u636e\u76d8\u5b58\u50a8\u7a7a\u95f4":4,"\u603b\u91cf":4,"\u603b\u91cf\u7684\u6bd4\u4f8b":4,"\u603bip\u6570":4,"\u6062\u590d\u4e2d":4,"\u6062\u590d\u5230\u67d0\u4e2a\u65f6\u95f4\u70b9\u7684\u65f6\u95f4\u6233":4,"\u6062\u590d\u5931\u8d25":4,"\u60a8\u53ef\u4ee5\u5c06\u4e00\u4e2a\u5b50\u7f51\u4e0b\u7684\u67d0\u53f0\u4e91\u4e3b\u673a\u6620\u5c04\u5230\u67d0\u4e2a\u7279\u5b9a\u7684eip\u4e0a":4,"\u610f\u4e49\u4e3a0":4,"\u610f\u4e49\u5206":4,"\u6162\u65e5\u5fd7":4,"\u6210\u529f":4,"\u6210\u529f\u63d0\u4ea4\u77ed\u4fe1":4,"\u6210\u529f\u63d0\u4ea4\u77ed\u4fe1\u6570\u5927\u4e8e0\u65f6":4,"\u6210\u529f\u65f6\u4e3a":4,"\u6210\u5458\u5217\u8868\u7684\u504f\u79fb\u91cf":4,"\u6210\u5458\u5217\u8868\u7684\u6700\u5927\u6570\u91cf":4,"\u6210\u5458\u540d\u5b57":4,"\u6210\u5458\u5730\u5740":4,"\u6210\u5458\u603b\u6570":4,"\u6210\u5458\u624b\u673a":4,"\u6210\u5458\u90ae\u7bb1":4,"\u6210\u5458qq":4,"\u6211\u7231\u5317\u4eac":4,"\u6216":4,"\u6216\u4ece\u4f01\u4e1a\u7248\u964d\u7ea7\u4e3a\u57fa\u7840\u7248":4,"\u6216\u666e\u901a\u78c1\u76d8":4,"\u6216\u767b\u5f55\u7528\u6237\u4e2d\u5fc3\u67e5\u770b":4,"\u6216\u8005":4,"\u6216\u8005\u4e0d\u586b":4,"\u6216\u8005\u4e3a\u7a7a":4,"\u6216\u8005\u5168\u91cf":4,"\u6216\u8005\u5206\u5e03\u5f0fmemcach":4,"\u6216\u8005\u5355\u673amemcach":4,"\u6216\u8005\u628a\u8bc1\u4e66":4,"\u6216\u8005\u9700\u8981\u83b7\u53d6\u66f4\u5feb\u7684\u8fc1\u79fb\u901f\u5ea6\u65f6\u53ef\u4ee5\u4f7f\u7528":4,"\u6216\u8005master":4,"\u6216bind":4,"\u6216uphost":4,"\u622a\u6b62\u6709\u6548\u65f6\u95f4":4,"\u6240\u521b\u5efa\u5e26\u5bbd\u5305\u7684\u8d44\u6e90id":4,"\u6240\u521b\u5efa\u9879\u76ee\u7684id":4,"\u6240\u5728\u53ef\u7528\u533a":4,"\u6240\u5728\u673a\u623f":4,"\u6240\u5c5e\u4e1a\u52a1\u7ec4":4,"\u6240\u5c5e\u5206\u7247\u96c6\u7fa4\u7684id":4,"\u6240\u5c5e\u533a\u57df":4,"\u6240\u5c5e\u5730\u533a":4,"\u6240\u5c5e\u5730\u57df":4,"\u6240\u5c5e\u5b50\u7f51":4,"\u6240\u5c5e\u7684\u4e1a\u52a1\u7ec4id":4,"\u6240\u5c5e\u7684\u5b50\u7f51id":4,"\u6240\u5c5e\u7684ulb\u5b9e\u4f8b\u7684\u8d44\u6e90id":4,"\u6240\u5c5e\u7684vpc":4,"\u6240\u5c5e\u7684vpc\u8d44\u6e90id":4,"\u6240\u5c5evoc\u540d\u5b57":4,"\u6240\u5c5evpc":4,"\u6240\u5c5evpc\u540d\u5b57":4,"\u6240\u5c5evpc\u7684\u8d44\u6e90id":4,"\u6240\u5c5evpcid":4,"\u6240\u5c5evpn\u7f51\u5173id":4,"\u6240\u5c5evserverid":4,"\u6240\u5e94\u7528\u8d44\u6e90id":4,"\u6240\u6709\u6570\u636e\u76d8\u4ef7\u683c":4,"\u6240\u6709\u7528\u6237\u603b\u5171\u7684\u6700\u5927\u8fde\u63a5\u6570":4,"\u6240\u6709\u7b26\u5408\u6761\u4ef6\u7684uhost\u5b9e\u4f8b":4,"\u6240\u6709n\u7684\u4e2a\u6570\u5fc5\u987b\u4e00\u81f4":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u670d\u52a1\u5668\u6240\u5728\u7684\u5b50\u7f51":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u670d\u52a1\u5668\u6240\u5728\u7684vpc":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u670d\u52a1\u5668\u7684\u8d44\u6e90\u5b9e\u4f8bip":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u5728ulb\u4e2d\u7684\u5bf9\u8c61id":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u670d\u52a1\u7aef\u53e3":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u7684\u7c7b\u578b":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aef\u8d44\u6e90\u7684\u8d44\u6e90id":4,"\u6240\u6dfb\u52a0\u7684\u540e\u7aefrs\u6743\u91cd":4,"\u6240\u6dfb\u52a0\u7684ssl\u8bc1\u4e66\u7c7b\u578b":4,"\u6240\u7ed1\u5b9a\u5f39\u6027ip\u7684\u8d44\u6e90id":4,"\u6240\u7ed1\u5b9aulb\u5b9e\u4f8bid":4,"\u6240\u7ed1\u5b9avserver\u5b9e\u4f8bid":4,"\u6240\u91ca\u653e\u5f39\u6027ip\u5fc5\u987b\u4e3a\u975e\u7ed1\u5b9a\u72b6\u6001":4,"\u6240\u9700\u4fee\u6539\u7684\u539f":4,"\u624b\u52a8":4,"\u624b\u673a\u53f7":4,"\u624b\u673a\u53f7\u7801":4,"\u624b\u673a\u53f7\u7801\u5217\u8868":4,"\u624d\u8fd4\u56de\u8be5\u5b57\u6bb5":4,"\u6253\u5f00":4,"\u6269\u5bb9\u540e\u7684\u72b6\u6001":4,"\u6269\u5bb9\u5b9e\u4f8b\u8d44\u6e90\u65f6\u7684\u5fc5\u4f20\u53c2\u6570":4,"\u6269\u5bb9\u5dee\u4ef7":4,"\u6269\u5bb9\u65f6\u7684\u5206\u7247\u76ee\u6807\u5bb9\u91cf\u5927\u5c0f":4,"\u6269\u5bb9\u8d44\u6e90\u65f6":4,"\u6269\u5c55\u53f7\u7801":4,"\u6269\u7f29\u5bb9\u65f6":4,"\u6269\u7f29\u5bb9\u65f6\u7684\u5fc5\u4f20\u53c2\u6570":4,"\u6279\u91cf\u521b\u5efa\u4e0d\u4f1a\u8fd4\u56de":4,"\u6279\u91cf\u5237\u65b0\u7f13\u5b58":4,"\u6279\u91cf\u53d1\u9001\u5185\u5bb9":4,"\u6279\u91cf\u83b7\u53d6\u52a0\u901f\u57df\u540d\u914d\u7f6e":4,"\u628aufile\u7684\u955c\u50cf\u6587\u4ef6\u5bfc\u5165\u5230uhost":4,"\u6296\u52a8":4,"\u6298\u6263\u540e\u4ef7\u683c":4,"\u62a2\u5360\u5f0f\u5b9e\u4f8b":4,"\u62a5\u6587\u8f6c\u53d1":4,"\u62a5\u6587\u8f6c\u53d1\u4e0b\u6709":4,"\u62a5\u6587\u8f6c\u53d1\u578btcp\u534f\u8bae\u4ec5\u652f\u6301port":4,"\u62a5\u6587\u8f6c\u53d1\u6a21\u5f0f\u4e0d\u652f\u6301udock":4,"\u62a5\u6587\u8f6c\u53d1\u7684vserver\u4e0b\u8868\u793a\u56de\u8bdd\u4fdd\u6301\u7684\u65f6\u95f4":4,"\u62c9\u53d6\u56de\u6536\u7ad9\u4e2d\u4e91\u786c\u76d8\u5217\u8868":4,"\u62c9\u53d6\u6240\u6709\u673a\u623f\u7684\u914d\u7f6e\u6587\u4ef6":4,"\u62c9\u53d6\u955c\u50cf":4,"\u62c9\u53d6\u955c\u50cf\u5931\u8d25":4,"\u62c9\u53d6udredis\u5206\u7247\u4fe1\u606f":4,"\u62c9\u53d6udredis\u6240\u6709\u7684\u4ee3\u7406\u4fe1\u606f":4,"\u62c9\u53d6uinfluxdb\u5b9e\u4f8b\u5217\u8868":4,"\u62d2\u6536\u56det":4,"\u62d2\u7edd":4,"\u6302\u8f7d\u4e2d":4,"\u6302\u8f7d\u70b9":4,"\u6302\u8f7d\u7684\u8bbe\u5907\u540d\u79f0":4,"\u6302\u8f7d\u7684host\u5b9e\u4f8bid":4,"\u6302\u8f7d\u7684host\u7684id":4,"\u6302\u8f7d\u7684host\u7684ip":4,"\u6302\u8f7d\u7684host\u7684nam":4,"\u6302\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u6302\u8f7d\u7684uhost\u5b9e\u4f8bid":4,"\u6302\u8f7d\u7684uhost\u7684id":4,"\u6302\u8f7d\u7684uhost\u7684ip":4,"\u6302\u8f7d\u7684uhost\u7684nam":4,"\u6302\u8f7d\u8bbe\u5907\u540d\u79f0":4,"\u6302\u8f7d\u8def\u5f84":4,"\u6307\u505c\u6b62\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u7684uhost\u5b9e\u4f8b":4,"\u6307\u5411vpn\u7f51\u5173\u7684\u8def\u7531":4,"\u6307\u5b9a\u4e91\u4e3b\u673a":4,"\u6307\u5b9a\u4e91\u76d8\u521b\u5efa\u5230\u5bf9\u5e94\u7684rdma\u96c6\u7fa4":4,"\u6307\u5b9a\u4ece\u65b9\u821f\u514b\u9686\u7684\u5907\u4efd\u65f6\u95f4\u70b9":4,"\u6307\u5b9a\u4ece\u65b9\u821f\u6062\u590d\u7684\u5907\u4efd\u65f6\u95f4\u70b9":4,"\u6307\u5b9a\u5185\u7f51ip\u521b\u5efa":4,"\u6307\u5b9a\u5206\u9875\u53c2\u6570":4,"\u6307\u5b9a\u5b9e\u4f8bid\u8fd4\u56de\u5355\u4e2a\u5b9e\u4f8b":4,"\u6307\u5b9a\u5e93mysql":4,"\u6307\u5b9a\u6309\u9879\u76ee\u67e5\u8be2":4,"\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3":4,"\u6307\u5b9a\u662f\u5426\u662f\u5426\u4f7f\u7528ssd":4,"\u6307\u5b9a\u83b7\u53d6\u7684\u72b6\u6001\u7801\u662f\u8fb9\u7f18\u8fd8\u662f\u4e0a\u5c42":4,"\u6307\u5b9a\u8868citi":4,"\u6307\u5b9aclasstyp":4,"\u6307\u5b9adbid\u65f6\u65e0\u9700\u586b\u5199classtyp":4,"\u6307\u5b9adbid\u7528\u4e8e\u83b7\u53d6\u8be5db\u7684\u4fe1\u606f":4,"\u6307\u5b9aid\u7684\u8bdd":4,"\u6307\u5b9aip":4,"\u6307\u5b9aip\u5206\u914d":4,"\u6307\u5b9aoffset":4,"\u6307\u5b9arssd\u4e91\u76d8\u514b\u9686\u5230\u5bf9\u5e94\u7684rdma\u96c6\u7fa4":4,"\u6307\u5b9asubnetid\u65f6\u5fc5\u586b":4,"\u6307\u5b9avip\u6240\u5c5e\u7684vpc":4,"\u6307\u5b9avpn\u8fde\u63a5\u7684\u5ba2\u6237\u7f51\u6bb5":4,"\u6307\u5b9avpn\u8fde\u63a5\u7684\u672c\u5730\u5b50\u7f51":4,"\u6307\u5b9avpn\u8fde\u63a5\u7684\u672c\u5730\u5b50\u7f51\u7684\u8d44\u6e90id":4,"\u6307\u5b9avpn\u8fde\u63a5\u7684\u672c\u5730\u5b50\u7f51\u7684id":4,"\u6307\u5f53\u524d\u81ea\u5b9a\u4e49\u955c\u50cf\u7684\u6765\u6e90\u955c\u50cf":4,"\u63091\u5206\u949f":4,"\u63095\u5206\u949f\u7c92\u5ea6":4,"\u6309\u4ea7\u54c1\u7ef4\u5ea6\u805a\u5408":4,"\u6309\u4ea7\u54c1\u805a\u5408":4,"\u6309\u5206\u949f\u7c92\u5ea6":4,"\u6309\u5929":4,"\u6309\u5929\u7c92\u5ea6":4,"\u6309\u5b50\u8d26\u53f7\u7ef4\u5ea6\u805a\u5408":4,"\u6309\u5b50\u8d26\u53f7\u805a\u5408":4,"\u6309\u5c0f\u65f6":4,"\u6309\u5c0f\u65f6\u4ed8\u8d39":4,"\u6309\u5c0f\u65f6\u4ed8\u8d39\u548c\u8bd5\u7528\u8fd9\u4e24\u79cd\u4ed8\u8d39\u6a21\u5f0f\u9700\u8981\u5f00\u901a\u6743\u9650":4,"\u6309\u5c0f\u65f6\u540e\u4ed8\u8d39":4,"\u6309\u5c0f\u65f6\u7c92\u5ea6":4,"\u6309\u5c0f\u65f6\u8d2d\u4e70":4,"\u6309\u5c0f\u65f6\u9884\u4ed8\u8d39":4,"\u6309\u5e74":4,"\u6309\u5e74\u4ed8\u8d39":4,"\u6309\u63a5\u5165\u7aef\u53e3\u5220\u9664":4,"\u6309\u65f6":4,"\u6309\u65f6\u4ed8\u8d39":4,"\u6309\u65f6\u548c\u6309\u5e74\u4ed8\u8d39\u8be5\u53c2\u6570\u5fc5\u987b\u5927\u4e8e0":4,"\u6309\u6708":4,"\u6309\u6708\u4ed8\u8d39":4,"\u6309\u6708\u540e\u4ed8\u8d39":4,"\u6309\u6708\u6536\u8d39":4,"\u6309\u7167\u6240\u6709\u8bf7\u6c42\u5904\u7406\u8282\u70b9\u7684\u603b\u5185\u5b58\u5bb9\u91cf\u548ccpu\u6838\u6570\u91cd\u65b0\u8ba1\u8d39\u5982\u4e0b\u72b6\u6001\u7684uddb\u5b9e\u4f8b\u53ef\u4ee5\u8fdb\u884c\u8fd9\u4e2a\u64cd\u4f5c":4,"\u6309\u7701\u4efd\u8fd0\u8425\u5546\u83b7\u53d6\u57df\u540d\u5e26\u5bbd\u6570\u636e":4,"\u6309\u7701\u4efd\u8fd0\u8425\u5546\u83b7\u53d6\u57df\u540d\u8bf7\u6c42\u6570":4,"\u6309\u79d2\u540e\u4ed8\u8d39":4,"\u6309\u9700":4,"\u6309\u9700\u4ed8\u8d39":4,"\u6309\u9879\u76ee\u7ef4\u5ea6\u805a\u5408":4,"\u6309\u9879\u76ee\u805a\u5408":4,"\u6392\u961f\u4e2d":4,"\u63a5\u5165\u7aef\u53e3":4,"\u63a5\u53d7":4,"\u63a5\u53e3\u4fe1\u606f":4,"\u63a5\u53e3\u83b7\u5f97":4,"\u63a7\u5236\u5668id":4,"\u63a9\u7801":4,"\u63cf\u8ff0":4,"\u63cf\u8ff0\u5de5\u4f5c\u6d41\u5b9a\u4e49\u7684base64\u5b57\u7b26\u4e32":4,"\u63cf\u8ff0\u8bfb\u5199\u5206\u79bb\u529f\u80fd\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u63cf\u8ff0uinfluxdb\u6570\u636e\u5e93":4,"\u63d0\u4ea4\u4efb\u52a1\u65f6\u8fd4\u56de\u7684\u4efb\u52a1id":4,"\u63d0\u4ea4\u9884\u53d6\u4efb\u52a1":4,"\u63d0\u5347\u4e3a\u72ec\u5e93\u8fdb\u884c\u4e2d":4,"\u63d0\u793a\u4fe1\u606f":4,"\u63d0\u9ad8":4,"\u63d2\u4ef6\u521b\u5efa\u51fa\u7684":4,"\u63d2\u4ef6\u521b\u5efa\u7684":4,"\u642d\u914d\u4f7f\u7528":4,"\u64cd\u4f5c\u51fa\u9519\u65f6\u7684\u63d0\u793a\u4fe1\u606f":4,"\u64cd\u4f5c\u540d\u79f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u540d\u79f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u5e73\u53f0":4,"\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u522b":4,"\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b":4,"\u64cd\u4f5c\u7cfb\u7edf\u8be6\u7ec6\u7248\u672c":4,"\u652f\u4ed8\u5468\u671f":4,"\u652f\u4ed8\u65b9\u5f0f":4,"\u652f\u4ed8\u72b6\u6001":4,"\u652f\u4ed8\u7c7b\u578b":4,"\u652f\u6301":4,"\u652f\u6301\u4e24\u79cd\u7c7b\u578b":4,"\u652f\u6301\u4e24\u7c7b\u64cd\u4f5c":4,"\u652f\u6301\u4ee5\u6570\u7ec4\u7684\u65b9\u5f0f":4,"\u652f\u6301\u5173\u673a\u4e0d\u6536\u8d39":4,"\u652f\u6301\u5206\u9875":4,"\u652f\u6301\u5730\u57df":4,"\u652f\u6301\u591a\u4e2a\u6e90\u7ad9ip":4,"\u652f\u6301\u591a\u503c\u4f20\u5165":4,"\u652f\u6301\u591a\u7b5b\u9009":4,"\u652f\u6301\u6309\u8bc1\u4e66\u540d\u79f0":4,"\u652f\u6301\u6b63\u5219":4,"\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f":4,"\u652f\u6301\u7248\u672c\u5982\u4e0b":4,"\u652f\u6301\u7528\u6237\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u652f\u6301\u7684\u5730\u57df":4,"\u652f\u6301\u7684\u673a\u578b":4,"\u652f\u6301\u7684\u7aef\u53e3\u8303\u56f4\u4e3a1":4,"\u652f\u6301\u901a\u8fc7ip\u67e5\u8be2":4,"\u652f\u6301cloutinit\u65b9\u5f0f\u521d\u59cb\u5316":4,"\u652f\u6301https\u63a5\u5165https\u56de\u6e90":4,"\u652f\u6301instanc":4,"\u652f\u6301iptables\u548cipv":4,"\u652f\u6301udpn\u7684\u5730\u57df\u4e4b\u4e00":4,"\u652f\u6301wss\u63a5\u5165wss\u56de\u6e90":4,"\u6536\u655b\u7b56\u7565":4,"\u6536\u8d39\u7248\u672c\u7aef\u53e3\u8303\u56f4":4,"\u6539":4,"\u6539\u53d8\u5206\u5e03\u5f0f\u6570\u636e\u5e93\u6570\u636e\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b\u4e2a\u6570\u6bcf\u4e00\u4e2auddb\u7684\u6570\u636e\u8282\u70b9\u8d1f\u8d23\u5904\u7406\u6240\u6709\u7684\u5199\u5165\u8bf7\u6c42":4,"\u6539\u53d8\u53ea\u8bfb\u5b9e\u4f8b\u6570\u91cf\u4e2d":4,"\u6539\u6807\u5fd7":4,"\u6539\u914d\u6210\u529f\u7684\u78c1\u76d8id":4,"\u653e\u5165\u56de\u6536\u7ad9":4,"\u653e\u5728\u53f7\u7801\u524d\u9762":4,"\u653f\u5e9c":4,"\u6570\u503c\u5bf9\u5e94\u7684\u7248\u672c\u5982\u4e0b":4,"\u6570\u5b57":4,"\u6570\u5b57\u4ee5\u53ca":4,"\u6570\u5b57\u4ee5\u53ca\u7b26\u53f7":4,"\u6570\u5b57\u548c\u7b26\u53f7":4,"\u6570\u5b57\u7b49\u90fd\u8ba1\u4e3a1\u4e2a\u5b57":4,"\u6570\u5b57\u8868\u793adh\u7ec4":4,"\u6570\u5b57\u8d8a\u5927\u4f18\u5148\u7ea7\u8d8a\u9ad8":4,"\u6570\u636e":4,"\u6570\u636e\u4e2d\u5fc3\u540d\u79f0":4,"\u6570\u636e\u4e2d\u5fc3id":4,"\u6570\u636e\u4ed3\u5e93":4,"\u6570\u636e\u4f20\u8f93":4,"\u6570\u636e\u4fdd\u7559\u7b56\u7565":4,"\u6570\u636e\u504f\u79fb\u91cf":4,"\u6570\u636e\u5206\u7247\u72b6\u6001":4,"\u6570\u636e\u5206\u9875\u503c":4,"\u6570\u636e\u5e93":4,"\u6570\u636e\u5e93\u540d":4,"\u6570\u636e\u5e93\u540d\u79f0":4,"\u6570\u636e\u5e93\u5730\u57df":4,"\u6570\u636e\u5e93\u578b":4,"\u6570\u636e\u5e93\u5ba1\u8ba1":4,"\u6570\u636e\u5e93\u63cf\u8ff0":4,"\u6570\u636e\u5e93\u6570\u636e\u4fdd\u7559\u7b56\u7565":4,"\u6570\u636e\u5e93\u7248\u672c":4,"\u6570\u636e\u5e93\u72b6\u6001":4,"\u6570\u636e\u5e93\u7c7b\u578b":4,"\u6570\u636e\u65b9\u821f":4,"\u6570\u636e\u65b9\u821f\u6a21\u5f0f":4,"\u6570\u636e\u7684\u8bfb\u64cd\u4f5c\u53ef\u4ee5\u7531\u6570\u636e\u53ea\u8bfb\u5b9e\u4f8b\u8fdb\u884c\u5206\u62c5":4,"\u6570\u636e\u76d8":4,"\u6570\u636e\u76d8\u5355\u5757\u76d820":4,"\u6570\u636e\u76d8\u5927\u5c0f":4,"\u6570\u636e\u76d8\u662f20":4,"\u6570\u636e\u76d8\u662f\u5426\u9700\u8981\u81ea\u52a8\u5206\u533a\u6302\u8f7d":4,"\u6570\u636e\u76d8\u7c7b\u578b":4,"\u6570\u636e\u78c1\u76d8\u5927\u5c0f":4,"\u6570\u636e\u8282\u70b9":4,"\u6570\u636e\u8282\u70b9\u4e2a\u6570":4,"\u6570\u636e\u8282\u70b9\u7684\u5185\u5b58\u914d\u7f6e":4,"\u6570\u636e\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b\u4e2a\u6570":4,"\u6570\u636e\u8282\u70b9\u7684\u78c1\u76d8\u5927\u5c0f\u914d\u7f6e":4,"\u6570\u636e\u8282\u70b9id":4,"\u6570\u636e\u8fc1\u79fb":4,"\u6570\u636e\u96c6\u6210":4,"\u6570\u636e\u96c6\u6210\u65f6\u8be5\u53c2\u6570\u624d\u6709\u6548":4,"\u6570\u636e\u96c6\u6210\u65f6\u8fc1\u79fb\u540e\u7684":4,"\u6570\u636e\u96c6\u6210\u65f6\u9700\u8981\u8fc1\u79fb\u7684":4,"\u6570\u7ec4":4,"\u6570\u7ec4\u542b\u6709\u4e0b\u5217\u5143\u7d20\u503c":4,"\u6570\u7ec4\u7b49\u90fd\u8ba1\u4e3a\u4e00\u4e2a\u5b57":4,"\u6570\u91cf":4,"\u6570\u9519\u8bef":4,"\u6574\u4f53\u547d\u4e2d":4,"\u6587\u4ef6\u5185\u5bb9":4,"\u6587\u4ef6\u5217\u8868\u8d77\u59cb":4,"\u6587\u4ef6\u5217\u8868\u957f\u5ea6":4,"\u6587\u4ef6\u540d":4,"\u6587\u4ef6\u5927\u5c0f\u4e0d\u8d85\u8fc74":4,"\u6587\u4ef6\u7248\u672c":4,"\u6587\u4ef6\u7c7b\u578b":4,"\u6587\u4ef6\u7cfb\u7edf\u5141\u8bb8\u521b\u5efa\u7684\u6700\u5927\u6302\u8f7d\u70b9\u6570\u76ee":4,"\u6587\u4ef6\u7cfb\u7edf\u521b\u5efa\u65f6\u95f4":4,"\u6587\u4ef6\u7cfb\u7edf\u534f\u8bae":4,"\u6587\u4ef6\u7cfb\u7edf\u540d\u79f0":4,"\u6587\u4ef6\u7cfb\u7edf\u5907\u6ce8\u4fe1\u606f":4,"\u6587\u4ef6\u7cfb\u7edf\u5927\u5c0f":4,"\u6587\u4ef6\u7cfb\u7edf\u5b58\u50a8\u7c7b\u578b":4,"\u6587\u4ef6\u7cfb\u7edf\u5f53\u524d\u4f7f\u7528\u5bb9\u91cf":4,"\u6587\u4ef6\u7cfb\u7edf\u603b\u6570":4,"\u6587\u4ef6\u7cfb\u7edf\u6240\u5c5e\u4e1a\u52a1\u7ec4":4,"\u6587\u4ef6\u7cfb\u7edf\u6269\u5bb9":4,"\u6587\u4ef6\u7cfb\u7edf\u6302\u8f7d\u70b9\u72b6\u6001":4,"\u6587\u4ef6\u7cfb\u7edf\u8fc7\u671f\u65f6\u95f4":4,"\u6587\u4ef6\u7cfb\u7edfid":4,"\u6587\u672c":4,"\u6587\u672c\u4e3atxt":4,"\u6587\u672c\u4f7f\u7528txt\u6587\u4ef6":4,"\u65ad\u5f00":4,"\u65ad\u7535":4,"\u65ad\u7535\u7269\u7406\u4e91\u4e3b\u673a":4,"\u65b0":4,"\u65b0\u52a0\u5761":4,"\u65b0\u589e\u548c\u5220\u9664\u89c4\u5219":4,"\u65b0\u5bc6\u7801\u5b57\u7b26\u4e32":4,"\u65b0\u5efa\u5ba2\u6237vpn\u7f51\u5173\u7684\u8d44\u6e90id":4,"\u65b0\u5efavpc\u4e92\u901a\u5173\u7cfb":4,"\u65b0\u5efavpn\u7f51\u5173\u540d\u79f0":4,"\u65b0\u5efavpn\u7f51\u5173\u6240\u5c5evpc\u7684\u8d44\u6e90id":4,"\u65b0\u5efavpn\u7f51\u5173\u7684\u8d44\u6e90id":4,"\u65b0\u673a\u623f\u53ea\u63d0\u4f9bssd\u8d44\u6e90":4,"\u65b0\u7684\u5185\u5b58":4,"\u65b0\u7684\u540d\u79f0":4,"\u65b0\u7684\u6570\u636e\u8282\u70b9\u4e2a\u6570":4,"\u65b0\u7684\u6570\u636e\u8282\u70b9\u7684\u5185\u5b58\u914d\u7f6e":4,"\u65b0\u7684\u6570\u636e\u8282\u70b9\u7684\u78c1\u76d8\u5927\u5c0f\u914d\u7f6e":4,"\u65b0\u7684\u6838\u6570":4,"\u65b0\u7684\u6a21\u677f\u5185\u5bb9":4,"\u65b0\u7684\u6a21\u677f\u540d\u79f0":4,"\u65b0\u7684\u77ed\u4fe1\u7b7e\u540d\u5185\u5bb9":4,"\u65b0\u7684ip\u5730\u5740\u548c\u65e7ip\u5730\u5740\u5fc5\u987b\u5c5e\u4e8e\u7edf\u4e00\u5b50\u7f51":4,"\u65b0\u89d2\u8272\u540d\u79f0":4,"\u65b0\u914d\u7f6e\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u65b0\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"\u65b9\u821f":4,"\u65d7\u8230\u7248":4,"\u65e0":4,"\u65e0\u4ee3\u8868\u6b63\u5e38\u521b\u5efa":4,"\u65e0\u5907\u4efd":4,"\u65e0\u5907\u4efd\u65b9\u5f0f":4,"\u65e0\u5e93\u5b58":4,"\u65e0\u5feb\u7167\u5219\u4e0d\u8fd4\u56de\u8be5\u5b57\u6bb5":4,"\u65e0\u6548":4,"\u65e0\u70ed\u5907":4,"\u65e0\u8d22\u52a1\u6743\u9650":4,"\u65e0\u9700\u586b\u5199":4,"\u65e0\u9700\u7b49\u5f85\u5b9e\u4f8b\u6b63\u5e38\u5173\u95ed":4,"\u65e0id":4,"\u65e595\u518d\u53d6\u5e73\u5747":4,"\u65e5\u5747\u5cf0\u503c\u4e4b\u548c":4,"\u65e5\u5fd7\u5305id":4,"\u65e5\u5fd7\u65f6\u95f4unixtim":4,"\u65e5\u5fd7\u7c7b\u578b":4,"\u65e5\u671f":4,"\u65e7":4,"\u65f6":4,"\u65f6\u4ed8\u7684\u4ef7\u683c\u7ec4\u5408\u96c6":4,"\u65f6\u4efb\u52a1\u4e3a":4,"\u65f6\u6307\u5b9a\u5065\u5eb7\u68c0\u67e5\u53d1\u9001\u8bf7\u6c42\u65f6\u7684\u8def\u5f84":4,"\u65f6\u6307\u5b9a\u5065\u5eb7\u68c0\u67e5\u53d1\u9001\u8bf7\u6c42\u65f6http":4,"\u65f6\u63d0\u4f9b\u8be6\u7ec6\u7684\u63cf\u8ff0\u4fe1\u606f":4,"\u65f6\u65e0\u9700\u6b64\u53c2\u6570":4,"\u65f6\u6709\u6548":4,"\u65f6\u6b64\u53c2\u6570\u5fc5\u586b":4,"\u65f6\u83b7\u53d6\u5df2\u652f\u4ed8\u8d26\u5355":4,"\u65f6\u83b7\u53d6\u5f85\u652f\u4ed8\u8d26\u5355":4,"\u65f6\u83b7\u53d6\u8d26\u5355\u603b\u89c8\u62a5\u8868":4,"\u65f6\u95f4":4,"\u65f6\u95f4\u6233":4,"\u65f6\u95f4\u6233\u683c\u5f0f1629357838":4,"\u65f6\u95f4\u7c92\u5ea6":4,"\u65f6\u95f4\u7c92\u5ea60":4,"\u65f6\u95f4\u9608\u503c":4,"\u65f6\u95f4\u9619\u503c":4,"\u65f6\u9700\u8981\u586b\u5199":4,"\u662f":4,"\u662f\u5426\u4e3a\u4e3b\u8d26\u53f7":4,"\u662f\u5426\u4e3a\u540e\u4ed8\u8d39\u5b9e\u4f8b":4,"\u662f\u5426\u4e3a\u9ed8\u8ba4\u9879\u76ee":4,"\u662f\u5426\u4e3abackup":4,"\u662f\u5426\u4e3abackup0":4,"\u662f\u5426\u4e3b\u8d26\u53f7":4,"\u662f\u5426\u4f18\u5148\u9075\u5faa\u6e90\u7ad9\u5934\u90e8\u7f13\u5b58\u7b56\u7565":4,"\u662f\u5426\u4f7f\u7528\u5f3a\u5236\u624b\u6bb5\u5173\u95eddb":4,"\u662f\u5426\u4f7f\u7528\u9ed1\u540d\u5355\u5907\u4efd":4,"\u662f\u5426\u4f7f\u7528ssd":4,"\u662f\u5426\u4fdd\u7559\u539f\u6709\u6570\u636e":4,"\u662f\u5426\u4fdd\u7559\u6570\u636e\u76d8":4,"\u662f\u5426\u4fdd\u7559\u6570\u636e\u76d8\u6570\u636e":4,"\u662f\u5426\u5141\u8bb8\u5916\u7f51\u8bbf\u95eeapiserv":4,"\u662f\u5426\u5141\u8bb8\u591a\u70b9\u6302\u8f7d":4,"\u662f\u5426\u5141\u8bb8pod\u8c03\u5ea6\u5230\u8be5\u8282\u70b9":4,"\u662f\u5426\u521b\u5efa\u4f7f\u7528ipv6":4,"\u662f\u5426\u5220\u9664\u8282\u70b9\u6302\u8f7d\u7684\u6570\u636e\u76d8":4,"\u662f\u5426\u52a0\u5bc6":4,"\u662f\u5426\u53ea\u8fd4\u56de\u4e91\u76d8\u57fa\u7840\u4fe1\u606f":4,"\u662f\u5426\u53ef\u66f4\u6539":4,"\u662f\u5426\u5728\u5168\u91cf\u8fc7\u7a0b\u4e2d":4,"\u662f\u5426\u5b58\u5728\u81ea\u5b9a\u4e49\u57df\u540d":4,"\u662f\u5426\u5c06\u5feb\u7167\u670d\u52a1":4,"\u662f\u5426\u5c5e\u4e8e\u5730\u57df\u7ea7\u522b":4,"\u662f\u5426\u5df2\u8ba1\u8d39":4,"\u662f\u5426\u5f00\u542f\u540e\u4ed8\u8d39":4,"\u662f\u5426\u5f00\u542f\u5f02\u6b65\u9ad8\u53ef\u7528":4,"\u662f\u5426\u5f00\u542f\u5feb\u7167\u670d\u52a1":4,"\u662f\u5426\u5f00\u542f\u6570\u636e\u65b9\u821f":4,"\u662f\u5426\u5f00\u542f\u9ad8\u53ef\u7528":4,"\u662f\u5426\u5f00\u542fpfs\u529f\u80fd":4,"\u662f\u5426\u5f3a\u5236":4,"\u662f\u5426\u5f3a\u5236\u5bfc\u51fa\u5176\u4ed6\u5269\u4f59\u6570\u636e\u9ed8\u8ba4\u662ffalse\u9700\u8981\u540c\u65f6\u8bbe\u7f6ebackupdate\u5b57\u6bb5":4,"\u662f\u5426\u5ffd\u7565":4,"\u662f\u5426\u5ffd\u7565\u5feb\u7167\u670d\u52a1\u4fe1\u606f":4,"\u662f\u5426\u5ffd\u7565\u8ba1\u8d39\u4fe1\u606f":4,"\u662f\u5426\u6253\u5f00\u9ed8\u8ba4\u5907\u4efd\u529f\u80fd":4,"\u662f\u5426\u62e5\u6709\u53ea\u8bfbslave":4,"\u662f\u5426\u6388\u6743":4,"\u662f\u5426\u652f\u6301\u514b\u9686":4,"\u662f\u5426\u652f\u6301\u5f00\u542f\u65b9\u821f":4,"\u662f\u5426\u652f\u6301\u5feb\u7167":4,"\u662f\u5426\u652f\u6301\u6570\u636e\u65b9\u821f":4,"\u662f\u5426\u652f\u6301\u7d27\u6025\u767b\u5f55":4,"\u662f\u5426\u652f\u6301gpu":4,"\u662f\u5426\u652f\u6301raid":4,"\u662f\u5426\u662f\u4ef2\u88c1\u8282\u70b9":4,"\u662f\u5426\u662f\u52a0\u5bc6\u76d8":4,"\u662f\u5426\u662f\u52a0\u5bc6\u76d8\u5feb\u7167":4,"\u662f\u5426\u662f\u542f\u52a8\u76d8":4,"\u662f\u5426\u662f\u5730\u57df\u7ea7\u522b\u7684\u914d\u7f6e\u6587\u4ef6":4,"\u662f\u5426\u662f\u7cfb\u7edf\u76d8":4,"\u662f\u5426\u662f\u8d22\u52a1\u8d26\u53f7":4,"\u662f\u5426\u662f\u8de8\u673a\u623furedi":4,"\u662f\u5426\u663e\u793a0\u5143\u8ba2\u5355":4,"\u662f\u5426\u663e\u793a\u5df2\u5165\u8d26\u8d26\u5355":4,"\u662f\u5426\u6709\u8d22\u52a1\u6743\u9650":4,"\u662f\u5426\u6709natgw":4,"\u662f\u5426\u67e5\u770b\u4e13\u533a\u91cc\u9762db":4,"\u662f\u5426\u6b20\u8d39":4,"\u662f\u5426\u7528\u6237\u5f53\u524d\u9ed8\u8ba4\u6570\u636e\u4e2d\u5fc3":4,"\u662f\u5426\u7981\u6b62\u8c03\u5ea6":4,"\u662f\u5426\u7ed1\u5b9a\u5916\u7f51ip":4,"\u662f\u5426\u7ed1\u5b9anatgw":4,"\u662f\u5426\u7f13\u5b58":4,"\u662f\u5426\u81ea\u52a8\u5907\u4efd":4,"\u662f\u5426\u81ea\u52a8\u7eed\u8d39":4,"\u662f\u5426\u8de8\u53ef\u7528\u533a":4,"\u662f\u5426\u8df3\u8fc7\u9884\u68c0\u67e5\u5f3a\u5236\u5347\u7ea7":4,"\u662f\u5426\u8fc7\u671f":4,"\u662f\u5426\u8fd4\u56de\u4ef7\u683c":4,"\u662f\u5426\u8fd4\u56de\u5b50\u7f51\u7684\u53ef\u7528ip\u6570":4,"\u662f\u5426\u9009\u53d6\u4e13\u533a\u4e2d\u914d\u7f6e":4,"\u662f\u5426\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"\u662f\u5426\u9501\u4e3b\u5e93":4,"\u662f\u5426\u9700\u8981\u5916\u7f51ip":4,"\u662f\u5426\u9700\u8981\u81ea\u52a8\u5907\u4efd":4,"\u662f\u5426\u9ed8\u8ba4\u7684\u5f39\u6027\u7f51\u5361\u7684\u4fe1\u606f":4,"\u662f\u5728":4,"\u662f\u6240\u6709":4,"\u662f\u6570\u636e\u76d8":4,"\u662f\u7cfb\u7edf\u76d8":4,"\u662f\u9ed8\u8ba4\u5f39\u6027\u7f51\u5361":4,"\u662f\u9ed8\u8ba4\u7f51\u5361":4,"\u663e\u793a":4,"\u663e\u793a\u5931\u8d25\u539f\u56e0":4,"\u663e\u793a\u6570\u91cf":4,"\u663e\u793amemcach":4,"\u666e\u901a":4,"\u666e\u901a\u4e1a\u52a1":4,"\u666e\u901a\u5347\u7ea7\u4e3a\u65b9\u821f\u673a\u578b":4,"\u666e\u901a\u5355\u70b9\u5b9e\u4f8b":4,"\u666e\u901a\u5355\u70b9\u5b9e\u4f8bha":4,"\u666e\u901a\u5e26\u5bbd\u7c7b\u578b":4,"\u666e\u901a\u5feb\u7167":4,"\u666e\u901a\u6570\u636e\u76d8":4,"\u666e\u901a\u7248udb\u5b9e\u4f8b":4,"\u666e\u901a\u7cfb\u7edf\u76d8":4,"\u666e\u901adb\u5347\u7ea7\u4e3a\u9ad8\u53ef\u7528":4,"\u666e\u901ars1":4,"\u666e\u901audb\u5207\u6362\u4e3a\u9ad8\u53ef\u7528":4,"\u667a\u80fd\u7f51\u5361\u53ef\u4ee5\u9009\u62e925g":4,"\u667a\u80fd\u7f51\u5361\u7f51\u7edc":4,"\u6682\u4e0d\u652f\u6301":4,"\u6682\u65f6\u53ea\u652f\u6301\u4e2d\u56fd\u5927\u9646\u53f7\u7801":4,"\u6682\u65f6\u53ea\u6709":4,"\u6682\u65f6\u652f\u630120":4,"\u6682\u65f6\u652f\u630120g":4,"\u6682\u65f6\u672a\u4f7f\u7528\u8be5\u5b57\u6bb5":4,"\u6682\u672a\u4f7f\u7528":4,"\u6682\u672a\u5bf9\u5916\u5f00\u653e":4,"\u66f4\u6539\u7269\u7406\u673a\u4fe1\u606f":4,"\u66f4\u6539\u7684unix\u65f6\u95f4\u6233":4,"\u66f4\u6539\u7684vpn\u7f51\u5173\u89c4\u683c":4,"\u66f4\u6539acl":4,"\u66f4\u6539bucket\u7684\u5c5e\u6027":4,"\u66f4\u6539uifluxdb\u5b9e\u4f8b\u540d\u79f0":4,"\u66f4\u6539uinfluxdb\u5b9e\u4f8b\u6570\u636e\u5e93\u6570\u636e\u4fdd\u7559\u7b56\u7565":4,"\u66f4\u6539vpn\u7f51\u5173\u89c4\u683c":4,"\u66f4\u65b0\u4ee4\u724c\u7684\u64cd\u4f5c\u6743\u9650":4,"\u66f4\u65b0\u5165\u53e3\u767d\u540d\u5355":4,"\u66f4\u65b0\u5185\u5bb9\u8f6c\u53d1\u89c4\u5219":4,"\u66f4\u65b0\u5b50\u7f51\u4fe1\u606f":4,"\u66f4\u65b0\u5f39\u6027ip\u540d\u79f0":4,"\u66f4\u65b0\u6307\u5b9a\u7684\u51fa\u53e3\u89c4\u5219":4,"\u66f4\u65b0\u63d2\u4ef6\u4fe1\u606f":4,"\u66f4\u65b0\u8def\u7531\u8868\u57fa\u672c\u4fe1\u606f":4,"\u66f4\u65b0\u955c\u50cf\u4ed3\u5e93":4,"\u66f4\u65b0\u9632\u706b\u5899\u4fe1\u606f":4,"\u66f4\u65b0\u9632\u706b\u5899\u540d\u79f0\u53ca\u63cf\u8ff0":4,"\u66f4\u65b0\u9632\u706b\u5899\u89c4\u5219":4,"\u66f4\u65b0acl\u7684\u89c4\u5219":4,"\u66f4\u65b0deploy":4,"\u66f4\u65b0nat\u7f51\u5173\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219":4,"\u66f4\u65b0nat\u7f51\u5173\u7ed1\u5b9a\u7684\u5b50\u7f51":4,"\u66f4\u65b0pod":4,"\u66f4\u65b0udb\u914d\u7f6e\u53c2\u6570\u9879":4,"\u66f4\u65b0ulb\u540d\u5b57\u4e1a\u52a1\u7ec4\u5907\u6ce8\u7b49\u5c5e\u6027\u5b57\u6bb5":4,"\u66f4\u65b0ulb\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u66f4\u65b0vip\u4fe1\u606f":4,"\u66f4\u65b0vpc\u7f51\u6bb5":4,"\u66f4\u65b0vpn\u96a7\u9053\u5c5e\u6027":4,"\u66f4\u65b0vserver\u5b9e\u4f8b\u5c5e\u6027":4,"\u6700\u4f4ecpu\u5e73\u53f0":4,"\u6700\u53f3\u8fb9\u7684\u4e00\u4f4d":4,"\u6700\u53f3\u8fb9\u7684\u4e00\u4f4d\u4e3a\u661f\u671f\u5929\u7684\u5907\u4efd\u5f00\u5173":4,"\u6700\u540e\u4e00\u6b21\u4e0a\u62a5\u72b6\u6001\u7684\u65f6\u95f4":4,"\u6700\u540e\u4e00\u6b21\u72b6\u6001\u8f6c\u53d8\u65f6\u95f4":4,"\u6700\u540e\u4e00\u6b21\u767b\u5f55\u65f6\u95f4":4,"\u6700\u540e\u8bbf\u95ee\u7684\u673a\u623f":4,"\u6700\u591a5\u7ec4":4,"\u6700\u591a\u53ef\u4ee5\u521b\u5efa10\u4e2arp":4,"\u6700\u591a\u53ef\u586b\u519910\u4e2a":4,"\u6700\u591a\u53ef\u586b\u519920\u4e2a":4,"\u6700\u591a\u53ef\u62c9\u53d630\u5929":4,"\u6700\u591a\u6269\u5c55\u523012\u4e2a\u8282\u70b9":4,"\u6700\u591a\u652f\u6301":4,"\u6700\u591a\u652f\u6301\u4e94\u7ec4":4,"\u6700\u5927100":4,"\u6700\u59271000":4,"\u6700\u592710000000":4,"\u6700\u5927400":4,"\u6700\u5927\u4e0d\u8d85\u8fc720t":4,"\u6700\u5927\u4e3a":4,"\u6700\u5927\u503c":4,"\u6700\u5927\u503c400":4,"\u6700\u5927\u503c\u53d7\u5730\u57df\u9650\u5236":4,"\u6700\u5927\u503c\u8bf7\u53c2\u8003":4,"\u6700\u5927\u521b\u5efanode\u8282\u70b9\u6570\u91cf":4,"\u6700\u5927\u57df\u540d\u6570\u91cf":4,"\u6700\u5927\u5931\u8d25\u91cd\u8bd5\u6b21\u6570":4,"\u6700\u5927\u5e26\u5bbd\u7531":4,"\u6700\u5927\u6570\u91cf":4,"\u6700\u5927\u6570\u91cf\u4e3a10\u53f0":4,"\u6700\u5927\u65f6\u95f4\u95f4\u969430\u5929":4,"\u6700\u5927\u8fd4\u56de\u6761\u6570":4,"\u6700\u5c0f1mbp":4,"\u6700\u5c0f\u8fde\u63a5\u6570":4,"\u6700\u65b0\u503c\u53c2\u8003consol":4,"\u6700\u65b0push\u7684tag":4,"\u6700\u8fd15\u5206\u949f\u5e26\u5bbd\u7528\u91cf":4,"\u6700\u8fd1\u4e00\u6b21\u6570\u636e\u8fc1\u79fb\u4efb\u52a1id":4,"\u670895\u8ba1\u8d39":4,"\u6708\u4ed8":4,"\u6708\u4ed8\u65f6":4,"\u6708\u6570\u6216\u5e74\u6570":4,"\u6708\u6570\u6216\u8005\u5e74\u6570":4,"\u6708\u65e5\u5747\u5cf0\u503c":4,"\u6708\u7b2c\u56db\u5cf0\u503c":4,"\u6709\u5220\u6743\u9650\u7684\u4ea7\u54c1\u5217\u8868":4,"\u6709\u589e\u6743\u9650\u7684\u4ea7\u54c1\u5217\u8868":4,"\u6709\u591a\u4e2a\u53c2\u6570\u65f6":4,"\u6709\u5e93\u5b58":4,"\u6709\u5f02\u5e38":4,"\u6709\u6539\u6743\u9650\u7684\u4ea7\u54c1\u5217\u8868":4,"\u6709\u6548\u65f6\u95f45min":4,"\u6709\u67e5\u6743\u9650\u7684\u4ea7\u54c1\u5217\u8868":4,"\u6709\u6b64\u9879\u4ee3\u8868\u4ece\u5907\u4efd\u4e2d\u521b\u5efa":4,"\u6709\u8d22\u52a1\u6743\u9650":4,"\u6709\u9519\u8bef\u65f6\u8fd4\u56de\u5185\u5bb9":4,"\u6709ipv6\u7279\u6027":4,"\u670d\u52a1\u540d\u79f0":4,"\u670d\u52a1\u7f51\u6bb5":4,"\u670d\u52a1\u8282\u70b9":4,"\u670d\u52a1id":4,"\u670d\u52a1root\u8d26\u53f7\u7684\u5bc6\u7801":4,"\u672a\u5206\u7ec4\u663e\u793a\u4e3a":4,"\u672a\u542f\u7528":4,"\u672a\u5b9a\u578b":4,"\u672a\u5f00\u542f":4,"\u672a\u5f00\u542f\u65b9\u821f":4,"\u672a\u5f00\u542f\u70ed\u5347\u7ea7":4,"\u672a\u62c6\u5206":4,"\u672a\u6307\u5b9a\u5b9e\u4f8bid\u65f6":4,"\u672a\u6fc0\u6d3b":4,"\u672a\u77e5":4,"\u672a\u7ed1\u5b9a":4,"\u672a\u7ed1\u5b9a\u7684\u5f39\u6027ip\u603b\u6570":4,"\u672a\u7ed1\u5b9a\u7ebf\u8def\u60c5\u51b5\u65f6":4,"\u672a\u80fd\u6210\u529f\u53d1\u9001\u7684\u8be6\u60c5":4,"\u672a\u8fc7\u671f":4,"\u672a\u9009\u62e9\u8ba1\u8d39\u65b9\u5f0f":4,"\u672c\u5730\u76d8":4,"\u672c\u5730\u78c1\u76d8":4,"\u672c\u5b57\u6bb5\u5373\u5c06\u5e9f\u5f03":4,"\u672c\u6b21\u5907\u4efd":4,"\u672c\u6b21\u63a5\u53e3\u8c03\u7528\u8bf7\u6c42id":4,"\u672c\u6b21\u63d0\u4ea4\u53d1\u9001\u4efb\u52a1\u7684\u552f\u4e00id":4,"\u672c\u6b21\u63d0\u4ea4\u53d1\u9001\u7684\u77ed\u4fe1\u7684\u552f\u4e00id":4,"\u672c\u6b21\u63d0\u4ea4\u53d1\u9001\u8bed\u97f3\u7684\u552f\u4e00id":4,"\u672c\u6b21\u63d0\u4ea4\u7684\u81ea\u5b9a\u4e49\u4e1a\u52a1\u6807\u8bc6id":4,"\u672c\u6b21\u63d0\u4ea4url\u5bf9\u5e94\u7684\u4efb\u52a1id":4,"\u672c\u6b21\u6700\u5927\u521b\u5efa\u4e3b\u673a\u6570\u91cf":4,"\u672c\u6b21\u8bf7\u6c42uuid":4,"\u672c\u6b21\u8c03\u7528taskid":4,"\u672c\u7aef\u6807\u8bc6":4,"\u672cvpc\u5185\u90e8\u901a\u4fe1\u8def\u7531":4,"\u673a\u5173\u4e8b\u4e1a\u5355\u4f4d":4,"\u673a\u5668\u578b\u53f7":4,"\u673a\u5668\u5916\u7f51ip\u96c6\u5408":4,"\u673a\u5668\u7c7b\u578b":4,"\u673a\u578b":4,"\u673a\u578b\u7c7b\u522b":4,"\u673a\u578b\u7c7b\u578b\u4e3a\u4e91\u4e3b\u673a":4,"\u673a\u623f\u53ef\u521b\u5efa\u8282\u70b9\u6700\u5927\u6570\u91cf":4,"\u673a\u623f\u540d\u79f0":4,"\u673a\u623f\u8fd0\u8425\u5546\u540d\u79f0":4,"\u673a\u623fid":4,"\u6743\u91cd\u4e3a100\u7684\u4e3a\u51fa\u53e3":4,"\u6743\u91cd\u6700\u5927\u7684\u4e3a\u5f53\u524d\u7684\u51fa\u53e3ip":4,"\u6743\u9650":4,"\u6761\u6570":4,"\u6765\u6e90\u4e8e":4,"\u679a\u4e3e\u503c":4,"\u679a\u4e3e\u503c\u4e3a":4,"\u679a\u4e3e\u503c\u4e3amaster":4,"\u679a\u4e3e\u503c\u4e3atrue\u6216fals":4,"\u679a\u4e3e\u503c\u4e3auhost\u6216uphost":4,"\u679a\u4e3e\u7c7b\u578b":4,"\u67e5":4,"\u67e5\u770b\u65e5\u6d88\u8d39\u62a5\u8868":4,"\u67e5\u770b\u670d\u52a1\u72b6\u6001":4,"\u67e5\u770b\u914d\u989d\u4f7f\u7528\u62a5\u8868":4,"\u67e5\u770b\u914d\u989d\u72b6\u6001":4,"\u67e5\u8be2\u4e00\u4e2a\u6216\u591a\u4e2a\u5bc6\u94a5\u5bf9":4,"\u67e5\u8be2\u4e3b\u5907redi":4,"\u67e5\u8be2\u4e3b\u5907redis\u5907\u4efd":4,"\u67e5\u8be2\u4e3b\u5907redis\u6240\u6709\u914d\u7f6e\u6587\u4ef6":4,"\u67e5\u8be2\u5206\u5e03\u5f0fredis\u5907\u4efd":4,"\u67e5\u8be2\u5230\u7684\u603b\u6570\u91cf":4,"\u67e5\u8be2\u5230\u7684\u65e5\u5fd7\u5185\u5bb9":4,"\u67e5\u8be2\u533a\u57df":4,"\u67e5\u8be2\u53d1\u751f\u7684\u65f6\u95f4":4,"\u67e5\u8be2\u547d\u4ee4":4,"\u67e5\u8be2\u5e26\u5bbd\u533a\u57df":4,"\u67e5\u8be2\u5e26\u5bbd\u7684\u8d77\u59cb\u65f6\u95f4":4,"\u67e5\u8be2\u5f00\u59cb\u65f6\u95f4":4,"\u67e5\u8be2\u5f00\u59cb\u65f6\u95f4\u65f6\u95f4\u6233":4,"\u67e5\u8be2\u65e5\u5fd7\u7684\u7c7b\u578berror":4,"\u67e5\u8be2\u65e5\u5fd7\u7684\u7ed3\u675f\u65f6\u95f4\u6233":4,"\u67e5\u8be2\u65f6\u95f4\u671f\u95f4\u768495\u5e26\u5bbd\u65f6\u95f4\u70b9":4,"\u67e5\u8be2\u671f\u95f4\u7684cdn\u768495\u5e26\u5bbd\u503c":4,"\u67e5\u8be2\u67d0\u4e00\u4e2a\u7c7b\u578bdb":4,"\u67e5\u8be2\u67d0\u4e00\u6bb5\u65f6\u95f4\u5185udb\u7684\u9519\u8bef\u65e5\u5fd7\u6216\u6162\u67e5\u8be2\u65e5\u5fd7":4,"\u67e5\u8be2\u6a21\u677f\u72b6\u6001\u4fe1\u606f":4,"\u67e5\u8be2\u6bcf\u65e5\u6d41\u91cf\u603b\u503c":4,"\u67e5\u8be2\u6d41\u91cf\u533a\u57df":4,"\u67e5\u8be2\u6d88\u8017\u7684\u65f6\u95f4":4,"\u67e5\u8be2\u767b\u5f55\u4e0eapi\u8c03\u7528\u7684\u7f51\u7edc\u63a9\u7801":4,"\u67e5\u8be2\u7684\u65e5\u5fd7\u5f00\u59cb\u7684\u65f6\u95f4\u6233":4,"\u67e5\u8be2\u7684\u7ed3\u675f\u65e5\u671f":4,"\u67e5\u8be2\u7684\u7ed3\u675f\u65f6\u95f4":4,"\u67e5\u8be2\u7684\u8d77\u59cb\u65e5\u671f":4,"\u67e5\u8be2\u7684\u8d77\u59cb\u65f6\u95f4":4,"\u67e5\u8be2\u76d1\u63a7\u7684\u6307\u6807\u9879":4,"\u67e5\u8be2\u786c\u4ef6\u9694\u79bb\u7ec4\u5217\u8868":4,"\u67e5\u8be2\u7c92\u5ea6":4,"\u67e5\u8be2\u7ed3\u675f\u65f6\u95f4":4,"\u67e5\u8be2\u7ed3\u675f\u65f6\u95f4\u65f6\u95f4\u6233":4,"\u67e5\u8be2\u7edf\u8ba1\u65e5\u5fd7\u7684\u7ed3\u675f\u65f6\u95f4":4,"\u67e5\u8be2\u8d77\u59cb\u65f6\u95f4":4,"\u67e5\u8be2\u9700\u8981\u652f\u4ed8\u7684\u4ef7\u683c":4,"\u67e5\u8be2ip\u4fe1\u606f":4,"\u67e5\u8be2secondaryip":4,"\u67e5\u8be2udredis\u6162\u65e5\u5fd7":4,"\u67e5\u8be2upath\u7684\u76d1\u63a7\u6a21\u677f":4,"\u67e5\u8be2uredis\u6162\u65e5\u5fd7":4,"\u6807\u51c6":4,"\u6807\u51c6\u4e3b\u5907\u7248":4,"\u6807\u51c6\u578b":4,"\u6807\u51c6\u5927\u5bb9\u91cf\u673a\u578b":4,"\u6807\u51c6\u5b58\u50a8\u91cf":4,"\u6807\u51c6\u673a\u578b":4,"\u6807\u51c6\u7248":4,"\u6807\u51c6\u955c\u50cf":4,"\u6807\u8bb0\u662f\u5426\u4e3a\u56fd\u9645\u77ed\u4fe1":4,"\u6807\u8bc6\u6b20\u8d39\u7684\u6570\u7ec4":4,"\u6838":4,"\u6838\u5219\u987b\u8f93\u5165":4,"\u6838\u6570":4,"\u6838\u67e5\u5931\u8d25\u4e0d\u8fd4\u56de":4,"\u6838\u67e5\u6210\u529f\u8fd4\u56de\u503c\u4e3a\u53ef\u4ee5\u56de\u6863\u5230\u7684\u6700\u8fd1\u65f6\u523b":4,"\u6838\u67e5db\u662f\u5426\u53ef\u4ee5\u4f7f\u7528\u56de\u6863\u529f\u80fd":4,"\u6838\u67e5db\u662f\u5426\u53ef\u4ee5\u5347\u7ea7\u4e3a\u9ad8\u53ef\u7528":4,"\u6839\u636e\u4e0d\u540c\u60c5\u5f62\u6765\u8c03\u6574\u4e3b\u5907redis\u5bb9\u91cf":4,"\u6839\u636e\u4f20\u5165\u7684hostid":4,"\u6839\u636e\u4f20\u5165\u7684hostidforattach":4,"\u6839\u636e\u4f20\u5165\u7684uhostid":4,"\u6839\u636e\u4f20\u5165\u7684uhostidforattach":4,"\u6839\u636e\u53c2\u6570\u7c7b\u578b":4,"\u6839\u636e\u63d0\u4f9b\u4fe1\u606f":4,"\u6839\u636e\u8282\u70b9\u6570\u800c\u5b9a":4,"\u6839\u636e\u8d44\u6e90\u4f7f\u7528\u91cf\u521b\u5efa\u6307\u5b9a\u6570\u91cf\u7684uphost\u7269\u7406\u4e91\u4e3b\u673a\u5b9e\u4f8b":4,"\u6839\u636e\u8fc7\u6ee4\u6761\u4ef6\u5f97\u5230\u7684\u603b\u6570":4,"\u6839\u636emonitortype\u786e\u8ba4":4,"\u6839\u636epersistencetype\u786e\u5b9a":4,"\u6839\u636epersistencetype\u786e\u8ba4":4,"\u6839\u636erfc4716\u5b9a\u4e49\u7684\u516c\u94a5\u6307\u7eb9\u683c\u5f0f":4,"\u6839\u636euddb\u5b9e\u4f8b\u7684\u60c5\u51b5":4,"\u6839\u636euhost\u5b9e\u4f8b\u914d\u7f6e":4,"\u6839\u636eus3\u7684\u8d2d\u4e70\u914d\u989d":4,"\u683c\u5f0f":4,"\u683c\u5f0f\u4e3a":4,"\u683c\u5f0f\u4e3a\u533a\u57df\u822a\u7a7a\u6e2f\u56fd\u9645\u901a\u7528\u4ee3\u7801":4,"\u683c\u5f0f\u4e3a\u963f\u62c9\u4f2f\u6570\u5b57\u4e32":4,"\u683c\u5f0f\u4e3ahttp":4,"\u683c\u5f0f\u4e3aunix":4,"\u683c\u5f0f\u4e3aunix\u65f6\u95f4\u6233":4,"\u683c\u5f0f\u548cfile\u7c7b\u4f3c":4,"\u683c\u5f0fuga":4,"\u683c\u5f0fupath":4,"\u68c0\u67e5\u4e2d":4,"\u68c0\u67e5\u4e3b\u5907redis\u7684\u8d44\u6e90\u662f\u5426\u8db3\u591f\u521b\u5efa\u65b0\u5b9e\u4f8b":4,"\u68c0\u67e5\u8d44\u6e90\u60c5\u51b5":4,"\u68c0\u67e5\u9ad8\u6027\u80fdumem\u5269\u4f59\u8d44\u6e90":4,"\u68c0\u67e5uinfluxdb\u5269\u4f59\u8d44\u6e90":4,"\u68c0\u6d4b\u7ed3\u679c":4,"\u6a21\u578b\u5b9a\u4e49":4,"\u6a21\u677f":4,"\u6a21\u677f\u4e2d\u7684\u53d8\u91cf\u586b\u5199\u683c\u5f0f":4,"\u6a21\u677f\u53c2\u6570":4,"\u6a21\u677f\u53ef\u53d8\u53c2\u6570":4,"\u6a21\u677f\u540d\u79f0":4,"\u6a21\u677f\u540d\u79f0\u548c\u6a21\u677f\u5185\u5bb9\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a":4,"\u6a21\u677f\u7c7b\u578b":4,"\u6a21\u677f\u8bf4\u660e":4,"\u6a21\u677fid":4,"\u6b21":4,"\u6b21\u6570":4,"\u6b21\u6570\u5360\u6bd4":4,"\u6b63\u5728\u505c\u6b62":4,"\u6b63\u5728\u5220\u9664":4,"\u6b63\u5728\u5904\u7406":4,"\u6b63\u5728\u91cd\u542f":4,"\u6b63\u5e38":4,"\u6b63\u5e38\u6267\u884c\u6269\u5bb9\u64cd\u4f5c":4,"\u6b63\u5e38\u8fd0\u884c":4,"\u6b63\u5e38\u8fd0\u884c\u4e2d":4,"\u6b63\u5e38\u8fd0\u884c\u4e2dabnorm":4,"\u6b63\u6570\u8868\u793a\u4ed8\u8d39\u5347\u7ea7":4,"\u6b64\u503c\u4e3a\u7a7a\u5b57\u7b26\u4e32":4,"\u6b64\u53c2\u6570\u4e0d\u5fc5\u586b\u5199":4,"\u6b64\u53c2\u6570\u4f200":4,"\u6b64\u53c2\u6570\u5fc5\u586b":4,"\u6b64\u53c2\u6570\u65e0\u6548":4,"\u6b64\u53c2\u6570\u9ed8\u8ba4\u4e3a":4,"\u6b64\u5904\u586b\u5199\u8f6c\u6362\u540e\u7684\u5b57\u7b26\u4e32":4,"\u6b64\u5904\u8fd4\u56de\u548cbasicimagename\u4e00\u81f4":4,"\u6b64\u5b57\u6bb5\u4e0d\u4e3a\u7a7a":4,"\u6b64\u5b57\u6bb5\u4e0d\u63a8\u8350\u4f7f\u7528":4,"\u6b64\u5b57\u6bb5\u4e3a\u7a7a":4,"\u6b64\u5b57\u6bb5\u4f20\u5165\u81ea\u5b9a\u4e49\u4f1a\u8bdd\u4fdd\u6301string":4,"\u6b64\u5b57\u6bb5\u5c55\u793a\u7528\u6237\u81ea\u5b9a\u4e49\u4f1a\u8bddstring":4,"\u6b64\u5b57\u6bb5\u65e0\u610f\u4e49":4,"\u6b64\u5b57\u6bb5\u6709\u610f\u4e49":4,"\u6b64\u63a5\u53e3\u9700\u8981\u5217\u51fa\u5168\u90e8\u89c4\u5219":4,"\u6b64\u6b21\u67e5\u8be2\u5230\u7684\u65e5\u5fd7\u7684\u4e0b\u4e00\u4e2a\u65f6\u95f4":4,"\u6b64\u9879\u4e3a\u5fc5\u4f20\u9879":4,"\u6b65\u957f":4,"\u6b65\u957f\u4e3a10":4,"\u6bcf\u4e00\u4e2a\u6570\u636e\u8282\u70b9\u53ef\u4ee5\u914d\u7f6e\u82e5\u5e72\u4e2a\u8be5\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b":4,"\u6bcf\u4e00\u4f4d\u4e3a\u4e00\u5468\u4e2d\u4e00\u5929\u7684\u5907\u4efd\u60c5\u51b5":4,"\u6bcf\u4e00\u9879\u662f\u7c7b\u4f3c":4,"\u6bcf\u4e2a":4,"\u6bcf\u4e2a\u4e2d\u6587":4,"\u6bcf\u4e2a\u5206\u7247\u4e00\u4e2a\u4e0b\u8f7durl":4,"\u6bcf\u4e2a\u57df\u540d\u5fc5\u987b\u4ee5":4,"\u6bcf\u4e2a\u5b50\u9879\u5185\u652f\u6301\u591a\u4e2a\u53f7\u7801":4,"\u6bcf\u4e2a\u6570\u636e\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b\u4e2a\u6570":4,"\u6bcf\u4e2a\u7528\u6237\u7684\u6700\u5927\u8fde\u63a5\u6570":4,"\u6bcf\u4e2a\u8282\u70b9\u7684\u5185\u5b58\u5927\u5c0f":4,"\u6bcf\u5468\u5907\u4efd\u6570\u91cf":4,"\u6bcf\u5468\u5fc5\u987b\u81f3\u5c11\u8bbe\u7f6e\u4e24\u5929\u5907\u4efd":4,"\u6bcf\u6761\u6570\u636e\u90fd\u505a\u4e86base64\u7f16\u7801":4,"\u6bcf\u6b21\u83b7\u53d6\u6570\u91cf":4,"\u6bcf\u6b21\u8bf7\u6c42\u6700\u591a\u652f\u6301100\u4e2a":4,"\u6bcf\u6b21\u8bf7\u6c42\u90fd\u4f1a\u8fd4\u56de":4,"\u6bcf\u79cd\u6587\u4ef6\u7684\u503c\u5982\u4e0b":4,"\u6bcf\u9875\u6570\u91cf":4,"\u6bd4\u5982":4,"\u6bd4\u59822021":4,"\u6bd4\u5982\u4ecefree\u7248\u672c\u5347\u7ea7\u4e3abasic\u7248\u6216enterprise\u7248":4,"\u6bd4\u5982cento":4,"\u6bd4\u8f83\u7b56\u7565":4,"\u6c34\u5e73\u6269\u5c55\u4e2d":4,"\u6c38\u4e0d":4,"\u6ca1\u6709\u7aef\u53e3\u8303\u56f4":4,"\u6ca1\u6709\u7c92\u5ea6":4,"\u6ca1\u6709ipv6\u7279\u6027":4,"\u6ca1\u6709slave":4,"\u6cc9\u5dde\u4e3a\u79fb\u52a8\u5355\u7ebfcn":4,"\u6cd5\u5170\u514b\u798f":4,"\u6ce8":4,"\u6ce8\u610f":4,"\u6ce8\u610f\u53ea\u6709ssd\u7248\u672c\u7684mysql\u5b9e\u4f8b\u652f\u6301\u8bbe\u7f6e\u4e3asnapshot":4,"\u6ce8\u610f\u73b0\u5728\u53ea\u6709ssd":4,"\u6d1b\u6749\u77f6":4,"\u6d3b\u8dc3\u7684\u96a7\u9053\u6570\u91cf":4,"\u6d41\u91cf":4,"\u6d41\u91cf\u4ed8\u8d39":4,"\u6d41\u91cf\u5360\u6bd4":4,"\u6d41\u91cf\u83b7\u53d6\u7684\u65f6\u95f4\u70b9":4,"\u6d41\u91cf\u8ba1\u8d39":4,"\u6d41\u91cf\u8ba1\u8d39\u6a21\u5f0f":4,"\u6d4b\u8bd5url":4,"\u6d77\u5916\u65e0\u6b64\u5b57\u6bb5":4,"\u6d77\u5916\u673a\u623f":4,"\u6d88\u606f\u63d0\u793a":4,"\u6d88\u8017\u77ed\u4fe1\u6761\u6570":4,"\u6df7\u5408\u4e91\u4e3b\u673a":4,"\u6df7\u5408\u4e91\u8def\u7531":4,"\u6dfb\u52a0":4,"\u6dfb\u52a0\u6210\u5458\u5230\u9879\u76ee":4,"\u6dfb\u52a0\u7684routeruleid\u586b\u4efb\u610f\u975e\u7a7a\u5b57\u7b26\u4e32":4,"\u6dfb\u52a0\u7f51\u6bb5\u8bf7\u53c2\u8003":4,"\u6dfb\u52a0\u8282\u70b9":4,"\u6dfb\u52a0\u8bc1\u4e66":4,"\u6dfb\u52a0nat\u7f51\u5173\u767d\u540d\u5355":4,"\u6dfb\u52a0nat\u7f51\u5173\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219":4,"\u6dfb\u52a0uk8s\u8282\u70b9\u6c60":4,"\u6dfb\u52a0ulb\u540e\u7aef\u8d44\u6e90\u5b9e\u4f8b":4,"\u6dfb\u52a0vpc\u7f51\u6bb5":4,"\u6e05\u7a7a\u7684db":4,"\u6e05\u9664\u4e3b\u5907redis\u6570\u636e":4,"\u6e05\u9664udb\u5b9e\u4f8b\u7684log":4,"\u6e05\u9664udredis\u5b9e\u4f8b\u6570\u636e":4,"\u6e20\u9053ucdn":4,"\u6e90":4,"\u6e90\u53c2\u6570\u7ec4id":4,"\u6e90\u5730\u5740":4,"\u6e90\u5b9e\u4f8b\u7684id":4,"\u6e90\u6570\u636e\u5e93":4,"\u6e90\u6570\u636e\u5e93\u5730\u5740":4,"\u6e90\u6570\u636e\u5e93\u5b50\u7f51":4,"\u6e90\u6570\u636e\u5e93\u5bc6\u7801":4,"\u6e90\u6570\u636e\u5e93\u7528\u6237\u540d":4,"\u6e90\u6570\u636e\u5e93\u7aef\u53e3":4,"\u6e90\u7ad9\u533a\u57df":4,"\u6e90\u7ad9\u534f\u8baehttp":4,"\u6e90\u7ad9\u57df\u540d":4,"\u6e90\u7ad9\u6240\u5728\u533a\u57df":4,"\u6e90\u7ad9\u670d\u52a1\u5668\u76d1\u542c\u7684ssh\u7aef\u53e3":4,"\u6e90\u7ad9\u670d\u52a1\u5668\u76d1\u542c\u7684ssh\u7aef\u53e3\u53f7":4,"\u6e90\u7ad9\u76d1\u542c\u7aef\u53e3":4,"\u6e90\u7ad9http\u5934\u5217\u8868":4,"\u6e90\u7ad9ip\u5217\u8868":4,"\u6e90\u7ad9ip\u5373cdn\u670d\u52a1\u5668\u56de\u6e90\u8bbf\u95ee\u7684ip\u5730\u5740":4,"\u6e90\u7aef\u53e3":4,"\u6e90\u7aef\u9650\u901f\u503c":4,"\u6e90\u7f51\u7edc\u7c7b\u578b":4,"\u6e90\u955c\u50cfid":4,"\u6e90ip":4,"\u6e90vpc\u6240\u5728\u5730\u57df":4,"\u6e90vpc\u6240\u5728\u9879\u76eeid":4,"\u6e90vpc\u77edid":4,"\u6ee1\u8db3\u6761\u4ef6\u5907\u4efd\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u57df\u540d\u4e2a\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5b9e\u4f8b\u7684\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5bb9\u5668\u7ec4\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5e26\u5bbd\u5305\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5f39\u6027ip\u5e26\u5bbd\u603b\u548c":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u5f39\u6027ip\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u673a\u623f\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u8282\u70b9\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u8282\u70b9\u6570\u91cf":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u8f6c\u53d1\u7b56\u7565\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u955c\u50cf\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684\u96c6\u7fa4\u6570\u91cf":4,"\u6ee1\u8db3\u6761\u4ef6\u7684phost\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684ssl\u8bc1\u4e66\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684ulb\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684vpn\u7f51\u5173\u603b\u6570":4,"\u6ee1\u8db3\u6761\u4ef6\u7684vserver\u603b\u6570":4,"\u6fc0\u6d3b\u72b6\u6001":4,"\u70ed\u5347\u7ea7":4,"\u70ed\u5347\u7ea7\u7279\u6027":4,"\u70ed\u5907":4,"\u7236\u9879\u76ee\u540d\u79f0":4,"\u7236\u9879\u76eeid":4,"\u7248\u672c":4,"\u7248\u672c\u4fe1\u606f\u8bf7\u53c2\u8003uk8s\u96c6\u7fa4\u521b\u5efa\u9875":4,"\u7248\u672c\u7684":4,"\u7248\u672c\u7c7b\u578b":4,"\u7269\u7406\u4e91\u4e3b\u673a":4,"\u7269\u7406\u4e91\u4e3b\u673a\u673a\u578b\u522b\u540d":4,"\u7269\u7406\u4e91\u4e3b\u673a\u72b6\u6001":4,"\u7269\u7406\u4e91\u4ea7\u54c1\u7c7b\u578b":4,"\u7269\u7406\u5907\u4efd":4,"\u7269\u7406\u5907\u4efd\u6b64\u53c2\u6570\u65e0\u6548":4,"\u7269\u7406\u673a":4,"\u7269\u7406\u673a\u53f0\u6570":4,"\u7269\u7406\u673a\u540d\u79f0":4,"\u7269\u7406\u673a\u5907\u6ce8":4,"\u7269\u7406\u673a\u5e8f\u5217\u53f7":4,"\u7269\u7406\u673a\u7248":4,"\u7269\u7406\u673a\u7c7b\u578b":4,"\u7269\u7406\u673a\u8282\u70b9\u4e2a\u6570":4,"\u7269\u7406\u673a\u8282\u70b9\u7684\u4e2a\u6570":4,"\u7269\u7406\u673a\u8d44\u6e90id":4,"\u7279\u6b8a\u72b6\u6001\u6807\u8bc6":4,"\u72b6\u6001":4,"\u72b6\u6001\u5217\u8868\u5982\u4e0b":4,"\u72b6\u6001\u53d8\u5316\u7684\u539f\u56e0":4,"\u72b6\u6001\u53d8\u5316\u7684\u63cf\u8ff0\u4fe1\u606f":4,"\u72b6\u6001\u53d8\u6210":4,"\u72b6\u6001\u62a5\u544a\u7f16\u7801":4,"\u72b6\u6001\u63cf\u8ff0":4,"\u72b6\u6001\u6709":4,"\u72b6\u6001\u672a\u77e5":4,"\u72b6\u6001\u679a\u4e3e\u503c":4,"\u72b6\u6001\u6807\u8bb0":4,"\u72b6\u6001\u7801\u6a21\u5f0f":4,"\u72b6\u6001\u7801\u7684\u63cf\u8ff0":4,"\u72b6\u6001\u8bf4\u660e":4,"\u73af\u5883\u53d8\u91cfkey\u503c":4,"\u73af\u5883\u53d8\u91cfvalue\u503c":4,"\u73b0\u4ef7":4,"\u73b0\u91d1\u8d26\u6237\u6263\u6b3e\u603b\u989d":4,"\u73b0\u91d1\u8d26\u6237\u652f\u4ed8":4,"\u751f\u4ea7\u73af\u5883\u5efa\u8bae\u5c0f\u4e8e\u7b49\u4e8e110":4,"\u751f\u6210\u7684":4,"\u751f\u6210\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u751f\u6210\u8d26\u5355\u6570\u636e\u6587\u4ef6\u4e0b\u8f7d\u7684":4,"\u751f\u6548\u65f6\u95f4":4,"\u7528\u4e8e\u4e0b\u4e00\u6b21\u8f6e\u8be2\u65f6\u7684begintime\u53c2\u6570":4,"\u7528\u4e8e\u5206\u914dclusterip":4,"\u7528\u4e8e\u521b\u5efa\u8de8\u53ef\u7528\u533a\u8bfb\u5199\u5206\u79bb\u7684\u4e00\u4e2a\u8282\u70b9":4,"\u7528\u4e8e\u5224\u65ad\u4e3b\u673a\u5220\u9664\u65f6\u662f\u5426\u8fdb\u5165\u56de\u6536\u7ad9":4,"\u7528\u4e8e\u57df\u540d\u521b\u5efa\u52a0\u901f\u65f6\u7684\u6d4b\u8bd5":4,"\u7528\u4e8e\u6807\u793a\u6dfb\u52a0\u5b8c\u8282\u70b9\u540e\u662f\u5426\u5c06\u8282\u70b9\u4e34\u65f6\u7981\u7528":4,"\u7528\u4e8e\u6d4b\u8bd5\u78c1\u76d8\u662f\u5426\u652f\u6301\u5728\u7ebf\u6269\u5bb9":4,"\u7528\u4e8e\u83b7\u53d6":4,"\u7528\u4e8e\u8bbe\u7f6ecname\u8bb0\u5f55":4,"\u7528\u4e8e\u95ee\u9898\u6392\u67e5":4,"\u7528\u4e8euk8s\u4f7f\u7528":4,"\u7528\u5206\u9694\u7b26\u8868\u793a":4,"\u7528\u5355\u5f15\u53f7\u5305\u542b":4,"\u7528\u6237\u4e0a\u4f20":4,"\u7528\u6237\u521b\u5efa\u52a0\u901f\u7684\u57df\u540d":4,"\u7528\u6237\u53ef\u5728uhost\u6216uphost\u5904\u4fee\u6539":4,"\u7528\u6237\u53ef\u628a\u4e1a\u52a1\u57df\u540dcname\u5230\u6b64\u57df\u540d\u4e0a":4,"\u7528\u6237\u53ef\u901a\u8fc7\u6307\u5b9a\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b":4,"\u7528\u6237\u53f7\u7801":4,"\u7528\u6237\u540d":4,"\u7528\u6237\u540d\u4e0b\u603b\u7684\u5907\u4efd\u4e2a\u6570":4,"\u7528\u6237\u540d\u79f0":4,"\u7528\u6237\u5728\u6b64\u6570\u636e\u4e2d\u5fc3\u7684\u6743\u9650\u4f4d":4,"\u7528\u6237\u6298\u540e\u4ef7":4,"\u7528\u6237\u7684\u8bc1\u4e66":4,"\u7528\u6237\u79c1\u94a5":4,"\u7528\u6237\u7eac\u5ea6\u83b7\u53d6\u67d0\u4e2a\u8d26\u671f\u5185\u8d26\u5355\u603b\u89c8\u4fe1\u606f":4,"\u7528\u6237\u7ec4":4,"\u7528\u6237\u81ea\u5b9a\u4e49":4,"\u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e":4,"\u7528\u6237\u81ea\u5b9a\u4e49\u6e90\u7ad9\u57df\u540d":4,"\u7528\u6237\u81ea\u5b9a\u4e49\u811a\u672c":4,"\u7528\u6237\u81ea\u5b9a\u4e49\u9632\u706b\u5899":4,"\u7528\u6237\u81ea\u5b9a\u4e49cdn\u52a0\u901f\u57df\u540d":4,"\u7528\u6237\u81ea\u5b9a\u4e49id":4,"\u7528\u6237\u81ea\u5b9a\u4e49kei":4,"\u7528\u6237\u81ea\u5b9a\u4e49shell\u811a\u672c":4,"\u7528\u6237\u81ea\u7b7e\u8bc1\u4e66\u5185\u5bb9":4,"\u7528\u6237\u8bbe\u7f6e\u7684\u6700\u5927\u5931\u8d25\u91cd\u8bd5\u6b21\u6570":4,"\u7528\u6237\u8bc1\u4e66":4,"\u7528\u6237\u8bc1\u4e66\u6216ca\u8bc1\u4e66\u7b49":4,"\u7528\u6237\u90ae\u7bb1":4,"\u7528\u6237db\u7ec4\u7684\u6570\u91cf":4,"\u7528\u9017\u53f7\u5206\u9694":4,"\u7531\u5b57\u6bcd":4,"\u7531\u6587\u672c":4,"\u7531\u7cfb\u7edf\u81ea\u52a8\u5206\u914d":4,"\u7533\u8bf7\u5185\u7f51vip":4,"\u7533\u8bf7\u5230\u7684":4,"\u7533\u8bf7\u5230\u7684eip\u8d44\u6e90id":4,"\u7533\u8bf7\u5230\u7684natgatewai":4,"\u7533\u8bf7\u5230\u7684vip\u5730\u5740":4,"\u7533\u8bf7\u5e76\u7ed1\u5b9a\u4e00\u4e2a\u6559\u80b2\u7f51eip":4,"\u7533\u8bf7\u5f39\u6027ip":4,"\u7533\u8bf7\u6570\u91cf":4,"\u7533\u8bf7\u7684\u6a21\u677fid":4,"\u7533\u8bf7\u89c6\u9891\u77ed\u4fe1\u6a21\u677f":4,"\u7535\u4fe1":4,"\u7535\u6e90\u72b6\u6001":4,"\u7535\u8bdd\u53f7\u7801\u6570\u7ec4":4,"\u7535\u8bdd\u53f7\u7801\u683c\u5f0f\u4e3a":4,"\u7545\u4eab\u7248":4,"\u7559\u7a7a\u8fd4\u56de\u5168\u90e8":4,"\u767b\u5f55\u5730\u5740":4,"\u767b\u5f55\u5bb9\u5668":4,"\u767b\u5f55\u5bc6\u7801":4,"\u767b\u5f55\u7aef\u53e3":4,"\u767b\u5f55\u7f51\u7edc\u63a9\u7801":4,"\u767d\u540d\u5355\u5f00\u5173\u6807\u8bb0":4,"\u767d\u540d\u5355\u89c4\u5219":4,"\u767d\u540d\u5355\u8d44\u6e90\u5217\u8868\u7684\u603b\u7684\u4e2a\u6570":4,"\u767d\u540d\u5355\u8d44\u6e90\u540d\u79f0":4,"\u767d\u540d\u5355\u8d44\u6e90\u6240\u5c5evpcid":4,"\u767d\u540d\u5355\u8d44\u6e90\u7684\u5185\u7f51ip":4,"\u767d\u540d\u5355\u8d44\u6e90\u7c7b\u578b":4,"\u767d\u540d\u5355\u8d44\u6e90id\u4fe1\u606f":4,"\u7684":4,"\u7684\u4e3b\u673a1":4,"\u7684\u5185\u5b58\u8bf7\u6c42\u91cf":4,"\u7684\u5185\u5b58\u8bf7\u6c42\u91cf\u5360\u5185\u5b58\u603b\u91cf\u7684\u6bd4\u4f8b":4,"\u7684\u5185\u5b58\u9650\u5236\u91cf":4,"\u7684\u5185\u5b58\u9650\u5236\u91cf\u5360\u5185\u5b58\u603b\u91cf\u7684\u6bd4\u4f8b":4,"\u7684\u552f\u4e00\u6807\u8bc6":4,"\u7684\u63cf\u8ff0":4,"\u7684\u6574\u6570":4,"\u7684\u6807\u7b7e":4,"\u7684\u6a21\u677f\u7ba1\u7406\u9875\u9762\u67e5\u770b":4,"\u7684\u6b63\u6574\u6570":4,"\u7684\u6c61\u70b9":4,"\u7684\u6ce8\u89e3":4,"\u7684\u7b7e\u540d\u7ba1\u7406\u9875\u9762\u67e5\u770b":4,"\u7684\u7c7b\u578b":4,"\u7684\u8d44\u6e90\u5217\u8868":4,"\u7684\u8d44\u6e90id":4,"\u7684\u9ad8\u53ef\u7528":4,"\u76d1\u542c\u5668\u7c7b\u578b":4,"\u76d1\u63a7\u6307\u6807\u540d\u79f0":4,"\u76d1\u63a7\u6570\u636e\u65f6\u95f4\u5e8f\u5217":4,"\u76d1\u63a7\u6570\u636e\u7c7b\u578b":4,"\u76d1\u63a7\u70b9\u6570\u503c":4,"\u76ee\u524d\u4e3b\u8981\u53ef\u7528\u533a":4,"\u76ee\u524d\u4e3b\u8981\u9488\u5bf9rssd\u4e91\u76d8":4,"\u76ee\u524d\u4e3b\u8981\u9488\u5bf9rssd\u4e91\u76d8\u4f7f\u7528":4,"\u76ee\u524d\u4ec5\u5141\u8bb8\u4ee5\u4e0b\u56db\u9879":4,"\u76ee\u524d\u4ec5\u652f\u6301":4,"\u76ee\u524d\u4ec5\u652f\u63011":4,"\u76ee\u524d\u4ec5\u652f\u6301\u9ed8\u8ba4\u914d\u7f6eid":4,"\u76ee\u524d\u4ec5\u652f\u6301normal":4,"\u76ee\u524d\u4ec5\u90e8\u5206\u53ef\u7528\u533a\u652f\u6301":4,"\u76ee\u524d\u5305\u542bnetenhnc":4,"\u76ee\u524d\u5317\u4eac2e\u4ec5\u6709a2":4,"\u76ee\u524d\u53ea\u652f\u6301\u56fd\u5185":4,"\u76ee\u524d\u53ea\u652f\u6301pem\u683c\u5f0f":4,"\u76ee\u524d\u652f\u6301":4,"\u76ee\u524d\u652f\u6301\u4ee5\u4e0b\u51e0\u6863":4,"\u76ee\u524d\u8fdb\u652f\u6301":4,"\u76ee\u524did\u7684\u53d6\u503c\u8303\u56f4\u4e3a":4,"\u76ee\u5f55\u8981\u4ee5":4,"\u76ee\u6807":4,"\u76ee\u6807\u4e91\u4e3b\u673a":4,"\u76ee\u6807\u5730\u57df":4,"\u76ee\u6807\u6570\u636e\u5e93":4,"\u76ee\u6807\u6570\u636e\u5e93\u5730\u5740":4,"\u76ee\u6807\u6570\u636e\u5e93\u5730\u57df":4,"\u76ee\u6807\u6570\u636e\u5e93\u5b50\u7f51":4,"\u76ee\u6807\u6570\u636e\u5e93\u5bc6\u7801":4,"\u76ee\u6807\u6570\u636e\u5e93\u7528\u6237\u540d":4,"\u76ee\u6807\u6570\u636e\u5e93\u7aef\u53e3":4,"\u76ee\u6807\u6570\u636e\u5e93\u7c7b\u578b":4,"\u76ee\u6807\u7aef\u53e3":4,"\u76ee\u6807\u7aef\u9650\u901f":4,"\u76ee\u6807\u955c\u50cf\u540d\u79f0":4,"\u76ee\u6807\u955c\u50cf\u63cf\u8ff0":4,"\u76ee\u6807\u955c\u50cfid":4,"\u76ee\u6807\u9879\u76eeid":4,"\u76ee\u6807ip":4,"\u76ee\u7684\u5730\u5740":4,"\u76ee\u7684\u7aef\u53e3":4,"\u76ee\u7684\u7f51\u6bb5":4,"\u76ee\u7684\u9879\u76eeid":4,"\u76ee\u7684vpc\u6240\u5728\u5730\u57df":4,"\u76ee\u7684vpc\u6240\u5728\u9879\u76eeid":4,"\u76ee\u7684vpc\u77edid":4,"\u76ee\u7684vpc\u9879\u76eeid":4,"\u76f4\u63a5\u5173\u95eduhost\u5b9e\u4f8b\u7535\u6e90":4,"\u76f8\u5173\u6570\u636e\u8282\u70b9\u7684\u72b6\u6001\u53d8\u6210":4,"\u7701\u4efd":4,"\u7701\u4efd\u4ee3\u7801":4,"\u7701\u4efd\u540d\u79f0":4,"\u7701\u4efd\u62fc\u97f3":4,"\u771f\u5b9e\u4e3b\u673aip":4,"\u77ed\u4fe1\u6269\u5c55\u7801":4,"\u77ed\u4fe1\u6a21\u677f\u5185\u5bb9":4,"\u77ed\u4fe1\u6a21\u677f\u540d\u79f0":4,"\u77ed\u4fe1\u6a21\u677f\u72b6\u6001":4,"\u77ed\u4fe1\u6a21\u677f\u7528\u9014\u7c7b\u578b":4,"\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u539f\u56e0\u8bf4\u660e":4,"\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u77ed\u4fe1\u6a21\u677f\u7981\u6b62\u4ec5\u5305\u62ec\u53d8\u91cf\u7684\u60c5\u51b5":4,"\u77ed\u4fe1\u6a21\u677fid":4,"\u77ed\u4fe1\u7b7e\u540d\u5185\u5bb9":4,"\u77ed\u4fe1\u7b7e\u540d\u6388\u6743\u59d4\u6258\u6587\u4ef6":4,"\u77ed\u4fe1\u7b7e\u540d\u6388\u6743\u59d4\u6258\u6587\u4ef6\u5185\u5bb9":4,"\u77ed\u4fe1\u7b7e\u540d\u6388\u6743\u59d4\u6258\u6587\u4ef6url":4,"\u77ed\u4fe1\u7b7e\u540d\u672a\u901a\u8fc7\u5ba1\u6838\u539f\u56e0":4,"\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u539f\u56e0":4,"\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u65f6\u7684\u5de5\u5355id":4,"\u77ed\u4fe1\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6":4,"\u77ed\u4fe1\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6\u5185\u5bb9":4,"\u77ed\u4fe1\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6url":4,"\u77ed\u4fe1\u7b7e\u540did":4,"\u77ed\u4fe1\u9a8c\u8bc1\u7801":4,"\u786c\u4ef6\u9694\u79bb\u7ec4\u540d\u79f0":4,"\u786c\u4ef6\u9694\u79bb\u7ec4\u603b\u6570":4,"\u786c\u4ef6\u9694\u79bb\u7ec4id":4,"\u786c\u76d8\u4f7f\u7528\u91cf":4,"\u786e\u4fddmaster\u8282\u70b9\u5f52\u5c5e\u4e8e\u4e0d\u540c\u7269\u7406\u673a":4,"\u78c1\u76d8\u540d\u79f0":4,"\u78c1\u76d8\u5907\u4efd\u65b9\u6848":4,"\u78c1\u76d8\u5927\u5c0f":4,"\u78c1\u76d8\u5bb9\u91cf":4,"\u78c1\u76d8\u5c5e\u6027":4,"\u78c1\u76d8\u6269\u5bb9\u540e\u65e0\u9700\u91cd\u542f\u64cd\u4f5c":4,"\u78c1\u76d8\u6570\u91cf":4,"\u78c1\u76d8\u662f\u5426\u52a0\u5bc6":4,"\u78c1\u76d8\u76d8\u7b26":4,"\u78c1\u76d8\u7a7a\u95f4":4,"\u78c1\u76d8\u7c7b\u578b":4,"\u78c1\u76d8\u957fid":4,"\u78c1\u76d8id":4,"\u78c1\u76d8io\u6027\u80fd":4,"\u793a\u4f8b":4,"\u793e\u4f1a\u4fe1\u7528\u4ee3\u7801\u8bc1\u4e66":4,"\u7981\u7528":4,"\u7981\u752822\u7aef\u53e3":4,"\u7981\u752865123":4,"\u7981\u752865123\u7aef\u53e3":4,"\u79c1\u6709\u4e13\u533a\u4e3b\u673a":4,"\u79c1\u94a5":4,"\u79c1\u94a5\u4e0d\u53ef\u4f7f\u7528\u5bc6\u7801":4,"\u79d2":4,"\u79fb\u51fa\u5171\u4eab\u5e26\u5bbd\u540e":4,"\u79fb\u9664\u786c\u4ef6\u9694\u79bb\u7ec4\u4e2d\u7684\u4e3b\u673a":4,"\u7a7a\u5b57\u7b26\u4e32":4,"\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"\u7a7a\u95f4\u540d\u79f0":4,"\u7a7a\u95f4\u7684\u5907\u4efdid":4,"\u7a7a\u95f4\u7c7b\u578b":4,"\u7aef\u53e3":4,"\u7aef\u53e3\u53f7":4,"\u7aef\u53e3\u68c0\u67e5":4,"\u7aef\u53e3\u8bbe\u7f6e\u6210\u52a0\u901f\u7aef\u53e3":4,"\u7aef\u53e3\u8f6c\u53d1\u524d\u7aefeip":4,"\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219id":4,"\u7aef\u53e3\u9519\u8bef\u5219\u89e3\u7ed1\u5931\u8d25":4,"\u7b26\u53f7":4,"\u7b26\u53f7\u5206\u9694":4,"\u7b26\u53f7\u5f00\u5934":4,"\u7b26\u53f7\u7ec4\u6210":4,"\u7b26\u5408\u6761\u4ef6\u7684\u5171\u4eab\u5e26\u5bbd\u603b\u6570":4,"\u7b26\u5408\u6761\u4ef6\u7684\u5ba2\u6237vpn\u7f51\u5173\u603b\u6570":4,"\u7b26\u5408\u6761\u4ef6\u7684\u603b\u6570":4,"\u7b26\u5408\u6761\u4ef6\u7684\u8bc1\u4e66\u603b\u6570":4,"\u7b26\u5408\u90fd\u8ba1\u4e3a\u4e00\u4e2a\u5b57":4,"\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3aip\u6216ip\u6bb5":4,"\u7b2c\u4e00\u4e2a\u53c2\u6570\u4ee3\u8868\u534f\u8bae":4,"\u7b2c\u4e09\u4e2a\u53c2\u6570\u4e3aip":4,"\u7b2c\u4e09\u4e2a\u53c2\u6570\u4ee3\u8868\u7aef\u53e3\u53f7\u6216\u7aef\u53e3\u8303\u56f4":4,"\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4ee3\u8868\u534f\u8bae":4,"\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4ee3\u8868\u7aef\u53e3\u53f7":4,"\u7b2c\u4e94\u4e2a\u53c2\u6570\u4f18\u5148\u7ea7":4,"\u7b2c\u516d\u4e2a\u53c2\u6570\u4e3a\u8be5\u6761\u89c4\u5219\u7684\u81ea\u5b9a\u4e49\u5907\u6ce8":4,"\u7b2c\u56db\u4e2a\u53c2\u6570\u4e3aaccept":4,"\u7b49":4,"\u7b49\u5f85\u5904\u7406":4,"\u7b56\u7565\u4f18\u5148\u7ea7":4,"\u7b5b\u9009\u51fa\u80fd\u88ab\u6302\u8f7d\u5728\u8be5\u4e3b\u673a\u4e0a\u7684\u4e91\u76d8":4,"\u7b5b\u9009\u9879":4,"\u7b7e\u540d":4,"\u7b7e\u540d\u5185\u5bb9":4,"\u7b7e\u540d\u5ba1\u6838\u5931\u8d25\u539f\u56e0":4,"\u7b7e\u540d\u6821\u9a8c\u5931\u8d25":4,"\u7b7e\u540d\u68c0\u9a8c\u5931\u8d25\u65f6":4,"\u7b7e\u540d\u72b6\u6001":4,"\u7b7e\u540d\u7528\u9014":4,"\u7b7e\u540d\u7684\u8d44\u8d28\u8bc1\u660e\u6587\u4ef6\u7c7b\u578b":4,"\u7b7e\u540d\u7c7b\u578b":4,"\u7b7e\u540did":4,"\u7b7e\u540did\u548c\u7b7e\u540d\u81f3\u5c11\u9700\u586b\u51991\u9879":4,"\u7b80\u79f0uddb\u5b9e\u4f8b":4,"\u7b97\u6cd5\u5904\u7406\u7684\u5177\u4f53\u4fe1\u606f\u683c\u5f0f":4,"\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u7ba1\u7406\u5458\u5e10\u6237\u540d":4,"\u7c7b\u578b":4,"\u7c7b\u578b\u4e0b":4,"\u7cbe\u5ea60":4,"\u7cbe\u5ea6\u4e3a\u5c0f\u6570\u70b9\u540e2\u4f4d":4,"\u7cbe\u786e\u5230\u5c0f\u6570\u70b9\u540e2\u4f4d":4,"\u7cbe\u786e\u5230\u65e5\u671f":4,"\u7cbe\u786e\u5230\u79d2":4,"\u7cfb\u5217\u529f\u80fd":4,"\u7cfb\u7edf\u4f1a\u81ea\u52a8\u6dfb\u52a0":4,"\u7cfb\u7edf\u5347\u7ea7\u4e2d":4,"\u7cfb\u7edf\u6b63\u5e38\u8fd0\u884c\u4e2d":4,"\u7cfb\u7edf\u6b63\u5e38\u8fd0\u884c\u4e2d\u5f53\u8bf7\u6c42\u8fd4\u56de\u6210\u529f\u4e4b\u540e":4,"\u7cfb\u7edf\u76d8":4,"\u7cfb\u7edf\u76d820":4,"\u7cfb\u7edf\u76d8\u5927\u5c0f":4,"\u7cfb\u7edf\u76d8\u5927\u5c0f\u5fc5\u4f20":4,"\u7cfb\u7edf\u76d8\u72b6\u6001":4,"\u7cfb\u7edf\u76d8\u7c7b\u578b":4,"\u7cfb\u7edf\u7c7b\u578b":4,"\u7cfb\u7edf\u8def\u7531\u89c4\u5219":4,"\u7cfb\u7edf\u8fd0\u884c\u4e2d":4,"\u7cfb\u7edf\u901a\u77e5\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u7ebf\u8def\u5165\u53e3\u540d\u79f0":4,"\u7ebf\u8def\u51fa\u53e3\u540d\u79f0":4,"\u7ebf\u8def\u51fa\u53e3\u673a\u623f\u4ee3\u53f7":4,"\u7ebf\u8def\u51fa\u53e3eip":4,"\u7ebf\u8def\u53ef\u552e\u6700\u5927\u5e26\u5bbd":4,"\u7ebf\u8def\u540d\u79f0bgp\u6216\u8005internal":4,"\u7ebf\u8def\u5bf9\u7aef\u4e2d\u6587\u540d\u5b57":4,"\u7ebf\u8def\u5bf9\u7aef\u82f1\u6587\u4ee3\u53f7":4,"\u7ebf\u8def\u5e26\u5bbd":4,"\u7ebf\u8def\u5e26\u5bbd\u4e0a\u9650":4,"\u7ebf\u8def\u6e90":4,"\u7ebf\u8def\u6e90\u4e2d\u6587\u540d\u79f0":4,"\u7ebf\u8def\u76ee\u7684":4,"\u7ebf\u8def\u76ee\u7684\u4e2d\u6587\u540d\u79f0":4,"\u7ebf\u8def\u7c7b\u578b":4,"\u7ebf\u8def\u8ba1\u8d39id":4,"\u7ebf\u8def\u8d77\u70b9\u4e2d\u6587\u540d\u5b57":4,"\u7ebf\u8def\u8d77\u70b9\u82f1\u6587\u4ee3\u53f7":4,"\u7ebf\u8defid":4,"\u7ec4\u4ef6\u4fe1\u606f":4,"\u7ec4\u4ef6\u540d\u79f0":4,"\u7ec4\u4ef6\u6570\u91cf":4,"\u7ec4\u5185\u673a\u5668\u4e25\u683c\u9694\u79bb\u5728\u4e0d\u540c\u5bbf\u4e3b\u673a\u4e0a":4,"\u7ec4\u5408\u4f5c\u4e3a\u4e00\u4e2a\u5b50\u9879":4,"\u7ec4\u540d\u79f0":4,"\u7ec4\u7684\u603b\u7684\u8282\u70b9\u4e2a\u6570":4,"\u7ec4\u7684id":4,"\u7ec4\u7ec7\u673a\u6784\u4ee3\u7801\u8bc1\u4e66":4,"\u7ec4\u81ea\u52a8\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u7ec4id":4,"\u7ecf\u6d4e\u578b":4,"\u7ecf\u8fc7base64\u7f16\u7801\u7684deployment\u7684yaml":4,"\u7ed1\u5b9a":4,"\u7ed1\u5b9a\u544a\u8b66\u6a21\u677f\u5931\u8d25\u53ea\u4f1a\u5728\u540e\u53f0\u6709\u65e5\u5fd7":4,"\u7ed1\u5b9a\u5916\u7f51ip":4,"\u7ed1\u5b9a\u5b50\u7f51\u7684\u8def\u7531\u8868":4,"\u7ed1\u5b9a\u7684\u5171\u4eab\u5e26\u5bbdid":4,"\u7ed1\u5b9a\u7684\u5b50\u7f51id":4,"\u7ed1\u5b9a\u7684\u5e26\u5bbd":4,"\u7ed1\u5b9a\u7684\u9632\u706b\u5899id":4,"\u7ed1\u5b9a\u8be5\u8def\u7531\u8868\u7684\u5b50\u7f51\u6570\u91cf":4,"\u7ed1\u5b9a\u8be5\u9632\u706b\u5899\u7684\u8d44\u6e90id":4,"\u7ed1\u5b9a\u8d44\u6e90\u603b\u6570":4,"\u7ed1\u5b9a\u9632\u706b\u5899":4,"\u7ed1\u5b9a\u9632\u706b\u5899\u7ec4\u7684\u865a\u62df\u673a\u8d44\u6e90id":4,"\u7ed1\u5b9a\u9632\u706b\u5899\u7ec4\u7684\u8d44\u6e90\u7c7b\u578b":4,"\u7ed1\u5b9a\u9632\u706b\u5899\u7ec4\u7684\u8d44\u6e90id":4,"\u7ed1\u5b9aeip\u7684ip\u5730\u5740":4,"\u7ed1\u5b9aid":4,"\u7ed1\u5b9apathx":4,"\u7ed1\u5b9assl\u8bc1\u4e66\u7684https\u7aef\u53e3":4,"\u7ed3\u5408ikeversion\u8fdb\u884c\u6821\u9a8c":4,"\u7ed3\u5c3e":4,"\u7ed3\u675f\u65f6\u95f4":4,"\u7ed3\u675f\u65f6\u95f4\u6233":4,"\u7ed9\u51fa\u8fd0\u8425\u5546\u7ef4\u5ea6\u7684\u5ba1\u6838\u72b6\u6001\u4fe1\u606f":4,"\u7ed9\u6307\u5b9a\u7684database\u521b\u5efa\u4e00\u4e2a\u4fdd\u7559\u7b56\u7565":4,"\u7f13\u5b58\u65f6\u95f4":4,"\u7f13\u5b58\u65f6\u95f4\u7684\u5355\u4f4d":4,"\u7f13\u5b58\u89c4\u5219\u63cf\u8ff0":4,"\u7f13\u5b58host":4,"\u7f16\u7801":4,"\u7f16\u8f91udb\u5b9e\u4f8b\u7684\u5907\u4efd\u9ed1\u540d\u5355":4,"\u7f3a\u5c11\u8be5\u503c\u4f1a\u5bfc\u81f4\u5728console\u4e0a\u65e0\u6cd5\u4fee\u6539\u7ebf\u8def":4,"\u7f3a\u7701\u503c\u4e3a":4,"\u7f51\u5173\u4e1a\u52a1\u7ec4":4,"\u7f51\u5173\u540d\u5b57":4,"\u7f51\u5173\u5907\u6ce8":4,"\u7f51\u5173\u7c7b\u578b":4,"\u7f51\u5173\u89c4\u683c":4,"\u7f51\u5173id":4,"\u7f51\u5361\u51fa\u6d41\u91cf":4,"\u7f51\u5361\u5347\u964d\u7ea7":4,"\u7f51\u6bb5":4,"\u7f51\u7ad9\u540d\u79f0":4,"\u7f51\u7edc\u589e\u5f3a":4,"\u7f51\u7edc\u589e\u5f3a1":4,"\u7f51\u7edc\u589e\u5f3a2":4,"\u7f51\u7edc\u589e\u5f3a\u7279\u6027":4,"\u7f51\u7edc\u589e\u5f3a\u7b49":4,"\u7f51\u7edc\u5e26\u5bbd\u9650\u901f":4,"\u7f51\u7edc\u72b6\u6001":4,"\u7f51\u7edc\u73af\u5883":4,"\u7f51\u7edc\u76d8":4,"\u7f51\u7edc\u7c7b\u578b":4,"\u7f6e\u662f\u5426\u53ef\u4ee5\u4fee\u6539":4,"\u8054\u7cfb\u7ec4id":4,"\u8054\u901a":4,"\u80fd\u591f\u83b7\u53d6\u5ba2\u6237\u7aef\u6765\u6e90ip\u4ee5\u53ca\u5bf9\u5e94\u7684\u8fde\u63a5\u6570":4,"\u81ea\u5236\u955c\u50cf":4,"\u81ea\u5236\u955c\u50cfid":4,"\u81ea\u52a8":4,"\u81ea\u52a8\u521b\u5efa\u6216\u5220\u9664\u6570\u636e\u8282\u70b9\u7684\u53ea\u8bfb\u5b9e\u4f8b\u5982\u4e0b\u72b6\u6001\u7684uddb\u5b9e\u4f8b\u53ef\u4ee5\u8fdb\u884c\u8fd9\u4e2a\u64cd\u4f5c":4,"\u81ea\u52a8\u5907\u4efd\u5f00\u59cb\u65f6\u95f4":4,"\u81ea\u52a8\u6302\u8f7d":4,"\u81ea\u52a8\u751f\u6210":4,"\u81ea\u52a8\u751f\u6210kei":4,"\u81ea\u52a8\u7eed\u8d39":4,"\u81ea\u52a8\u8bc6\u522b":4,"\u81ea\u5b9a\u4e49\u4e1a\u52a1\u6807\u8bc6id":4,"\u81ea\u5b9a\u4e49\u53d8\u91cf":4,"\u81ea\u5b9a\u4e49\u6216\u8005\u9ed8\u8ba4\u7684clusterdomain":4,"\u81ea\u5b9a\u4e49\u683c\u5f0f\u5982":4,"\u81ea\u5b9a\u4e49\u7684\u4e1a\u52a1\u6807\u8bc6id":4,"\u81ea\u5b9a\u4e49\u811a\u672c\u5c06\u5728\u96c6\u7fa4\u5b89\u88c5\u5b8c\u6bd5\u540e\u6267\u884c":4,"\u81ea\u5b9a\u4e49\u8def\u7531\u89c4\u5219":4,"\u81ea\u5b9a\u4e49\u955c\u50cf":4,"\u81ea\u5b9a\u4e49\u955c\u50cf\u5fc5\u987b\u57fa\u4e8e\u57fa\u7840\u955c\u50cf\u5236\u4f5c":4,"\u81ea\u7136\u6570":4,"\u81ea\u7528":4,"\u81f3\u5c116\u4f4d":4,"\u81f3\u5c11\u524d\u4e00\u5929":4,"\u8282\u70b9":4,"\u8282\u70b9\u4e0a\u5df2\u5206\u914d":4,"\u8282\u70b9\u4e0a\u955c\u50cf\u540d\u79f0\u6570\u7ec4":4,"\u8282\u70b9\u4ef7\u683c":4,"\u8282\u70b9\u5141\u8bb8\u7684\u53ef\u5206\u914d":4,"\u8282\u70b9\u516c\u7f51ip\u5217\u8868":4,"\u8282\u70b9\u5185\u5b58\u5927\u5c0f":4,"\u8282\u70b9\u5185\u5b58\u603b\u91cf":4,"\u8282\u70b9\u5206\u914d\u7684\u670d\u52a1\u7aef\u53e3":4,"\u8282\u70b9\u521b\u5efa\u65f6\u95f4":4,"\u8282\u70b9\u540d\u79f0":4,"\u8282\u70b9\u5907\u6ce8":4,"\u8282\u70b9\u5bc6\u7801":4,"\u8282\u70b9\u5e26\u5bbd\u9650\u5236":4,"\u8282\u70b9\u6240\u5c5e\u4f38\u7f29\u7ec4id":4,"\u8282\u70b9\u6570":4,"\u8282\u70b9\u6570\u8ba9\u5ba2\u6237\u53ef\u9009":4,"\u8282\u70b9\u6570\u91cf":4,"\u8282\u70b9\u6c60\u540d\u5b57":4,"\u8282\u70b9\u6c60id":4,"\u8282\u70b9\u72b6\u6001":4,"\u8282\u70b9\u7684\u521b\u5efa\u65f6\u95f4":4,"\u8282\u70b9\u7684\u53ef\u7528\u533a":4,"\u8282\u70b9\u7684\u865a\u62dfip\u5730\u5740":4,"\u8282\u70b9\u7684\u914d\u7f6eid":4,"\u8282\u70b9\u7684gpu\u9897\u6570":4,"\u8282\u70b9\u7c7b\u578b":4,"\u8282\u70b9\u8ba1\u8d39\u5230\u671f\u65f6\u95f4":4,"\u8282\u70b9\u8be6\u60c5":4,"\u8282\u70b9\u8d44\u6e90id":4,"\u8282\u70b9cpu\u6838\u6570":4,"\u8282\u70b9id":4,"\u8282\u70b9id\u5217\u8868":4,"\u8282\u70b9id\u6216\u5bb9\u5668\u7ec4\u8d44\u6e90id":4,"\u8282\u70b9ip\u6216\u8005\u8282\u70b9id":4,"\u8282\u70b9mac":4,"\u82e5\u4e0d\u4f20\u503c":4,"\u82e5\u4e0d\u4f20\u503c\u5219\u9ed8\u8ba4\u8be5\u503c\u4e3afals":4,"\u82e5\u4e0d\u4f20\u5165\u56fd\u9645\u533a\u53f7":4,"\u82e5\u4e0d\u586b\u5199":4,"\u82e5\u4e0d\u6307\u5b9a\u5219\u8fd4\u56de\u5f53\u524d\u6570\u636e\u4e2d\u5fc3\u4e2d\u6240\u6709\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u4e0d\u6307\u5b9a\u5219\u8fd4\u56de\u5f53\u524d\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u4e0b\u6240\u6709vserver\u7684\u4fe1\u606f":4,"\u82e5\u4e0d\u63d0\u4f9b":4,"\u82e5\u4e3a":4,"\u82e5\u4e3a\u7a7a":4,"\u82e5\u4f7f\u7528\u7684\u662f\u65e0\u53c2\u6570\u6a21\u677f":4,"\u82e5\u53f7\u7801\u4e2d\u5e26\u533a\u53f7":4,"\u82e5\u5bfc\u5165\u63a7\u5236\u53f0\u4e0a\u6ca1\u6709\u7684\u64cd\u4f5c\u7cfb\u7edf":4,"\u82e5\u5f00\u901a\u4e86\u6570\u636e\u65b9\u821f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u4e1a\u52a1\u7ec4\u4e0b\u6240\u6709\u5ba2\u6237vpn\u7f51\u5173\u4fe1\u606f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u6307\u5b9a\u7684\u4e1a\u52a1\u7ec4\u4e0b\u7684\u6240\u6709vpn\u7f51\u5173\u7684\u4fe1\u606f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u6307\u5b9a\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u6307\u5b9a\u5219\u8fd4\u56de\u6307\u5b9a\u7684vserver\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u82e5\u65e0\u6b64\u5b57\u6bb5\u5219\u4e0d\u505a\u4fee\u6539":4,"\u82e5\u672a\u6307\u5b9a":4,"\u82e5\u672a\u66f4\u6539\u5ba1\u6838\u6750\u6599":4,"\u82e5\u672a\u66f4\u6539\u6388\u6743\u59d4\u6258\u6587\u4ef6":4,"\u82e5\u6a21\u677f":4,"\u82e5\u6a21\u677f\u4e2d\u65e0\u53ef\u53d8\u53c2\u6570":4,"\u82e5\u6a21\u677f\u4e2d\u6709\u53ef\u53d8\u53c2\u6570":4,"\u82e5\u76f4\u63a5\u901a\u8fc7\u57fa\u7840\u955c\u50cf\u521b\u5efa":4,"\u82e5\u7ed1\u5b9aeip":4,"\u82e5\u8981\u7ed1\u5b9aeip":4,"\u82e5billingcycl":4,"\u82e5hostidforattachment\u4e0e\u8be5\u5b57\u6bb5\u5bbf\u4e3b\u7c7b\u578b\u51b2\u7a81":4,"\u82f1\u6587":4,"\u8303\u56f4":4,"\u8303\u56f4\u662f":4,"\u8303\u56f4\u7528":4,"\u83b7\u53d6":4,"\u83b7\u53d6\u4e13\u7ebf\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6\u4e2d":4,"\u83b7\u53d6\u4e3b\u5907redis\u5907\u4efd\u4e0b\u8f7d\u94fe\u63a5":4,"\u83b7\u53d6\u4e3b\u673a\u6216\u4e3b\u673a\u5217\u8868\u4fe1\u606f":4,"\u83b7\u53d6\u4e3bredis\u53ef\u7528\u7248\u672c":4,"\u83b7\u53d6\u4ee4\u724c\u4fe1\u606f":4,"\u83b7\u53d6\u4efb\u52a1\u5386\u53f2\u72b6\u6001":4,"\u83b7\u53d6\u5168\u7403\u52a0\u901f\u670d\u52a1\u52a0\u901f\u914d\u7f6e\u4fe1\u606f":4,"\u83b7\u53d6\u5168\u7403\u52a0\u901f\u76d1\u63a7\u4fe1\u606f":4,"\u83b7\u53d6\u5168\u7403\u52a0\u901f\u7ebf\u8def\u4fe1\u606f":4,"\u83b7\u53d6\u5171\u4eab\u5e26\u5bbd\u4ef7\u683c":4,"\u83b7\u53d6\u5171\u4eab\u5e26\u5bbd\u4fe1\u606f":4,"\u83b7\u53d6\u5171\u4eab\u5e26\u5bbd\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6\u5185\u7f51vip\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u5206\u5e03\u5f0f\u6570\u636e\u5e93uddb\u4ef7\u683c":4,"\u83b7\u53d6\u5206\u5e03\u5f0f\u6570\u636e\u5e93uddb\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u5206\u5e03\u5f0fredi":4,"\u83b7\u53d6\u52a0\u901f\u57df\u540d\u539f\u59cb\u65e5\u5fd7":4,"\u83b7\u53d6\u52a0\u901f\u57df\u540d\u6d41\u91cf\u4f7f\u7528\u4fe1\u606f":4,"\u83b7\u53d6\u52a0\u901f\u7ebf\u8def\u4fe1\u606f":4,"\u83b7\u53d6\u5347\u7ea7\u540e\u7684\u4ef7\u683c":4,"\u83b7\u53d6\u5355\u4e2a\u5bb9\u5668\u65e5\u5fd7":4,"\u83b7\u53d6\u53c2\u6570\u7ec4\u8be6\u7ec6\u53c2\u6570\u4fe1\u606f":4,"\u83b7\u53d6\u53ef\u7528\u4e8e\u6dfb\u52a0snat\u89c4\u5219":4,"\u83b7\u53d6\u540cvpc\u4e0b\u673a\u5668\u4fe1\u606f":4,"\u83b7\u53d6\u56de\u6e90\u5e26\u5bbd\u6570\u636e":4,"\u83b7\u53d6\u57df\u540d\u4e5d\u4e94\u5cf0\u503c\u5e26\u5bbd\u6570\u636e":4,"\u83b7\u53d6\u57df\u540d\u5237\u65b0\u4efb\u52a1\u72b6\u6001":4,"\u83b7\u53d6\u57df\u540d\u547d\u4e2d\u7387":4,"\u83b7\u53d6\u57df\u540d\u56de\u6e90\u8bf7\u6c42\u6570":4,"\u83b7\u53d6\u57df\u540d\u57fa\u672c\u4fe1\u606f":4,"\u83b7\u53d6\u57df\u540d\u5e26\u5bbd\u6570\u636e":4,"\u83b7\u53d6\u57df\u540d\u6e90\u7ad9\u72b6\u6001\u7801\u76d1\u63a7":4,"\u83b7\u53d6\u57df\u540d\u6e90\u7ad9\u8be6\u7ec6\u72b6\u6001\u7801\u76d1\u63a7":4,"\u83b7\u53d6\u57df\u540d\u72b6\u6001\u7801\u4fe1\u606f":4,"\u83b7\u53d6\u57df\u540d\u72b6\u6001\u7801\u76d1\u63a7":4,"\u83b7\u53d6\u57df\u540d\u8be6\u7ec6\u72b6\u6001\u7801\u76d1\u63a7":4,"\u83b7\u53d6\u57df\u540d\u8bf7\u6c42\u6570":4,"\u83b7\u53d6\u57df\u540d\u9884\u53d6\u5f00\u542f\u72b6\u6001":4,"\u83b7\u53d6\u5b50\u7f51\u4fe1\u606f":4,"\u83b7\u53d6\u5b50\u7f51\u5217\u8868":4,"\u83b7\u53d6\u5b50\u7f51\u7684acl\u7ed1\u5b9a\u4fe1\u606f":4,"\u83b7\u53d6\u5ba2\u6237vpn\u7f51\u5173\u4fe1\u606f":4,"\u83b7\u53d6\u5bb9\u5668":4,"\u83b7\u53d6\u5bb9\u5668\u7ec4\u673a\u623f\u4fe1\u606f":4,"\u83b7\u53d6\u5e26\u5bbd\u7528\u91cf\u4fe1\u606f":4,"\u83b7\u53d6\u5f39\u6027ip\u4ef7\u683c":4,"\u83b7\u53d6\u5f39\u6027ip\u4fe1\u606f":4,"\u83b7\u53d6\u5f39\u6027ip\u5e26\u5bbd\u6539\u52a8\u4ef7\u683c":4,"\u83b7\u53d6\u5f39\u6027ip\u8ba1\u8d39\u6a21\u5f0f":4,"\u83b7\u53d6\u5f53\u524d\u652f\u6301\u7684\u4e13\u7ebf\u7ebf\u8def\u5217\u8868":4,"\u83b7\u53d6\u6210\u5458\u5217\u8868":4,"\u83b7\u53d6\u6240\u6709\u8ba1\u8d39\u6a21\u5f0f\u7684\u4ef7\u683c":4,"\u83b7\u53d6\u6240\u6709bucket\u5217\u8868\u7684\u504f\u79fb\u6570\u76ee":4,"\u83b7\u53d6\u6240\u6709bucket\u5217\u8868\u7684\u9650\u5236\u6570\u76ee":4,"\u83b7\u53d6\u6302\u8f7d\u78c1\u76d8\u7684\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u7684\u4e1a\u52a1\u7ec4\u5217\u8868":4,"\u83b7\u53d6\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u955c\u50cf\u5217\u8868":4,"\u83b7\u53d6\u6307\u5b9a\u6570\u636e\u5e93\u4e0b\u9762\u7684\u6240\u6709\u4fdd\u7559\u7b56\u7565":4,"\u83b7\u53d6\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u7ba1\u7406vnc\u914d\u7f6e\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u5217\u8868":4,"\u83b7\u53d6\u65e5\u5fd7url\u7edf\u8ba1":4,"\u83b7\u53d6\u6700\u65e9\u53ef\u56de\u6863\u65f6\u95f4\u70b9":4,"\u83b7\u53d6\u673a\u623f\u5272\u63a5\u4fe1\u606f":4,"\u83b7\u53d6\u673a\u623f\u865a\u62df\u673a\u76d1\u63a7\u6570\u636e":4,"\u83b7\u53d6\u67d0\u4e2a\u8d26\u671f\u5185\u7684\u6240\u6709\u6d88\u8d39":4,"\u83b7\u53d6\u67d0\u5730\u57df\u4e0b\u7684\u5e26\u5bbd\u5305\u4fe1\u606f":4,"\u83b7\u53d6\u6d41\u91cf\u4fe1\u606f":4,"\u83b7\u53d6\u6d41\u91cf\u8ba1\u8d39eip\u6bcf\u65e5\u6d41\u91cf\u8ba1\u8d39\u4fe1\u606f":4,"\u83b7\u53d6\u70ed\u70b9referer\u7edf\u8ba1":4,"\u83b7\u53d6\u7269\u7406\u4e91\u4e3b\u673a\u955c\u50cf\u5217\u8868":4,"\u83b7\u53d6\u7269\u7406\u4e91\u673a\u578b\u7684\u8be6\u7ec6\u63cf\u8ff0\u4fe1\u606f":4,"\u83b7\u53d6\u7269\u7406\u4e91\u88f8\u91d1\u5c5e\u6302\u8f7d\u78c1\u76d8\u7684\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6\u7269\u7406\u673a\u4ef7\u683c\u5217\u8868":4,"\u83b7\u53d6\u7269\u7406\u673a\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u7269\u7406\u673atag\u5217\u8868":4,"\u83b7\u53d6\u72b6\u6001\u8d85\u65f6\u6216\u51fa\u9519":4,"\u83b7\u53d6\u7528\u6237\u521b\u5efa\u7684":4,"\u83b7\u53d6\u7528\u6237\u5728\u5404\u6570\u636e\u4e2d\u5fc3\u7684\u6743\u9650\u7b49\u4fe1\u606f":4,"\u83b7\u53d6\u767b\u5f55\u5bb9\u5668\u7684token":4,"\u83b7\u53d6\u7f51\u7edcacl":4,"\u83b7\u53d6\u7f51\u7edcacl\u7684\u7ed1\u5b9a\u5173\u7cfb\u5217\u8868":4,"\u83b7\u53d6\u865a\u62df\u673a\u4ef7\u683c":4,"\u83b7\u53d6\u865a\u62df\u673a\u5217\u8868":4,"\u83b7\u53d6\u865a\u62df\u673a\u76d1\u63a7\u6570\u636e":4,"\u83b7\u53d6\u865a\u62df\u673a\u8c03\u6574\u5dee\u4ef7":4,"\u83b7\u53d6\u865a\u62df\u673a\u8fd0\u8425\u5546\u4fe1\u606f":4,"\u83b7\u53d6\u88f8\u91d1\u5c5e\u673a\u578b\u7684\u8be6\u7ec6\u63cf\u8ff0\u4fe1\u606f":4,"\u83b7\u53d6\u89c6\u9891\u77ed\u4fe1\u53d1\u9001\u8bb0\u5f55\u7684\u72b6\u6001\u56de\u6267":4,"\u83b7\u53d6\u89d2\u8272\u5217\u8868":4,"\u83b7\u53d6\u89d2\u8272id":4,"\u83b7\u53d6\u8bc1\u4e66\u5217\u8868":4,"\u83b7\u53d6\u8be5\u5b9e\u4f8b\u7684ipv6\u5730\u5740":4,"\u83b7\u53d6\u8d26\u5355\u603b\u89c8\u62a5\u8868\u65f6":4,"\u83b7\u53d6\u8d26\u5355\u660e\u7ec6\u62a5\u8868":4,"\u83b7\u53d6\u8d26\u5355\u660e\u7ec6\u62a5\u8868\u65f6\u8be5\u53c2\u6570\u65e0\u6548":4,"\u83b7\u53d6\u8d26\u6237\u4f59\u989d":4,"\u83b7\u53d6\u8d44\u6e90\u5176\u4ed6\u4fe1\u606f":4,"\u83b7\u53d6\u8def\u7531\u8868\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6\u914d\u7f6e\u6587\u4ef6\u5185\u5bb9":4,"\u83b7\u53d6\u914d\u989d\u4fe1\u606f":4,"\u83b7\u53d6\u955c\u50cf\u4ed3\u5e93":4,"\u83b7\u53d6\u955c\u50cf\u4ed3\u5e93\u4e0b\u7684\u955c\u50cf":4,"\u83b7\u53d6\u955c\u50cfid":4,"\u83b7\u53d6\u955c\u50cftag":4,"\u83b7\u53d6\u9632\u706b\u5899\u4fe1\u606f":4,"\u83b7\u53d6\u9632\u706b\u5899\u7ec4\u4fe1\u606f":4,"\u83b7\u53d6\u9632\u706b\u5899\u7ec4\u6240\u7ed1\u5b9a\u8d44\u6e90\u7684\u5916\u7f51ip":4,"\u83b7\u53d6\u96c6\u7fa4\u4fe1\u606f":4,"\u83b7\u53d6\u9879\u76ee\u5217\u8868":4,"\u83b7\u53d6\u9884\u53d6\u4efb\u52a1\u72b6\u6001":4,"\u83b7\u53d6acl\u7684\u89c4\u5219\u4fe1\u606f":4,"\u83b7\u53d6acl\u89c4\u5219\u5e94\u7528\u76ee\u6807\u5217\u8868":4,"\u83b7\u53d6bucket\u7684\u63cf\u8ff0\u4fe1\u606f":4,"\u83b7\u53d6cube\u5b9e\u4f8b":4,"\u83b7\u53d6cube\u7684\u4ef7\u683c":4,"\u83b7\u53d6cube\u7684\u989d\u5916\u4fe1\u606f":4,"\u83b7\u53d6cube\u7684deployment\u5217\u8868":4,"\u83b7\u53d6cube\u7684token":4,"\u83b7\u53d6deployment\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6globalssh\u4ef7\u683c":4,"\u83b7\u53d6globalssh\u5347\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6globalssh\u5b9e\u4f8b\u5217\u8868":4,"\u83b7\u53d6idc\u673a\u623f\u5217\u8868":4,"\u83b7\u53d6nat\u7f51\u5173\u4fe1\u606f":4,"\u83b7\u53d6nat\u7f51\u5173\u53ef\u6dfb\u52a0\u767d\u540d\u5355\u7684\u8d44\u6e90":4,"\u83b7\u53d6nat\u7f51\u5173\u53ef\u914d\u7f6e\u7aef\u53e3\u8f6c\u53d1\u89c4\u5219\u7684\u8d44\u6e90\u4fe1\u606f":4,"\u83b7\u53d6nat\u7f51\u5173\u7684\u51fa\u53e3\u89c4\u5219":4,"\u83b7\u53d6pod\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6pods\u5217\u8868":4,"\u83b7\u53d6ssl\u8bc1\u4e66\u4fe1\u606f":4,"\u83b7\u53d6udb\u5907\u4efd\u4e0b\u8f7d\u5730\u5740":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u5347\u964d\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u5907\u4efd\u72b6\u6001":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u72b6\u6001":4,"\u83b7\u53d6udb\u5b9e\u4f8b\u7684\u5907\u4efd\u9ed1\u540d\u5355":4,"\u83b7\u53d6udb\u6307\u5b9a\u65f6\u95f4\u6bb5\u7684binlog\u5217\u8868":4,"\u83b7\u53d6udb\u652f\u6301\u7684\u7c7b\u578b\u4fe1\u606f":4,"\u83b7\u53d6udb\u6700\u65e9\u53ef\u56de\u6863\u7684\u65f6\u95f4\u70b9":4,"\u83b7\u53d6udb\u7684binlog\u5907\u4efd\u5730\u5740":4,"\u83b7\u53d6udb\u7684slowlog\u5907\u4efd\u5730\u5740":4,"\u83b7\u53d6udisk\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udisk\u5b9e\u4f8b":4,"\u83b7\u53d6udisk\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6udisk\u5feb\u7167":4,"\u83b7\u53d6uhost\u5b9e\u4f8b\u5347\u7ea7\u914d\u7f6e\u7684\u4ef7\u683c":4,"\u83b7\u53d6uhost\u5b9e\u4f8b\u7684\u4ef7\u683c":4,"\u83b7\u53d6uifluxdb\u5347\u964d\u7ea7\u4ef7\u683c":4,"\u83b7\u53d6uinfluxdb\u4ef7\u683c":4,"\u83b7\u53d6uk8s\u652f\u6301\u7684node\u8282\u70b9\u64cd\u4f5c\u7cfb\u7edf":4,"\u83b7\u53d6uk8s\u96c6\u7fa4\u5217\u8868\u4fe1\u606f":4,"\u83b7\u53d6uk8s\u96c6\u7fa4\u8282\u70b9\u4fe1\u606f":4,"\u83b7\u53d6ulb\u4e0b\u7684vserver\u7684\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6ulb\u4fe1\u606f":4,"\u83b7\u53d6ulb\u8be6\u7ec6\u4fe1\u606f":4,"\u83b7\u53d6umem\u5185\u5b58\u7a7a\u95f4\u5217\u8868":4,"\u83b7\u53d6umem\u5217\u8868":4,"\u83b7\u53d6umem\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umem\u5b9e\u4f8b\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umemcache\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6umemcache\u7ec4\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6uredis\u5347\u7ea7\u4ef7\u683c\u4fe1\u606f":4,"\u83b7\u53d6vpc\u4e92\u901a\u4fe1\u606f":4,"\u83b7\u53d6vpc\u4fe1\u606f":4,"\u83b7\u53d6vpn\u4ef7\u683c":4,"\u83b7\u53d6vpn\u7f51\u5173\u4fe1\u606f":4,"\u83b7\u53d6vpn\u7f51\u5173\u89c4\u683c\u6539\u52a8\u4ef7\u683c":4,"\u83b7\u53d6vpn\u96a7\u9053\u4fe1\u606f":4,"\u83b7\u5f97\u5bb9\u5668\u7ec4\u4ef7\u683c":4,"\u83b7\u5f97\u5bb9\u5668\u7ec4\u4fe1\u606f":4,"\u865a\u62df\u673a\u5b9e\u4f8bid":4,"\u865a\u62df\u673a\u65ad\u7535":4,"\u865a\u62df\u673a\u8d44\u6e90id":4,"\u865a\u62df\u673a\u8d44\u6e90id\u6216\u5bb9\u5668\u7ec4\u8d44\u6e90id":4,"\u865a\u62df\u673a\u91cd\u88c5\u7cfb\u7edf":4,"\u865a\u62df\u7f51\u5361":4,"\u865a\u62dfcpu\u6838\u6570":4,"\u865a\u62dfip":4,"\u867d\u7136\u4e5f\u80fd\u4f7f\u7528\u8be5\u64cd\u4f5c\u518d\u52a0\u4e0aswitchudbinstancetoha":4,"\u867d\u7136\u4e5f\u80fd\u4f7f\u7528promoteudbinstancetoha\u518d\u52a0\u4e0a\u8be5\u64cd\u4f5c":4,"\u884c\u4e1a\u955c\u50cf":4,"\u884c\u4e1a\u955c\u50cf\u7c7b\u578b":4,"\u8868\u60c5\u5305\u7b26\u53f7\u7b49\u7279\u6b8a\u5b57\u7b26":4,"\u8868\u793a":4,"\u8868\u793a\u4e0a\u5c42":4,"\u8868\u793a\u4ece\u5e93\u5907\u4efd\u5f00\u5173\u6253\u5f00":4,"\u8868\u793a\u4f7f\u7528\u4e2d\u6216\u8005\u7a7a\u95f2":4,"\u8868\u793a\u4f7f\u7528\u5feb\u7167":4,"\u8868\u793a\u5168\u90e8":4,"\u8868\u793a\u5177\u4f53\u9519\u8bef\u63cf\u8ff0":4,"\u8868\u793a\u5347\u7ea7":4,"\u8868\u793a\u5347\u7ea7\u540e\u7684\u5b9e\u4f8b\u7c7b\u578b":4,"\u8868\u793a\u53ea\u62c9\u53d6\u8de8\u53ef\u7528\u533a\u7684\u76f8\u5173\u914d\u7f6e\u6587\u4ef6":4,"\u8868\u793a\u53ef\u521b\u5efa\u7684\u6570\u91cf":4,"\u8868\u793a\u5b9e\u4f8b\u662f\u4e3b\u5e93\u8fd8\u662f\u4ece\u5e93":4,"\u8868\u793a\u5b9e\u4f8b\u7684\u76ee\u6807\u8d44\u6e90\u5927\u5c0f":4,"\u8868\u793a\u6253\u5f00\u661f\u671f\u516d\u548c\u661f\u671f\u4e94\u7684\u81ea\u52a8\u5907\u4efd\u529f\u80fd":4,"\u8868\u793a\u6309\u6574\u4e2a\u8d26\u6237\u67e5\u8be2":4,"\u8868\u793a\u662f\u5171\u4eab\u5e26\u5bbd":4,"\u8868\u793a\u662f\u5426\u4e3a\u9ed8\u8ba4\u7f51\u5361":4,"\u8868\u793a\u6700\u540e\u4e00\u6b21\u5207\u6362\u7684\u8ba1\u8d39\u65b9\u5f0f":4,"\u8868\u793a\u6ca1\u6709\u5907\u4efd\u6e90\u7ad9":4,"\u8868\u793a\u7981\u7528":4,"\u8868\u793a\u7981\u7528\u8fde\u63a5\u4fdd\u6301":4,"\u8868\u793a\u7cfb\u52171":4,"\u8868\u793a\u7cfb\u52172":4,"\u8868\u793a\u83b7\u53d6\u5e26\u6709\u5b50\u7528\u6237\u4fe1\u606f\u7684\u8d26\u5355":4,"\u8868\u793a\u8d1f\u8f7d\u5747\u8861":4,"\u8868\u793a\u8fb9\u7f18":4,"\u88ab\u514b\u9686\u7684\u8def\u7531\u8868id":4,"\u88ab\u52a0\u5165\u6210\u5458\u5f52\u5c5e\u89d2\u8272id":4,"\u88ab\u52a0\u5165\u6210\u5458email":4,"\u88ab\u53eb\u53f7\u7801":4,"\u88ab\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684\u7248\u672c\u53f7":4,"\u88ab\u5bfc\u51fa\u5de5\u4f5c\u6d41\u7684id":4,"\u88ab\u7981\u7528":4,"\u88abssh\u8bbf\u95ee\u7684\u6e90\u7ad9":4,"\u88abssh\u8bbf\u95ee\u7684\u6e90\u7ad9ip":4,"\u88abssh\u8bbf\u95ee\u7684ip\u6240\u5728\u5730\u533a":4,"\u88f8\u91d1\u5c5e2":4,"\u88f8\u91d1\u5c5e\u4e91\u76d8":4,"\u88f8\u91d1\u5c5e\u5b9e\u4f8bid":4,"\u88f8\u91d1\u5c5e\u673a\u578b\u53c2\u6570":4,"\u8981\u521b\u5efarp\u7684\u6570\u636e\u5e93":4,"\u8981\u5220\u9664\u7684\u4fdd\u7559\u7b56\u7565":4,"\u8981\u5220\u9664\u7684rp\u6240\u5728\u6570\u636e\u5e93":4,"\u8981\u5220\u9664\u7684udisk\u7684id":4,"\u8981\u52a0\u5165\u5171\u4eab\u5e26\u5bbd\u7684eip\u7684\u8d44\u6e90id":4,"\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684groupid":4,"\u8981\u6302\u8f7d\u7684\u4e91\u76d8id":4,"\u8981\u67e5\u8be2\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u8981\u6c42\u957f\u5ea6\u4e3a6":4,"\u89c1":4,"\u89c4\u5219":4,"\u89c4\u5219\u6570\u91cf":4,"\u89c4\u5219\u751f\u6548\u540e":4,"\u89c4\u5219\u7684\u884c\u4e3a":4,"\u89c4\u5219id":4,"\u89c4\u683c":4,"\u89c4\u683c\u8c03\u6574\u5dee\u4ef7":4,"\u89c4\u8303\u793a\u4f8b":4,"\u89c6\u9891\u4e3amp4":4,"\u89c6\u9891\u4e91\u4e1a\u52a1":4,"\u89c6\u9891\u4f7f\u7528mp4":4,"\u89c6\u9891\u53ea\u5141\u8bb8\u4e00\u4e2a":4,"\u89c6\u9891\u6587\u4ef6\u5408\u8ba1\u5927\u5c0f\u4e0d\u53ef\u8d85\u8fc72m":4,"\u89c6\u9891\u77ed\u4fe1\u6807\u9898":4,"\u89c6\u9891\u77ed\u4fe1\u6a21\u677f\u5185\u5bb9":4,"\u89c6\u9891\u77ed\u4fe1\u6a21\u677f\u540d\u79f0":4,"\u89c6\u9891\u77ed\u4fe1\u6a21\u677fid":4,"\u89c6\u9891\u77ed\u4fe1\u7b7e\u540d":4,"\u89c6\u9891\u77ed\u4fe1\u7c7b\u578b":4,"\u89c6\u9891\u7ec4\u6210":4,"\u89d2\u8272\u5217\u8868\u7684\u504f\u79fb\u91cf":4,"\u89d2\u8272\u5217\u8868\u7684\u6700\u5927\u6570\u91cf":4,"\u89d2\u8272\u540d":4,"\u89d2\u8272\u540d\u79f0":4,"\u89d2\u8272\u5bf9\u4ea7\u54c1\u7684\u6743\u9650":4,"\u89d2\u8272\u603b\u6570":4,"\u89d2\u8272\u63cf\u8ff0":4,"\u89d2\u8272\u6743\u9650":4,"\u89d2\u8272id":4,"\u89e3\u5c01":4,"\u89e3\u7ed1\u5e76\u91ca\u653e":4,"\u89e3\u7ed1\u5e76\u91ca\u653eeip":4,"\u89e3\u7ed1\u8d44\u6e90\u4e0a\u7684\u9632\u706b\u5899":4,"\u89e3\u7ed1\u9632\u706b\u5899":4,"\u89e3\u7ed1eip":4,"\u89e3\u7ed1eip\u540e":4,"\u89e3\u7ed1pathx":4,"\u89e3\u7ed1ssl\u8bc1\u4e66\u7684https\u7aef\u53e3":4,"\u8ba1\u7b97\u7aef\u53e3":4,"\u8ba1\u8d39\u5f00\u59cb\u65f6\u95f4":4,"\u8ba1\u8d39\u603b\u6d41\u91cf":4,"\u8ba1\u8d39\u65b9\u5f0f":4,"\u8ba1\u8d39\u65f6\u957f":4,"\u8ba1\u8d39\u65f6\u95f4\u5355\u4f4d":4,"\u8ba1\u8d39\u6a21\u5f0f":4,"\u8ba1\u8d39\u6a21\u5f0f\u4e3adynamic\u65f6":4,"\u8ba1\u8d39\u6d41\u91cf":4,"\u8ba1\u8d39\u7c7b\u578b":4,"\u8ba1\u8d39\u7ed3\u675f\u65f6\u95f4":4,"\u8ba2\u5355\u53f7":4,"\u8ba2\u5355\u603b\u91d1\u989d":4,"\u8ba2\u5355\u652f\u4ed8\u72b6\u6001":4,"\u8ba2\u5355\u7c7b\u578b":4,"\u8bbe\u5b9a\u4e1a\u52a1\u7ec4":4,"\u8bbe\u5b9a\u5b9e\u4f8b\u540d\u79f0":4,"\u8bbe\u5b9a\u5bc6\u7801":4,"\u8bbe\u5b9a\u9694\u79bb\u7ec4\u540d\u79f0":4,"\u8bbe\u5b9a\u9694\u79bb\u7ec4\u5907\u6ce8":4,"\u8bbe\u7f6e\u5bc6\u7801\u5931\u8d25":4,"\u8bbe\u7f6e\u5bf9\u8c61\u5b58\u50a8\u9632\u76d7\u94fe":4,"\u8bbe\u7f6e\u5f39\u6027ip\u8ba1\u8d39\u6a21\u5f0f":4,"\u8bbe\u7f6e\u767b\u5f55\u4e0eapi\u8c03\u7528\u7684\u7f51\u7edc\u63a9\u7801":4,"\u8bbe\u7f6e\u89c4\u5219\u8bf7\u53c2\u7167disktyp":4,"\u8bbe\u7f6e\u8bfb\u5199\u5206\u79bb\u7684\u6a21\u5f0f":4,"\u8bbe\u7f6enat\u7f51\u5173\u7684\u9ed8\u8ba4\u51fa\u53e3":4,"\u8bbe\u7f6etidb\u670d\u52a1\u5b9e\u4f8b\u53c2\u6570":4,"\u8bbe\u7f6eudisk\u6570\u636e\u65b9\u821f\u7684\u72b6\u6001":4,"\u8bbf\u95ee\u8be5\u57df\u540d\u53ef\u5c31\u8fd1\u63a5\u5165":4,"\u8bc1\u4e66":4,"\u8bc1\u4e66\u5185\u5bb9":4,"\u8bc1\u4e66\u5185\u5bb9\u4f20\u5230sslcontent":4,"\u8bc1\u4e66\u5185\u5bb9\u4f20\u8fc7\u6765":4,"\u8bc1\u4e66\u540d":4,"\u8bc1\u4e66\u540d\u79f0":4,"\u8bc1\u4e66\u57df\u540d":4,"\u8bc1\u4e66\u57df\u540d\u6a21\u7cca\u641c\u7d22":4,"\u8bc1\u4e66\u5f00\u59cb\u65f6\u95f4":4,"\u8bc1\u4e66\u6570\u91cf":4,"\u8bc1\u4e66\u6765\u6e90":4,"\u8bc1\u4e66\u83b7\u53d6\u65f6\u95f4":4,"\u8bc1\u4e66\u8fc7\u671f\u65f6\u95f4":4,"\u8bc1\u4e66id":4,"\u8bd5\u7528":4,"\u8be5\u4e1a\u52a1\u7ec4\u4e2d\u5305\u542b\u7684\u4e3b\u673a\u4e2a\u6570":4,"\u8be5\u4e3b\u673a\u914d\u7f6e\u4e0d\u5f97\u4f4e\u4e8e2c4g":4,"\u8be5\u4e91\u4e3b\u673a\u4f9d\u7136\u4f1a\u6267\u884c\u91cd\u88c5\u7cfb\u7edf\u7684\u64cd\u4f5c":4,"\u8be5\u4e91\u4e3b\u673a\u6240\u5c5e\u5b50\u7f51id":4,"\u8be5\u503c\u4e3a\u7a7a":4,"\u8be5\u503c\u53ef\u4ee5\u901a\u8fc7describeudbbackup\u83b7\u53d6":4,"\u8be5\u503c\u53ef\u4ee5\u901a\u8fc7describeudbinstance\u83b7\u53d6":4,"\u8be5\u503c\u53ef\u901a\u8fc7describeudbinstance\u83b7\u53d6":4,"\u8be5\u53c2\u6570\u4e0d\u80fd\u4f20\u503c":4,"\u8be5\u53c2\u6570\u4f1a\u7834\u574f\u76ee\u6807":4,"\u8be5\u53c2\u6570\u53ef\u4e0d\u586b":4,"\u8be5\u53c2\u6570\u662fjson\u6570\u7ec4\u7684base64\u7f16\u7801\u7ed3\u679c":4,"\u8be5\u53c2\u6570\u76ee\u524d\u4ec5\u5bf9\u672c\u5730\u6570\u636e\u76d8\u8d77\u4f5c\u7528":4,"\u8be5\u5904\u663e\u793a\u4e3a\u5171\u4eab\u5e26\u5bbd\u503c":4,"\u8be5\u5904\u663e\u793a\u8fd9\u4e2a\u5f39\u6027ip\u7684\u5e26\u5bbd":4,"\u8be5\u5b57\u6bb5\u4e3a\u7a7a":4,"\u8be5\u5b57\u6bb5\u53ef\u4ee5\u4e0d\u586b":4,"\u8be5\u5b57\u6bb5\u65e0\u6548":4,"\u8be5\u5b57\u6bb5\u6709\u6548":4,"\u8be5\u5b9e\u4f8b\u7684ipv6\u5730\u5740":4,"\u8be5\u5c5e\u6027\u4ec5\u4ec5\u5728\u72b6\u6001\u7801\u7f13\u5b58\u914d\u7f6e\u5217\u8868\u4e2d\u8fd4\u56de":4,"\u8be5\u5f39\u6027ip\u4e0d\u4f1a\u88ab\u4f7f\u7528":4,"\u8be5\u5feb\u7167\u7684\u5bc6\u6587\u5bc6\u94a5":4,"\u8be5\u5feb\u7167\u7684cmk":4,"\u8be5\u5feb\u7167cmk\u7684\u72b6\u6001":4,"\u8be5\u7248\u672c\u53f7\u6240\u652f\u6301\u7684\u5907\u4efd\u521b\u5efa\u7248\u672c":4,"\u8be5\u76d8\u5feb\u7167\u4e0a\u9650":4,"\u8be5\u76d8\u5feb\u7167\u4e2a\u6570":4,"\u8be5\u76d8\u7684\u5907\u4efd\u65b9\u5f0f":4,"\u8be5\u76d8\u7684\u5bc6\u6587\u5bc6\u94a5":4,"\u8be5\u76d8\u7684cmk":4,"\u8be5\u76d8cmk\u7684\u72b6\u6001":4,"\u8be5\u7f51\u6bb5\u4e0d\u80fd\u4e0e\u96c6\u7fa4\u6240\u5c5evpc\u7f51\u6bb5\u91cd\u53e0":4,"\u8be5\u8d26\u6237\u662f\u5426\u4e3a\u4e3b\u8d26\u53f7":4,"\u8be5\u914d\u7f6e\u6587\u4ef6\u662f\u5426\u662f\u5730\u57df\u7ea7\u522b\u914d\u7f6e\u6587\u4ef6":4,"\u8be5\u955c\u50cf\u662f\u5426\u652f\u6301gpu\u673a\u578b":4,"\u8be5\u9879\u4e3a\u5fc5\u586b\u9879":4,"\u8be5\u9879\u5fc5\u586b":4,"\u8be5ip\u8fde\u63a5\u6570":4,"\u8be6\u89c1describeuredisversion\u8fd4\u56de\u7ed3\u679c":4,"\u8be6\u89c1param":4,"\u8be6\u8be2\u6280\u672f\u652f\u6301":4,"\u8bf4\u660e":4,"\u8bf4\u660e\u5982\u4e0b":4,"\u8bf4\u660e\u67e5\u770b\u6574\u4e2a\u53ef\u7528\u533a\u7684\u4e13\u533a\u7684db":4,"\u8bf7\u4f7f\u7528":4,"\u8bf7\u4f7f\u7528base64\u8fdb\u884c\u7f16\u7801":4,"\u8bf7\u5230":4,"\u8bf7\u52ff\u5c06\u591a\u4e2a\u7ed1\u5b9a\u5728\u540c\u4e00\u8d44\u6e90\u7684\u5f39\u6027ip\u8bbe\u7f6e\u4e3a\u76f8\u540c\u6743\u91cd":4,"\u8bf7\u53c2\u8003":4,"\u8bf7\u53c2\u8003\u63a7\u5236\u53f0":4,"\u8bf7\u53c2\u8003\u63a7\u5236\u53f0\u7684\u955c\u50cf\u7248\u672c":4,"\u8bf7\u53c2\u8003describecoupon\u63a5\u53e3":4,"\u8bf7\u53c2\u8003describeumemcachegroup\u63a5\u53e3":4,"\u8bf7\u53c2\u8003describeuredisgroup\u63a5\u53e3":4,"\u8bf7\u5728\u52a0\u901f\u533a\u57df\u914d\u7f6e\u60a8\u7684\u4e1a\u52a1\u57df\u540d\u7684cname\u8bb0\u5f55\u503c\u4e3a\u52a0\u901f\u57df\u540d":4,"\u8bf7\u6b63\u786e\u63d0\u4ea4\u9700\u8981\u5237\u65b0\u7684\u57df\u540d":4,"\u8bf7\u6c42\u4e2d\u7684protocolversion\u5b57\u6bb5\u4e3a0\u6216\u6ca1\u6709\u8be5\u5b57\u6bb5\u65f6":4,"\u8bf7\u6c42\u4e2d\u7684protocolversion\u5b57\u6bb5\u4e3a1\u65f6":4,"\u8bf7\u6c42\u4ee3\u7406":4,"\u8bf7\u6c42\u4ee3\u7406\u6a21\u5f0f\u4e0b\u6709":4,"\u8bf7\u6c42\u4ee3\u7406\u7684vserver\u4e0b\u8868\u793a\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"\u8bf7\u6c42\u521b\u5efa\u5907\u4efd\u7684\u540d\u79f0":4,"\u8bf7\u6c42\u521b\u5efa\u7ec4\u7684\u540d\u79f0":4,"\u8bf7\u6c42\u534f\u8bae\u7248\u672c":4,"\u8bf7\u6c42\u6570\u547d\u4e2d\u7387":4,"\u8bf7\u6c42\u6570\u91cf":4,"\u8bf7\u6c42\u6b21\u6570":4,"\u8bf7\u6c42\u91cf":4,"\u8bf7\u6c42\u91cf\u5360":4,"\u8bf7\u8054\u7cfb\u4ea7\u54c1\u56e2\u961f":4,"\u8bf7\u8054\u7cfb\u60a8\u7684\u5ba2\u6237\u7ecf\u7406":4,"\u8bf7\u901a\u8fc7":4,"\u8bf7\u901a\u8fc7describecoupon\u63a5\u53e3\u67e5\u8be2":4,"\u8bf7\u9075\u7167":4,"\u8bfb\u5199\u5206\u79bb\u4e2d\u95f4\u4ef6\u91cd\u542f":4,"\u8bfb\u5199\u5206\u79bb\u6bd4\u91cd":4,"\u8bfb\u5199\u5206\u79bb\u72b6\u6001":4,"\u8bfb\u5199\u5206\u79bb\u7b56\u7565":4,"\u8bfb\u5199\u5206\u79bb\u8bbf\u95eeip":4,"\u8bfb\u5199\u5206\u79bbip":4,"\u8c03\u6574\u5171\u4eab\u5e26\u5bbd\u7684\u5e26\u5bbd\u503c":4,"\u8c03\u6574\u5185\u5b58\u7a7a\u95f4\u5bb9\u91cf":4,"\u8c03\u6574\u540e\u4e13\u7ebf\u5e26\u5bbd":4,"\u8c03\u6574\u540e\u5927\u5c0f":4,"\u8c03\u6574\u5e26\u5bbd\u540e\u7684eip\u4ef7\u683c":4,"\u8c03\u6574\u5f39\u6027ip\u7684\u5916\u7f51\u5e26\u5bbd":4,"\u8c03\u6574\u7684\u76ee\u6807\u5e26\u5bbd\u503c":4,"\u8c03\u6574\u89c4\u683c\u540e\u7684vpn\u7f51\u5173\u4ef7\u683c":4,"\u8c03\u6574udisk\u5bb9\u91cf":4,"\u8c03\u7528\u63a5\u53e3createismssignature\u7533\u8bf7\u89c6\u9891\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3createusmssignature\u7533\u8bf7\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3createusmstemplate\u7533\u8bf7\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u63a5\u53e3deleteismssignature\u5220\u9664\u89c6\u9891\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3deleteismstemplate\u5220\u9664\u89c6\u9891\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u63a5\u53e3deleteusmssignature\u5220\u9664\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3deleteusmstemplate\u5220\u9664\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u63a5\u53e3getusmssendreceipt\u77ed\u4fe1\u53d1\u9001\u72b6\u6001\u4fe1\u606f":4,"\u8c03\u7528\u63a5\u53e3queryismssignature\u67e5\u8be2\u89c6\u9891\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u72b6\u6001":4,"\u8c03\u7528\u63a5\u53e3queryusmssignature\u67e5\u8be2\u77ed\u4fe1\u7b7e\u540d\u7533\u8bf7\u72b6\u6001":4,"\u8c03\u7528\u63a5\u53e3queryusmstemplate\u67e5\u8be2\u77ed\u4fe1\u6a21\u677f\u7533\u8bf7\u72b6\u6001":4,"\u8c03\u7528\u63a5\u53e3sendusmsmessage\u53d1\u9001\u77ed\u4fe1":4,"\u8c03\u7528\u63a5\u53e3updateismssignature\u4fee\u6539\u672a\u901a\u8fc7\u5ba1\u6838\u7684\u89c6\u9891\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3updateusmssignature\u4fee\u6539\u672a\u901a\u8fc7\u5ba1\u6838\u7684\u77ed\u4fe1\u7b7e\u540d":4,"\u8c03\u7528\u63a5\u53e3updateusmstemplate\u4fee\u6539\u672a\u901a\u8fc7\u5ba1\u6838\u7684\u77ed\u4fe1\u6a21\u677f":4,"\u8c03\u7528\u65b9\u5f0f\u4e3e\u4f8b":4,"\u8c03\u7528\u8be5api":4,"\u8c03\u7528describepathxlineconfig\u63a5\u53e3\u83b7\u53d6\u7ebf\u8def\u5217\u8868":4,"\u8c03\u7528sendbatchusmsmessage\u63a5\u53e3\u6279\u91cf\u53d1\u9001\u77ed\u4fe1":4,"\u8c03\u7528sendusmsvideomessage\u65f6\u8fd4\u56de\u7684taskid\u7684\u96c6\u5408":4,"\u8d1f\u6570\u8868\u793a\u964d\u7ea7\u9000\u8d39":4,"\u8d1f\u8f7d\u5747\u8861":4,"\u8d1f\u8f7d\u5747\u8861\u5668":4,"\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8b\u7684id":4,"\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bid":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u4e1a\u52a1\u7ec4\u540d\u79f0":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u540d\u5b57":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u5907\u6ce8":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d1f\u8f7d\u5747\u8861\u7684\u8d44\u6e90id":4,"\u8d1f\u8f7d\u5747\u8861\u8d44\u6e90id":4,"\u8d26\u5355\u603b\u89c8":4,"\u8d26\u5355\u603b\u89c8\u6570\u636e\u603b\u6570":4,"\u8d26\u5355\u660e\u7ec6\u603b\u957f\u5ea6":4,"\u8d26\u5355\u7684\u652f\u4ed8\u72b6\u6001":4,"\u8d26\u5355\u7c7b\u578b":4,"\u8d26\u5355\u7ef4\u5ea6":4,"\u8d26\u5355\u7ef4\u5ea6\u6309\u4ea7\u54c1\u7b5b\u9009\u65f6\u663e\u793a":4,"\u8d26\u5355\u7ef4\u5ea6\u6309\u5b50\u8d26\u53f7\u7b5b\u9009\u65f6\u663e\u793a":4,"\u8d26\u5355\u7ef4\u5ea6\u6309\u9879\u76ee\u7b5b\u9009\u65f6\u663e\u793a":4,"\u8d26\u6237\u4e0b\u57df\u540d\u603b\u4e2a\u6570":4,"\u8d26\u6237\u4f59\u989d":4,"\u8d26\u6237\u53ef\u7528\u4f59\u989d":4,"\u8d26\u6237\u540d":4,"\u8d26\u6237\u6635\u79f0":4,"\u8d26\u6237\u90ae\u7bb1":4,"\u8d26\u671f":4,"\u8d2d\u4e70\u5230\u6708\u5e95":4,"\u8d2d\u4e70\u53f0\u6570":4,"\u8d2d\u4e70\u5468\u671f":4,"\u8d2d\u4e70\u5f39\u6027ip\u7684\u5b9e\u9645\u4ef7\u683c":4,"\u8d2d\u4e70\u6570\u91cf":4,"\u8d2d\u4e70\u6570\u91cf\u6309\u6708\u8d2d\u4e70\u81f3\u6708\u5e95\u8bf7\u4f200":4,"\u8d2d\u4e70\u65f6\u957f":4,"\u8d2d\u4e70\u65f6\u95f4":4,"\u8d2d\u4e70\u6d41\u91cf\u7684\u533a\u57df":4,"\u8d2d\u4e70\u7684\u65f6\u957f":4,"\u8d2d\u4e70\u7684vpn\u7f51\u5173\u89c4\u683c":4,"\u8d2d\u4e70db\u5b9e\u4f8b\u6570\u91cf":4,"\u8d2d\u4e70udisk\u5927\u5c0f":4,"\u8d2d\u4e70udisk\u7684\u65f6\u957f":4,"\u8d2d\u4e70umem\u5927\u5c0f":4,"\u8d2d\u4e70umem\u7684\u65f6\u957f":4,"\u8d2d\u4e70umemcache\u5927\u5c0f":4,"\u8d2d\u4e70umemcache\u7684\u65f6\u957f":4,"\u8d2d\u4e70uredis\u5927\u5c0f":4,"\u8d44\u6e90":4,"\u8d44\u6e90\u5185\u7f51ip":4,"\u8d44\u6e90\u521b\u5efa\u65f6\u95f4\u6233":4,"\u8d44\u6e90\u540d\u5b57":4,"\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u552f\u4e00\u6807\u8bc6":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u5b9e\u4f8b\u7684\u8d44\u6e90id":4,"\u8d44\u6e90\u5bf9\u5e94\u7684\u5185\u7f51ip":4,"\u8d44\u6e90\u603b\u6570":4,"\u8d44\u6e90\u6240\u5c5e\u5b50\u7f51\u7684id":4,"\u8d44\u6e90\u6240\u5c5e\u5b50\u7f51id":4,"\u8d44\u6e90\u6240\u5c5evpc\u7684id":4,"\u8d44\u6e90\u6240\u5c5evpcid":4,"\u8d44\u6e90\u662f\u5426\u8fc7\u671f":4,"\u8d44\u6e90\u6709\u6548\u671f":4,"\u8d44\u6e90\u6807\u8bc6\u503c":4,"\u8d44\u6e90\u6807\u8bc6\u5065":4,"\u8d44\u6e90\u7684\u5185\u7f51ip":4,"\u8d44\u6e90\u7684\u5185\u7f51ip\u5730\u5740":4,"\u8d44\u6e90\u7684\u552f\u4e00":4,"\u8d44\u6e90\u7684\u552f\u4e00\u6807\u8bc6":4,"\u8d44\u6e90\u7684id":4,"\u8d44\u6e90\u77ed":4,"\u8d44\u6e90\u7c7b\u578b":4,"\u8d44\u6e90\u7c7b\u578bid":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u8d44\u6e90\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u5b9e\u4f8b\u7684\u8d44\u6e90id":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u5b9e\u4f8b\u540d\u79f0":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u5b9e\u4f8b\u7c7b\u578b":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u5b9e\u4f8bid":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u7ed1\u5b9a\u7684\u865a\u62df\u7f51\u5361\u7684id":4,"\u8d44\u6e90\u7ed1\u5b9a\u865a\u62df\u7f51\u5361\u7684\u7c7b\u578b":4,"\u8d44\u6e90\u8fc7\u671f\u65f6\u95f4\u6233":4,"\u8d44\u6e90id":4,"\u8d44\u6e90ip":4,"\u8d60\u9001\u8d26\u6237\u4f59\u989d":4,"\u8d60\u9001\u91d1\u989d\u62b5\u6263":4,"\u8d77\u59cb\u65f6\u95f4":4,"\u8d85\u8fc7\u6700\u5927\u7248\u672c\u4f1a\u8fd4\u56de\u9519\u8bef":4,"\u8ddf\u968f":4,"\u8ddf\u968f301\u8df3\u8f6c":4,"\u8de8\u53ef\u7528\u533a":4,"\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528\u5907\u5e93\u6240\u5728\u53ef\u7528\u533a":4,"\u8de8\u53ef\u7528\u533a\u9ad8\u53ef\u7528db\u7684\u5907\u5e93\u6240\u5728\u533a\u57df":4,"\u8de8\u57df\u9ad8\u901f\u901a\u9053\u8def\u7531":4,"\u8de8\u673a\u623f\u7684\u8bfb\u5199\u5206\u79bb\u5fc5\u987b\u6709\u8fd9\u4e2a\u53c2\u6570":4,"\u8de8\u673a\u623f\u9ad8\u53ef\u7528\u5907\u5e93\u6240\u5728\u53ef\u7528\u533a":4,"\u8de8\u673a\u623furedi":4,"\u8def\u5f84":4,"\u8def\u5f84\u68c0\u67e5":4,"\u8def\u5f84\u6a21\u5f0f":4,"\u8def\u5f84\u8f6c\u53d1\u89c4\u5219":4,"\u8def\u7531\u4e0b\u4e00\u8df3\u8d44\u6e90id":4,"\u8def\u7531\u7b56\u7565\u589e":4,"\u8def\u7531\u8868\u4e0b\u4e00\u8df3\u7c7b\u578b":4,"\u8def\u7531\u8868\u540d\u79f0":4,"\u8def\u7531\u8868\u5907\u6ce8":4,"\u8def\u7531\u8868\u6240\u5c5e\u4e1a\u52a1\u7ec4":4,"\u8def\u7531\u8868\u6240\u5c5e\u7684vpc\u8d44\u6e90\u540d\u79f0":4,"\u8def\u7531\u8868\u6240\u5c5e\u7684vpc\u8d44\u6e90id":4,"\u8def\u7531\u8868\u7c7b\u578b":4,"\u8def\u7531\u8868\u8d44\u6e90id":4,"\u8def\u7531\u8868id":4,"\u8def\u7531\u89c4\u5219\u5907\u6ce8":4,"\u8def\u7531\u89c4\u5219\u7c7b\u578b":4,"\u8f6c\u50a8\u4e2d":4,"\u8f6c\u53d1\u534f\u8bae":4,"\u8f6c\u53d1\u7b56\u7565\u540d\u79f0":4,"\u8f6c\u53d1\u7b56\u7565id":4,"\u8f6c\u53d1\u89c4\u5219\u7684id":4,"\u8f6c\u6362\u4e2d":4,"\u8f6e\u8be2":4,"\u8f7b\u91cf\u7248":4,"\u8f83\u65e9\u7684\u516c\u6d4b\u514d\u8d39\u7248":4,"\u8f93\u5165\u4e00\u4e2adbid":4,"\u8f93\u5165\u4e0d\u5e26\u5355\u4f4d":4,"\u8f93\u5165\u53c2\u6570\u4e3aother":4,"\u8f93\u51fa\u9519\u8bef\u7684\u4fe1\u606f":4,"\u8fb9\u7f18\u547d\u4e2d":4,"\u8fc1\u79fb\u4e2d":4,"\u8fc7\u671f":4,"\u8fc7\u671f\u65f6\u95f4":4,"\u8fc7\u671f\u65f6\u95f4\u4e0d\u80fd\u8d85\u8fc7":4,"\u8fc7\u6ee4\u6761\u4ef6":4,"\u8fc7\u6ee4\u8fd4\u56de\u80fd\u88abudiskid\u6302\u8f7d\u7684\u4e91\u4e3b\u673a":4,"\u8fd0\u7ef4\u65f6\u95f40":4,"\u8fd0\u8425\u5546":4,"\u8fd0\u8425\u5546\u4ee3\u7801":4,"\u8fd0\u8425\u5546\u4fe1\u606f":4,"\u8fd0\u8425\u5546\u4fe1\u606f\u5982":4,"\u8fd0\u8425\u5546\u540d\u79f0":4,"\u8fd0\u8425\u5546\u62fc\u97f3":4,"\u8fd0\u8425\u5546\u7c7b\u578b":4,"\u8fd0\u884c":4,"\u8fd0\u884c\u4e2d":4,"\u8fd0\u884c\u9519\u8bef":4,"\u8fd4\u56de":4,"\u8fd4\u56de1\u8868\u793a\u53ef\u4ee5\u6269\u5bb9":4,"\u8fd4\u56de\u4e0e\u8be5\u4e3b\u673a\u5173\u8054\u7684\u4e91\u76d8\u4fe1\u606f":4,"\u8fd4\u56de\u4ece\u5907\u4efd\u521b\u5efa\u5b9e\u4f8b\u65f6":4,"\u8fd4\u56de\u4fe1\u606f":4,"\u8fd4\u56de\u503c":4,"\u8fd4\u56de\u503c\u4e2d\u7684diskset":4,"\u8fd4\u56de\u503c\u5e26\u5bbd\u503c\u6570\u636e":4,"\u8fd4\u56de\u503c\u8fd4\u56de\u6307\u5b9a\u65f6\u95f4\u533a\u95f4\u5185\u7684\u8bf7\u6c42\u6570":4,"\u8fd4\u56de\u503c\u8fd4\u56de\u6307\u5b9a\u65f6\u95f4\u533a\u95f4\u5185\u7684cdn\u56de\u6e90\u7684\u8bf7\u6c42\u6b21\u6570\u4e4b\u548c":4,"\u8fd4\u56de\u503c\u8fd4\u56de\u6307\u5b9a\u65f6\u95f4\u533a\u95f4\u5185\u7684cdn\u6536\u5230\u7684\u8bf7\u6c42\u6b21\u6570\u4e4b\u548c":4,"\u8fd4\u56de\u503c\u8fd4\u56de\u6307\u5b9a\u65f6\u95f4\u533a\u95f4\u5185cdn\u7684\u5e26\u5bbd\u5cf0\u503c":4,"\u8fd4\u56de\u5355\u4f4d\u4e3a\u5143":4,"\u8fd4\u56de\u5bf9\u5e94\u7684":4,"\u8fd4\u56de\u6240\u6709\u526f\u672c\u96c6\u6210\u5458\u7684id":4,"\u8fd4\u56de\u6307\u5b9a\u7684vpc\u4e0b\u7684\u6240\u6709vpn\u7f51\u5173\u7684\u4fe1\u606f":4,"\u8fd4\u56de\u652f\u6301\u67d0\u79cd\u5b9e\u4f8b\u7c7b\u578b\u7684db\u7c7b\u578b":4,"\u8fd4\u56de\u652f\u6301\u67d0\u79cd\u78c1\u76d8\u7c7b\u578b\u7684db\u7c7b\u578b":4,"\u8fd4\u56de\u6570\u636e\u504f\u79fb\u91cf":4,"\u8fd4\u56de\u6570\u636e\u5206\u9875\u503c":4,"\u8fd4\u56de\u6570\u636e\u957f\u5ea6":4,"\u8fd4\u56de\u6b64bucket\u65e5\u4f7f\u7528\u91cf":4,"\u8fd4\u56de\u6d88\u606f":4,"\u8fd4\u56de\u72b6\u6001\u7801\u63cf\u8ff0":4,"\u8fd4\u56de\u7684":4,"\u8fd4\u56de\u7684\u5b9e\u4f8bid":4,"\u8fd4\u56de\u7684\u65e5\u5fd7\u6570\u636e":4,"\u8fd4\u56de\u7684\u6700\u5927\u6761\u6570":4,"\u8fd4\u56de\u7684\u7535\u8bdd\u53f7\u7801":4,"\u8fd4\u56de\u7684\u7ed3\u679c\u6570\u91cf\u9650\u5236":4,"\u8fd4\u56de\u7684token":4,"\u8fd4\u56de\u7801":4,"\u8fd4\u56de\u7b2c\u51e0\u9875":4,"\u8fd4\u56de\u8bb0\u5f55":4,"\u8fd4\u56de\u8be5\u5b9e\u4f8b\u6240\u5728\u96c6\u7fa4\u4e2d\u7684\u89d2\u8272":4,"\u8fd4\u56de\u8be5\u76d8\u6240\u505a\u5feb\u7167":4,"\u8fd4\u56de\u8fd0\u7ef4\u65f6\u95f4":4,"\u8fd4\u56de\u8fd9\u4e2a\u9879\u76ee\u7684\u65e5\u4f7f\u7528\u91cf":4,"\u8fd4\u56de\u9519\u8bef\u6d88\u606f":4,"\u8fd8\u662f\u6309\u6574\u4e2a\u8d26\u6237\u67e5\u8be2":4,"\u8fd8\u80fd\u63d0\u4f9b\u670d\u52a1":4,"\u8fd8\u9700\u8981\u5728\u4e3b\u673a\u5185\u90e8\u8fdb\u884c\u6587\u4ef6\u7cfb\u7edf\u64cd\u4f5c":4,"\u8fd9\u4e24\u5957\u7b2c\u4e8c\u5957\u53c2\u6570\u7684\u4f18\u5148\u7ea7\u66f4\u9ad8":4,"\u8fd9\u4e2a\u53c2\u6570\u5e94\u8be5\u662f\u4e0a\u6b21\u8f6e\u8be2\u8bf7\u6c42\u65f6\u7684\u65f6\u95f4\u6233":4,"\u8fd9\u6837\u51cf\u5c11\u4e3b\u8282\u70b9\u7684\u538b\u529b":4,"\u8fde\u63a5":4,"\u8fde\u7eed\u544a\u8b66":4,"\u9000\u8ba2\u4fe1\u606f":4,"\u9000\u8ba2\u56de\u590dd":4,"\u9000\u8ba2\u56de\u590dn":4,"\u9000\u8ba2\u56de\u590dt":4,"\u9000\u8ba2\u56de\u590dtd":4,"\u9000\u8ba2\u56ded":4,"\u9000\u8ba2\u56det":4,"\u9000\u8ba2\u56detd":4,"\u9000\u8d39":4,"\u9002\u7528\u4e8e\u4e00\u6b21\u67e5\u8be2\u4e00\u4e2a\u5b50\u7f51\u4fe1\u606f":4,"\u9002\u7528\u4e8e\u4e00\u6b21\u67e5\u8be2\u591a\u4e2a\u5b50\u7f51\u4fe1\u606f":4,"\u9009\u62e9\u52a0\u5bc6\u76d8\u65f6\u5fc5\u586b":4,"\u9009\u62e9\u7684\u7ebf\u8def":4,"\u9009\u62e9\u9ed8\u8ba4\u7684\u5907\u4efd\u65b9\u5f0f":4,"\u9009\u9879":4,"\u9012\u589ewhitelist":4,"\u901a\u5e38\u4e0d\u4f7f\u7528":4,"\u901a\u7528\u540d":4,"\u901a\u77e5\u7c7b":4,"\u901a\u8fc7":4,"\u901a\u8fc7\u5b50\u7f51\u7b5b\u9009\u4e3b\u673a":4,"\u901a\u8fc7\u786c\u4ef6\u9694\u79bb\u7ec4\u7b5b\u9009\u4e3b\u673a":4,"\u901a\u8fc7\u8c03\u7528checkuredisallowance\u63a5\u53e3":4,"\u901a\u8fc7describeroutetable\u62ff\u5230":4,"\u901a\u8fc7vpc\u7b5b\u9009\u4e3b\u673a":4,"\u9080\u8bf7\u5b50\u5e10\u53f7\u6210\u5458":4,"\u90a3\u4e48\u5b83\u4f1a\u6839\u636e\u65b0\u914d\u7f6e\u7684\u53c2\u6570":4,"\u90a3\u4e48\u628a\u8fd9\u4e2adbid\u5b9e\u4f8b\u7684\u6240\u6709\u4ece\u5e93\u4fe1\u606f\u4e00\u8d77\u62c9\u53d6\u5e76\u8fd4\u56de":4,"\u90e8\u7f72\u4e2d":4,"\u914d\u7f6e":4,"\u914d\u7f6e\u4e2d":4,"\u914d\u7f6e\u5185\u5bb9":4,"\u914d\u7f6e\u53c2\u6570\u7ec4\u540d\u79f0":4,"\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"\u914d\u7f6e\u540d\u79f0":4,"\u914d\u7f6e\u5931\u8d25":4,"\u914d\u7f6e\u5931\u8d25restart":4,"\u914d\u7f6e\u5bf9\u5e94\u7684redis\u7248\u672c":4,"\u914d\u7f6e\u6240\u5904\u7684\u72b6\u6001":4,"\u914d\u7f6e\u63cf\u8ff0":4,"\u914d\u7f6e\u6587\u4ef6\u5185\u5bb9":4,"\u914d\u7f6e\u6587\u4ef6\u7684\u540d\u5b57":4,"\u914d\u7f6e\u6587\u4ef6\u7684\u63cf\u8ff0":4,"\u914d\u7f6e\u6587\u4ef6id":4,"\u914d\u7f6e\u670d\u52a1\u5668\u7684dbid":4,"\u914d\u7f6e\u8282\u70b9":4,"\u914d\u7f6eid":4,"\u914d\u7f6einstancetyp":4,"\u914d\u7f6eusessd\u548cssdtyp":4,"\u914d\u989d\u5269\u4f59\u91cf":4,"\u914d\u989d\u6d88\u8d39\u5f53\u65e5\u4f7f\u7528\u7684\u4e0b\u8f7d\u6d41\u91cf":4,"\u914d\u989d\u6d88\u8d39\u5f53\u65e5\u4f7f\u7528\u7684\u5b58\u50a8\u5bb9\u91cf":4,"\u914d\u989d\u6d88\u8d39\u5f53\u65e5\u4f7f\u7528\u7684\u8bf7\u6c42\u6b21\u6570":4,"\u914d\u989d\u6d88\u8d39\u65f6\u95f4":4,"\u914d\u989d\u7c7b\u578b":4,"\u91c7\u7528":4,"\u91c7\u7528\u65f6\u95f4\u6233":4,"\u91c7\u7528md5\u4fe1\u606f\u6458\u8981\u7b97\u6cd5":4,"\u91c7\u7528utc\u8ba1\u65f6\u65f6\u95f4\u6233":4,"\u91ca\u653e":4,"\u91ca\u653e\u5f39\u6027ip\u8d44\u6e90":4,"\u91ca\u653evip\u8d44\u6e90":4,"\u91cc\u7684\u57df\u540d":4,"\u91cd\u542f\u4e2d":4,"\u91cd\u542f\u4e2dsetpasswordfail":4,"\u91cd\u542f\u4e3b\u5907\u5b9e\u4f8b":4,"\u91cd\u542f\u5355\u673amemcach":4,"\u91cd\u542f\u5bb9\u5668\u7ec4":4,"\u91cd\u542f\u670d\u52a1\u9700\u8981\u8f93\u5165\u5bc6\u7801":4,"\u91cd\u542f\u7269\u7406\u673a":4,"\u91cd\u542f\u7b56\u7565":4,"\u91cd\u542f\u865a\u62df\u673av2":4,"\u91cd\u542fudb\u5b9e\u4f8b":4,"\u91cd\u542fuddb\u5b9e\u4f8b":4,"\u91cd\u542fuinfluxdb\u5b9e\u4f8b":4,"\u91cd\u547d\u540d\u7684udisk\u7684id":4,"\u91cd\u547d\u540dudb\u5b9e\u4f8b":4,"\u91cd\u547d\u540dudisk":4,"\u91cd\u547d\u540dudisk\u7684nam":4,"\u91cd\u590d":4,"\u91cd\u590d\u6570\u636e\u5904\u7406\u89c4\u5219":4,"\u91cd\u65b0\u542f\u52a8uhost\u5b9e\u4f8b":4,"\u91cd\u65b0\u5b89\u88c5\u6307\u5b9auhost\u5b9e\u4f8b\u7684\u64cd\u4f5c\u7cfb\u7edf":4,"\u91cd\u7f6e\u5bc6\u7801":4,"\u91cd\u7f6e\u88f8\u91d1\u5c5e\u5b9e\u4f8b\u7684\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u91cd\u7f6euhost\u5b9e\u4f8b\u7684\u7ba1\u7406\u5458\u5bc6\u7801":4,"\u91cd\u88c5\u7269\u7406\u673a\u64cd\u4f5c\u7cfb\u7edf":4,"\u91cd\u8bd5\u6b21\u6570":4,"\u91cd\u8bd5\u7b49\u5f85\u4e2d":4,"\u91ce\u86ee\u6a21\u5f0f":4,"\u91cf\u5927\u5c0f":4,"\u9488\u5bf9\u7684\u534f\u8bae\u89c4\u5219":4,"\u9488\u5bf9\u7684\u7aef\u53e3\u8303\u56f4":4,"\u9488\u5bf9\u7684ip\u534f\u8bae":4,"\u9500\u6bc1\u5012\u8ba1\u65f6":4,"\u9519\u8bef":4,"\u9519\u8bef\u4fe1\u606f":4,"\u9519\u8bef\u63cf\u8ff0":4,"\u9519\u8bef\u65e5\u5fd7":4,"\u9519\u8bef\u65f6\u663e\u793a\u5177\u4f53\u9519\u8bef\u4fe1\u606f":4,"\u9519\u8bef\u6d88\u606f":4,"\u9519\u8bef\u7684\u65f6\u5019\u8fd4\u56de":4,"\u955c\u50cf":4,"\u955c\u50cf\u4ed3\u5e93\u540d\u79f0":4,"\u955c\u50cf\u4ed3\u5e93\u5730\u5740":4,"\u955c\u50cf\u4ed3\u5e93\u63cf\u8ff0":4,"\u955c\u50cf\u4ed3\u5e93\u662f\u5426\u516c\u5f00":4,"\u955c\u50cf\u4ed3\u5e93\u662f\u5426\u5916\u7f51\u53ef\u4ee5\u8bbf\u95ee":4,"\u955c\u50cf\u4ed3\u5e93\u7c7b\u578b":4,"\u955c\u50cf\u4fe1\u606f":4,"\u955c\u50cf\u521b\u5efa\u65f6\u95f4":4,"\u955c\u50cf\u521b\u5efa\u65f6\u95f4\u6233":4,"\u955c\u50cf\u540d\u79f0":4,"\u955c\u50cf\u5927\u5c0f":4,"\u955c\u50cf\u5bc6\u94a5":4,"\u955c\u50cf\u5e02\u573a":4,"\u955c\u50cf\u5f53\u524d\u72b6\u6001":4,"\u955c\u50cf\u603b\u6570":4,"\u955c\u50cf\u62c9\u53d6\u6210\u529f":4,"\u955c\u50cf\u63cf\u8ff0":4,"\u955c\u50cf\u66f4\u65b0\u65f6\u95f4":4,"\u955c\u50cf\u683c\u5f0f":4,"\u955c\u50cf\u72b6\u6001":4,"\u955c\u50cf\u7528\u6237\u540d\u548c\u5bc6\u7801":4,"\u955c\u50cf\u7c7b\u522b":4,"\u955c\u50cf\u7c7b\u578b":4,"\u955c\u50cf\u88ab\u4e0b\u8f7d\u6b21\u6570":4,"\u955c\u50cf\u9700\u8981\u5bfc\u5165\u673a\u623f":4,"\u955c\u50cfdigest\u503c":4,"\u955c\u50cfid":4,"\u955c\u50cfid\u8fdb\u884c\u8fc7\u6ee4":4,"\u957f\u5ea6":4,"\u957f\u5ea6\u4e0d\u80fd\u5927\u4e8e":4,"\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7":4,"\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc732":4,"\u957f\u5ea6\u4e0d\u8d85\u8fc7128\u5b57\u7b26":4,"\u957f\u5ea6\u4e0d\u8d85\u8fc732":4,"\u957f\u5ea6\u4e0d\u8d85\u8fc764":4,"\u957f\u5ea6\u4e3a1":4,"\u957f\u5ea6\u4e3a2":4,"\u957f\u5ea6\u8981\u6c42\u4e3a6":4,"\u957f\u5ea6\u9650\u5236\u4e3a\u4e0d\u8d85\u8fc732\u5b57\u8282":4,"\u95f2\u65f6\u6d41\u91cf":4,"\u9608\u503c\u5e94\u8be5\u4f20":4,"\u9632\u706b\u5899\u4e1a\u52a1\u7ec4":4,"\u9632\u706b\u5899\u52a8\u4f5c":4,"\u9632\u706b\u5899\u540d\u79f0":4,"\u9632\u706b\u5899\u5907\u6ce8":4,"\u9632\u706b\u5899\u63cf\u8ff0":4,"\u9632\u706b\u5899\u7ec4\u521b\u5efa\u65f6\u95f4":4,"\u9632\u706b\u5899\u7ec4\u7c7b\u578b":4,"\u9632\u706b\u5899\u7ed1\u5b9a\u7684\u8d44\u6e90\u5217\u8868":4,"\u9632\u706b\u5899\u7ed1\u5b9a\u8d44\u6e90\u6570\u91cf":4,"\u9632\u706b\u5899\u89c4\u5219":4,"\u9632\u706b\u5899\u89c4\u5219\u5907\u6ce8":4,"\u9632\u706b\u5899\u8d44\u6e90\u6570\u91cf":4,"\u9632\u706b\u5899\u8d44\u6e90id":4,"\u9632\u706b\u5899id":4,"\u9632\u76d7\u94fereferer\u7c7b\u578b":4,"\u9632\u76d7\u94fereferer\u89c4\u5219":4,"\u964d\u4f4e\u6570\u636e\u8282\u70b9\u7684\u6570\u636e\u5bb9\u91cf\u548c\u5185\u5b58\u6240\u6709\u6570\u636e\u8282\u70b9\u4ee5\u53ca\u5176\u6240\u6302\u8f7d\u7684\u53ea\u8bfb\u5b9e\u4f8b\u7684\u914d\u7f6e\u90fd\u53d7\u5230\u5f71\u54cd\u5347\u964d\u7ea7\u6570\u636e\u8282\u70b9\u7684\u914d\u7f6e\u4e4b\u540e\u4e4b\u540e":4,"\u964d\u4f4e\u8bf7\u6c42\u5904\u7406\u7684\u5e76\u53d1\u6027\u4fee\u6539\u8bf7\u6c42\u5904\u7406\u8282\u70b9\u4e2a\u6570\u4e4b\u540e":4,"\u9650\u4e3b\u8d26\u53f7\u4f7f\u7528":4,"\u9650\u5236\u503c":4,"\u9650\u5236\u503c\u5360":4,"\u9650\u5355\u70b9\u767b\u5f55":4,"\u9650\u65f6\u4f18\u60e0\u7684\u6298\u524d\u539f\u4ef7":4,"\u9694\u5f00":4,"\u9694\u79bb\u7ec4id":4,"\u96a7\u9053\u540d\u79f0":4,"\u96a7\u9053id":4,"\u96c6\u6210\u8f6f\u4ef6\u540d\u79f0":4,"\u96c6\u7fa4":4,"\u96c6\u7fa4\u540d":4,"\u96c6\u7fa4\u540d\u79f0":4,"\u96c6\u7fa4\u5916\u90e8apiserver\u5730\u5740":4,"\u96c6\u7fa4\u6240\u6709\u8282\u70b9\u7684\u4ed8\u8d39\u6a21\u5f0f":4,"\u96c6\u7fa4\u7248\u672c":4,"\u96c6\u7fa4\u72b6\u6001":4,"\u96c6\u7fa4\u8282\u70b9\u5bc6\u7801":4,"\u96c6\u7fa4apiserver\u5730\u5740":4,"\u96c6\u7fa4ca\u6839\u8bc1\u4e66":4,"\u96c6\u7fa4etcd\u670d\u52a1\u5bc6\u94a5":4,"\u96c6\u7fa4etcd\u670d\u52a1\u8bc1\u4e66":4,"\u96c6\u7fa4id":4,"\u96c6\u7fa4kube":4,"\u96c6\u7fa4node\u53capod\u6240\u5c5e\u5b50\u7f51":4,"\u96c6\u7fa4node\u53capod\u6240\u5c5evpc":4,"\u9700\u4e0e\u7b7e\u540d\u7c7b\u578b\u4fdd\u6301\u4e00\u81f4":4,"\u9700\u5148\u8fdb\u884cbase64\u7f16\u7801\u683c\u5f0f\u8f6c\u6362":4,"\u9700\u586b\u5199projectid":4,"\u9700\u5f00\u542f\u6743\u9650":4,"\u9700\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u53cauhostid":4,"\u9700\u6307\u5b9aoffset":4,"\u9700\u7ed3\u5408isboot\u786e\u5b9a\u5177\u4f53\u78c1\u76d8\u7c7b\u578b":4,"\u9700\u81ea\u884c\u59a5\u5584\u4fdd\u5b58\u5bc6\u94a5\u5bf9\u7684\u79c1\u94a5\u90e8\u5206":4,"\u9700\u8981":4,"\u9700\u8981\u4e3b\u4ece\u5207\u6362":4,"\u9700\u8981\u4fdd\u7559\u7684vpc\u7f51\u6bb5":4,"\u9700\u8981\u4fee\u6539\u4e3a\u7684":4,"\u9700\u8981\u514b\u9686\u7684\u6e90\u76d8id":4,"\u9700\u8981\u51fa\u5916\u7f51\u7684\u79c1\u7f51ip\u5730\u5740":4,"\u9700\u8981\u5217\u51fa\u7684\u5907\u4efd\u6587\u4ef6\u7c7b\u578b":4,"\u9700\u8981\u521b\u5efa\u7684\u5de5\u4f5c\u6d41\u540d\u79f0":4,"\u9700\u8981\u521b\u5efa\u7684\u5de5\u4f5c\u6d41namespac":4,"\u9700\u8981\u5220\u9664\u7684aclid":4,"\u9700\u8981\u5220\u9664\u7684entryid":4,"\u9700\u8981\u5237\u65b0\u7684url":4,"\u9700\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684groupid":4,"\u9700\u8981\u5347\u7ea7\u7684\u7a7a\u95f4\u7684spaceid":4,"\u9700\u8981\u5378\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u9700\u8981\u540c\u65f6\u8bbe\u7f6ebackupdate\u5b57\u6bb5":4,"\u9700\u8981\u548c":4,"\u9700\u8981\u5907\u4efd\u6587\u4ef6":4,"\u9700\u8981\u5927\u4e8e\u539fsize":4,"\u9700\u8981\u5c06\u533a\u53f7\u4f7f\u7528\u5c0f\u62ec\u53f7\u5305\u542b":4,"\u9700\u8981\u5c55\u793a\u5177\u4f53\u5206\u914d\u7684\u8f6c\u53d1\u673a\u623f":4,"\u9700\u8981\u6062\u590d\u7684\u76d8id":4,"\u9700\u8981\u6302\u8f7d\u7684udisk\u5b9e\u4f8bid":4,"\u9700\u8981\u6307\u5b9a\u6570\u636e\u4e2d\u5fc3\u53cauhostid\u4e24\u4e2a\u53c2\u6570\u7684\u503c":4,"\u9700\u8981\u6307\u5b9amongo\u7684\u89d2\u8272":4,"\u9700\u8981\u66f4\u6539\u7684acl":4,"\u9700\u8981\u66f4\u65b0\u7684entri":4,"\u9700\u8981\u68c0\u6d4b\u7684\u624b\u673a\u53f7":4,"\u9700\u8981\u6ce8\u610f\u7684\u662f":4,"\u9700\u8981\u6dfb\u52a0\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u7684\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bid":4,"\u9700\u8981\u6dfb\u52a0\u5185\u5bb9\u8f6c\u53d1\u7b56\u7565\u7684vserver\u5b9e\u4f8bid":4,"\u9700\u8981\u7ed1\u5b9a\u7684\u5b50\u7f51id":4,"\u9700\u8981\u7ed9\u51fa\u6570\u636e\u4e2d\u5fc3":4,"\u9700\u8981\u83b7\u53d6\u7684\u5185\u5bb9\u5237\u65b0\u7684\u72b6\u6001":4,"\u9700\u8981\u83b7\u53d6\u7684\u5185\u5bb9\u9884\u70ed\u7684\u72b6\u6001":4,"\u9700\u8981\u83b7\u53d6\u7684acl\u6240\u5c5e\u7684vpc\u7684id":4,"\u9700\u8981\u88ab\u51bb\u7ed3\u7684\u6210\u5458email":4,"\u9700\u8981\u88ab\u79fb\u9664\u6210\u5458email":4,"\u9700\u8981\u89e3\u7801\u83b7\u53d6\u4fe1\u606f":4,"\u9700\u8981\u89e3\u7ed1\u7684\u8d44\u6e90id":4,"\u9700\u8981\u8bbe\u7f6e":4,"\u9700\u8981\u8bbe\u7f6e\u6570\u636e\u65b9\u821f\u7684udisk\u7684id":4,"\u9700\u8981\u8fc1\u79fb\u7684":4,"\u9700\u8981\u8fd4\u56de\u7684\u5171\u4eab\u5e26\u5bbdid":4,"\u975e":4,"\u975e0\u8868\u793a\u5931\u8d25":4,"\u975e200":4,"\u975e\u4e91\u4e3b\u673a\u6216\u7269\u7406\u4e91\u4e3b\u673a\u8d44\u6e90id":4,"\u975e\u4f38\u7f29\u7ec4\u521b\u5efa\u51fa\u6765\u7684\u8282\u70b9":4,"\u975e\u5171\u4eab\u5e26\u5bbd":4,"\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f":4,"\u975e\u5171\u4eab\u5e26\u5bbd\u6a21\u5f0f\u5fc5\u987b\u6307\u5b9a\u975e0mbps\u5e26\u5bbd":4,"\u975e\u52a0\u5bc6":4,"\u975e\u52a0\u5bc6\u76d8":4,"\u975e\u8d1f\u6574\u6570":4,"\u975e\u8d44\u6e90\u81ea\u8eabid":4,"\u975e\u9ed8\u8ba4\u9879\u76ee\u8d44\u6e90":4,"\u975essd\u8d44\u6e90\u4e0d\u518d\u63d0\u4f9b":4,"\u97f3\u9891":4,"\u97f3\u9891\u4e3amp3":4,"\u97f3\u9891\u4f7f\u7528":4,"\u9875\u663e\u793a\u7684\u6761\u76ee\u6570":4,"\u9875\u663e\u793a\u7684\u8d77\u59cb\u504f\u79fb":4,"\u9879\u76ee":4,"\u9879\u76ee\u4e0b\u6210\u5458\u6570\u91cf":4,"\u9879\u76ee\u4e0b\u8d44\u6e90\u6570\u91cf":4,"\u9879\u76ee\u540d":4,"\u9879\u76ee\u540d\u79f0":4,"\u9879\u76ee\u603b\u6570":4,"\u9879\u76eeid":4,"\u9879\u76eeid\u4fe1\u606f":4,"\u9879\u76eeid\u9879\u76eeid":4,"\u987b\u8f93\u5165":4,"\u9884\u4ed8\u8d39":4,"\u9884\u5171\u4eab\u5bc6\u94a5":4,"\u9884\u68c0\u67e5\u65f6\u4f1a\u68c0\u67e5\u8be5\u503c":4,"\u9884\u70ed\u4efb\u52a1\u7684\u603b\u6570":4,"\u9884\u70edurl\u5217\u8868":4,"\u9996\u5c14":4,"\u9999\u6e2f":4,"\u9999\u6e2f\u5730\u57df\u652f\u6301":4,"\u9999\u6e2f\u5bb9\u91cf\u578b\u5fc5\u987b\u4e3a100\u7684\u6574\u6570\u500d":4,"\u9a8c\u8bc1\u7801\u7c7b":4,"\u9a8c\u8bc1\u7801\u7c7b\u77ed\u4fe1\u6a21\u677f":4,"\u9ad8":4,"\u9ad8\u53ef\u7528":4,"\u9ad8\u53ef\u7528\u67b6\u6784":4,"\u9ad8\u53ef\u7528\u7248udb\u5b9e\u4f8b":4,"\u9ad8\u53ef\u7528\u90e8\u7f72\u5b9e\u4f8b":4,"\u9ad8\u6027\u80fd\u578b":4,"\u9ad8\u6027\u80fd\u7248":4,"\u9ad8\u6548\u6570\u636e\u76d8":4,"\u9ad8\u6548\u7cfb\u7edf\u76d8":4,"\u9ed1\u540d\u5355":4,"\u9ed1\u540d\u5355\u548c\u767d\u540d\u5355":4,"\u9ed8\u8ba4":4,"\u9ed8\u8ba40":4,"\u9ed8\u8ba41":4,"\u9ed8\u8ba4100":4,"\u9ed8\u8ba41000":4,"\u9ed8\u8ba4110":4,"\u9ed8\u8ba41\u70b9":4,"\u9ed8\u8ba41g":4,"\u9ed8\u8ba41gb":4,"\u9ed8\u8ba42":4,"\u9ed8\u8ba420":4,"\u9ed8\u8ba420gb":4,"\u9ed8\u8ba424\u5c0f\u65f6":4,"\u9ed8\u8ba427017":4,"\u9ed8\u8ba43\u70b9":4,"\u9ed8\u8ba45\u5206\u949f":4,"\u9ed8\u8ba47\u6b21":4,"\u9ed8\u8ba480":4,"\u9ed8\u8ba4\u4e0d\u4f7f\u7528":4,"\u9ed8\u8ba4\u4e0d\u5199":4,"\u9ed8\u8ba4\u4e0d\u5220\u9664":4,"\u9ed8\u8ba4\u4e0d\u586b":4,"\u9ed8\u8ba4\u4e0d\u586b\u5199":4,"\u9ed8\u8ba4\u4e0d\u5f00\u901a":4,"\u9ed8\u8ba4\u4e0d\u66f4\u6539":4,"\u9ed8\u8ba4\u4e0d\u8fd4\u56de":4,"\u9ed8\u8ba4\u4e0e\u6e90vpc\u540c\u5730\u57df":4,"\u9ed8\u8ba4\u4e0e\u6e90vpc\u540c\u9879\u76ee":4,"\u9ed8\u8ba4\u4e2d\u6587":4,"\u9ed8\u8ba4\u4e3a":4,"\u9ed8\u8ba4\u4e3a0":4,"\u9ed8\u8ba4\u4e3a00":4,"\u9ed8\u8ba4\u4e3a1":4,"\u9ed8\u8ba4\u4e3a10":4,"\u9ed8\u8ba4\u4e3a100":4,"\u9ed8\u8ba4\u4e3a10000":4,"\u9ed8\u8ba4\u4e3a110":4,"\u9ed8\u8ba4\u4e3a1\u53f0":4,"\u9ed8\u8ba4\u4e3a20":4,"\u9ed8\u8ba4\u4e3a200":4,"\u9ed8\u8ba4\u4e3a24":4,"\u9ed8\u8ba4\u4e3a3600":4,"\u9ed8\u8ba4\u4e3a50":4,"\u9ed8\u8ba4\u4e3a86400":4,"\u9ed8\u8ba4\u4e3a\u4e0d\u66f4\u6539":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u5730\u57df":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u8d44\u6e90\u751f\u6548":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u8d44\u6e90\u7c7b\u578b":4,"\u9ed8\u8ba4\u4e3a\u5168\u90e8\u9879\u76ee":4,"\u9ed8\u8ba4\u4e3a\u52a0\u901f\u57df\u540d":4,"\u9ed8\u8ba4\u4e3a\u540e\u4ed8\u8d39":4,"\u9ed8\u8ba4\u4e3a\u5426":4,"\u9ed8\u8ba4\u4e3a\u542f\u7528":4,"\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5730\u57df\u7684\u9ed8\u8ba4\u5b50\u7f51":4,"\u9ed8\u8ba4\u4e3a\u5f53\u524d\u5730\u57df\u7684\u9ed8\u8ba4vpc":4,"\u9ed8\u8ba4\u4e3a\u6309\u6708\u4ed8\u8d39":4,"\u9ed8\u8ba4\u4e3a\u6708\u4ed8":4,"\u9ed8\u8ba4\u4e3a\u6e90vpc\u6240\u5728\u5730\u57df":4,"\u9ed8\u8ba4\u4e3a\u6e90vpc\u6240\u5728\u9879\u76eeid":4,"\u9ed8\u8ba4\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u4e3a\u7acb\u5373\u5f00\u901a":4,"\u9ed8\u8ba4\u4e3a\u81ea\u52a8\u8bc6\u522b":4,"\u9ed8\u8ba4\u4e3a\u83b7\u53d6\u4e09\u79cd\u4ef7\u683c":4,"\u9ed8\u8ba4\u4e3a\u8be5\u9879\u76ee\u4e0b\u6240\u6709nat\u7f51\u5173":4,"\u9ed8\u8ba4\u4e3a\u8fd4\u56de\u6240\u6709\u9632\u706b\u5899":4,"\u9ed8\u8ba4\u4e3a\u96c6\u7fa4\u521b\u5efa\u65f6\u586b\u5199\u7684\u5b50\u7f51id":4,"\u9ed8\u8ba4\u4e3abandwidth":4,"\u9ed8\u8ba4\u4e3abasic":4,"\u9ed8\u8ba4\u4e3adefault":4,"\u9ed8\u8ba4\u4e3adynam":4,"\u9ed8\u8ba4\u4e3afals":4,"\u9ed8\u8ba4\u4e3ainf":4,"\u9ed8\u8ba4\u4e3aiptabl":4,"\u9ed8\u8ba4\u4e3amonth":4,"\u9ed8\u8ba4\u4e3ams_redi":4,"\u9ed8\u8ba4\u4e3ano":4,"\u9ed8\u8ba4\u4e3aphost":4,"\u9ed8\u8ba4\u4e3aprivat":4,"\u9ed8\u8ba4\u4e3arequestproxi":4,"\u9ed8\u8ba4\u4e3aroutet":4,"\u9ed8\u8ba4\u4e3assd\u4e91\u76d8":4,"\u9ed8\u8ba4\u4e3asubnet":4,"\u9ed8\u8ba4\u4e3atrue":4,"\u9ed8\u8ba4\u4e3ature":4,"\u9ed8\u8ba4\u4e3aucdn":4,"\u9ed8\u8ba4\u4f1a\u83b7\u53d6\u53d1\u5e03\u7248\u672c\u5bf9\u5e94\u7684workflow":4,"\u9ed8\u8ba4\u4f7f\u7528\u4e3b\u5e93\u7684\u914d\u7f6e":4,"\u9ed8\u8ba4\u4f7f\u7528\u539f\u955c\u50cf":4,"\u9ed8\u8ba4\u4f7f\u7528sa\u751f\u5b58\u65f6\u95f4":4,"\u9ed8\u8ba4\u503c":4,"\u9ed8\u8ba4\u503c1":4,"\u9ed8\u8ba4\u503c1\u4e2a\u6708":4,"\u9ed8\u8ba4\u503c25":4,"\u9ed8\u8ba4\u503c\u4e3a":4,"\u9ed8\u8ba4\u503c\u4e3a0":4,"\u9ed8\u8ba4\u503c\u4e3a1":4,"\u9ed8\u8ba4\u503c\u4e3a10":4,"\u9ed8\u8ba4\u503c\u4e3a20":4,"\u9ed8\u8ba4\u503c\u4e3a60":4,"\u9ed8\u8ba4\u503c\u4e3a80":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u5b9e\u4f8b\u7684\u5185\u5b58\u5927\u5c0f":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u5b9e\u4f8b\u7684cpu\u6838\u6570":4,"\u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u7684\u5907\u4efd\u6a21\u5f0f":4,"\u9ed8\u8ba4\u503c\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u503c\u4e3adefault":4,"\u9ed8\u8ba4\u503c\u4e3anormal":4,"\u9ed8\u8ba4\u503c\u4e3aping":4,"\u9ed8\u8ba4\u503c\u4e3auhost":4,"\u9ed8\u8ba4\u503c\u662f":4,"\u9ed8\u8ba4\u503cfals":4,"\u9ed8\u8ba4\u5168\u90e8":4,"\u9ed8\u8ba4\u5168\u90e8\u533a\u57df":4,"\u9ed8\u8ba4\u5168\u90e8\u57df\u540d":4,"\u9ed8\u8ba4\u5168\u90e8\u673a\u623f":4,"\u9ed8\u8ba4\u5168\u90e8\u8282\u70b9":4,"\u9ed8\u8ba4\u5173\u95ed\u4f1a\u8bdd\u4fdd\u6301":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u7c7b\u578b\u4e0b\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u7c7b\u578b\u4e0b\u8fd4\u56de\u5f53\u524drs\u603b\u6570":4,"\u9ed8\u8ba4\u5185\u5bb9\u8f6c\u53d1\u89c4\u5219\u4e0b\u4e3a0":4,"\u9ed8\u8ba4\u5206\u53d1\u5230\u6240\u6709\u673a\u623f":4,"\u9ed8\u8ba4\u524d\u4e00\u5929\u7684\u5f53\u524d\u65f6\u95f4":4,"\u9ed8\u8ba4\u5355\u4f4d\u79d2":4,"\u9ed8\u8ba4\u5373\u4e3a\u5916\u7f51\u6a21\u5f0f":4,"\u9ed8\u8ba4\u53d6\u503c\u4e3a0":4,"\u9ed8\u8ba4\u548c\u4e3b\u5e93\u4fdd\u6301\u4e00\u81f4":4,"\u9ed8\u8ba4\u5f53":4,"\u9ed8\u8ba4\u6309\u6708":4,"\u9ed8\u8ba4\u662f":4,"\u9ed8\u8ba4\u662f0":4,"\u9ed8\u8ba4\u662f\u52a0\u901f\u57df\u540d":4,"\u9ed8\u8ba4\u662f\u540c\u53ef\u7528\u533a":4,"\u9ed8\u8ba4\u662ffals":4,"\u9ed8\u8ba4\u662fnormal":4,"\u9ed8\u8ba4\u6708\u4ed8":4,"\u9ed8\u8ba4\u6839\u636e\u914d\u7f6e\u673a\u578b":4,"\u9ed8\u8ba4\u7248\u672c3":4,"\u9ed8\u8ba4\u79fb\u51fa\u8be5\u5171\u4eab\u5e26\u5bbd\u4e0b\u6240\u6709\u7684eip":4,"\u9ed8\u8ba4\u7a7a\u5b57\u7b26\u4e32":4,"\u9ed8\u8ba4\u83b7\u53d6\u8d26\u53f7\u4e0b\u7684\u6240\u6709\u57df\u540d\u4fe1\u606f":4,"\u9ed8\u8ba4\u8d26\u6237":4,"\u9ed8\u8ba4\u8d26\u6237\u7684\u5bc6\u7801":4,"\u9ed8\u8ba4\u8f6c\u53d1\u89c4\u5219":4,"\u9ed8\u8ba4\u8fc7\u671f\u65f6\u95f4\u4e3a\u4e00\u5929":4,"\u9ed8\u8ba4\u8fd4\u56de\u4e3a\u7a7a":4,"\u9ed8\u8ba4\u8fd4\u56de\u5e74\u4ed8":4,"\u9ed8\u8ba4\u8fd4\u56de\u5f53\u524dregion\u4e2d\u6240\u6709vpn\u7f51\u5173\u5b9e\u4f8b\u7684\u4fe1\u606f":4,"\u9ed8\u8ba4\u8fd4\u56de\u6240\u6709\u7c7b\u578b":4,"\u9ed8\u8ba4\u9009\u62e9\u6240\u6709\u72b6\u6001":4,"\u9ed8\u8ba4\u9009\u9879":4,"\u9ed8\u8ba4\u914d\u7f6eid":4,"\u9ed8\u8ba4\u975eweb\u9632\u706b\u5899":4,"\u9ed8\u8ba4\u9879\u76ee":4,"\u9ed8\u8ba4\u9ed8\u8ba4\u548c\u4e3b\u5e93\u4fdd\u6301\u4e00\u81f4":4,"\u9ed8\u8ba4auto":4,"\u9ed8\u8ba4default":4,"\u9ed8\u8ba4disabl":4,"\u9ed8\u8ba4dynam":4,"\u9ed8\u8ba4enabl":4,"\u9ed8\u8ba4fals":4,"\u9ed8\u8ba4http":4,"\u9ed8\u8ba4no":4,"\u9ed8\u8ba4normal":4,"\u9ed8\u8ba4public":4,"\u9ed8\u8ba4raid10":4,"\u9ed8\u8ba4redi":4,"\u9ed8\u8ba4root":4,"\u9ed8\u8ba4token_allow_non":4,"\u9ed8\u8ba4v1":4,"\u9ed8\u8ba4v6":4,"\u9ed8\u8ba4web\u9632\u706b\u5899":4,"\u9fa5":4,"abroad\u4ee3\u8868\u6d77\u5916":4,"acl\u6240\u5c5e\u7684vpc":4,"acl\u7684\u540d\u79f0":4,"acl\u7684\u63cf\u8ff0":4,"acl\u7684id":4,"acl\u89c4\u5219\u5e94\u7528\u76ee\u6807\u8d44\u6e90\u603b\u6570":4,"activity\u7684\u540d\u5b57":4,"activity\u7684\u7c7b\u578b":4,"activity\u7684\u8d85\u65f6\u65f6\u95f4":4,"activity\u7684\u8f93\u5165":4,"activity\u7684\u8f93\u51fa":4,"activity\u7684\u91cd\u8bd5\u6b21\u6570":4,"advanced\u8868\u793a\u6027\u80fd\u578b":4,"all\u8868\u793a\u5168\u90e8\u533a\u57df":4,"api\u63a5\u53e3\u8c03\u7528\u51fa\u9519\u65f6\u8868\u793a\u9519\u8bef\u4fe1\u606f":4,"api\u652f\u6301":4,"api\u8bf7\u6c42\u6b21\u6570":4,"api\u8c03\u7528\u7f51\u7edc\u63a9\u7801":4,"app\u5e94\u7528\u7684\u5168\u79f0\u6216\u7b80\u79f0":4,"area\u548careacode\u4e24\u8005\u5fc5\u586b\u4e00\u4e2a":4,"area\u548careacode\u4e24\u8005\u5fc5\u586b\u5176\u4e2d\u4e4b\u4e00":4,"areacode\u533a\u57df\u5185\u603b\u4f7f\u7528\u6d41\u91cf":4,"areacode\u533a\u57df\u5185\u603b\u5269\u4f59\u6d41\u91cf":4,"areacode\u533a\u57df\u5185\u603b\u8d2d\u4e70\u6d41\u91cf":4,"backup\u5728\u8bf7\u6c42\u4ee3\u7406\u548c\u62a5\u6587\u8f6c\u53d1\u4e2d\u4f7f\u7528":4,"backup\u7684r":4,"backuporiginhost\u5b57\u6bb52\u5982\u679c\u4e3atrue\u8868\u793abackuporiginip":4,"bandwidth\u6309\u5e26\u5bbd\u4ed8\u8d39":4,"base64\u7f16\u7801\u524d":4,"base64\u7f16\u7801\u7684deployment\u7684yaml":4,"base64\u7f16\u7801\u7684kubeconfig":4,"base64\u7f16\u7801\u7684pod\u7684yaml":4,"base64\u7f16\u7801\u7684yaml":4,"base64\u7f16\u7801\u8fc7\u7684yaml":4,"base\u662f\u57fa\u7840\u955c\u50cf":4,"basic\u8868\u793a\u5bb9\u91cf\u578b":4,"bd\u5b9e\u4f8bid":4,"begintime\u4e5f\u53ef\u4ee5\u4e0d\u8d4b\u503c":4,"begintime\u548cendtime\u5fc5\u987b\u540c\u65f6\u8d4b\u503c":4,"begintime\u5fc5\u987b\u8d4b\u503c":4,"begintime\u9ed8\u8ba4\u4e3a\u5f53\u524d\u65f6\u95f4\u524d\u4e00\u5929":4,"begintime\u9ed8\u8ba4\u4e3a\u5f53\u524d\u65f6\u95f4\u524d\u4e00\u5929\u65f6\u95f4":4,"bgp\u7ebf\u8def":4,"bgppro\u548cintern":4,"billperiod\u540c\u65f6\u5b58\u5728":4,"binlog\u5907\u4efd":4,"binlog\u6587\u4ef6\u540d":4,"binlog\u6587\u4ef6\u5927\u5c0f":4,"binlog\u6587\u4ef6\u751f\u6210\u65f6\u95f4":4,"binlog\u6587\u4ef6\u7ed3\u675f\u65f6\u95f4":4,"bj1\u4e0d\u652f\u6301\u6dfb\u52a0\u5907\u6ce8":4,"bucket\u540d\u79f0":4,"bucket\u6240\u5c5e\u4e1a\u52a1":4,"bucket\u6240\u5c5e\u5730\u57df":4,"bucket\u7684\u4fee\u6539\u65f6\u95f4":4,"bucket\u7684\u521b\u5efa\u65f6\u95f4":4,"bucket\u7684\u540d\u79f0":4,"bucket\u7684id":4,"bucket\u7684token\u540d\u79f0":4,"bucket\u8bbf\u95ee\u7c7b\u578b":4,"ca\u8bc1\u4e66":4,"ca\u8bc1\u4e66\u5206\u522b\u4f20\u8fc7\u6765":4,"ca\u8bc1\u4e66\u5408\u5e76":4,"ca\u8bc1\u5185\u5bb9":4,"ca\u9881\u53d1\u8bc1\u4e66\u5185\u5bb9":4,"cachettl\u548ccacheunit\u5f3a\u5236\u4e0d\u751f\u6548":4,"cdn\u56de\u5ba2\u6237\u6e90\u7ad9\u90e8\u5206":4,"cdn\u56de\u6e90\u6d41\u91cf":4,"cdn\u57df\u540d":4,"chargetype\u4e3amonth\u65f6":4,"check\u4ee3\u8868\u5ba1\u6838\u4e2d":4,"checkfail\u4ee3\u8868\u5ba1\u6838\u5931\u8d25":4,"checksuccess\u4ee3\u8868\u5ba1\u6838\u901a\u8fc7":4,"class":[0,4],"cloudinit\u521d\u59cb\u5316\u4f7f\u7528":4,"cn\u4ee3\u8868\u56fd\u5185":4,"configsvr\u8282\u70b9\u548c\u4ece\u5907\u4efd\u6062\u590d\u5b9e\u4f8b":4,"console\u9875\u9762\u4e0a\u901a\u8fc7\u8be5\u503c\u8fc7\u6ee4\u52a0\u901f\u5b9e\u4f8b\u53ef\u4ee5\u7ed1\u5b9a\u7684upath\u5b9e\u4f8b":4,"cpu\u4e2a\u6570":4,"cpu\u4e3b\u9891":4,"cpu\u5229\u7528\u7387":4,"cpu\u578b\u53f7":4,"cpu\u5e73\u53f0":4,"cpu\u6570\u91cf":4,"cpu\u6838\u5fc3\u6570":4,"cpu\u6838\u6570":4,"cube\u5b9e\u4f8b\u8d44\u6e90id":4,"cube\u5bb9\u5668":4,"cube\u5bb9\u5668\u5b9e\u4f8b":4,"cube\u7684\u540d\u79f0":4,"cube\u7684\u603b\u6570":4,"cube\u7684\u8d44\u6e90id":4,"cube\u7684id":4,"cubeid\u548cuid\u4efb\u610f\u4e00\u4e2a":4,"custom\u662f\u81ea\u5236\u955c\u50cf":4,"dataset\u4e2d\u7684\u5143\u7d20\u4e2a\u6570":4,"db\u5173\u95ed\u72b6\u6001\u4e0b\u5347\u964d\u7ea7":4,"db\u5907\u4efd\u6587\u4ef6\u540d\u79f0":4,"db\u5b9e\u4f8b\u4f7f\u7528\u7684\u914d\u7f6e\u53c2\u6570\u7ec4id":4,"db\u5b9e\u4f8b\u4fee\u6539\u65f6\u95f4":4,"db\u5b9e\u4f8b\u521b\u5efa\u65f6\u95f4":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u516c\u7f51\u7684\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u5185\u7f51\u7684\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u7684\u516c\u7f51\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efd\u6587\u4ef6\u7684\u5185\u7f51\u5730\u5740":4,"db\u5b9e\u4f8b\u5907\u4efdid":4,"db\u5b9e\u4f8b\u6240\u5728\u53ef\u7528\u533a":4,"db\u5b9e\u4f8b\u6570\u636e\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u7684id":4,"db\u5b9e\u4f8b\u78c1\u76d8\u5df2\u4f7f\u7528\u7a7a\u95f4":4,"db\u5b9e\u4f8b\u7c7b\u578b":4,"db\u5b9e\u4f8b\u7cfb\u7edf\u6587\u4ef6\u5927\u5c0f":4,"db\u5b9e\u4f8b\u865aip":4,"db\u5b9e\u4f8b\u865aip\u7684mac\u5730\u5740":4,"db\u5b9e\u4f8b\u89d2\u8272":4,"db\u5b9e\u4f8b\u8fc7\u671f\u65f6\u95f4":4,"db\u5b9e\u4f8bbinlog\u5907\u4efdid":4,"db\u5b9e\u4f8bid":4,"db\u72b6\u6001":4,"db\u72b6\u6001\u6807\u8bb0":4,"db\u7684\u9ed1\u540d\u5355\u5217\u8868":4,"db\u79cd\u7c7b":4,"db\u7c7b\u578bid":4,"db\u7c7b\u578bid\u5bf9\u5e94\u7684\u5b57\u7b26\u4e32\u5f62\u5f0f":4,"db\u8d2d\u4e70\u591a\u5c11\u4e2a":4,"default":[0,4,5],"default\u5373\u4e3a\u672a\u5206\u7ec4":4,"delete\u4ee3\u8868\u5220\u9664\u52a0\u901f":4,"delete\u4ee3\u8868\u5220\u9664\u52a0\u901fenableing\u4ee3\u8868\u6b63\u5728\u5f00\u542f\u52a0\u901f":4,"deleteing\u4ee3\u8868\u5220\u9664\u4e2d":4,"deploy\u7b49":4,"deployment\u540d\u79f0":4,"deployment\u7684id":4,"deployment\u7684nam":4,"describecharacterlist\u63a5\u53e3":4,"disable\u4ee3\u8868\u505c\u6b62\u52a0\u901f":4,"disable\u8868\u793a\u5173\u95ed":4,"disableing\u4ee3\u8868\u6b63\u5728\u505c\u6b62\u52a0\u901f\u4e2d":4,"disk\u6ce8\u91ca":4,"disks\u6570\u7ec4\u4e2d\u6709\u4e14\u53ea\u80fd\u6709\u4e00\u5757\u76d8\u662f\u7cfb\u7edf\u76d8":4,"disktype\u4e3arssddatadisk\u53ef\u586b":4,"dns\u540d\u79f0":4,"download\u4ee3\u8868\u4e0b\u8f7d":4,"dynamic\u7b49":4,"eip\u521b\u5efa\u65f6\u95f4":4,"eip\u5730\u5740":4,"eip\u5e26\u5bbd\u503c":4,"eip\u5e26\u5bbd\u7c7b\u578b":4,"eip\u6743\u91cd":4,"eip\u72b6\u6001":4,"eip\u7684\u5916\u7f51\u5e26\u5bbd":4,"eip\u7684\u8ba1\u8d39\u6a21\u5f0f":4,"eip\u7684\u8d44\u6e90id":4,"eip\u7684ip\u5730\u5740":4,"eip\u7c7b\u578b":4,"eip\u7ed1\u5b9a\u5bf9\u8c61\u7684\u8d44\u6e90id":4,"eip\u8d44\u6e90id":4,"eipset\u4e2d\u7684\u5143\u7d20\u4e2a\u6570":4,"enable\u4ee3\u8868\u52a0\u901f\u4e2d":4,"enable\u6216dis":4,"enableing\u4ee3\u8868\u6b63\u5728\u5f00\u542f\u52a0\u901f":4,"endtime\u9ed8\u8ba4\u4e3a\u5f53\u524d\u65f6\u95f4":4,"endtime\u9ed8\u8ba4\u5f53\u524d\u65f6\u95f4":4,"entry\u7684\u4f18\u5148\u7ea7":4,"entry\u7684id":4,"esp\u6216ah":4,"exportip\u548cexporteipid\u5fc5\u586b\u4e00\u4e2a":4,"false\u4e3a\u4e0d\u4f18\u5148\u9075\u5faa\u6e90\u7ad9":4,"false\u4e3a\u4e0d\u4f1a\u7533\u8bf7\u7ed1\u5b9a":4,"false\u4e3a\u5426":4,"false\u4e3a\u672a\u5f00\u542f":4,"false\u4e3a\u79c1\u6709":4,"false\u5173\u95ed":4,"false\u52a0\u5bc6\u5fc5\u987b\u4f20\u5165\u5bf9\u5e94\u7684\u7684kmskeyid":4,"false\u5426":4,"false\u6807\u8bc6\u53ea\u89e3\u7ed1eip":4,"false\u8868\u793a\u4e0d\u4f7f\u7528":4,"false\u8bbe\u7f6e\u4e3a\u79c1\u6709":4,"feature\u65f6\u53ef\u586b\u5199\u6b64\u5b57\u6bb5":4,"file\u4ee3\u8868\u6587\u4ef6\u5237\u65b0":4,"flase\u4e3a\u4e0d\u7f13\u5b58":4,"float":[0,1,4],"flushdb\u6216flushal":4,"flushtype\u4e3aflushdb":4,"full\u5168\u91cf":4,"function":[0,1],"general\u6216vod\u6216udb":4,"getprojectlist\u63a5\u53e3":4,"gif\u6216png":4,"globalssh\u5206\u914d\u7684\u52a0\u901f\u57df\u540d":4,"globalssh\u5b9e\u4f8bid":4,"globalssh\u7684\u5730\u533a\u7f16\u7801":4,"gpu\u4e2a\u6570":4,"gpu\u5361\u6838\u5fc3\u6570":4,"gpu\u578b":4,"gpu\u7c7b\u578b":4,"gputype\u76f8\u5173":4,"group\u7684id":4,"hadoop\u8282\u70b9":4,"hf\u6807\u51c6\u578b":4,"hf\u9ad8\u6027\u80fd\u578b":4,"host\u5b9e\u4f8bid":4,"http100\u6570\u91cf":4,"http101\u6570\u91cf":4,"http102\u6570\u91cf":4,"http200\u6570\u91cf":4,"http201\u6570\u91cf":4,"http202\u6570\u91cf":4,"http203\u6570\u91cf":4,"http204\u6570\u91cf":4,"http205\u6570\u91cf":4,"http206\u6570\u91cf":4,"http207\u6570\u91cf":4,"http300\u6570\u91cf":4,"http301\u6570\u91cf":4,"http302\u6570\u91cf":4,"http303\u6570\u91cf":4,"http304\u6570\u91cf":4,"http305\u6570\u91cf":4,"http306\u6570\u91cf":4,"http307\u6570\u91cf":4,"http400\u6570\u91cf":4,"http401\u6570\u91cf":4,"http402\u6570\u91cf":4,"http403\u6570\u91cf":4,"http404\u6570\u91cf":4,"http405\u6570\u91cf":4,"http406\u6570\u91cf":4,"http407\u6570\u91cf":4,"http408\u6570\u91cf":4,"http409\u6570\u91cf":4,"http410\u6570\u91cf":4,"http411\u6570\u91cf":4,"http412\u6570\u91cf":4,"http413\u6570\u91cf":4,"http414\u6570\u91cf":4,"http415\u6570\u91cf":4,"http416\u6570\u91cf":4,"http417\u6570\u91cf":4,"http418\u6570\u91cf":4,"http421\u6570\u91cf":4,"http422\u6570\u91cf":4,"http423\u6570\u91cf":4,"http424\u6570\u91cf":4,"http425\u6570\u91cf":4,"http426\u6570\u91cf":4,"http449\u6570\u91cf":4,"http451\u6570\u91cf":4,"http500\u6570\u91cf":4,"http501\u6570\u91cf":4,"http502\u6570\u91cf":4,"http503\u6570\u91cf":4,"http504\u6570\u91cf":4,"http505\u6570\u91cf":4,"http506\u6570\u91cf":4,"http507\u6570\u91cf":4,"http509\u6570\u91cf":4,"http510\u6570\u91cf":4,"http\u6216https\u534f\u8bae\u7684vserver":4,"http\u63a5\u5165http\u56de\u6e90":4,"http\u63a5\u5165http\u56de\u6e90\u8f6c\u53d1":4,"http\u8f6chttps\u56de\u6e90":4,"https\u63a5\u5165\u65e0\u6cd5\u6b63\u5e38\u5de5\u4f5c":4,"https\u63a5\u5165http\u56de\u6e90":4,"https\u63a5\u5165http\u56de\u6e90\u8f6c\u53d1":4,"https\u63a5\u5165https\u56de\u6e90":4,"https\u63a5\u5165https\u56de\u6e90\u8f6c\u53d1":4,"id\u5217\u8868\u4ee5\u9017\u53f7":4,"idc\u673a\u623fid":4,"ignore\u6216\u8005replac":4,"ike\u4e2dsa\u7684\u751f\u5b58\u65f6\u95f4":4,"ike\u52a0\u5bc6\u7b97\u6cd5":4,"ike\u534f\u5546\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684\u52a0\u5bc6\u7b97\u6cd5":4,"ike\u534f\u5546\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684\u6a21\u5f0f":4,"ike\u534f\u5546\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684\u8ba4\u8bc1\u7b97\u6cd5":4,"ike\u534f\u5546\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684dh\u7ec4":4,"ike\u5bf9\u7aefid\u6807\u8bc6":4,"ike\u672c\u5730id\u6807\u8bc6":4,"ike\u7248\u672c":4,"ike\u79d8\u94a5\u751f\u5b58\u65f6\u95f4":4,"ike\u8ba4\u8bc1\u7b97\u6cd5":4,"ike\u9884\u5171\u4eab\u79d8\u94a5":4,"ikedh\u7ec4":4,"ikev1\u534f\u5546\u6a21\u5f0f":4,"ikev1\u9ed8\u8ba4\u4e3a\u4e3b\u6a21\u5f0f":4,"ikev2\u4e0d\u4f7f\u7528\u8be5\u53c2\u6570":4,"ikev2\u5fc5\u586b\u8be5\u53c2\u6570":4,"ikev2\u65f6\u4e0d\u4f7f\u7528\u8be5\u53c2\u6570":4,"ikev2\u65f6\u4e0d\u80fd\u4e3aauto":4,"import":[2,3,5],"incremental\u5168\u91cf":4,"incremental\u589e\u91cf":4,"inf\u4e3a\u6c38\u4e45\u4fdd\u7559\u7b56\u7565":4,"influxdb\u521b\u5efa\u7684\u6570\u636e\u5e93\u7684\u540d\u79f0":4,"influxdb\u5b9e\u4f8bid":4,"influxdb\u6570\u636e\u5e93\u7684\u63cf\u8ff0":4,"influxdb\u6570\u636e\u5e93\u8d26\u53f7":4,"initializing\u8868\u793a\u5728\u521d\u59cb\u5316":4,"instancetype\u4e0d\u7b49\u4e8efree\u65f6":4,"instancetype\u4e3abasic\u7248\u672c\u65f6":4,"instancetype\u7b49\u4e8ebasic\u65f6\u53ef\u4ee5\u5728":4,"instancetype\u7b49\u4e8efree\u65f6":4,"int":[0,1,4],"ip\u4fe1\u606f":4,"ip\u5217\u8868":4,"ip\u548c\u5e26\u5bbd\u4ef7\u683c":4,"ip\u5730\u5740":4,"ip\u5730\u5740\u5bf9\u5e94\u7684\u5b50\u7f51":4,"ip\u5730\u5740\u5bf9\u5e94\u7684vpc":4,"ip\u5730\u5740\u6216\u57df\u540d":4,"ip\u5bf9\u5e94\u5e26\u5bbd":4,"ip\u5bf9\u5e94\u7684\u5e26\u5bbd":4,"ip\u662f\u5426\u5b58\u5728":4,"ip\u6bb5\u7684cidr\u4fe1\u606f":4,"ip\u7684\u8fd0\u8425\u5546\u4fe1\u606f":4,"ip\u7c7b\u578b":4,"ip\u8d44\u6e90id":4,"ip\u9ed1\u540d\u5355":4,"iplist\u548cdomain\u4e8c\u9009\u4e00\u5fc5\u586b":4,"ipsec\u4e2d\u7684pfs\u662f\u5426\u5f00\u542f":4,"ipsec\u4e2dsa\u7684\u751f\u5b58\u65f6\u95f4":4,"ipsec\u7684pfs\u662f\u5426\u5f00\u542f":4,"ipsec\u901a\u9053\u4e2d\u4f7f\u7528\u7684\u52a0\u5bc6\u7b97\u6cd5":4,"ipsec\u901a\u9053\u4e2d\u4f7f\u7528\u7684\u8ba4\u8bc1\u7b97\u6cd5":4,"ipsec\u96a7\u9053\u4e2d\u4f7f\u7528\u7684\u52a0\u5bc6\u7b97\u6cd5":4,"ipsec\u96a7\u9053\u4e2d\u4f7f\u7528\u7684\u8ba4\u8bc1\u7b97\u6cd5":4,"ipv4\u5730\u5740":4,"ipv4\u6216\u8005ipv6":4,"ipv4\u6bb5\u7684cidr\u8868\u793a":4,"ipv6\u5730\u5740id":4,"isinudbc\u4e3atru":4,"jpg\u6587\u4ef6\u5b57\u8282\u7684base64\u7f16\u7801\u5b57\u7b26\u4e32":4,"json\u6570\u7ec4\u4e2d\u5404\u53c2\u6570\u7684\u5b9a\u4e49":4,"json\u6570\u7ec4\u7684\u5b57\u7b26\u4e32\u683c\u5f0f":4,"json\u683c\u5f0f":4,"k8s\u7248\u672c":4,"k8s\u96c6\u7fa4\u7684\u7248\u672c":4,"k8s\u96c6\u7fa4id":4,"kafka\u6d88\u606f\u961f\u5217":4,"kubeproxy\u6a21\u5f0f":4,"leastconn\u53ea\u5728\u8bf7\u6c42\u4ee3\u7406\u4e2d\u4f7f\u7528":4,"limit\u7528\u4e8e\u5217\u8868\u64cd\u4f5c":4,"linux\u7cfb\u7edf\u9009\u62e922":4,"listentype\u4e3apacketstransmit\u65f6\u8868\u793a\u8fde\u63a5\u4fdd\u6301\u7684\u65f6\u95f4":4,"listentype\u4e3arequestproxy\u65f6\u8868\u793a\u7a7a\u95f2\u8fde\u63a5\u7684\u56de\u6536\u65f6\u95f4":4,"log\u83b7\u53d6":4,"loginmode\u4e3akeypair\u65f6\u6b64\u9879\u5fc5\u987b":4,"lowspeed\u4e3a\u4f4e\u901f\u6a21\u5f0f":4,"mac\u5730\u5740":4,"machinetype\u4e3ag\u65f6\u5fc5\u586b":4,"master\u5b9e\u4f8b\u7684dbid":4,"master\u8282\u70b9":4,"master\u8282\u70b9\u548cnode\u8282\u70b9\u7684\u955c\u50cf":4,"master\u8282\u70b9\u6240\u5c5e\u53ef\u7528\u533a":4,"master\u8282\u70b9\u6570\u636e\u76d8\u7c7b\u578b":4,"master\u8282\u70b9\u7684\u4e91\u4e3b\u673a\u673a\u578b":4,"master\u8282\u70b9\u7684\u5185\u5b58\u5927\u5c0f":4,"master\u8282\u70b9\u7684\u6570\u636e\u76d8\u5927\u5c0f":4,"master\u8282\u70b9\u7684\u6700\u4f4ecpu\u5e73\u53f0":4,"master\u8282\u70b9\u7684\u865a\u62dfcpu\u6838\u6570":4,"master\u8282\u70b9\u7cfb\u7edf\u76d8\u7c7b\u578b":4,"memcache\u7248\u672c\u4fe1\u606f":4,"message\u4e2d\u663e\u793a\u5177\u4f53\u9519\u8bef\u63cf\u8ff0":4,"mm\u683c\u5f0f":4,"mongodb\u5219\u4e0d\u9002\u7528":4,"mongodb\u591a\u79cd\u89d2\u8272":4,"mongodb\u6309\u7248\u672c\u7ec6\u5206\u5404\u6709\u4e00\u4e2aid":4,"mongodb\u6309\u7248\u672c\u7ec6\u5206\u67091":4,"mongodb\u9ed8\u8ba427017":4,"mp4\u6587\u4ef6\u5b57\u8282\u7684base64\u7f16\u7801\u5b57\u7b26\u4e32":4,"mysql\u533a\u5206mast":4,"mysql\u5b9e\u4f8b\u652f\u6301\u7269\u7406\u5907\u4efd":4,"mysql\u9ed8\u8ba43306":4,"mysql\u9ed8\u8ba4\u7aef\u53e3\u4e3a3306":4,"n\u4e2a\u6708":4,"n\u4e3a0":4,"n\u4e3a\u81ea\u7136\u6570":4,"n\u4ece\u81ea\u7136\u65700\u5f00\u59cb":4,"n\u5b57\u6bb5\u5185\u7684n\u503c":4,"n\u5b57\u6bb5\u5fc5\u987b\u4ee5":4,"n\u5fc5\u987b\u81f3\u5c11\u6709\u4e00\u4e2a\u5907\u4efd\u6e90\u7ad9\u5730\u5740":4,"n\u65b9\u5f0f\u4f20\u5165":4,"n\u7684\u5f62\u5f0f\u4f20\u5165":4,"name\u4e2d\u4e0d\u80fd\u51fa\u73b0\u4e2d\u6587":4,"name\u5fc5\u987b\u586b\u5199":4,"nat\u7f51\u5173":4,"nat\u7f51\u5173\u540d\u79f0":4,"nat\u7f51\u5173\u6240\u5c5e\u7684vpc":4,"nat\u7f51\u5173\u6240\u5c5evpc":4,"nat\u7f51\u5173\u7684id":4,"nat\u7f51\u5173\u7ed1\u5b9a\u7684\u5b50\u7f51id":4,"nat\u7f51\u5173\u7ed1\u5b9a\u7684\u9632\u706b\u5899id":4,"nat\u7f51\u5173\u7ed1\u5b9a\u7684eip":4,"nat\u7f51\u5173\u7ed1\u5b9a\u7684eipid":4,"nat\u7f51\u5173id":4,"natgw\u521b\u5efa\u65f6\u95f4":4,"natgw\u540d\u79f0":4,"natgw\u5b57\u7b26\u4e32":4,"new":[0,2,3],"nfsv3\u8868\u793anf":4,"nfsv4\u8868\u793anf":4,"no\u4e3a\u4e0d\u53ef\u4ee5\u5347\u7ea7":4,"node\u5728uk8s\u5904\u7684\u552f\u4e00\u6807\u793a":4,"node\u5b9e\u4f8bid\u96c6\u5408":4,"node\u6240\u5728\u53ef\u7528\u533a":4,"node\u7684\u72b6\u6001":4,"node\u8282\u70b9\u4e0a\u53ef\u8fd0\u884c\u6700\u5927\u8282\u70b9\u6570":4,"node\u8282\u70b9\u5bc6\u7801":4,"node\u8282\u70b9\u6570\u91cf":4,"node\u8282\u70b9\u6807\u7b7e":4,"node\u8282\u70b9\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u522b":4,"node\u8282\u70b9\u7684\u6700\u4f4ecpu\u5e73\u53f0":4,"node\u8282\u70b9\u7684\u8d44\u6e90\u7c7b\u578b":4,"node\u8282\u70b9\u7684\u955c\u50cf\u540d\u79f0":4,"node\u8282\u70b9cpu\u6838\u6570":4,"node\u89d2\u8272":4,"nodes\u8282\u70b9":4,"none\u548cserverinsert":4,"none\u6216serverinsert":4,"normal\u6807\u51c6\u578b":4,"normal\u7ecf\u6d4e\u578b":4,"normal\u8868\u793a\u521d\u59cb\u5316\u5b8c\u6210":4,"nullrefer\u4e3a0\u4ee3\u8868\u4e0d\u5141\u8bb8nul":4,"nullrefer\u4e3afalse\u4ee3\u8868\u4e0d\u5141\u8bb8nul":4,"ostype\u4e3aother\u65f6":4,"phost\u65b0\u5bc6\u7801":4,"phost\u7684\u8d44\u6e90id\u6570\u7ec4":4,"phost\u8d44\u6e90id":4,"ping\u63a2\u6d4b":4,"png\u6587\u4ef6":4,"pod\u5185\u5bb9\u5668\u540d\u79f0":4,"pod\u5217\u8868":4,"pod\u6240\u5728\u7ec4":4,"pod\u7684\u540d\u5b57":4,"pod\u7f51\u6bb5":4,"port\u548ccustom":4,"port\u7684\u6bb5\u4fe1\u606f":4,"postgesql\u6309\u7248\u672c\u7ec6\u5206":4,"postgresql\u9ed8\u8ba45432":4,"poweroff\u4e3a\u5173\u673a\u6a21\u5f0f":4,"preemptive\u8ba1\u8d39\u4e3a\u62a2\u5360\u5f0f\u5b9e\u4f8b":4,"primary\u8282\u70b9\u7684dbid":4,"primarydb\u5b9e\u4f8b\u540d\u79f0":4,"private\u79c1\u6709\u4ed3\u5e93":4,"producttype\u4e3ag\u65f6\u5fc5\u586b":4,"protocolversion\u5b57\u6bb5\u4e3a0\u6216\u6ca1\u6709\u8be5\u5b57\u6bb5\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u4e14disktype\u4e0d\u4e3a\u7a7a\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u4e14disktype\u4e3a\u7a7a\u65f6":4,"protocolversion\u5b57\u6bb5\u4e3a1\u65f6":4,"proxy\u6a21\u5f0f":4,"proxy\u914d\u7f6e":4,"public":[2,3,4],"public\u516c\u5171\u4ed3\u5e93":4,"public\u6216priv":4,"qps\u4e3a3w":4,"quantity\u4e3a0\u4ee3\u8868\u8d2d\u4e70\u5230\u6708\u5e95":4,"quantity\u53ef\u4ee5\u4e0d\u586b\u9ed8\u8ba4\u4e3a0":4,"quantity\u5c31\u662f2":4,"quantity\u9ed8\u8ba4\u4e3a0":4,"quantity\u9ed8\u8ba4\u4e3a0\u4ee3\u8868\u8d2d\u4e70\u5230\u6708\u5e95":4,"querystring\u8868\u793a\u6240\u6709\u53d8\u91cf":4,"raid\u914d\u7f6e":4,"rdma\u96c6\u7fa4id":4,"redhat\u7b49":4,"redis\u6240\u5728\u53ef\u7528\u533a":4,"redis\u65e0single\u7c7b\u578b":4,"redis\u7248\u672c":4,"redis\u7248\u672c\u4fe1\u606f":4,"redis\u7248\u672c\u53f7":4,"redis\u7ec4\u540d\u79f0":4,"refer\u5217\u8868":4,"refer\u8bbf\u95ee":4,"refer\u914d\u7f6e\u5f00\u5173":4,"refer\u9632\u76d7\u94fe\u89c4\u5219\u5217\u8868":4,"refer\u9632\u76d7\u94fe\u914d\u7f6e":4,"refererallownull\u4e3afalse\u4ee3\u8868\u4e0d\u5141\u8bb8\u7a7areferer\u8bbf\u95ee":4,"refererstatus\u4e3a":4,"referertype\u4e3a\u767d\u540d\u5355\u65f6":4,"refertype\u4e3a\u767d\u540d\u5355\u65f6":4,"region\u4e2d\u7b26\u5408\u6761\u4ef6\u7684\u6240\u6709eip\u7684\u5e26\u5bbd\u7528\u91cf":4,"region\u4e2d\u7b26\u5408\u6761\u4ef6\u7684\u7684\u6240\u6709eip":4,"regionflag\u4e3atrue\u65f6\u8868\u793a\u8de8\u53ef\u7528\u533a\u914d\u7f6e\u6587\u4ef6":4,"remark\u5fc5\u987b\u586b\u51991\u4e2a\u53ca\u4ee5\u4e0a":4,"remark\u90fd\u4e3a\u7a7a\u5219\u62a5\u9519":4,"return":[0,1,5],"routeruleid\u6765\u81eadescriberoutetable\u4e2d":4,"routetables\u5b57\u6bb5\u7684\u6570\u91cf":4,"rs\u5168\u90e8\u8fd0\u884c\u5f02\u5e38":4,"rs\u5168\u90e8\u8fd0\u884c\u6b63\u5e38":4,"rs\u662f\u5426\u4e3abackup":4,"rs\u90e8\u5206\u8fd0\u884c\u5f02\u5e38":4,"rssd\u53ef\u4ee5\u6302\u8f7d\u5230\u8fd9\u53f0\u4e91\u4e3b\u673a":4,"rssd\u6570\u636e\u76d8":4,"rssd\u7cfb\u7edf\u76d8":4,"shardsrv\u5206\u4e3adatanode\u548carbiter\u4e24\u79cd\u6a21\u5f0f":4,"size\u5927\u4e8e2000\u65f6":4,"size\u5c0f\u4e8e\u7b49\u4e8e2000\u65f6":4,"size\u6700\u5c0f\u4e3a1024gb":4,"size\u6700\u5c0f\u4e3a500gb":4,"slave\u4ec5\u4e3b\u5907redis\u8fd4\u56de\u8be5\u9879\u53c2\u6570":4,"slave\u6240\u5728\u53ef\u7528\u533a":4,"slowlog\u5907\u4efd":4,"snapshot\u6a21\u5f0f\u76ee\u524d\u4ec5\u5728\u4e0a\u6d77c\u652f\u6301":4,"snat\u540d\u79f0":4,"snat\u89c4\u5219":4,"snat\u89c4\u5219\u540d\u79f0":4,"source\u548cweightroundrobin":4,"sourceip\u6240\u5c5e\u7684\u5b50\u7f51id":4,"sqlserver\u5e10\u53f7":4,"ssd\u5927\u5bb9\u91cf\u673a\u578b":4,"ssd\u6570\u636e\u76d8":4,"ssd\u673a\u578b":4,"ssd\u78c1\u76d8":4,"ssd\u7c7b\u578b":4,"ssd\u7cfb\u7edf\u76d8":4,"ssd\u9ad8\u6027\u80fd\u5927\u5bb9\u91cf\u673a\u578b":4,"ssd\u9ad8\u6027\u80fd\u673a\u578b":4,"ssh\u7aef\u53e3":4,"ssl\u8bc1\u4e66":4,"ssl\u8bc1\u4e66\u5185\u5bb9":4,"ssl\u8bc1\u4e66\u7684\u5185\u5bb9":4,"ssl\u8bc1\u4e66\u7684\u521b\u5efa\u65f6\u95f4":4,"ssl\u8bc1\u4e66\u7684\u540d\u5b57":4,"ssl\u8bc1\u4e66\u7684\u5b8c\u6574\u5185\u5bb9":4,"ssl\u8bc1\u4e66\u7684hash\u503c":4,"ssl\u8bc1\u4e66\u7684id":4,"ssl\u8bc1\u4e66\u7c7b\u578b":4,"ssl\u8bc1\u4e66\u7ed1\u5b9a\u5230\u7684\u5b9e\u4f8b\u540d\u79f0":4,"ssl\u8bc1\u4e66\u7ed1\u5b9a\u5230\u7684\u5b9e\u4f8bid":4,"ssl\u8bc1\u4e66\u7ed1\u5b9a\u5230\u7684vserver\u7684\u8d44\u6e90id":4,"ssl\u8bc1\u4e66id":4,"static":4,"stream\u4ee3\u8868\u89c6\u9891":4,"super":4,"tablename\u4e3a\u6307\u5b9a\u8868":4,"tag\u540d\u79f0":4,"tag\u5fc5\u987b\u586b\u5199":4,"tag\u603b\u6570":4,"tag\u7684\u4e2a\u6570":4,"targettype\u4e3a0\u65f6\u4e0d\u7528\u586b\u5199\u8be5\u503c":4,"targettype\u4e3a0\u65f6\u4e0d\u8fd4\u56de\u8be5\u503c":4,"task\u7684serv":4,"tcp\u548cudp\u4ee3\u8868\u56db\u5c42\u8f6c\u53d1":4,"tcp\u56de\u6e90\u7aef\u53e3":4,"tcp\u63a5\u5165\u7aef\u53e3":4,"tcp\u63a5\u5165tcp\u56de\u6e90":4,"tcp\u7aef\u53e3\u53f7":4,"td\u9000\u8ba2":4,"terminal\u7684\u767b\u5f55\u8fde\u63a5\u5730\u5740":4,"timerange\u65f6\u95f4\u6bb5\u5185\u751f\u6548":4,"timestamp\u8868\u793a":4,"totp\u72b6\u6001":4,"traffic\u4ee3\u8868\u6309\u6d41\u91cf\u5305\u8ba1\u8d39":4,"traffic\u6216request":4,"true":[0,4],"true\u4e3a\u4f18\u5148\u9075\u5faa\u6e90\u7ad9\u7f13\u5b58\u5934\u90e8":4,"true\u4e3a\u516c\u6709":4,"true\u4e3a\u5f00\u542f":4,"true\u4e3a\u662f":4,"true\u4e3a\u7533\u8bf7\u5e76\u7ed1\u5b9a":4,"true\u4e3a\u7f13\u5b58":4,"true\u6253\u5f00":4,"true\u662f":4,"true\u8868\u793a\u4f1a\u91ca\u653e\u7ed1\u5b9a\u7684eip":4,"true\u8868\u793a\u903b\u8f91\u5907\u4efd\u65f6\u662f\u4f7f\u7528":4,"true\u8bbe\u7f6e\u4e3a\u516c\u6709":4,"try":[2,3],"types\u4f5c\u4e3atype\u7684\u8865\u5145":4,"ucdn\u52a0\u901f\u57df\u540d":4,"ucloud\u6280\u672f\u652f\u6301":4,"udb\u4e3b\u4ece\u8282\u70b9\u7684\u53ea\u8bfb\u6bd4\u4f8b":4,"udb\u5b9e\u4f8b\u6a21\u5f0f\u7c7b\u578b":4,"udb\u5b9e\u4f8b\u7684\u914d\u7f6e":4,"udb\u5b9e\u4f8b\u7684db\u7248\u672c\u5b57\u7b26\u4e32":4,"udb\u5b9e\u4f8b\u7c7b\u578b":4,"udb\u5b9e\u4f8b\u90e8\u7f72\u6a21\u5f0f":4,"udb\u6570\u636e\u5e93\u673a\u578b":4,"udb\u6570\u636e\u5e93\u673a\u578bid":4,"udb\u7684\u5b9e\u4f8bid":4,"udb\u9ad8\u53ef\u7528\u5b9e\u4f8b\u4ecehaproxy\u7248\u672c\u5347\u7ea7\u4e3asentinel\u7248\u672c":4,"udbcid\u4e3a\u7a7a":4,"uddb\u5b9e\u4f8b\u521b\u5efa\u65f6\u95f4":4,"uddb\u5b9e\u4f8b\u540d\u79f0":4,"uddb\u5b9e\u4f8b\u5728\u5173\u95ed\u8fc7\u7a0b\u4e2d":4,"uddb\u5b9e\u4f8b\u5728\u542f\u52a8\u8fc7\u7a0b\u4e2d":4,"uddb\u5b9e\u4f8b\u5728\u91cd\u542f\u8fc7\u7a0b\u4e2d":4,"uddb\u5b9e\u4f8b\u5bf9\u5e94\u7684\u53ef\u7528\u533a":4,"uddb\u5b9e\u4f8b\u5c31\u5df2\u7ecf\u88ab\u5220\u9664":4,"uddb\u5b9e\u4f8b\u72b6\u6001\u4fdd\u6301\u4e0d\u53d8":4,"uddb\u5b9e\u4f8b\u7684\u72b6\u6001\u53d8\u6210":4,"uddb\u5b9e\u4f8b\u8bbf\u95ee\u7684\u7aef\u53e3\u53f7":4,"uddb\u5b9e\u4f8b\u8bbf\u95ee\u7684\u865aip":4,"uddb\u5b9e\u4f8b\u8fc7\u671f\u65f6\u95f4":4,"uddb\u5b9e\u4f8bid":4,"uddb\u72b6\u6001":4,"uddb\u7684\u6570\u636e\u5e93\u7248\u672c":4,"uddb\u8d44\u6e90id":4,"uddb\u8def\u7531\u8282\u70b9\u7684\u7248\u672c":4,"udisk\u540d\u5b57":4,"udisk\u5927\u5c0f\u8bbe\u5b9a\u5bf9\u672c\u5730\u76d8\u5907\u4efd\u6709\u6548":4,"udisk\u5927\u5c0f\u8bbe\u5b9a\u5bf9\u672c\u5730\u76d8\u5feb\u7167\u6709\u6548":4,"udisk\u5b9e\u4f8bid":4,"udp\u534f\u8bae\u652f\u6301p":4,"udp\u56de\u6e90\u7aef\u53e3":4,"udp\u63a5\u5165\u7aef\u53e3":4,"udp\u63a5\u5165udp\u56de\u6e90":4,"udp\u68c0\u67e5\u8bf7\u6c42\u4ee3\u7406\u578b\u9ed8\u8ba4\u503c\u4e3aport":4,"udp\u7aef\u53e3\u53f7":4,"udredis\u5b9e\u4f8bid":4,"ufile\u7684\u4ee4\u724ctokenid":4,"ufile\u79c1\u6709\u7a7a\u95f4\u5730\u5740":4,"ufile\u955c\u50cf\u6587\u4ef6\u4e0b\u8f7d\u5730\u5740":4,"uga\u4e0eupath\u89e3\u7ed1":4,"uga\u5b9e\u4f8bid":4,"uga\u7ed1\u5b9aupath":4,"uhost\u4e3b\u673a\u7684\u8d44\u6e90id":4,"uhost\u4e3b\u673a\u7684\u8d44\u6e90id\u6570\u7ec4":4,"uhost\u5b9e\u4f8b\u540d\u79f0":4,"uhost\u5b9e\u4f8b\u8d44\u6e90id":4,"uhost\u5b9e\u4f8bid":4,"uhost\u5b9e\u4f8bid\u96c6\u5408":4,"uhost\u5bc6\u7801":4,"uhost\u65b0\u5bc6\u7801":4,"uhost\u7684\u5b9e\u4f8bid":4,"uhost\u8868\u793a\u4e91\u4e3b\u673a":4,"uhost\u8d44\u6e90id":4,"uhostid\u548chostid\u5fc5\u987b\u9009\u586b\u4e00\u4e2a":4,"uhostinstance\u603b\u6570":4,"uinfluxdb\u5b9e\u4f8b\u6240\u5728\u53ef\u7528\u533a":4,"uinfluxdb\u5b9e\u4f8b\u914d\u7f6e\u5347\u964d\u7ea7":4,"uinfluxdb\u5b9e\u4f8bid":4,"uk8s\u4f7f\u7528":4,"uk8s\u96c6\u7fa4id":4,"ukmsmode\u4e3ayes\u65f6":4,"ulb\u4e0bvserver\u6570\u91cf":4,"ulb\u4f7f\u7528\u53c2\u6570":4,"ulb\u540e\u7aefid":4,"ulb\u5b9e\u4f8b\u7684\u540d\u79f0":4,"ulb\u6240\u5728\u7684vpc\u7684id":4,"ulb\u6240\u5c5e\u7684\u4e1a\u52a1\u7ec4id":4,"ulb\u6240\u5c5e\u7684\u5b50\u7f51id":4,"ulb\u6240\u5c5e\u7684vpc":4,"ulb\u63d0\u4f9b\u670d\u52a1\u7684ip\u7c7b\u578b":4,"ulb\u65e5\u5fd7\u4e0a\u4f20\u7684bucket":4,"ulb\u662f\u5426\u5f00\u542f\u65e5\u5fd7\u529f\u80fd":4,"ulb\u7684\u5185\u7f51ip":4,"ulb\u7684\u521b\u5efa\u65f6\u95f4":4,"ulb\u8d44\u6e90id":4,"ultimate\u5e26\u5bbd\u5305\u5927\u5c0f":4,"ultimate\u7248\u672c\u5e26\u5bbd\u5305\u5927\u5c0f":4,"umem\u5185\u5b58\u7a7a\u95f4id":4,"umem\u5185\u5b58\u8d44\u6e90id":4,"umem\u5b9e\u4f8b\u8bbf\u95eeip":4,"umem\u5b9e\u4f8b\u8bbf\u95eeport":4,"unix\u65f6\u95f4\u6233":4,"upath\u521b\u5efa\u7684\u65f6\u95f4":4,"upath\u52a0\u901f\u7ebf\u8def\u5b9e\u4f8bid":4,"upath\u540d\u5b57":4,"upath\u5b9e\u4f8b\u540d\u5b57":4,"upath\u7684\u8fc7\u671f\u65f6\u95f4":4,"uphost\u5b9e\u4f8bid":4,"uphost\u8868\u793a\u7269\u7406\u4e91\u4e3b\u673a":4,"url\u662f\u5426\u6709\u6548":4,"userdata\u5219\u662f\u4e91\u4e3b\u673a\u521d\u59cb\u5316\u65f6\u6267\u884c":4,"usms\u63a7\u5236\u53f0":4,"utc\u65f6\u95f4\u683c\u5f0f":4,"v1\u7248\u672c\u6982\u5ff5":4,"v2\u7248\u672c\u6982\u5ff5":4,"v3\u534f\u8bae":4,"v4\u534f\u8bae":4,"value\u5f62\u5f0f":4,"vip\u540d":4,"vip\u540d\u79f0":4,"vip\u5907\u6ce8":4,"vip\u6240\u5c5e\u4e1a\u52a1\u7ec4":4,"vip\u6570\u91cf":4,"vip\u6807\u793a":4,"vnc\u767b\u5f55\u7aef\u53e3":4,"vnc\u767b\u5f55ip":4,"vpc\u5173\u8054\u7684ipv6\u7f51\u6bb5":4,"vpc\u5173\u8054\u7684ipv6\u7f51\u6bb5\u6240\u5c5e\u8fd0\u8425\u5546":4,"vpc\u540d\u5b57":4,"vpc\u540d\u79f0":4,"vpc\u5730\u5740\u7a7a\u95f4":4,"vpc\u7684\u5730\u5740\u7a7a\u95f4":4,"vpc\u7684\u8d44\u6e90id":4,"vpc\u7684id":4,"vpc\u77edid":4,"vpc\u7c7b\u578b":4,"vpc\u7f51\u6bb5":4,"vpc\u8054\u901a\u8def\u7531":4,"vpc\u8d44\u6e90id":4,"vpn\u7f51\u5173\u4ed8\u8d39\u65b9\u5f0f":4,"vpn\u7f51\u5173\u4ef7\u683c":4,"vpn\u7f51\u5173\u540d\u5b57":4,"vpn\u7f51\u5173\u7684\u8d44\u6e90id":4,"vpn\u7f51\u5173\u89c4\u683c":4,"vpn\u96a7\u9053\u540d\u79f0":4,"vpn\u96a7\u9053\u603b\u6570":4,"vpn\u96a7\u9053\u7684\u8d44\u6e90id":4,"vserver\u4f1a\u8bdd\u4fdd\u6301\u65b9\u5f0f":4,"vserver\u4f1a\u8bdd\u4fdd\u6301\u6a21\u5f0f":4,"vserver\u540e\u7aef\u7aef\u53e3":4,"vserver\u5b9e\u4f8b\u540d\u79f0":4,"vserver\u5b9e\u4f8b\u7684\u534f\u8bae":4,"vserver\u5b9e\u4f8b\u7684\u540d\u5b57":4,"vserver\u5b9e\u4f8b\u7684id":4,"vserver\u5b9e\u4f8bid":4,"vserver\u670d\u52a1\u7aef\u53e3":4,"vserver\u7684\u8fd0\u884c\u72b6\u6001":4,"vserver\u8d1f\u8f7d\u5747\u8861\u6a21\u5f0f":4,"vserver\u8d1f\u8f7d\u5747\u8861\u7684\u6a21\u5f0f":4,"web\u4ee3\u8868\u7f51\u7ad9":4,"web\u63a8\u8350\u9632\u706b\u5899":4,"websocket\u63a5\u5165websocket\u56de\u6e90":4,"websocket\u63a5\u5165websocket\u56de\u6e90\u8f6c\u53d1":4,"websockets\u63a5\u5165websocket\u56de\u6e90":4,"websockets\u63a5\u5165websocket\u56de\u6e90\u8f6c\u53d1":4,"websockets\u63a5\u5165websockets\u56de\u6e90":4,"websockets\u63a5\u5165websockets\u56de\u6e90\u8f6c\u53d1":4,"windows\u7cfb\u7edf\u4e3ardp\u7aef\u53e3":4,"windows\u7cfb\u7edf\u81ea\u52a8\u90093389":4,"ws\u63a5\u5165ws\u56de\u6e90":4,"wss\u63a5\u5165ws\u56de\u6e90":4,"xxx\u683c\u5f0f":4,"yes\u5373\u53ef\u4ee5\u5347\u7ea7":4,"zone\u53ef\u4ee5\u4e0d\u4f20":4,By:5,For:5,It:[0,5],NO:4,No:4,On:4,_:[1,4],a2:4,a9q2:4,abc7:4,abc:4,abcdefghijklmnopqrstuvwxyz:1,abnorm:4,abov:[2,3],abroad:4,abroadlog:4,acceleratingdomain:4,accept:4,access:[2,3],accessconf:4,accesscontrolconf:4,account:[0,4],accountid:4,accountinfo:4,accountnam:4,accounttyp:4,accoutnam:4,achiev:[1,5],aclentryinfo:4,aclid:4,aclinfo:4,acllist:4,aclnam:4,acrestor:4,acstorag:4,action:[0,4],activateflag:4,activit:4,activitytempl:4,add:[0,4,5],add_certif:4,add_member_to_project:4,add_snat_rul:4,add_uk8s_existing_uhost:4,add_uk8s_node_group:4,add_uk8s_phost_nod:4,add_uk8s_uhost_nod:4,add_vpc_network:4,add_white_list_resourc:4,addcertif:4,addmembertoproject:4,addnod:4,address:4,addsnatrul:4,adduk8sexistinguhost:4,adduk8snodegroup:4,adduk8sphostnod:4,adduk8suhostnod:4,addvpcnetwork:4,addwhitelistresourc:4,admin:4,administr:4,adminpassword:4,adminus:4,advancedconf:4,aes128:4,aes192:4,aes256:4,aes512:4,after:1,agent:0,aggress:4,ah:4,alarmfrequ:4,alarmrul:4,alarmstrategi:4,alarmtemplateid:4,alarmtemplateruleid:4,all:[1,5],allocate_backend:4,allocate_backend_batch:4,allocate_eip:4,allocate_secondary_ip:4,allocate_share_bandwidth:4,allocate_udpn:4,allocate_vip:4,allocatebackend:4,allocatebackendbatch:4,allocatedpodcount:4,allocateeip:4,allocatesecondaryip:4,allocatesharebandwidth:4,allocateudpn:4,allocatevip:4,allow:[4,5],allowedbucket:4,allowedop:4,allowedprefix:4,allowedv:4,alpha:4,also:[0,5],am:5,amd64:4,amd:4,amount:4,amountavail:4,amountcoupon:4,amountcredit:4,amountfre:4,amountfreez:4,amountr:4,an:[0,2,3],ani:[0,1],annot:4,antid:4,antstat:4,anycast:4,apach:2,api:[0,3,4],apikei:0,apinetworkmask:4,apiserv:4,apitim:4,apivers:4,append:0,applytyp:4,arch:4,area:4,areacod:4,areaset:4,arg:[0,4],argument:[0,1],arkswitchen:4,arrearag:4,asgid:4,associ:4,associate_eip_with_share_bandwidth:4,associate_route_t:4,associateeipwithsharebandwidth:4,associateroutet:4,associationid:4,associationinfo:4,associationlist:4,attach:4,attach_udisk:4,attachudisk:4,attribut:0,auth:[0,4],authent:[2,3],authstat:4,auto:[0,4],autobackup:4,autodatadiskinit:4,autorenew:4,avail:[0,4],availableip:4,availableipcnt:4,azgroupcnam:4,b1d0:4,b64d:4,b64decod:1,b64encod:[1,2,3],back:5,backend:[0,4],backendid:4,backendset:4,backoff:[0,1],backoff_factor:0,backup:4,backup_udb_inst:4,backup_udb_instance_binlog:4,backup_udb_instance_error_log:4,backup_udb_instance_slow_log:4,backupbegintim:4,backupblacklist:4,backupcount:4,backupd:4,backupdur:4,backupendtim:4,backupfil:4,backupid:4,backupmethod:4,backupmod:4,backupnam:4,backuporiginen:4,backuporiginhost:4,backuporiginiplist:4,backuppath:4,backups:4,backupswitch:4,backuptim:4,backuptyp:4,backupudbinst:4,backupudbinstancebinlog:4,backupudbinstanceerrorlog:4,backupudbinstanceslowlog:4,backupurl:4,backupzon:4,bandwidth:4,bandwidthdetail:4,bandwidthinfo:4,bandwidthinfodetail:4,bandwidthlimit:4,bandwidthlist:4,bandwidthpackag:4,bandwidthpackageid:4,bandwidthset:4,bandwidthtrafficinfo:4,bandwidthtrafficlist:4,bandwidthtyp:4,bandwidthupperlimit:4,bar:0,base64:[1,4],base64ugfzc3dvcmqx:4,base:4,base_url:0,baseurl:0,basic:4,basic_snapshot:4,basicimageid:4,basicimagenam:4,batch_describe_new_ucdn_domain:4,batch_refresh_new_ucdn_domain_cach:4,batchdescribenewucdndomain:4,batchinfo:4,batchrefreshnewucdndomaincach:4,bce8:4,befor:1,beforetim:4,begintim:4,belong:0,between:5,bgp:4,bidirect:4,billdetailitem:4,billingcycl:4,billingst:4,billoverviewitem:4,billperiod:4,billtyp:4,bind:[2,3],bind_eip:4,bind_path_xssl:4,bind_ssl:4,bind_u_ec_firewal:4,bindedtargetset:4,bindeip:4,bindpathxssl:4,bindssl:4,binduecfirewal:4,binlog:4,binlog_backup:4,binloggtid:4,binlognam:4,binlogpo:4,bitmap:4,biz:4,bj1:4,bj2:[0,2,3,4,5],bj:4,bkk:4,blacklist:4,blockcount:4,blockid:4,blockport:4,blocksiz:4,blockslotbegin:4,blockslotend:4,blockstat:4,blockuseds:4,blockvip:4,bm:4,bool:[0,4],boot:4,bootdiskspac:4,bootdiskst:4,bootdisktyp:4,broadwel:4,bucket:4,bucketid:4,bucketnam:4,builtin:0,busi:4,businessid:4,busyflow:4,bzgf1gh5:4,c245:4,c6b9a46fd801:4,c:4,ca:4,cacert:4,cacheallconfig:4,cachebehavior:4,cacheconf:4,cachehost:4,cachekeyinfo:4,cachekeylist:4,cachelist:4,cachettl:4,cacheunit:4,calcul:0,call:1,callabl:1,callednumb:4,can:[0,2,3,5],cannot:[2,3],cascadelak:4,cd:[2,3],cdn:4,cdnbandwidth:4,cdndomainid:4,cdnflow:4,cdnprotocol:4,cdnrequest:4,cdntype:4,cento:4,certificatetyp:4,certlist:4,certnam:4,certnameabroad:4,certnamecn:4,cfgdictlist:4,chang:2,change_udb_param_group:4,change_uddb_instance_nam:4,change_uddb_slave_count:4,changeudbparamgroup:4,changeuddbinstancenam:4,changeuddbslavecount:4,changingslavecount:4,channeltyp:4,characterdescript:4,characterid:4,characternam:4,characterset:4,chargenam:4,chargequant:4,chargetyp:4,check:[4,5],check_recover_udb_inst:4,check_udb_instance_to_ha_allow:4,check_udredis_space_allow:4,check_udts_task:4,check_uinfluxdb_allow:4,check_uredis_allow:4,checkrecoverudbinst:4,checkresult:4,checkresultitem:4,checkudbinstancetohaallow:4,checkudredisspaceallow:4,checkudtstask:4,checkudtstaskparamsourc:4,checkudtstaskparamsourcemysqlnod:4,checkudtstaskparamsourcemysqlnodequerydata:4,checkudtstaskparamsourcemysqlnodesyncdata:4,checkudtstaskparamtarget:4,checkudtstaskparamtargetmysqlnod:4,checkudtstaskresult:4,checkuinfluxdballow:4,checkuredisallow:4,chinamobil:4,cidr:4,cidrblock:4,citi:4,cjksa2:4,classtyp:4,clear_udb_log:4,clearudblog:4,client:[2,3,4],clienttimeout:4,clone:[2,3,4],clone_route_t:4,clone_udisk:4,clone_udisk_snapshot:4,clone_udisk_udataark:4,cloneen:4,cloneroutet:4,cloneudisk:4,cloneudisksnapshot:4,cloneudiskudataark:4,cloud:[1,4],cloud_effici:4,cloud_norm:4,cloud_rssd:4,cloud_ssd:[2,3,4],clouddisk:4,cloudinit:4,cloudinitfeatur:4,cluster:4,clustercount:4,clusterdomain:4,clusterid:4,clusterloginfo:4,clusternam:4,clusterrol:4,clusterset:4,cmd:4,cmk:4,cmkid:4,cmkidalia:4,cmkidstatu:4,cn:[0,2,3,4,5],cname:4,cnat:4,cnlog:4,code:[0,2,3,4],com:[2,3],command:4,comment:4,commonnam:4,company_id:4,companynam:4,compar:4,compatiblewithdbtyp:4,complet:5,compon:4,comprehens:4,condit:4,config:[2,4],configdict:4,configfail:4,configid:4,configsrv_csr:4,configsrv_sccc:4,configsvrid:4,connect:4,connnummap:4,consistenthash:4,consistenthashport:4,contactgroupid:4,containerimag:4,containernam:4,containerruntimevers:4,content:4,continu:4,control_ucdn_domain_cache_access:4,controlucdndomaincacheaccess:4,convert:4,copy_custom_imag:4,copycustomimag:4,core:[2,3,4,5],corecount:4,corenum:4,costcount:4,could:[0,2,3],count:4,countdowntim:4,couponid:4,cpu:[2,3,4,5],cpucapac:4,cpucor:4,cpulimit:4,cpulimitsfract:4,cpuplatform:4,cpurequest:4,cpurequestsfract:4,cpuset:4,cpuutil:4,creat:[1,2,3,4,5],create_attach_udisk:4,create_bandwidth_packag:4,create_bucket:4,create_charact:4,create_cube_deploy:4,create_cube_pod:4,create_custom_imag:4,create_firewal:4,create_global_ssh_inst:4,create_isms_signatur:4,create_isms_templ:4,create_isolation_group:4,create_mongo_db_replica_set:4,create_natgw:4,create_natgw_polici:4,create_network_acl:4,create_network_acl_associ:4,create_network_acl_entri:4,create_path_xssl:4,create_phost:4,create_phost_imag:4,create_polici:4,create_project:4,create_remote_vpn_gatewai:4,create_repo:4,create_route_t:4,create_sf_workflow_from_templ:4,create_ssl:4,create_subnet:4,create_ti_db_servic:4,create_u_ec_custom_imag:4,create_u_ec_firewal:4,create_u_ec_hold:4,create_u_ec_subnet:4,create_u_ec_v_host:4,create_udb_inst:4,create_udb_instance_by_recoveri:4,create_udb_param_group:4,create_udb_replication_inst:4,create_udb_route_inst:4,create_udb_slav:4,create_uddb_inst:4,create_udisk:4,create_udisk_snapshot:4,create_udts_task:4,create_ufile_token:4,create_ufs_volum:4,create_uga_forward:4,create_uga_inst:4,create_uhost_inst:[2,3,4,5],create_uhost_key_pair:4,create_uinfluxdb_databas:4,create_uinfluxdb_database_rp:4,create_uinfluxdb_inst:4,create_uk8s_cluster_v2:4,create_ulb:4,create_umem_backup:4,create_umem_cache_group:4,create_umem_spac:4,create_upath:4,create_uredis_backup:4,create_uredis_group:4,create_usms_signatur:4,create_usms_templ:4,create_vpc:4,create_vpc_intercom:4,create_vpn_gatewai:4,create_vpn_tunnel:4,create_vserv:4,createattachudisk:4,createbandwidthpackag:4,createbucket:4,createcernetip:4,createcharact:4,createcubedeploy:4,createcubepod:4,createcustomimag:4,createfail:4,createfirewal:4,createglobalsshinst:4,createismssignatur:4,createismstempl:4,createisolationgroup:4,createmongodbreplicaset:4,createnatgw:4,createnatgwpolici:4,createnetworkacl:4,createnetworkaclassoci:4,createnetworkaclentri:4,createpathxssl:4,createphost:4,createphostimag:4,createphostparamdisk:4,createpolici:4,createproject:4,createremotevpngatewai:4,createrepo:4,createroutet:4,createsfworkflowfromtempl:4,createssl:4,createsubnet:4,createtidbservic:4,createtim:4,createtimeh:4,createudbinst:4,createudbinstancebyrecoveri:4,createudbparamgroup:4,createudbreplicationinst:4,createudbrouteinst:4,createudbslav:4,createuddbinst:4,createudisk:4,createudisksnapshot:4,createudtstask:4,createudtstaskparamsourc:4,createudtstaskparamsourcemysqlnod:4,createudtstaskparamsourcemysqlnodequerydata:4,createudtstaskparamsourcemysqlnodequerydatatabledata:4,createudtstaskparamsourcemysqlnodequerydatatablemap:4,createudtstaskparamsourcemysqlnodesyncdata:4,createudtstaskparamtarget:4,createudtstaskparamtargetmysqlnod:4,createueccustomimag:4,createuecfirewal:4,createuecfirewallparamrul:4,createuechold:4,createuecholderparamimag:4,createuecholderparampack:4,createuecholderparamstorag:4,createuecsubnet:4,createuecvhost:4,createufiletoken:4,createufsvolum:4,createugaforward:4,createugainst:4,createuhostinst:[0,4],createuhostinstanceparamdisk:4,createuhostinstanceparamnetworkinterfac:4,createuhostinstanceparamnetworkinterfaceeip:4,createuhostinstanceparamnetworkinterfaceeipglobalssh:4,createuhostinstanceparamnetworkinterfaceipv6:4,createuhostinstanceparamvirtualgpu:4,createuhostinstanceparamvirtualgpugpuvirtualgpu:4,createuhostinstanceparamvolum:4,createuhostkeypair:4,createuinfluxdbdatabas:4,createuinfluxdbdatabaserp:4,createuinfluxdbinst:4,createuk8sclusterv2:4,createuk8sclusterv2paramkubeproxi:4,createuk8sclusterv2parammast:4,createuk8sclusterv2paramnod:4,createulb:4,createumembackup:4,createumemcachegroup:4,createumemspac:4,createupath:4,createuredisbackup:4,createuredisgroup:4,createusmssignatur:4,createusmstempl:4,createvpc:4,createvpcintercom:4,createvpngatewai:4,createvpntunnel:4,createvserv:4,creationtimestamp:4,cred:0,credenti:0,cube:2,cubecli:4,cubeextendinfo:4,cubeid:4,curbandwidth:4,curcount:4,curdur:4,current:[2,3],curretrycount:4,custom:[1,4,5],customcdn:4,custompric:4,customsrc:4,cuttyp:4,d4411ab30953fb0bbcb1e7313081f05e4e91a394:0,dai:4,daili:4,data1:4,data2:4,data:[0,4],dataark:4,databas:4,databaseinfo:4,databasenam:4,datadisk:4,datadisks:4,datadisktyp:4,datafiles:4,datakei:4,datanodecount:4,datanodediskspac:4,datanodeid:4,datanodeinfo:4,datanodelist:4,datanodememori:4,datanodepric:4,datanodeslavecount:4,datanodeslavepric:4,dataregion:4,dataset:4,datasetuddb:4,datatyp:4,date:4,db:4,dbaudit:4,dbclustertyp:4,dbid:4,dbip:4,dbname:4,dbnum:4,dbtypeid:4,decod:1,dedicated_lin:4,def:[0,5],defin:4,defultprojectid:4,del:4,del_uk8s_clust:4,del_uk8s_cluster_node_v2:4,delai:[0,5],delaythreshold:4,delet:4,delete_bandwidth_packag:4,delete_bucket:4,delete_certif:4,delete_cube_deploy:4,delete_cube_pod:4,delete_firewal:4,delete_global_ssh_inst:4,delete_isms_signatur:4,delete_isms_templ:4,delete_isolation_group:4,delete_natgw:4,delete_natgw_polici:4,delete_network_acl:4,delete_network_acl_associ:4,delete_network_acl_entri:4,delete_path_xssl:4,delete_polici:4,delete_project:4,delete_remote_vpn_gatewai:4,delete_repo:4,delete_repo_imag:4,delete_route_t:4,delete_secondary_ip:4,delete_snat_rul:4,delete_ssl:4,delete_subnet:4,delete_ti_db_servic:4,delete_u_ec_custom_imag:4,delete_u_ec_hold:4,delete_u_ec_subnet:4,delete_u_ec_v_host:4,delete_udb_backup:4,delete_udb_inst:4,delete_udb_log_packag:4,delete_udb_param_group:4,delete_uddb_inst:4,delete_udisk:4,delete_udisk_snapshot:4,delete_ufile_token:4,delete_uga_forward:4,delete_uga_inst:4,delete_uhost_key_pair:4,delete_uinfluxdb_databas:4,delete_uinfluxdb_database_rp:4,delete_uinfluxdb_inst:4,delete_ulb:4,delete_umem_cache_group:4,delete_umem_spac:4,delete_upath:4,delete_uredis_group:4,delete_usms_signatur:4,delete_usms_templ:4,delete_vpc:4,delete_vpc_intercom:4,delete_vpn_gatewai:4,delete_vpn_tunnel:4,delete_vserv:4,delete_white_list_resourc:4,deletebandwidthpackag:4,deletebucket:4,deletecertif:4,deletecubedeploy:4,deletecubepod:4,deletefail:4,deletefirewal:4,deleteglobalsshinst:4,deleteismssignatur:4,deleteismstempl:4,deleteisolationgroup:4,deletenatgw:4,deletenatgwpolici:4,deletenetworkacl:4,deletenetworkaclassoci:4,deletenetworkaclentri:4,deletepathxssl:4,deletepolici:4,deleteproject:4,deleteremotevpngatewai:4,deleterepo:4,deleterepoimag:4,deleteroutet:4,deletesecondaryip:4,deletesnatrul:4,deletessl:4,deletesubnet:4,deletetidbservic:4,deleteudbbackup:4,deleteudbinst:4,deleteudblogpackag:4,deleteudbparamgroup:4,deleteuddbinst:4,deleteudisk:4,deleteudisksnapshot:4,deleteueccustomimag:4,deleteuechold:4,deleteuecsubnet:4,deleteuecvhost:4,deleteufiletoken:4,deleteugaforward:4,deleteugainst:4,deleteuhostkeypair:4,deleteuinfluxdbdatabas:4,deleteuinfluxdbdatabaserp:4,deleteuinfluxdbinst:4,deleteulb:4,deleteumemcachegroup:4,deleteumemspac:4,deleteupath:4,deleteuredisgroup:4,deleteusmssignatur:4,deleteusmstempl:4,deletevpc:4,deletevpcintercom:4,deletevpngatewai:4,deletevpntunnel:4,deletevserv:4,deletewhitelistresourc:4,delnod:4,deluk8sclust:4,deluk8sclusternodev2:4,deploy:4,deployimageinfo:4,deployinfolist:4,deploymentid:4,deploymentinfo:4,describe_bandwidth_packag:4,describe_bandwidth_usag:4,describe_baremetal_machine_typ:4,describe_bucket:4,describe_character_list:4,describe_eip:4,describe_firewal:4,describe_firewall_resourc:4,describe_global_ssh_area:4,describe_global_ssh_inst:4,describe_imag:4,describe_isolation_group:4,describe_member_list:4,describe_natgw:4,describe_natgw_polici:4,describe_network_acl:4,describe_network_acl_associ:4,describe_network_acl_association_by_subnet:4,describe_network_acl_entri:4,describe_new_ucdn_prefetch_cache_task:4,describe_new_ucdn_refresh_cache_task:4,describe_path_x_line_config:4,describe_path_xssl:4,describe_phost:4,describe_phost_imag:4,describe_phost_machine_typ:4,describe_phost_tag:4,describe_recycle_udisk:4,describe_remote_vpn_gatewai:4,describe_route_t:4,describe_secondary_ip:4,describe_share_bandwidth:4,describe_share_bandwidth_pric:4,describe_share_bandwidth_update_pric:4,describe_snat_rul:4,describe_ssl:4,describe_subnet:4,describe_subnet_resourc:4,describe_u_ec_firewal:4,describe_u_ec_firewall_resourc:4,describe_u_ec_hold:4,describe_u_ec_holder_idc:4,describe_u_ec_idc:4,describe_u_ec_subnet:4,describe_u_ec_v_host:4,describe_u_ec_v_host_isp:4,describe_ud_redis_proxy_info:4,describe_ud_redis_slowlog:4,describe_udb_backup:4,describe_udb_backup_blacklist:4,describe_udb_binlog_backup_url:4,describe_udb_inst:4,describe_udb_instance_backup_st:4,describe_udb_instance_backup_url:4,describe_udb_instance_binlog:4,describe_udb_instance_binlog_backup_st:4,describe_udb_instance_log:4,describe_udb_instance_pric:4,describe_udb_instance_st:4,describe_udb_instance_upgrade_pric:4,describe_udb_log_backup_url:4,describe_udb_log_packag:4,describe_udb_param_group:4,describe_udb_splitting_info:4,describe_udb_typ:4,describe_uddb_inst:4,describe_uddb_instance_pric:4,describe_uddb_instance_upgrade_pric:4,describe_udisk:4,describe_udisk_pric:4,describe_udisk_snapshot:4,describe_udisk_upgrade_pric:4,describe_udpn:4,describe_ufile_token:4,describe_ufs_volume_2:4,describe_uga_inst:4,describe_uhost_inst:[4,5],describe_uhost_instance_snapshot:4,describe_uhost_key_pair:4,describe_uhost_tag:4,describe_uinfluxdb_databas:4,describe_uinfluxdb_database_rp:4,describe_uinfluxdb_inst:4,describe_uinfluxdb_pric:4,describe_uinfluxdb_upgrade_pric:4,describe_uk8s_clust:4,describe_uk8s_imag:4,describe_uk8s_nod:4,describe_ulb:4,describe_ulb_simpl:4,describe_umem:4,describe_umem_backup:4,describe_umem_backup_url:4,describe_umem_block_info:4,describe_umem_cache_group:4,describe_umem_cache_pric:4,describe_umem_cache_upgrade_pric:4,describe_umem_pric:4,describe_umem_spac:4,describe_umem_upgrade_pric:4,describe_upath:4,describe_upath_templ:4,describe_uredis_backup:4,describe_uredis_backup_url:4,describe_uredis_config:4,describe_uredis_group:4,describe_uredis_pric:4,describe_uredis_slowlog:4,describe_uredis_upgrade_pric:4,describe_uredis_vers:4,describe_vip:4,describe_vpc:4,describe_vpc_intercom:4,describe_vpn_gatewai:4,describe_vpn_tunnel:4,describe_vserv:4,describe_white_list_resourc:4,describebandwidthpackag:4,describebandwidthusag:4,describebaremetalmachinetyp:4,describebucket:4,describecharacterlist:4,describeeip:4,describefirewal:4,describefirewallresourc:4,describeglobalssharea:4,describeglobalsshinst:4,describeimag:4,describeisolationgroup:4,describememberlist:4,describenatgw:4,describenatgwpolici:4,describenetworkacl:4,describenetworkaclassoci:4,describenetworkaclassociationbysubnet:4,describenetworkaclentri:4,describenewucdnprefetchcachetask:4,describenewucdnrefreshcachetask:4,describepathxlineconfig:4,describepathxssl:4,describephost:4,describephostimag:4,describephostmachinetyp:4,describephosttag:4,describerecycleudisk:4,describeremotevpngatewai:4,describeroutet:4,describesecondaryip:4,describesharebandwidth:4,describesharebandwidthpric:4,describesharebandwidthupdatepric:4,describesnatrul:4,describessl:4,describesubnet:4,describesubnetresourc:4,describeudbbackup:4,describeudbbackupblacklist:4,describeudbbinlogbackupurl:4,describeudbinst:4,describeudbinstancebackupst:4,describeudbinstancebackupurl:4,describeudbinstancebinlog:4,describeudbinstancebinlogbackupst:4,describeudbinstancelog:4,describeudbinstancepric:4,describeudbinstancest:4,describeudbinstanceupgradepric:4,describeudblogbackupurl:4,describeudblogpackag:4,describeudbparamgroup:4,describeudbsplittinginfo:4,describeudbtyp:4,describeuddbinst:4,describeuddbinstancepric:4,describeuddbinstanceupgradepric:4,describeudisk:4,describeudiskpric:4,describeudisksnapshot:4,describeudiskupgradepric:4,describeudpn:4,describeudredisproxyinfo:4,describeudredisslowlog:4,describeuecfirewal:4,describeuecfirewallresourc:4,describeuechold:4,describeuecholderidc:4,describeuecidc:4,describeuecsubnet:4,describeuecvhost:4,describeuecvhostisp:4,describeufiletoken:4,describeufsvolume2:4,describeugainst:4,describeuhostinst:4,describeuhostinstancesnapshot:4,describeuhostkeypair:4,describeuhosttag:4,describeuinfluxdbdatabas:4,describeuinfluxdbdatabaserp:4,describeuinfluxdbinst:4,describeuinfluxdbpric:4,describeuinfluxdbupgradepric:4,describeuk8sclust:4,describeuk8simag:4,describeuk8snod:4,describeulb:4,describeulbsimpl:4,describeumem:4,describeumembackup:4,describeumembackupurl:4,describeumemblockinfo:4,describeumemcachegroup:4,describeumemcachepric:4,describeumemcacheupgradepric:4,describeumempric:4,describeumemspac:4,describeumemupgradepric:4,describeupath:4,describeupathtempl:4,describeuredisbackup:4,describeuredisbackupurl:4,describeuredisconfig:4,describeuredisgroup:4,describeuredispric:4,describeuredisslowlog:4,describeuredisupgradepric:4,describeuredisvers:4,describevip:4,describevpc:4,describevpcintercom:4,describevpngatewai:4,describevpntunnel:4,describevserv:4,describewhitelistresourc:4,describewhitelistresourceobjectipinfo:4,descript:4,descriptor:0,detach:4,detach_udisk:4,detachudisk:4,detail:0,devicenam:4,dict:[0,4],digest:4,dimens:4,dir:4,direct:4,disabl:4,disable_udb_rw_split:4,disableschedul:4,disablesemisync:4,disabletim:4,disableudbrwsplit:4,disassociate_eip_with_share_bandwidth:4,disassociate_firewal:4,disassociateeipwithsharebandwidth:4,disassociatefirewal:4,disk:[2,3,4],diskid:4,diskpassword:4,diskpressur:4,diskreadop:4,diskset:4,disksiz:4,diskspac:4,disktyp:4,diskuseds:4,diskwriteop:4,displai:4,distinguish:0,distribut:4,dnsname:4,doc:0,docker:4,dockercount:4,dockerinfo:4,document:[0,2,4],domain:4,domainbaseinfo:4,domainconfiginfo:4,domaincount:4,domainid:4,domaininfo:4,domaininfolist:4,domainlist:4,domainset:4,done:4,doubl:4,download:4,downloadflow:4,downloadstatisticinfo:4,downloadtim:4,downloadtraff:4,drive:4,drop:4,dryrun:4,dstaddr:4,dstip:4,dstport:4,dstprojectid:4,dstregion:4,dstvpcid:4,dttype:4,dump:4,dupact:4,dure:0,dynam:4,e87ab3b8a1ea:4,e:[2,3,4],earliesttim:4,echo:4,edg:4,edit_udb_backup_blacklist:4,editudbbackupblacklist:4,efficiencydatadisk:4,efficiencysystemdisk:4,eg:[0,1],egress:4,eip:[2,3,4],eipaddr:4,eipaddrset:4,eipbandwidth:4,eipid:4,eippaymod:4,eippaymodeset:4,eippricedetailset:4,eipset:4,eipsetdata:4,eiptyp:4,el7:4,elasticip:4,els:[2,3,5],en:4,enabl:[0,4],enable_udb_rw_split:4,enable_white_list:4,enableipv6:4,enablelog:4,enabletim:4,enableudbrwsplit:4,enablewhitelist:4,encod:1,encrypt:4,end:0,endtim:4,enhanc:4,enjoyalon:4,enterpris:4,entri:4,entryact:4,entryid:4,entrylist:4,environ:4,envlist:4,epyc2:4,equal:0,errdesc:4,errmessag:4,error:[0,4],errorlog_backup:4,esp:4,etcdcert:4,etcdkei:4,everi:0,exampl:5,exc:[2,3],except:[0,2,3],excludet:4,exclusive_local_disk:4,exist:4,expect:1,experi:5,expir:4,expiredtim:4,expiretim:4,exponenti:[0,4,5],exporteipid:4,exportip:4,extend_ufs_volum:4,extendcod:4,extendinfo:4,extendufsvolum:4,externalapiserv:4,extract_udb_param_group:4,extractudbparamgroup:4,f8a2:4,factor:0,fail:[1,4],failcont:4,failedmessag:4,failedunrecover:4,failphonedetail:4,failur:4,failuredetail:4,fals:4,featur:[4,5],fellfre:4,fetch_udb_instance_earliest_recover_tim:4,fetchudbinstanceearliestrecovertim:4,field:5,file:4,fileurl:4,financ:4,finish:5,finishtim:4,firewalldataset:4,firewallid:4,firewallinfo:4,firewallnam:4,firewallruleset:4,firewallset:4,first:1,flow:4,flowhitr:4,flushall_uredis_group:4,flushalluredisgroup:4,flushtyp:4,followoriginrul:4,foo:0,forbid:4,forc:4,forcebackup:4,forcedump:4,forceswitch:4,forcetokil:4,format:4,formattyp:4,fortresshost:4,forwardregion:4,found:0,fra:4,free:[2,4],freez:4,freeze_memb:4,freezememb:4,frequenc:4,from:[2,3,5],fromnumb:4,frontendport:4,full:[0,4],functyp:4,fwid:4,g:4,game:4,gatewai:4,gb:4,gd:4,ge:4,gen_password:[1,2,3],gener:[1,2,3,4],get:[2,3,4,5],get_attached_disk_upgrade_pric:4,get_available_resource_for_polici:4,get_available_resource_for_snat_rul:4,get_available_resource_for_white_list:4,get_bal:4,get_bill_data_file_url:4,get_certificate_v2:4,get_cube_deploy:4,get_cube_exec_token:4,get_cube_extend_info:4,get_cube_metr:4,get_cube_pod:4,get_cube_pric:4,get_cube_token:4,get_eip_pay_mod:4,get_eip_pric:4,get_eip_upgrade_pric:4,get_global_ssh_pric:4,get_global_ssh_update_pric:4,get_image_tag:4,get_isms_send_receipt:4,get_mobil:4,get_network_acl_target_resourc:4,get_network_mask:4,get_new_ucdn_domain_bandwidth:4,get_new_ucdn_domain_hit_r:4,get_new_ucdn_domain_http_cod:4,get_new_ucdn_domain_http_code_v2:4,get_new_ucdn_domain_request_num:4,get_new_ucdn_log_referer_statist:4,get_new_ucdn_log_url_statist:4,get_path_x_metr:4,get_phost_disk_upgrade_pric:4,get_phost_pric:4,get_project_list:4,get_region:4,get_repo:4,get_repo_imag:4,get_sf_workflow_templ:4,get_throughput_daily_billing_info:4,get_u_ec_holder_log:4,get_u_ec_holder_metr:4,get_u_ec_idc_cut_info:4,get_u_ec_idcv_host_data:4,get_u_ec_imag:4,get_u_ec_pod_pric:4,get_u_ec_upgrade_pric:4,get_u_ec_v_host_data:4,get_u_ec_v_host_pric:4,get_ucdn_domain_95bandwidth_v2:4,get_ucdn_domain_bandwidth_v2:4,get_ucdn_domain_config:4,get_ucdn_domain_hit_r:4,get_ucdn_domain_http_code_v2:4,get_ucdn_domain_info_list:4,get_ucdn_domain_log:4,get_ucdn_domain_origin_http_cod:4,get_ucdn_domain_origin_http_code_detail:4,get_ucdn_domain_origin_request_num:4,get_ucdn_domain_prefetch_en:4,get_ucdn_domain_request_num_v2:4,get_ucdn_domain_request_num_v3:4,get_ucdn_domain_traff:4,get_ucdn_pass_bandwidth:4,get_ucdn_pass_bandwidth_v2:4,get_ucdn_pro_isp_bandwidth_v2:4,get_ucdn_pro_isp_request_num_v2:4,get_ucdn_traff:4,get_ucdn_traffic_v2:4,get_udb_client_conn_num:4,get_udpn_line_list:4,get_udpn_pric:4,get_udpn_upgrade_pric:4,get_udts_task_histori:4,get_udts_task_statu:4,get_ufile_daily_report:4,get_ufile_quota:4,get_ufile_quota_info:4,get_ufile_quota_pric:4,get_ufile_report:4,get_uhost_instance_pric:4,get_uhost_instance_vnc_info:4,get_uhost_upgrade_pric:4,get_umem_space_st:4,get_user_info:4,get_usms_send_receipt:4,get_vpn_gateway_pric:4,get_vpn_gateway_upgrade_pric:4,getattacheddiskupgradepric:4,getavailableresourceforpolici:4,getavailableresourceforpolicydataset:4,getavailableresourceforsnatrul:4,getavailableresourceforsnatruledataset:4,getavailableresourceforwhitelist:4,getavailableresourceforwhitelistdataset:4,getbal:4,getbilldatafileurl:4,getcertificatev2:4,getcubedeploy:4,getcubeexectoken:4,getcubeextendinfo:4,getcubemetr:4,getcubepod:4,getcubepric:4,getcubetoken:4,geteippaymod:4,geteippric:4,geteipupgradepric:4,getglobalsshpric:4,getglobalsshupdatepric:4,getimagetag:4,getismssendreceipt:4,getmobil:4,getnetworkacltargetresourc:4,getnetworkmask:4,getnewucdndomainbandwidth:4,getnewucdndomainhitr:4,getnewucdndomainhttpcod:4,getnewucdndomainhttpcodev2:4,getnewucdndomainrequestnum:4,getnewucdnlogrefererstatist:4,getnewucdnlogurlstatist:4,getpathxmetr:4,getphostdiskupgradepric:4,getphostpric:4,getphostpriceparamdisk:4,getprojectlist:4,getregion:4,getrepo:4,getrepoimag:4,getsfworkflowtempl:4,getthroughputdailybillinginfo:4,getucdndomain95bandwidthv2:4,getucdndomainbandwidthv2:4,getucdndomainconfig:4,getucdndomainhitr:4,getucdndomainhttpcodev2:4,getucdndomaininfolist:4,getucdndomainlog:4,getucdndomainoriginhttpcod:4,getucdndomainoriginhttpcodedetail:4,getucdndomainoriginrequestnum:4,getucdndomainprefetchen:4,getucdndomainrequestnumv2:4,getucdndomainrequestnumv3:4,getucdndomaintraff:4,getucdnpassbandwidth:4,getucdnpassbandwidthv2:4,getucdnproispbandwidthv2:4,getucdnproisprequestnumv2:4,getucdntraff:4,getucdntrafficv2:4,getudbclientconnnum:4,getudpnlinelist:4,getudpnpric:4,getudpnupgradepric:4,getudtstaskhistori:4,getudtstaskstatu:4,getuecholderlog:4,getuecholdermetr:4,getuecidccutinfo:4,getuecidcvhostdata:4,getuecimag:4,getuecpodpric:4,getuecupgradepric:4,getuecvhostdata:4,getuecvhostpric:4,getufiledailyreport:4,getufilequota:4,getufilequotainfo:4,getufilequotapric:4,getufilereport:4,getuhostinstancepric:4,getuhostinstancepriceparamdisk:4,getuhostinstancepriceparamvirtualgpu:4,getuhostinstancepriceparamvolum:4,getuhostinstancevncinfo:4,getuhostupgradepric:4,getumemspacest:4,getuserinfo:4,getusmssendreceipt:4,getvpngatewaypric:4,getvpngatewayupgradepric:4,gi:4,gif:4,git:[2,3],github:[2,3],globalssh:4,globalssharea:4,globalsshinfo:4,globalsshport:4,gpu:4,gputyp:4,grade:4,grant_firewal:4,grantfirewal:4,group:4,groupid:4,groupnam:4,gtid:4,gu1xpspa:4,gwtype:4,ha:[4,5],haarch:4,hadoophost:4,handler:0,haproxi:4,hashvalu:4,hasnatgw:4,hasuserdomain:4,haswel:4,have:0,header:4,helper:[2,5],here:[2,3],hf:4,hideunpaid:4,high:4,highavail:4,hitrateinfo:4,hitrateinfov2:4,hitratelist:4,hittyp:4,hk:4,holderid:4,holderlist:4,holdernam:4,holderpric:4,host:4,hostid:4,hostidforattach:4,hostip:4,hostnam:4,hostproduct:4,hosttyp:4,hotplug:4,hotplugfeatur:4,hour:4,hpc:4,hpcfeatur:4,http100:4,http101:4,http102:4,http1xx:4,http200:4,http201:4,http202:4,http203:4,http204:4,http205:4,http206:4,http207:4,http2http:4,http2xx:4,http300:4,http301:4,http302:4,http303:4,http304:4,http305:4,http306:4,http307:4,http3xx:4,http400:4,http401:4,http402:4,http403:4,http404:4,http405:4,http406:4,http407:4,http408:4,http409:4,http410:4,http411:4,http412:4,http413:4,http414:4,http415:4,http416:4,http417:4,http418:4,http421:4,http422:4,http423:4,http424:4,http425:4,http426:4,http449:4,http451:4,http4xx:4,http500:4,http501:4,http502:4,http503:4,http504:4,http505:4,http506:4,http507:4,http509:4,http510:4,http5xx:4,http6xx:4,http:[0,2,3,4],httpclienthead:4,httpcodecachelist:4,httpcodedetail:4,httpcodeinfo:4,httpcodeinfov2:4,httpcodepattern:4,httpcodev2detail:4,httpfivexx:4,httpfourxx:4,httphttp:4,httphttpr:4,httponexx:4,httporiginhead:4,httpshttp:4,httpshttpr:4,httpshttpsr:4,httpsstatusabroad:4,httpsstatuscn:4,httpthreexx:4,httptwoxx:4,hybridgw:4,i:5,i_solation_uredis_group:4,iagets:4,iam:2,iamclient:4,iastorag:4,icmp:4,id:[0,4],idccutinfo:4,idcid:4,idcinfo:4,idclist:4,idcnam:4,identifi:0,idleflow:4,ifopen:4,ignor:[0,4],ignorebackupmod:4,ignoreubillinfo:4,ik:4,ikeauthenticationalgorithm:4,ikedata:4,ikedhgroup:4,ikeencryptionalgorithm:4,ikeexchangemod:4,ikelocalid:4,ikepresharedkei:4,ikeremoteid:4,ikesalifetim:4,ikevers:4,imag:[2,3,4],image_id:[2,3],imagedesc:4,imagedescript:4,imageid:[2,3,4],imageinfo:4,imagekei:4,imagelist:4,imagenam:4,images:4,imageset:4,imagetyp:4,img:4,implement:0,import_custom_imag:4,import_u_ec_custom_imag:4,import_uhost_key_pair:4,importcustomimag:4,importueccustomimag:4,importuhostkeypair:4,improv:5,includeslav:4,increment:4,index:[0,2,4],industrytyp:4,info:0,inform:0,ingress:4,init:4,initfail:4,initi:4,initializ:4,initscript:4,innerbackuppath:4,innerip:4,innermod:4,input:[1,4],inrecycl:4,inst:5,instal:4,installfail:4,instanc:[4,5],instanceid:4,instancemod:4,instancenam:4,instanceset:4,instancetyp:4,instancetypeid:4,integ:5,integr:4,integratedsoftwar:4,intel:4,intern:4,internalip:4,internet:[2,3],interv:1,inus:4,invalid:5,invite_subaccount:4,invitesubaccount:4,invok:[0,5],io:4,iocap:4,iop:4,ioread:4,iowrit:4,ip:4,ipaddr:4,ipblacklist:4,ipcount:4,ipid:4,ipinfo:4,iplist:4,iplocationinfo:4,ipmod:4,ippric:4,ipprotocol:4,ipresinfo:4,ipsec:4,ipsecauthenticationalgorithm:4,ipsecdata:4,ipsecencryptionalgorithm:4,ipseclocalsubnetid:4,ipsecpfsdhgroup:4,ipsecprotocol:4,ipsecremotesubnet:4,ipsecsalifetim:4,ipsecsalifetimebyt:4,ipsecvpn:2,ipsecvpncli:4,ipset:4,iptabl:4,ipv4:4,ipv6:4,ipv6address:4,ipv6addressid:4,ipv6featur:4,ipv6network:4,ipv:4,ipvers:4,isadmin:4,isarbit:4,isbackup:4,isboot:4,isdefault:4,isexpir:4,isfin:4,isforc:4,isinudbc:4,islock:4,ism:2,ismodifi:4,ismsclient:4,isneedouterip:4,isolationgroup:4,isolationgroupset:4,isolationuredisgroup:4,isoutsid:4,isp:4,ispnam:4,isshar:4,issu:2,issupportkvm:4,istotalpric:4,isudiskavail:4,isunidirect:4,isvalid:4,item:4,itemdetail:4,ivybridg:4,jpeg:4,jpg:4,jpn:4,k80:4,k8:4,k8snodecondit:4,k8sversion:4,keepdata:4,keepexistdata:4,kei:[0,2,3,4],kernelvers:4,key1:4,key2:4,keyid:4,keypair:4,keypairdesc:4,keypairfingerprint:4,keypairid:4,keypairnam:4,keypairst:4,kh:4,km:4,kmskeyid:4,kr:4,kube:4,kubeconfig:4,kubelet:4,kubeletvers:4,kubeproxi:4,kubeproxyvers:4,kubernet:4,kwarg:[0,4],l342dab130gf:4,l4forwarderset:4,l7forwarderset:4,la:4,label:4,lambda:[1,5],lastchargetyp:4,lastesttim:4,lastlogin:4,lastprobetim:4,lastregionid:4,lasttransitiontim:4,lasttranstaskid:4,latesttag:4,layer:4,le:4,leastconn:4,leave_isolation_group:4,leaveisolationgroup:4,left:4,leftquota:4,len:[0,1],length:1,letter:1,level:[0,5],librari:2,licens:2,lifecycl:[4,5],like:0,limit:4,linedetail:4,linefrom:4,linefromnam:4,lineid:4,lineset:4,lineto:4,linetonam:4,linetyp:4,link:4,linkport:4,linux:[2,4],list:[0,1,4],list_cube_deploy:4,list_cube_pod:4,list_subnet_for_natgw:4,list_u_bill_detail:4,list_u_bill_overview:4,list_udts_task:4,list_uk8s_cluster_node_v2:4,list_uk8s_cluster_v2:4,list_uk8s_node_group:4,listcubedeploy:4,listcubepod:4,listdataitem:4,listentyp:4,listpric:4,listsubnetfornatgw:4,listubilldetail:4,listubilloverview:4,listudtstask:4,listuk8sclusternodev2:4,listuk8sclusterv2:4,listuk8snodegroup:4,load:4,local:4,local_nom:4,local_ssd:4,localdisk:4,localregion:4,locat:4,log:[0,4],log_level:0,log_param:5,log_request:5,log_respons:5,logfiles:4,logger:[0,4],loggerset:4,logic:5,login_u_ec_dock:4,loginmod:[2,3,4],loginnetworkmask:4,loginuecdock:4,loglevel:0,logpackagedataset:4,logset:4,logsetinfo:4,logsetlist:4,logtyp:4,low:4,lower_lett:1,lowercas:1,m:4,mac:4,macaddr:4,machinetyp:4,maco:2,main:4,make:4,manual:4,mariadb:4,mask:4,master:4,masterbootdisktyp:4,mastercount:4,mastercpu:4,masterdatadisks:4,masterdatadisktyp:4,masterdbid:4,mastergroupid:4,masterisolationgroup:4,masterlist:4,mastermachinetyp:4,mastermem:4,masterminmalcpuplatform:4,match:[4,5],matricpoint:4,max:[0,1],max_backoff_interv:1,max_connect:4,max_retri:0,maxbandwidth:4,maxcount:4,maxdomainnum:4,maxmountpointnum:4,maxnodecnt:4,maxpod:4,maxretri:0,maxretrycount:4,mb:4,mbp:4,md5:4,medium:4,mem:4,membercount:4,memberemail:4,memberinfo:4,membernam:4,memberphon:4,memberposit:4,memberqq:4,memberset:4,memcach:4,memori:[2,3,4],memorycapac:4,memorylimit:4,memorylimitsfract:4,memorypressur:4,memoryrequest:4,memoryrequestsfract:4,memorys:4,memsiz:4,memutil:4,messag:4,method:[2,3,4],metricdataset:4,metricisdataset:4,metricnam:4,metricperiod:4,mget_uhost_st:5,mi:4,middlewar:[2,4],middlewarepric:4,migrat:4,min:4,min_backoff_interv:1,min_low:1,min_numb:1,min_speci:1,min_upp:1,minim:1,minimalcpu:4,minimalcpuplatform:4,minmalcpuplatform:4,miss:5,mm:4,mobile_desc:4,mobile_statu:4,mod:[0,4],mode:4,model:4,modifi:4,modify_charact:4,modify_cube_extend_info:4,modify_cube_tag:4,modify_eip_bandwidth:4,modify_eip_weight:4,modify_global_ssh_port:4,modify_global_ssh_remark:4,modify_global_ssh_typ:4,modify_phost_image_info:4,modify_phost_info:4,modify_project:4,modify_route_rul:4,modify_u_ec_bandwidth:4,modify_u_ec_holder_nam:4,modify_u_ec_image_nam:4,modify_udb_instance_nam:4,modify_udb_instance_password:4,modify_udpn_bandwidth:4,modify_uhost_instance_nam:4,modify_uhost_instance_remark:4,modify_uhost_instance_tag:4,modify_uhost_ip:4,modify_uinfluxdb_database_polici:4,modify_umem_space_nam:4,modify_upath_bandwidth:4,modify_upath_templ:4,modify_uredis_group_nam:4,modify_uredis_group_password:4,modifycharact:4,modifycubeextendinfo:4,modifycubetag:4,modifyeipbandwidth:4,modifyeipweight:4,modifyglobalsshport:4,modifyglobalsshremark:4,modifyglobalsshtyp:4,modifyphostimageinfo:4,modifyphostinfo:4,modifyproject:4,modifyrouterul:4,modifytim:4,modifyudbinstancenam:4,modifyudbinstancepassword:4,modifyudpnbandwidth:4,modifyuecbandwidth:4,modifyuecholdernam:4,modifyuecimagenam:4,modifyuhostinstancenam:4,modifyuhostinstanceremark:4,modifyuhostinstancetag:4,modifyuhostip:4,modifyuinfluxdbdatabasepolici:4,modifyumemspacenam:4,modifyupathbandwidth:4,modifyupathtempl:4,modifyuredisgroupnam:4,modifyuredisgrouppassword:4,mongo:4,mongodb:4,monitorinfo:4,monitortyp:4,month:4,more:0,most:0,mountpath:4,mountpoint:4,mp3:4,mp4:4,mpzxc:4,ms_redi:4,msgsignatur:4,msgtitl:4,multiattach:4,must:0,my_private_kei:0,my_public_kei:0,myapp:0,mysql:4,mysqlnod:4,n1:4,n2:4,n:[1,4],name:[2,3,4],namespac:4,natgatewai:4,natgatewaydataset:4,natgatewayipset:4,natgatewaysubnetset:4,natgw:4,natgwid:4,natgwipresinfo:4,natgwnam:4,natgwpolicydataset:4,natgwsnatrul:4,natgwsubnetdataset:4,natgwwhitelistdataset:4,needrestart:4,netcap:4,netcapvalu:4,netenhanced_ultra:4,netlimit:4,netmask:4,netpacketin:4,netpacketout:4,network:[0,4],networkin:4,networkinfo:4,networkinterfac:4,networkinterfaceid:4,networkinusag:4,networkmask:4,networkout:4,networkoutusag:4,networkst:4,newdbnam:4,newnam:4,newtablenam:4,next:4,nexthopid:4,nexthoptyp:4,nexttim:4,nic:4,nicin:4,nicout:4,nobinlog:4,nocmkid:4,node:4,nodecount:4,nodegroupid:4,nodegrouplist:4,nodegroupnam:4,nodegroupset:4,nodeid:4,nodeinfo:4,nodeinfov2:4,nodeiplist:4,nodeisplist:4,nodelist:4,nodeloginfo:4,nodenam:4,nodepric:4,noderol:4,nodeset:4,nodestatu:4,nodetyp:4,non:4,none:[0,4],noraid:4,normal:4,normal_volum:4,noschedul:4,nosql:4,notconnect:4,notsupportgpu:4,nullref:4,num:4,number:[0,1],number_lett:1,nvme:4,nvme_ssd:4,nwtype:4,o:4,object:0,objectid:4,objectipinfo:4,occur:0,ocnam:4,octyp:4,off:[4,5],offset:4,om:4,omax:4,onc:4,onli:[2,3],openapi:0,operatornam:4,opro:4,option:[0,4],orderbi:4,orderno:4,ordertyp:4,org:4,organ:0,organizationid:4,originaddr:4,originalpric:4,originconf:4,originerrorcod:4,originerrornum:4,originfollow301:4,originhost:4,originip:4,originiplist:4,originport:4,originprotocol:4,originrequest:4,os:4,osimag:4,osnam:4,ostyp:4,outerip:4,outermod:4,outpublicipinfo:4,outpubliciplist:4,output:[1,4],outsignatur:4,outtempl:4,ow:4,ownslav:4,p40:4,pack:4,packetstransmit:4,packnam:4,page:2,pageindex:4,pages:4,paidstat:4,paidtyp:4,param:4,paramet:[0,1],paramgroupid:4,parammemb:4,parentid:4,parentnam:4,pass:4,password1:4,password:[1,2,3,4],passwordpolicyd:4,path:4,pathpattern:4,pathx:2,pathxclient:4,pathxsslset:4,pathxugainfo:4,paymod:4,pci:4,pcie_ssd:4,pcie_ssd_volum:4,peer1:4,peer2:4,pem:4,pend:[1,4,5],percent:4,percentag:4,percona:4,perform:4,permissionset:4,persistenceinfo:4,persistencetyp:4,phone:4,phoneinfo:4,phonenumb:4,phoneprefix:4,phoneset:4,phost:4,phostclass:4,phostcloudmachinetypeset:4,phostclusterset:4,phostcomponentset:4,phostcpuset:4,phostdescdiskset:4,phostdiskset:4,phostid:4,phostimageset:4,phostipset:4,phostmachinetypeset:4,phostpriceset:4,phostset:4,phosttagset:4,phosttyp:4,pidpressur:4,ping:4,pip:[2,3],pmstatu:4,png:4,po:4,pod:4,podcapac:4,podcidr:4,podx:4,polici:[0,4,5],policybackendset:4,policyid:4,policynam:4,policyprior:4,policyset:4,policytyp:4,port:4,portrang:4,posit:0,postaccuratebandwidth:4,postgresql:4,postpai:4,postpaid:4,poweroff_phost:4,poweroff_u_ec_v_host:4,poweroff_uhost_inst:4,poweroffphost:4,poweroffuecvhost:4,poweroffuhostinst:4,powerst:4,preemptiv:4,prefetch_new_ucdn_domain_cach:4,prefetchnewucdndomaincach:4,prepar:0,presentipaddress:4,prevassoci:4,previousipaddress:4,price:4,pricedataset:4,pricedetailinfo:4,priceinfo:4,priceset:4,primari:4,primev:4,print:[0,2,3,5],prioriti:4,privat:[2,3,4],private_kei:[0,2,3],privateip:4,privatekei:4,privatekeybodi:4,privileg:4,pro:4,problem:0,process:4,product:4,productcategori:4,productnam:4,producttyp:4,progress:4,proispbandwidthlist:4,proispbandwidthset:4,proisprequestlistv2:4,proisprequestnumsetv2:4,project:[0,4],project_id:[0,2,3],projectcount:4,projectid:[0,4],projectidkeypairid:4,projectinfo:4,projectlistinfo:4,projectnam:4,projectset:4,promot:4,promote_udb_instance_to_ha:4,promote_udb_slav:4,promoteudbinstancetoha:4,promoteudbslav:4,properti:0,protocol:4,protocoltyp:4,protocolvers:4,provid:5,providerid:4,provinc:4,proxydoc:4,proxyfil:4,proxyid:4,proxysql_max_connect:4,proxysql_mysql:4,public_kei:[0,2,3],publiciplist:4,publickei:4,publickeybodi:4,pull:2,pullcount:4,purchasevalu:4,purpos:4,pvft_enum:4,pvft_rang:4,py:[2,3],python3:[2,3],python:[0,3,5],qcow2:4,qp:4,quantiti:4,quantityout:4,queri:4,query_ip_loc:4,query_isms_signatur:4,query_isms_templ:4,query_usms_signatur:4,query_usms_templ:4,querydata:4,queryiploc:4,queryismssignatur:4,queryismstempl:4,querystr:4,queryusmssignatur:4,queryusmstempl:4,quotatyp:4,qz:4,raid0:4,raid10:4,raid1:4,raid5:4,raid:4,raidsupport:4,rais:[0,5],rdmaclusterid:4,reach:5,readi:[1,4],readmodel:4,readperc:4,readweight:4,realip:4,reason:4,reboot:4,reboot_phost:4,reboot_uhost_inst:4,reboot_uinfluxdb_inst:4,rebootphost:4,rebootuhostinst:4,rebootuinfluxdbinst:4,receiptcod:4,receiptdesc:4,receiptperphon:4,receiptpersess:4,receiptpertask:4,receiptresult:4,receiptset:4,receipttim:4,receiv:0,recommend:4,recov:4,recover_udisk:4,recoverudisk:4,recoverytim:4,recycleudiskset:4,redi:4,reewqe5:4,refer:4,referconf:4,refererallownul:4,refererlist:4,refererstatist:4,refererstatu:4,referertyp:4,referlist:4,referstatu:4,refertyp:4,refqp:4,refresh:[1,5],refresh_new_ucdn_domain_cach:4,refreshnewucdndomaincach:4,region:[0,2,3,4,5],regionflag:4,regionid:4,regioninfo:4,regionnam:4,regionset:4,regist:0,reinstall_phost:4,reinstall_u_ec_v_host:4,reinstall_uhost_inst:4,reinstallphost:4,reinstalluecvhost:4,reinstalluhostinst:4,reject:4,release_backend:4,release_eip:4,release_share_bandwidth:4,release_udpn:4,release_vip:4,releasebackend:4,releasedataudisk:4,releaseeip:4,releasesharebandwidth:4,releaseudisk:4,releaseudpn:4,releasevip:4,remark:4,remot:5,remoteregion:4,remotevpngatewayaddr:4,remotevpngatewaydataset:4,remotevpngatewayid:4,remotevpngatewaynam:4,remov:5,remove_member_from_project:4,remove_ud_redis_data:4,remove_ufs_volum:4,remove_uk8s_node_group:4,removememberfromproject:4,removeudredisdata:4,removeufsvolum:4,removeuk8snodegroup:4,rename_udisk:4,renameudisk:4,renew_cube_pod:4,renewcubepod:4,reponam:4,reposet:4,req:[0,4,5],request:[0,2,4,5],request_handl:0,requestcnt:4,requestcount:4,requesthitr:4,requestinfo:4,requestinfov2:4,requestlist:4,requestmsg:4,requestnumset:4,requestproxi:4,requeststransport:[0,5],requesttim:4,requir:[4,5],requirevers:4,requuid:4,reservedisk:4,reset_phost_password:4,reset_uhost_instance_password:4,reset_uinfluxdb_instance_nam:4,resetphostpassword:4,resetuhostinstancepassword:4,resetuinfluxdbinstancenam:4,resid1:4,resid2:4,resiz:4,resize_attached_disk:4,resize_phost_attached_disk:4,resize_share_bandwidth:4,resize_udb_inst:4,resize_udisk:4,resize_uhost_inst:4,resize_umem_spac:4,resize_uredis_group:4,resizeattacheddisk:4,resizefail:4,resizephostattacheddisk:4,resizesharebandwidth:4,resizeudbinst:4,resizeudisk:4,resizeuhostinst:4,resizeumemspac:4,resizeuredisgroup:4,resourc:[0,2,4,5],resourcecount:4,resourceextendinfo:4,resourceid:4,resourceinfo:4,resourceip:4,resourcenam:4,resourceset:4,resourcetyp:4,resourcetypecod:4,resp:[0,2,3,5],respons:[0,4,5],response_handl:0,responsemsg:4,restart_rw_split:4,restart_u_ec_hold:4,restart_u_ec_v_host:4,restart_udb_inst:4,restart_uddb_inst:4,restart_umem_cache_group:4,restart_uredis_group:4,restartrwsplit:4,restartstrategi:4,restartudbinst:4,restartuddbinst:4,restartuechold:4,restartuecvhost:4,restartumemcachegroup:4,restarturedisgroup:4,restor:4,restore_udisk:4,restorefail:4,restoreudisk:4,restrictmod:4,retcod:4,retentionpolici:4,retentionpolicynam:4,retri:[0,5],retrypend:4,retrytim:4,rewritetim:4,role:4,root:4,roundrobin:4,rout:4,routernodenum:4,routerul:4,routeruleid:4,routeruleinfo:4,routervers:4,routet:4,routetableid:4,routetableinfo:4,routetabletyp:4,rpdata:4,rsport:4,rssddatadisk:4,rssdsystemdisk:4,rule:4,ruleact:4,ruleinfo:4,ruletyp:4,run:[1,2,4],runtim:5,rwip:4,rwstate:4,s:[1,4],s_redi:4,sa:4,sata:4,sata_ssd:4,sata_ssd_volum:4,scalingoutuddb:4,sdasadsda:4,sdk:[0,3,5],search:2,searchvalu:4,sec:4,securitygroupid:4,see:0,send:0,send_batch_usms_messag:4,send_isms_messag:4,send_usms_messag:4,send_uvms_messag:4,sendbatchusmsmessag:4,sendismsmessag:4,sendusmsmessag:4,senduvmsmessag:4,sentinel:4,seoul:4,serverid:4,serverinsert:4,servic:[0,2,3],servicecidr:4,serviceid:4,sessionid:4,sessionno:4,sessionnoset:4,set:0,set_eip_pay_mod:4,set_gw_default_export:4,set_network_mask:4,set_ti_db_config:4,set_udb_rw_split:4,set_udisk_udataark_mod:4,set_ufile_refer:4,seteippaymod:4,setgwdefaultexport:4,setnetworkmask:4,setpasswordfail:4,settidbconfig:4,settidbconfigparamconfig:4,setudbrwsplit:4,setudiskudataarkmod:4,setufilerefer:4,setup:[2,3],sg:4,sh1:4,sh2:4,sha1:4,sha2:4,sharded_clust:4,shardsrv:4,shardsrv_arbit:4,shardsrv_datanod:4,sharebandwidth:4,sharebandwidthid:4,sharebandwidthnam:4,sharebandwidthset:4,should:0,show:4,showavailableip:4,showhov:4,showzero:4,shutdown:4,shutdown_uredis_group:4,shutdownuredisgroup:4,shutoff:4,sigcont:4,sigid:4,signatur:0,sigpurpos:4,sigtyp:4,singl:4,size:[2,3,4],skylak:4,slave:4,slavecount:4,slavedbid:4,slaveinfo:4,slavezon:4,slow:4,slow_query_backup:4,sn:4,snapen:4,snapshot:4,snapshotcount:4,snapshotid:4,snapshotlimit:4,snapshotnam:4,snapshotservic:4,snapshotset:4,snapshotst:4,snapshottim:4,snatip:4,softwar:2,soldout:4,some:5,sourc:[0,1,2,3,4],sourceid:4,sourceimageid:4,sourceip:4,sourceport:4,sourcetyp:4,space:4,spaceid:4,special:1,special_lett:1,specif:1,spendtim:4,spreadinfo:4,spreadinfoset:4,sql:4,sqlserver:4,src:4,srcaddr:4,srcdbid:4,srceip:4,srceipid:4,srcgroupid:4,srcid:4,srcip:4,srcport:4,ssd:4,ssddatadisk:4,ssdsystemdisk:4,ssdtype:4,ssl:4,ssl_cacert:0,ssl_cert:0,ssl_kei:0,ssl_verifi:0,sslbindedtargetset:4,sslcontent:4,sslid:4,sslmd5:4,sslname:4,sslset:4,ssltype:4,standard:4,start:[4,5],start_phost:4,start_u_ec_v_host:4,start_udb_inst:4,start_uddb_inst:4,start_udts_task:4,start_uhost_inst:4,start_uinfluxdb_inst:4,start_uredis_group:4,startafterupgrad:4,startphost:4,starttim:4,startudbinst:4,startuddbinst:4,startudtstask:4,startuecvhost:4,startuhostinst:4,startuinfluxdbinst:4,startup_delai:1,starturedisgroup:4,stat:4,state:[2,4],statu:[0,4],status_forcelist:0,statusdata:4,statusdesc:4,stepflow:2,stepflowcli:4,stockstatu:4,stop:[4,5],stop_phost:4,stop_u_ec_v_host:4,stop_udb_inst:4,stop_uddb_inst:4,stop_udts_task:4,stop_uhost_inst:[4,5],stop_uinfluxdb_inst:4,stoppedunrecover:4,stopphost:4,stopudbinst:4,stopuddbinst:4,stopudtstask:4,stopuecvhost:4,stopuhostinst:4,stopuinfluxdbinst:4,storag:4,storagetyp:4,storagevolum:4,store:0,storeaddr:4,storeaddress:4,storvolumecount:4,storvolumeinfo:4,str:[0,1,4],string:[1,4],sub:0,subjectnam:4,subnet:4,subnetcount:4,subnetid:4,subnetinfo:4,subnetlist:4,subnetnam:4,subnetresourc:4,subnetset:4,subnettyp:4,subnetworkid:4,subresourceid:4,subresourcenam:4,subresourcetyp:4,success:4,successcount:4,support:4,switch_ucdn_charge_typ:4,switch_udb_ha_to_sentinel:4,switch_udb_instance_to_ha:4,switchucdnchargetyp:4,switchudbhatosentinel:4,switchudbinstancetoha:4,sy:4,sync:4,syncdata:4,sysdisks:4,system:2,systemdisk:4,systemfiles:4,t4:4,tabl:4,tabledata:4,tablemap:4,tablenam:4,tag:4,tagnam:4,tagset:4,taint:4,target:[1,4,5],targetimagedescript:4,targetimageid:4,targetimagenam:4,targetip:4,targetprojectid:4,targetregion:4,targetresourcecount:4,targetresourceid:4,targetresourceinfo:4,targetresourcelist:4,targettyp:4,task:4,taskcont:4,taskhistoryitem:4,taskid:4,taskidset:4,taskinfo:4,tasklist:4,taskset:4,tcp:4,tcpr:4,telecom_desc:4,telecom_statu:4,tempalteparam:4,templat:4,templateid:4,templatenam:4,templateparam:4,termin:1,terminalurl:4,terminate_charact:4,terminate_custom_imag:4,terminate_memb:4,terminate_phost:4,terminate_phost_imag:4,terminate_project:4,terminate_uhost_inst:[4,5],terminatecharact:4,terminatecustomimag:4,terminatememb:4,terminatephost:4,terminatephostimag:4,terminateproject:4,terminateuhostinst:4,test:[2,4],test_id:4,testurl:4,th:4,than:0,thi:2,threshold:4,throughputdailybillinginfo:4,tidb:2,tidb_gc:4,tidbclient:4,tikv_gc_life_tim:4,tikvmemoryhardth:4,time:[0,1,4],timemachinefeatur:4,timeout:[0,1,4,5],timerang:4,timestamp:4,tky:4,tobedelet:4,token:4,token_allow_delet:4,token_allow_dp:4,token_allow_iop:4,token_allow_list:4,token_allow_non:4,token_allow_read:4,token_allow_writ:4,tokenid:4,tokennam:4,top:4,toporganizationid:4,total:[0,1,4],totalbandwidth:4,totalcount:4,totaldiskspac:4,totaldur:4,totalipcnt:4,totalmountpointnum:4,totalout:4,totalpaidamount:4,totalpaidamountr:4,totalpric:4,totalunpaidamount:4,totpstatu:4,traffic:4,trafficleft:4,trafficset:4,traffictot:4,trafficus:4,transfer:4,transformtyp:4,transport:[2,4],trial:4,triggercount:4,trival:4,ttl:4,tunnelcount:4,tupl:0,tw:4,twice:5,txt:4,type:[2,3,4],uaccount:2,uaccountcli:4,ubil:2,ubillcli:4,ubuntu:4,ucdn:2,ucdnclient:4,ucdndomaintrafficset:4,ucdr:4,ucloud:[0,1,3,5],ucloudexcept:[2,3],udataark:4,udataarkmod:4,udb:[1,2],udbbackupset:4,udbcid:4,udbclient:4,udbinstancebinlogset:4,udbinstancepriceset:4,udbinstanceset:4,udbparamgroupset:4,udbparammemberset:4,udbrwsplittingset:4,udbslaveinstanceset:4,udbtypeset:4,uddb:2,uddbclient:4,uddbid:4,udhost:4,udisk:2,udiskbasicinfo:4,udiskcli:4,udiskdataset:4,udiskid:4,udiskidforattach:4,udisknam:4,udiskpricedataset:4,udisksnapshotset:4,udock:4,udockhost:4,udp:4,udpn:2,udpnclient:4,udpndata:4,udpnid:4,udpnlineset:4,udpr:4,udredisproxyinfo:4,udredisslowlogset:4,udt:2,udtsclient:4,udw:4,uec2:4,uec:2,uecclient:4,uf:2,ufil:2,ufilebucketset:4,ufilecli:4,ufiledailyreportitem:4,ufiledataset:4,ufiledomainset:4,ufilequotadatasetitem:4,ufilequotaleft:4,ufilereportitem:4,ufilereportset:4,ufiletokenset:4,ufiletotalreportitem:4,ufileurl:4,ufortress_host:4,ufsclient:4,ufsvolumeinfo2:4,uga:4,uga_bind_upath:4,uga_un_bind_upath:4,ugaainfo:4,ugaalin:4,ugaatask:4,ugabindupath:4,ugaid:4,ugal4forward:4,ugal7forward:4,ugalist:4,uganam:4,ugaunbindupath:4,uhadoop_host:4,uhost:[1,2,3,5],uhost_id:5,uhostcli:4,uhostcount:4,uhostdiskset:4,uhostid:[4,5],uhostidforattach:4,uhostimageset:4,uhostinfo:4,uhostinstanceset:4,uhostip:4,uhostipset:4,uhostkeypair:4,uhostnam:4,uhostpriceset:4,uhostset:[4,5],uhostsnapshotset:4,uhosttagset:4,uhosttyp:4,uhub:2,uhubcli:4,uhybrid:4,uid:4,uinfluxdb:4,uinfluxdbdataset:4,uinfluxdbid:4,uk8:2,uk8sclient:4,ukafka:4,ukmsmod:4,ulb:2,ulbbackendset:4,ulbclient:4,ulbid:4,ulbipset:4,ulbnam:4,ulbpolicyset:4,ulbset:4,ulbsimpleset:4,ulbsslset:4,ulbtyp:4,ulbvserverset:4,ultim:4,ultra:4,umem:2,umembackupset:4,umemblockinfo:4,umemcachegroupset:4,umemcachepriceset:4,umemcli:4,umemdataset:4,umempriceset:4,umemslavedataset:4,umemspaceaddressset:4,umemspaceset:4,un_bind_eip:4,un_bind_path_xssl:4,un_bind_u_ec_firewal:4,unatgw:4,unavail:4,unbind:4,unbind_ssl:4,unbindcount:4,unbindeip:4,unbindpathxssl:4,unbindssl:4,unbinduecfirewal:4,unet:2,unetallocateeipset:4,unetbandwidthpackageset:4,unetbandwidthusageeipset:4,unetcli:4,uneteipaddrset:4,uneteipresourceset:4,uneteipset:4,unetsharebandwidthset:4,unforbid:4,uni:4,unicom_desc:4,unicom_statu:4,uniqu:0,unix:4,unknow:4,unknown:4,unless:[2,3],unschedul:4,unsubscribeinfo:4,unv:2,unvsclient:4,up:0,upath:4,upathid:4,upathinfo:4,upathnam:4,upathnetworkin:4,upathnetworkinusag:4,upathnetworkout:4,upathnetworkoutusag:4,upathset:4,updat:4,update_backend_attribut:4,update_bucket:4,update_cube_deploy:4,update_eip_attribut:4,update_firewal:4,update_firewall_attribut:4,update_isms_signatur:4,update_natgw_polici:4,update_natgw_subnet:4,update_network_acl:4,update_network_acl_entri:4,update_path_x_whitelist:4,update_plugin:4,update_plugin_info:4,update_polici:4,update_repo:4,update_route_table_attribut:4,update_snat_rul:4,update_subnet_attribut:4,update_u_ec_firewal:4,update_u_ec_firewall_attribut:4,update_u_ec_subnet:4,update_udb_instance_backup_strategi:4,update_udb_instance_slave_backup_switch:4,update_udb_param_group:4,update_ufile_token:4,update_ulb_attribut:4,update_uredis_backup_strategi:4,update_usms_signatur:4,update_usms_templ:4,update_vip_attribut:4,update_vpc_network:4,update_vpn_gatewai:4,update_vpn_tunnel_attribut:4,update_vserver_attribut:4,updatebackendattribut:4,updatebackendattributebatch:4,updatebucket:4,updatecubedeploy:4,updateeipattribut:4,updatefirewal:4,updatefirewallattribut:4,updateismssignatur:4,updatenatgwpolici:4,updatenatgwsubnet:4,updatenetworkacl:4,updatenetworkaclentri:4,updatepathxwhitelist:4,updatepolici:4,updaterepo:4,updateroutetableattribut:4,updatesnatrul:4,updatesubnetattribut:4,updatetim:4,updateudbinstancebackupstrategi:4,updateudbinstanceslavebackupswitch:4,updateudbparamgroup:4,updateuecfirewal:4,updateuecfirewallattribut:4,updateuecfirewallparamrul:4,updateuecsubnet:4,updateufiletoken:4,updateulbattribut:4,updateuredisbackupstrategi:4,updateusmssignatur:4,updateusmstempl:4,updatevipattribut:4,updatevpcnetwork:4,updatevpngatewai:4,updatevpntunnelattribut:4,updatevserverattribut:4,upgrad:4,upgrade_to_ark_uhost_inst:4,upgrade_udb_instance_to_ha:4,upgrade_uddb_data_nod:4,upgrade_uddb_inst:4,upgrade_uinfluxdb_inst:4,upgradetoarkuhostinst:4,upgradeudbinstancetoha:4,upgradeuddbdatanod:4,upgradeuddbinst:4,upgradeuinfluxdbinst:4,upgradingdatanod:4,upgradinguddb:4,uphost:2,uphostcli:4,upload_udb_param_group:4,uploadudbparamgroup:4,upm:4,upper_lett:1,uppercas:1,uredisbackupset:4,uredisbackupstrategi:4,uredisconfigset:4,uredisgroupset:4,uredispriceset:4,uredisslowlogset:4,uredisversionset:4,url:[0,4],urllist:4,urlprogressinfo:4,urlstatist:4,urlstatisticslist:4,us:[0,2,3,4,5],usag:[1,2],useblacklist:4,useds:4,user:[0,2,3,4],user_ag:0,useraddress:4,userag:0,usercert:4,userdata:4,userdefin:4,userdisplaynam:4,useremail:4,userid:4,userinfo:4,usernam:4,usernetpath:4,userphon:4,usertyp:4,userufiledata:4,uservers:4,usessd:4,usm:2,usmsclient:4,usual:1,uta20212831c85c:4,util:[0,2,3],utsdb:2,utsdbclient:4,uvideo:4,uvm:2,uvmsclient:4,uvnet:4,v100:4,v1:4,v2:4,v3:4,v6:4,validationexcept:5,validtim:4,valu:4,value1:4,value2:4,valueset:4,valuetyp:4,vendor:4,verify_ac:0,verify_mobil:4,verifyinfo:4,verifymobil:4,verifyresult:4,version:4,vhd:4,via:[2,3],vip:4,vipdetailset:4,vipid:4,vipset:4,virtual:4,virtualip:4,virtualipmac:4,vmdk:4,vnc:4,vncip:4,vncpassword:4,vncport:4,vnet:4,vnetid:4,vod:4,volum:4,volumeid:4,volumenam:4,volumestatu:4,vpc2:4,vpc:2,vpcclient:4,vpcid:4,vpcinfo:4,vpcintercominfo:4,vpcip:4,vpcname:4,vpcnetworkinfo:4,vpctype:4,vpn:4,vpngatewaydataset:4,vpngatewayid:4,vpngatewaynam:4,vpngatewaypriceset:4,vpngw:4,vpntunneid:4,vpntunneldataset:4,vpntunnelid:4,vpntunnelnam:4,vsc0vgob:4,vserver:4,vservercount:4,vserverid:4,vservernam:4,vserverset:4,w3sivgvtcgxhdgvjzci6icjvveeymdixmjgzmum4numilcaiu2lnq29udgvudci6icjvq2xvdwqilcaivgfyz2v0ijogw3sivgvtcgxhdgvqyxjhbxmioibbijeymzq1nijdlcaiughvbmuioiaimtg1mdawmdaxmjmilcairxh0zw5kq29kzsi6icixmjmilcaivxnlcklkijogijq1nij9if0gfsbdia:4,wait:[2,4],wait_for_st:[1,5],waiter:5,waittimeoutexcept:5,web:4,websit:2,weight:4,weightroundrobin:4,welfar:4,when:[0,5],whitelist:4,who:0,window:[2,4],workdir:4,workflow:4,workflowid:4,workflownam:4,workflowtempl:4,workflowvers:4,ws:4,wssw:4,wsswsr:4,wsswss:4,wsswssr:4,wsw:4,wswsr:4,www:2,x86_64:4,x:4,xd8ja:4,xk3jxa:4,xx:4,xxx:4,xxxx:4,xxxxx:4,ye:4,year:4,you:[2,3],your:[2,3],yyyi:4,z0:4,za:4,zl44fktq:4,zone:[2,3,4],zoneid:4},titles:["Core","Helpers","UCloud SDK Python 3","QuickStart","UCloud SDK Services","Usage"],titleterms:{"3":2,api:2,chang:5,client:[0,5],config:0,contribut:2,core:0,cube:4,feedback:2,guid:2,helper:1,iam:4,indic:2,instal:[2,3],ipsecvpn:4,ism:4,middlewar:[0,5],pathx:4,python:2,quickstart:[2,3],refer:2,resourc:1,sdk:[2,4],servic:4,state:[1,5],stepflow:4,system:5,tabl:2,test:0,tidb:4,transport:[0,5],type:5,uaccount:4,ubil:4,ucdn:4,ucloud:[2,4],udb:4,uddb:4,udisk:4,udpn:4,udt:4,uec:4,uf:4,ufil:4,uhost:4,uhub:4,uk8:4,ulb:4,umem:4,unet:4,unv:4,uphost:4,usag:5,usm:4,util:1,utsdb:4,uvm:4,vpc:4,wait:[1,5]}}) \ No newline at end of file diff --git a/services.html b/services.html new file mode 100644 index 00000000..61aa2894 --- /dev/null +++ b/services.html @@ -0,0 +1,15189 @@ + + + + + + + + + UCloud SDK Services — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

UCloud SDK Services

+
+

PathX

+
+
+class ucloud.services.pathx.client.PathXClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+bind_path_xssl(req: Optional[dict] = None, **kwargs) dict[source]
+

BindPathXSSL - 绑定PathX SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。 请参考 GetProjectList接口

  • +
  • Port (list) - (Required) 绑定SSL证书的HTTPS端口。Port.0 Port.1对应多个Port。如果Port不存在则不会绑定

  • +
  • SSLId (str) - (Required) 证书ID,如果没有指定证书ID也没有申请免费证书,HTTPS接入无法正常工作

  • +
  • UGAId (str) - (Required) UGA实例ID

  • +
+

Response

+
+ +
+
+create_global_ssh_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateGlobalSSHInstance - 创建GlobalSSH实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • Area (str) - (Required) 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”,“首尔”。Area和AreaCode两者必填一个

  • +
  • AreaCode (str) - (Required) AreaCode, 区域航空港国际通用代码。Area和AreaCode两者必填一个

  • +
  • Port (int) - (Required) 源站服务器监听的SSH端口,可取范围[1-65535],不能使用80,443, 65123端口。如果InstanceType=Free,取值范围缩小为[22,3389],linux系统选择22,windows系统自动选3389。

  • +
  • TargetIP (str) - (Required) 被SSH访问的源站IP,仅支持IPv4地址。

  • +
  • BandwidthPackage (int) - Ultimate版本带宽包大小,枚举值:[0,20,40]。单位MB

  • +
  • ChargeType (str) - 支付方式,如按月:Month、 按年:Year、按时:Dynamic

  • +
  • CouponId (str) - 使用代金券可冲抵部分费用

  • +
  • ForwardRegion (str) - InstanceType等于Basic时可以在[“cn-bj2”,”cn-sh2”,”cn-gd”]中选择1个作为转发机房,其他付费版默认配置三个转发机房

  • +
  • InstanceType (str) - 枚举值:[“Ultimate”,”Enterprise”,”Basic”,”Primary”], 分别代表旗舰版,企业版,基础版,入门版

  • +
  • Quantity (int) - 购买数量按月购买至月底请传0

  • +
  • Remark (str) - 备注信息

  • +
+

Response

+
    +
  • AcceleratingDomain (str) - 加速域名,访问该域名可就近接入

  • +
  • InstanceId (str) - 实例ID,资源唯一标识

  • +
+
+ +
+
+create_path_xssl(req: Optional[dict] = None, **kwargs) dict[source]
+

CreatePathXSSL - 创建SSL证书,可以把整个 Pem 证书内容传到SSLContent,或者把证书、私钥、CA证书分别传过来

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID org-xxx格式。 请参考 GetProjectList接口

  • +
  • SSLName (str) - (Required) SSL证书的名字

  • +
  • CACert (str) - CA颁发证书内容

  • +
  • PrivateKey (str) - 加密证书的私钥,不可使用密码保护,开启密码保护后,重启服务需要输入密码

  • +
  • SSLContent (str) - SSL证书的完整内容,私钥不可使用密码,包括加密证书的私钥、用户证书或CA证书等

  • +
  • SSLType (str) - 所添加的SSL证书类型,目前只支持Pem格式

  • +
  • UserCert (str) - 用户自签证书内容

  • +
+

Response

+
    +
  • SSLId (str) - SSL证书的Id

  • +
+
+ +
+
+create_uga_forwarder(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUGAForwarder - 创建加速实例转发器,支持HTTPS接入HTTPS回源、HTTPS接入HTTP回源、HTTP接入HTTP回源、TCP接入TCP回源、UDP接入UDP回源、 支持WSS接入WSS回源、WSS接入WS回源、WS接入WS回源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。 请参考 GetProjectList接口

  • +
  • UGAId (str) - (Required) 加速配置实例ID

  • +
  • HTTPHTTP (list) - HTTP接入HTTP回源转发,接入端口。禁用65123端口

  • +
  • HTTPHTTPRS (list) - HTTP接入HTTP回源转发,源站监听端口

  • +
  • HTTPSHTTP (list) - HTTPS接入HTTP回源转发,接入端口。禁用65123端口

  • +
  • HTTPSHTTPRS (list) - HTTPS接入HTTP回源转发,回源端口

  • +
  • HTTPSHTTPS (list) - HTTPS接入HTTPS回源转发,接入端口。禁用65123端口

  • +
  • HTTPSHTTPSRS (list) - HTTPS接入HTTPS回源转发,源站监听端口

  • +
  • TCP (list) - TCP接入端口,禁用65123端口

  • +
  • TCPRS (list) - TCP回源端口

  • +
  • UDP (list) - UDP接入端口,禁用65123端口

  • +
  • UDPRS (list) - UDP回源端口

  • +
  • WSSWS (list) - WebSocketS接入WebSocket回源转发,接入端口。禁用65123。

  • +
  • WSSWSRS (list) - WebSocketS接入WebSocket回源转发,源站监听端口。

  • +
  • WSSWSS (list) - WebSocketS接入WebSocketS回源转发,接入端口。禁用65123。

  • +
  • WSSWSSRS (list) - WebSocketS接入WebSocketS回源转发,源站监听端口。

  • +
  • WSWS (list) - WebSocket接入WebSocket回源转发,接入端口。禁用65123。

  • +
  • WSWSRS (list) - WebSocket接入WebSocket回源转发,源站监听端口

  • +
+

Response

+
+ +
+
+create_uga_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUGAInstance - 创建全球加速配置项

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • Name (str) - (Required) 加速配置实例名称

  • +
  • Domain (str) - 加速源域名,IPList和Domain二选一必填

  • +
  • IPList (str) - 加速源IP,多个IP用英文半角逗号(,)隔开;IPList和Domain二选一必填

  • +
  • TCP (list) - TCP端口号,已废弃。请使用 CreateUGAForwarder API 创建端口

  • +
  • UDP (list) - UDP端口号,已废弃。请使用 CreateUGAForwarder API 创建端口

  • +
+

Response

+
    +
  • CName (str) - 加速域名 用户可把业务域名CName到此域名上。注意:未绑定线路情况时 加速域名解析不出IP。

  • +
  • Message (str) - 返回信息

  • +
  • UGAId (str) - 加速配置ID

  • +
+
+ +
+
+create_upath(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUPath - 创建UPath

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • Bandwidth (int) - (Required) 线路带宽,最小1Mbps,最大带宽由 DescribePathXLineConfig 接口获得。如需更大带宽,请联系产品团队。

  • +
  • LineId (str) - (Required) 选择的线路

  • +
  • Name (str) - (Required) UPath名字

  • +
  • ChargeType (str) - 计费模式,默认为Month 按月收费,可选范围[‘Month’,’Year’,’Dynamic’]

  • +
  • CouponId (str) - 代金券Id

  • +
  • PostPaid (bool) - 是否开启后付费, 默认为false

  • +
  • Quantity (int) - 购买周期,ChargeType为Month时,Quantity默认为0代表购买到月底,按时和按年付费该参数必须大于0

  • +
+

Response

+
    +
  • UPathId (str) - 加速线路实例Id

  • +
+
+ +
+
+delete_global_ssh_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteGlobalSSHInstance - 删除GlobalSSH实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例Id,资源的唯一标识

  • +
+

Response

+
    +
  • Message (str) - 提示信息

  • +
+
+ +
+
+delete_path_xssl(req: Optional[dict] = None, **kwargs) dict[source]
+

DeletePathXSSL - 删除PathX SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • SSLId (str) - (Required) SSL证书的ID

  • +
+

Response

+
+ +
+
+delete_uga_forwarder(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUGAForwarder - 删除加速实例转发器 按接入端口删除

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。 请参考 GetProjectList接口

  • +
  • UGAId (str) - (Required) 加速配置实例ID

  • +
  • HTTPHTTP (list) - HTTP接入HTTP回源,接入端口。禁用65123端口

  • +
  • HTTPSHTTP (list) - HTTPS接入HTTP回源, 接入端口。禁用65123端口

  • +
  • HTTPSHTTPS (list) - HTTPS接入HTTPS回源, 接入端口。禁用65123端口

  • +
  • TCP (list) - TCP接入端口

  • +
  • UDP (list) - UDP接入端口

  • +
  • WSSWS (list) - WebSocketS接入WebSocket回源, 接入端口。禁用65123端口。

  • +
  • WSSWSS (list) - WebSocketS接入WebSocketS回源, 接入端口。禁用65123端口

  • +
  • WSWS (list) - WebSocket接入WebSocket回源, 接入端口。禁用65123端口

  • +
+

Response

+
+ +
+
+delete_uga_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUGAInstance - 删除全球加速服务加速配置

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • UGAId (str) - (Required) 加速配置实例ID

  • +
+

Response

+
    +
  • Message (str) - 消息提示

  • +
+
+ +
+
+delete_upath(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUPath - 删除UPath

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UPathId (str) - (Required) 加速线路实例ID

  • +
+

Response

+
+ +
+
+describe_global_ssh_area(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeGlobalSSHArea -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • Region (str) - (Config)

  • +
+

Response

+
    +
  • AreaSet (list) - 见 GlobalSSHArea 模型定义

  • +
  • Message (str) -

  • +
+

Response Model

+

GlobalSSHArea +- Area (str) - +- AreaCode (str) - +- RegionSet (list) -

+
+ +
+
+describe_global_ssh_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeGlobalSSHInstance - 获取GlobalSSH实例列表(传实例ID获取单个实例信息,不传获取项目下全部实例)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - 实例ID,资源唯一标识

  • +
+

Response

+
    +
  • InstanceSet (list) - 见 GlobalSSHInfo 模型定义

  • +
+

Response Model

+

GlobalSSHInfo +- AcceleratingDomain (str) - GlobalSSH分配的加速域名。 +- Area (str) - 被SSH访问的IP所在地区 +- BandwidthPackage (int) - globalssh Ultimate带宽包大小 +- ChargeType (str) - 支付周期,如Month,Year,Dynamic等 +- CreateTime (int) - 资源创建时间戳 +- Expire (bool) - 是否过期 +- ExpireTime (int) - 资源过期时间戳 +- ForwardRegion (str) - InstanceType为Basic版本时,需要展示具体分配的转发机房 +- GlobalSSHPort (int) - InstanceType等于Free时,由系统自动分配,不等于源站Port值。InstanceType不等于Free时,与源站Port值相同。 +- InstanceId (str) - 实例ID,资源唯一标识 +- InstanceType (str) - 枚举值:[“Enterprise”,”Basic”,”Free”,”Welfare”], 分别代表企业版,基础版本,免费版本,较早的公测免费版 +- Port (int) - 源站服务器监听的SSH端口,windows系统为RDP端口 +- Remark (str) - 备注信息 +- TargetIP (str) - 被SSH访问的源站 IPv4地址。

+
+ +
+
+describe_path_x_line_config(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePathXLineConfig - 获取全球加速线路信息

+

Request

+ +

Response

+
    +
  • LineSet (list) - 见 UGAALine 模型定义

  • +
+

Response Model

+

UGAALine +- LineDetail (list) - 见 LineDetail 模型定义 +- LineFrom (str) - 线路源 +- LineFromName (str) - 线路源中文名称 +- LineId (str) - 线路计费Id +- LineTo (str) - 线路目的 +- LineToName (str) - 线路目的中文名称 +- MaxBandwidth (int) - 线路可售最大带宽

+

LineDetail +- LineFrom (str) - 线路源 +- LineFromName (str) - 线路源中文名称 +- LineId (str) - 线路计费Id +- LineTo (str) - 线路目的 +- LineToName (str) - 线路目的中文名称

+
+ +
+
+describe_path_xssl(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePathXSSL - 获取SSL证书信息,支持分页,支持按证书名称 证书域名模糊搜索

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • Limit (int) - 最大返回条数,默认100,最大400

  • +
  • Offset (int) - 偏移值 默认为0

  • +
  • SSLId (str) - SSL证书的Id,不传分页获取证书列表

  • +
  • SearchValue (str) - 不为空则按证书名称、证书域名模糊搜索 分页返回结果

  • +
+

Response

+
    +
  • DataSet (list) - 见 PathXSSLSet 模型定义

  • +
  • TotalCount (int) - 符合条件的证书总数

  • +
+

Response Model

+

PathXSSLSet +- CreateTime (int) - SSL证书的创建时间 时间戳 +- ExpireTime (int) - 证书过期时间 时间戳 +- SSLBindedTargetSet (list) - 见 SSLBindedTargetSet 模型定义 +- SSLContent (str) - SSL证书内容 +- SSLId (str) - SSL证书的Id +- SSLMD5 (str) - SSL证书(用户证书、私钥、ca证书合并)内容md5值 +- SSLName (str) - SSL证书的名字 +- SourceType (int) - 证书来源,0:用户上传 1: 免费颁发 +- SubjectName (str) - 证书域名

+

SSLBindedTargetSet +- ResourceId (str) - SSL证书绑定到的实例ID +- ResourceName (str) - SSL证书绑定到的实例名称

+
+ +
+
+describe_uga_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUGAInstance - 获取全球加速服务加速配置信息,指定实例ID返回单个实例。未指定实例ID时 指定分页参数 则按创建时间降序 返回记录

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • Limit (int) - 返回的最大条数,默认为100,最大值400

  • +
  • Offset (int) - 偏移量,默认为0

  • +
  • UGAId (str) - 加速配置实例ID,如果传了实例ID 则返回匹配实例ID的记录;如果没传则返回 ProjectId 下全部实例且符合分页要求

  • +
+

Response

+
    +
  • TotalCount (int) - 符合条件的总数

  • +
  • UGAList (list) - 见 UGAAInfo 模型定义

  • +
+

Response Model

+

UGAAInfo +- CName (str) - 加速域名,请在加速区域配置您的业务域名的CName记录值为加速域名 +- Domain (str) - 源站域名 +- IPList (list) - 源站IP列表,多个值由半角英文逗号相隔 +- L4ForwarderSet (list) - 见 UGAL4Forwarder 模型定义 +- L7ForwarderSet (list) - 见 UGAL7Forwarder 模型定义 +- Location (str) - 源站所在区域,加速实例在绑定线路后会自动设置该值。console页面上通过该值过滤加速实例可以绑定的upath实例。注意:缺少该值会导致在console上无法修改线路 +- OutPublicIpList (list) - 见 OutPublicIpInfo 模型定义 +- TaskSet (list) - 见 UGAATask 模型定义 +- UGAId (str) - 加速配置实例ID +- UGAName (str) - 加速配置名称 +- UPathSet (list) - 见 UPathSet 模型定义

+

UGAL4Forwarder +- Port (int) - 接入端口 +- Protocol (str) - 转发协议,枚举值[“TCP”,”UDP”,”HTTPHTTP”,”HTTPSHTTP”,”HTTPSHTTPS”]。TCP和UDP代表四层转发,其余为七层转发 +- RSPort (int) - RSPort,源站监听端口

+

UGAL7Forwarder +- Port (int) - 接入端口 +- Protocol (str) - 转发协议,枚举值[“TCP”,”UDP”,”HTTPHTTP”,”HTTPSHTTP”,”HTTPSHTTPS”]。TCP和UDP代表四层转发,其余为七层转发 +- RSPort (int) - RSPort,源站监听端口 +- SSLId (str) - 证书ID +- SSLName (str) - 证书名称

+

OutPublicIpInfo +- Area (str) - 线路出口机房代号 +- IP (str) - 线路出口EIP

+

UGAATask +- Port (int) - 接入端口 +- Protocol (str) - 转发协议,枚举值[“TCP”,”UDP”,”HTTPHTTP”,”HTTPSHTTP”,”HTTPSHTTPS”]。TCP和UDP代表四层转发,其余为七层转发

+

UPathSet +- Bandwidth (int) - 带宽 Mbps, 1~800Mbps +- LineFrom (str) - 线路起点英文代号,加速区域 +- LineFromName (str) - 线路起点中文名字,加速区域 +- LineId (str) - 线路ID +- LineTo (str) - 线路对端英文代号,源站区域 +- LineToName (str) - 线路对端中文名字,源站区域 +- UPathId (str) - UPath 实例ID +- UPathName (str) - UPath名字

+
+ +
+
+describe_upath(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUPath - 获取加速线路信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UPathId (str) - 如果不填参数 返回 ProjectId 下所有的线路资源,填此参数则返回upath实例ID匹配的线路

  • +
+

Response

+
    +
  • UPathSet (list) - 见 UPathInfo 模型定义

  • +
+

Response Model

+

UPathInfo +- Bandwidth (int) - 带宽,单位Mbps +- ChargeType (str) - 计费模式,默认为Month 按月收费,可选范围[‘Month’,’Year’,’Dynamic’] +- CreateTime (int) - UPath创建的时间,10位时间戳 +- ExpireTime (int) - UPath的过期时间,10位时间戳 +- LineFromName (str) - 线路入口名称 +- LineId (str) - 选择的线路 +- LineToName (str) - 线路出口名称 +- Name (str) - UPath实例名字 +- OutPublicIpList (list) - 见 OutPublicIpInfo 模型定义 +- PostPaid (bool) - 是否为后付费实例 +- UGAList (list) - 见 PathXUGAInfo 模型定义 +- UPathId (str) - UPath加速线路实例ID

+

OutPublicIpInfo +- Area (str) - 线路出口机房代号 +- IP (str) - 线路出口EIP

+

PathXUGAInfo +- Domain (str) - 源站域名 +- IPList (list) - 源站IP列表,多个值由半角英文逗号相隔 +- UGAId (str) - 加速配置ID

+
+ +
+
+describe_upath_template(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUPathTemplate - 查询UPath的监控模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UPathId (str) - (Required) 加速线路实例ID,格式 upath-xxxx

  • +
+

Response

+
    +
  • DataSet (list) - 见 AlarmRuler 模型定义

  • +
+

Response Model

+

AlarmRuler +- AlarmFrequency (int) - 告警探测周期,单位秒 +- AlarmStrategy (str) - 收敛策略,可选范围 [‘Exponential’,’Continuous’,’Once’],分别对应指数递增、连续告警、单次告警 +- AlarmTemplateRuleId (int) - 告警模板策略ID +- Compare (str) - 比较策略,可选 [‘GE’,’LE’] 分别代表不小于和不大于 +- ContactGroupId (int) - 联系组ID +- MetricName (str) - 告警指标名称, 所有n的个数必须一致。目前仅允许以下四项:UpathNetworkOut:出向带宽,UpathNetworkIn:入向带宽,UpathNetworkOutUsage:出向带宽使用率,UpathNetworkInUsage:入向带宽使用率 +- ResourceType (str) - 资源类型 +- Threshold (int) - 告警阈值,带宽使用率的阈值范围是[50,100]的正整数,带宽告警阈值为1000000的倍数, 如大于2Mbps则告警 阈值应该传 2000000 +- TriggerCount (int) - 告警触发周期(次数)

+
+ +
+
+get_global_ssh_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetGlobalSSHPrice - 获取GlobalSSH价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • ChargeType (str) - 计费类型:Dynamic,Month,Year

  • +
  • InstanceType (str) - 版本类型。枚举值,Enterprise:企业版;Basic:基础版。可不填,默认为Basic。

  • +
  • Quantity (int) - 购买周期,如果ChargeType为Month,Quantity默认为0;其他情况必须为大于0的整数

  • +
+

Response

+
    +
  • Price (float) - 价格,返回单位为元

  • +
+
+ +
+
+get_global_ssh_update_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetGlobalSSHUpdatePrice - 获取GlobalSSH升级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceType (str) - (Required) 升级后的实例类型。枚举值,Enterprise:企业版;Basic:基础版。

  • +
  • ChargeType (str) - 计费类型:Dynamic,Month,Year。从免费版升级到付费版必须传,其他情况不需要传

  • +
  • InstanceId (str) - 实例ID,唯一资源标识。从免费版升级到付费版可不填,其他情况必填。

  • +
  • Quantity (int) - 购买周期,如果ChargeType为Month,Quantity可以不填默认为0;其他情况必须为正整数。

  • +
+

Response

+
    +
  • Price (float) - 价格,返回单位为元。正数表示付费升级,负数表示降级退费。

  • +
+
+ +
+
+get_path_x_metric(req: Optional[dict] = None, **kwargs) dict[source]
+

GetPathXMetric - 获取全球加速监控信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询起始时间,10位长度时间戳

  • +
  • EndTime (int) - (Required) 查询结束时间,10位长度时间戳

  • +
  • LineId (str) - (Required) 具体线路id,调用DescribePathXLineConfig接口获取线路列表

  • +
  • MetricName (list) - (Required) 查询监控的指标项。目前仅允许以下四项:NetworkOut:出向带宽,NetworkIn:入向带宽,NetworkOutUsage:出向带宽使用率,NetworkInUsage:入向带宽使用率

  • +
  • ResourceId (str) - (Required) ResourceId,如upath ID 和 uga ID

  • +
  • ResourceType (str) - (Required) upath:加速线路,uga:加速实例

  • +
+

Response

+
    +
  • DataSet (dict) - 见 MetricPeriod 模型定义

  • +
+

Response Model

+

MetricPeriod +- NetworkIn (list) - 见 MatricPoint 模型定义 +- NetworkInUsage (list) - 见 MatricPoint 模型定义 +- NetworkOut (list) - 见 MatricPoint 模型定义 +- NetworkOutUsage (list) - 见 MatricPoint 模型定义

+

MatricPoint +- Timestamp (int) - 时间戳 +- Value (int) - 监控点数值

+
+ +
+
+modify_global_ssh_port(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyGlobalSSHPort - 修改GlobalSSH端口

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例ID,资源唯一标识。当前仅收费版GlobalSSH实例可以修改端口。

  • +
  • Port (int) - (Required) 源站服务器监听的SSH端口号。收费版本端口范围[1,65535]且不能为80,443,65123端口。免费版不支持修改端口。

  • +
+

Response

+
    +
  • Message (str) - 提示信息

  • +
+
+ +
+
+modify_global_ssh_remark(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyGlobalSSHRemark -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • InstanceId (str) - (Required)

  • +
  • Remark (str) -

  • +
+

Response

+
    +
  • Message (str) -

  • +
+
+ +
+
+modify_global_ssh_type(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyGlobalSSHType - 修改GlobalSSH实例类型,仅支持低版本升级到高版本,不支持高版本降级到低版本

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) 实例ID,资源唯一标识

  • +
  • InstanceType (str) - (Required) 取值范围[“Enterprise”,”Basic”],分别对应企业版和基础版,表示升级后的实例类型。比如从Free版本升级为Basic版或Enterprise版,不可从收费版降级为免费版,或从企业版降级为基础版

  • +
  • ChargeType (str) - 支付方式,如按月、按年、按时

  • +
  • CouponId (str) - 可抵扣费用的券,通常不使用

  • +
  • Quantity (str) - 购买时间,当ChargeType为Month,Quantity为0代表购买到月底

  • +
+

Response

+
    +
  • Message (str) - 提示信息

  • +
+
+ +
+
+modify_upath_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUPathBandwidth - 修改加速线路带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Bandwidth (int) - (Required) 线路带宽,单位Mbps。最小1Mbps,最大带宽由 DescribePathXLineConfig 接口获得。如需更大带宽,请联系产品团队。

  • +
  • UPathId (str) - (Required) UPath 加速线路实例Id

  • +
+

Response

+
+ +
+
+modify_upath_template(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUPathTemplate - 修改UPath监控告警项

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UPathId (str) - (Required) 加速线路实例ID

  • +
  • AlarmFrequency (list) - 告警探测周期,单位:秒

  • +
  • AlarmStrategy (list) - 收敛策略,可选范围 [‘Exponential’,’Continuous’,’Once’],分别对应指数递增、连续告警、单次告警

  • +
  • Compare (list) - 比较策略,可选 [‘GE’,’LE’] 分别代表不小于和不大于

  • +
  • ContactGroupId (list) - 告警组id

  • +
  • MetricName (list) - 告警指标名称, 所有n的个数必须一致。目前仅允许以下四项:UpathNetworkOut:出向带宽,UpathNetworkIn:入向带宽,UpathNetworkOutUsage:出向带宽使用率,UpathNetworkInUsage:入向带宽使用率

  • +
  • Threshold (list) - 告警阈值,带宽使用率的阈值范围是[50,100]的正整数,带宽告警阈值为1000000的倍数, 如大于2Mbps则告警 阈值应该传 2000000

  • +
  • TriggerCount (list) - 告警触发周期(次数)

  • +
+

Response

+
+ +
+
+uga_bind_upath(req: Optional[dict] = None, **kwargs) dict[source]
+

UGABindUPath - UGA绑定UPath

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UGAId (str) - (Required) 加速配置实例ID,格式uga-xxxx

  • +
  • UPathId (str) - (Required) 加速线路实例ID,格式upath-xxx

  • +
  • CouponId (str) - 代金券

  • +
+

Response

+
+ +
+
+uga_un_bind_upath(req: Optional[dict] = None, **kwargs) dict[source]
+

UGAUnBindUPath - UGA与UPath解绑

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。请参考 GetProjectList接口

  • +
  • UGAId (str) - (Required) 加速配置实例ID 格式uga-xxx

  • +
  • UPathId (str) - (Required) 加速线路实例ID 格式upath-xxx

  • +
+

Response

+
+ +
+
+un_bind_path_xssl(req: Optional[dict] = None, **kwargs) dict[source]
+

UnBindPathXSSL - 解绑PathX SSL 证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。 请参考 GetProjectList接口

  • +
  • Port (list) - (Required) 解绑SSL证书的HTTPS端口。Port.0 Port.1格式 端口错误则解绑失败。

  • +
  • SSLId (str) - (Required) SSL证书ID。

  • +
  • UGAId (str) - (Required) UGA实例ID。

  • +
+

Response

+
+ +
+
+update_path_x_whitelist(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdatePathXWhitelist - 更新入口白名单,仅限GlobalSSH 实例使用。其他uga-实例不生效

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,如org-xxxx。请参考 GetProjectList接口

  • +
  • InstanceId (str) - (Required) GlobalSSH实例ID,资源唯一标识

  • +
  • Whitelist (list) - 白名单规则,例如 “Whitelist.0”: “192.168.1.1/24|tcp|22”,”Whitelist.1”: “192.168.1.2|tcp|8080:8090”,第一个参数为ip或ip段,第二个参数代表协议(tcp/udp),第三个参数代表端口号或端口范围(使用 ‘:’ 隔开);可以添加多条规则(递增Whitelist.n字段内的n值);此接口需要列出全部规则,例如不填则为清空白名单规则,如若需要增量添加,使用InsertPathXWhitelist接口,globalssh 没有端口范围:端口设置成加速端口,协议设置成tcp:ip|tcp|加速端口

  • +
+

Response

+
+ +
+ +
+
+

StepFlow

+
+
+class ucloud.services.stepflow.client.StepFlowClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_sf_workflow_from_template(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateSFWorkflowFromTemplate - 导入工作流定义

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Namespace (str) - (Required) 需要创建的工作流namespace

  • +
  • Workflow (str) - (Required) 描述工作流定义的base64字符串

  • +
  • WorkflowName (str) - (Required) 需要创建的工作流名称

  • +
+

Response

+
    +
  • Message (str) - 返回消息

  • +
  • Version (int) - 创建的工作流版本号

  • +
+
+ +
+
+get_sf_workflow_template(req: Optional[dict] = None, **kwargs) dict[source]
+

GetSFWorkflowTemplate - 导出工作流定义

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • WorkflowId (str) - (Required) 被导出工作流的Id

  • +
  • WorkflowVersion (int) - 被导出工作流的版本号。取值范围:WorkflowVersion >= 1;默认会获取发布版本对应的workflow;超过最大版本会返回错误

  • +
+

Response

+
    +
  • Message (str) - 返回消息

  • +
  • Version (int) - 导出工作流的版本号

  • +
  • Workflow (dict) - 见 WorkflowTemplate 模型定义

  • +
  • WorkflowId (str) - 导出工作流的Id

  • +
+

Response Model

+

Param

+
    +
  • Name (str) - 参数名称

  • +
  • Type (str) - 参数类型

  • +
  • Value (str) - 参数值

  • +
+

ActivityTemplate

+
    +
  • Input (dict) - Activity的输入

  • +
  • Name (str) - Activity的名字

  • +
  • Next (str) - 下一个Activity的名字

  • +
  • Output (list) - Activity的输出,详见Param

  • +
  • RetryTimes (str) - Activity的重试次数

  • +
  • Timeout (str) - Activity的超时时间

  • +
  • Type (str) - Activity的类型

  • +
+

WorkflowTemplate

+
    +
  • Activites (list) - 见 ActivityTemplate 模型定义

  • +
  • Input (list) - 见 Param 模型定义

  • +
  • Output (list) - 见 Param 模型定义

  • +
+
+ +
+ +
+
+

UAccount

+
+
+class ucloud.services.uaccount.client.UAccountClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_member_to_project(req: Optional[dict] = None, **kwargs) dict[source]
+

AddMemberToProject - 添加成员到项目

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,请参考 GetProjectList接口 的描述。不填写为创建时间最早的项目。

  • +
  • CharacterId (str) - (Required) 被加入成员归属角色ID

  • +
  • MemberEmail (str) - (Required) 被加入成员Email

  • +
+

Response

+
+ +
+
+create_character(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateCharacter - 创建角色

+

Request

+
    +
  • CharacterName (str) - (Required) 角色名称,不得与现有角色重名

  • +
  • Add (list) - 角色对产品的权限(增)

  • +
  • CharacterDescription (str) - 角色描述

  • +
  • Del (list) - 角色对产品的权限(删)

  • +
  • Get (list) - 角色对产品的权限(查)

  • +
  • Mod (list) - 角色对产品的权限(改)

  • +
+

Response

+
    +
  • CharacterId (str) - 角色ID

  • +
+
+ +
+
+create_project(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateProject - 创建项目

+

Request

+
    +
  • ProjectName (str) - (Required) 项目名称,不得与现有项目重名

  • +
+

Response

+
    +
  • ProjectId (str) - 所创建项目的Id

  • +
+
+ +
+
+describe_character_list(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeCharacterList - 获取角色列表

+

Request

+
    +
  • Limit (int) - 角色列表的最大数量,默认为20

  • +
  • Offset (int) - 角色列表的偏移量,默认为0

  • +
+

Response

+
    +
  • CharacterSet (list) - 见 CharacterSet 模型定义

  • +
  • TotalCount (int) - 角色总数

  • +
+

Response Model

+

PermissionSet +- Add (list) - 有增权限的产品列表 +- Del (list) - 有删权限的产品列表 +- Get (list) - 有查权限的产品列表 +- Mod (list) - 有改权限的产品列表

+

CharacterSet +- CharacterDescription (str) - 角色描述 +- CharacterId (str) - 角色ID +- CharacterName (str) - 角色名 +- Modifiable (bool) - 可修改性 +- PermissionSet (list) - 见 PermissionSet 模型定义

+
+ +
+
+describe_member_list(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeMemberList - 获取成员列表,限主账号使用。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,请参考 GetProjectList接口 。不填写为查询所有项目。

  • +
  • Limit (str) - 成员列表的最大数量,默认为200

  • +
  • Offset (str) - 成员列表的偏移量,默认为0

  • +
+

Response

+
    +
  • MemberSet (list) - 见 MemberInfo 模型定义

  • +
  • TotalCount (int) - 成员总数

  • +
+

Response Model

+

ProjectInfo +- CharacterId (str) - 角色ID +- ProjectId (str) - 项目ID,请参考 GetProjectList接口 +- ProjectName (str) - 项目名

+

MemberInfo +- ActivateFlag (int) - 激活状态(0:未激活,1:已激活) +- Created (int) - 创建时间 +- DefultProjectId (str) - 默认项目 +- IsAdmin (int) - 是否主账号(0:子账号,1:主账号) +- IsFinance (int) - 是否有财务权限(0:无财务权限,1:有财务权限) +- LastLogin (int) - 最后一次登录时间 +- LastRegionId (str) - 最后访问的机房 +- MemberEmail (str) - 成员邮箱 +- MemberName (str) - 成员名字 +- MemberPhone (str) - 成员手机 +- MemberPosition (str) - 成员地址 +- MemberQQ (str) - 成员QQ +- PasswordPolicyDate (int) - 密码安全策略开启时间,格式:unix timestamp +- ProjectSet (list) - 见 ProjectInfo 模型定义 +- PublicKey (str) - 公钥 +- State (str) - 状态 +- TOTPStatus (int) - TOTP状态(0:未开启,1:已开启)

+
+ +
+
+freeze_member(req: Optional[dict] = None, **kwargs) dict[source]
+

FreezeMember - 冻结成员

+

Request

+
    +
  • MemberEmail (str) - (Required) 需要被冻结的成员Email

  • +
+

Response

+
+ +
+
+get_network_mask(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNetworkMask - 查询登录与API调用的网络掩码

+

Request

+

Response

+
    +
  • Data (dict) - 见 NetworkMask 模型定义

  • +
  • Message (str) - 接口信息,成功时为`success`,错误时显示具体错误信息。

  • +
+

Response Model

+

NetworkMask +- APINetworkMask (str) - API调用网络掩码,默认空字符串,不限制登录IP,多个IP以英文逗号分隔。 +- LoginNetworkMask (str) - 登录网络掩码,默认空字符串,不限制登录IP,多个IP以英文逗号分隔。

+
+ +
+
+get_project_list(req: Optional[dict] = None, **kwargs) dict[source]
+

GetProjectList - 获取项目列表

+

Request

+
    +
  • IsFinance (str) - 是否是财务账号(Yes:是,No:否)

  • +
+

Response

+
    +
  • ProjectCount (int) - 项目总数

  • +
  • ProjectSet (list) - 见 ProjectListInfo 模型定义

  • +
+

Response Model

+

ProjectListInfo +- CreateTime (int) - 创建时间(Unix时间戳) +- IsDefault (bool) - 是否为默认项目 +- MemberCount (int) - 项目下成员数量 +- ParentId (str) - 父项目ID(已废弃) +- ParentName (str) - 父项目名称(已废弃) +- ProjectId (str) - 项目ID +- ProjectName (str) - 项目名称 +- ResourceCount (int) - 项目下资源数量(已废弃,不建议使用)

+
+ +
+
+get_region(req: Optional[dict] = None, **kwargs) dict[source]
+

GetRegion - 获取用户在各数据中心的权限等信息

+

Request

+

Response

+
    +
  • Regions (list) - 见 RegionInfo 模型定义

  • +
+

Response Model

+

RegionInfo +- BitMaps (str) - 用户在此数据中心的权限位 +- IsDefault (bool) - 是否用户当前默认数据中心 +- Region (str) - 地域名字,如cn-bj +- RegionId (int) - 数据中心ID +- RegionName (str) - 数据中心名称 +- Zone (str) - 可用区名字,如cn-bj-01

+
+ +
+
+get_user_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUserInfo -

+

Request

+

Response

+
    +
  • DataSet (list) - 见 UserInfo 模型定义

  • +
+

Response Model

+

UserInfo +- Admin (int) - +- Administrator (str) - +- AuthState (str) - +- City (str) - +- CompanyName (str) - +- Finance (int) - +- IndustryType (int) - +- PhonePrefix (str) - +- Province (str) - +- UserAddress (str) - +- UserEmail (str) - +- UserId (int) - +- UserName (str) - +- UserPhone (str) - +- UserType (int) - +- UserVersion (int) -

+
+ +
+
+invite_subaccount(req: Optional[dict] = None, **kwargs) dict[source]
+

InviteSubaccount - 邀请子帐号成员

+

Request

+
    +
  • IsFinance (str) - (Required) 是否有财务权限(true:是,false:否,默认为否)

  • +
  • UserEmail (str) - (Required) 受邀成员邮箱地址,不得重复

  • +
  • UserName (str) - (Required) 受邀成员姓名

  • +
  • UserPhone (str) - (Required) 受邀成员手机号码

  • +
+

Response

+
+ +
+
+modify_character(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyCharacter - 修改角色

+

Request

+
    +
  • CharacterId (str) - (Required) 角色ID

  • +
  • Add (list) - 角色权限(增)

  • +
  • CharacterDescription (str) - 角色描述

  • +
  • CharacterName (str) - 新角色名称

  • +
  • Del (list) - 角色权限(删)

  • +
  • Get (list) - 角色权限(查)

  • +
  • Mod (list) - 角色权限(改)

  • +
+

Response

+
+ +
+
+modify_project(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyProject -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • ProjectName (str) - (Required)

  • +
+

Response

+
+ +
+
+remove_member_from_project(req: Optional[dict] = None, **kwargs) dict[source]
+

RemoveMemberFromProject - 从项目中移除成员

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,请参考 GetProjectList接口 的描述。不填写为默认项目,子帐号必须填写。

  • +
  • MemberEmail (str) - (Required) 需要被移除成员Email

  • +
+

Response

+
+ +
+
+set_network_mask(req: Optional[dict] = None, **kwargs) dict[source]
+

SetNetworkMask - 设置登录与API调用的网络掩码

+

Request

+
    +
  • Code (str) - (Required) 短信验证码

  • +
  • APINetworkMask (str) - API调用网络掩码,多个IP以英文逗号分隔。默认空字符串,不限制登录IP。

  • +
  • LoginNetworkMask (str) - 登录网络掩码,多个IP以英文逗号分隔。默认空字符串,不限制登录IP。

  • +
+

Response

+
    +
  • Message (str) - 接口信息,成功时为`success`,错误时显示具体错误信息。

  • +
+
+ +
+
+terminate_character(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminateCharacter - 删除用户角色管理列表中的指定角色

+

Request

+ +

Response

+
+ +
+
+terminate_member(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminateMember - 删除管理员人员管理页面的指定子账号

+

Request

+
    +
  • MemberEmail (str) - (Required) 用户邮箱

  • +
+

Response

+
+ +
+
+terminate_project(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminateProject - 删除项目

+

Request

+ +

Response

+
+ +
+ +
+
+

UCDN

+
+
+class ucloud.services.ucdn.client.UCDNClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_certificate(req: Optional[dict] = None, **kwargs) dict[source]
+

AddCertificate - 添加证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CertName (str) - (Required) 证书名称

  • +
  • PrivateKey (str) - (Required) 用户私钥

  • +
  • UserCert (str) - (Required) 用户证书

  • +
  • CaCert (str) - Ca证书,默认为空

  • +
+

Response

+
+ +
+
+batch_describe_new_ucdn_domain(req: Optional[dict] = None, **kwargs) dict[source]
+

BatchDescribeNewUcdnDomain - 批量获取加速域名配置

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ChannelType (str) - 渠道ucdn、ufile、uvideo

  • +
  • DomainId (list) - 域名id,创建域名时生成的资源id,默认获取账号下的所有域名信息,n为自然数

  • +
  • Limit (int) - 返回数据长度,如果制定了Offset,则默认20,否则默认全部,非负整数

  • +
  • Offset (int) - 数据偏移量,默认0,非负整数

  • +
+

Response

+
    +
  • Arrearage (list) - 标识欠费的数组,数组含有下列元素值, 1=国内流量有欠费 2=国外流量有欠费 3=国内带宽有欠费 4=国外带宽有欠费

  • +
  • ChargeType (int) - 当前计费方式,10-流量付费 20-带宽日峰值 30-月95计费,31-月日均峰值, 32-月第四峰值 33-日均峰值之和 34- 日95再取平均 40-未选择计费方式

  • +
  • DomainSet (list) - 见 DomainInfo 模型定义

  • +
  • LastChargeType (int) - 表示最后一次切换的计费方式,10=流量付费 20=带宽日峰值 30=按月后付费 40=未选择计费方式

  • +
  • MaxDomainNum (int) - 最大域名数量,默认20

  • +
  • TotalCount (int) - 满足条件的域名个数

  • +
  • Vip (str) - vip标示,yes-是 no-否

  • +
+

Response Model

+

DomainInfo +- AccessConf (dict) - 见 AccessConf 模型定义 +- AreaCode (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域 +- CacheConf (list) - 见 CacheConf 模型定义 +- CacheHost (str) - 缓存Host,不同的域名可以配置为同一个CacheHost来实现缓存共享,默认为加速域名 +- CdnProtocol (str) - 加速类型http,http|https +- CdnType (str) - 加速域名的业务类型,web代表网站,stream代表视频,download代表下载。 +- CertName (str) - 证书名称 +- Cname (str) - cdn域名。创建加速域名生成的cdn域名,用于设置CNAME记录 +- CreateTime (int) - 域名创建的时间。格式:时间戳 +- Domain (str) - 域名,用户创建加速的域名 +- DomainId (str) - 域名id,创建域名时生成的id +- HttpsStatusAbroad (str) - 国外https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 +- HttpsStatusCn (str) - 国内https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 +- NullRefer (bool) - ReferType为白名单时,NullRefer为false代表不允许NULL refer访问,为true代表允许Null refer访问 +- OriginHost (str) - 回源Http请求头部Host,默认是加速域名 +- OriginIp (list) - 源站ip即cdn服务器回源访问的ip地址。支持多个源站ip,多个源站ip,可表述为如:[1.1.1.1,2.2.2.2] +- OriginPort (int) - 回源端口 +- OriginProtocol (str) - 源站协议http,http|https 默认http +- ReferList (list) - Refer列表,支持正则表达式 +- ReferStatus (bool) - refer配置开关,true打开,false关闭 +- ReferType (int) - 0白名单,1黑名单 +- Status (str) - 创建的加速域名的当前的状态。check代表审核中,checkSuccess代表审核通过,checkFail代表审核失败,enable代表加速中,disable代表停止加速,delete代表删除加速 enableing代表正在开启加速,disableing代表正在停止加速中,deleteing代表删除中 +- Tag (str) - 业务组,默认为Default +- TestUrl (str) - 测试url,用于域名创建加速时的测试 +- ValidTime (int) - 开始分配Cname时间。格式:时间戳

+

AccessConf +- IpBlacklist (str) - 多个ip用逗号隔开

+

CacheConf +- CacheBehavior (bool) - 是否缓存,true为缓存,flase为不缓存。为flase的情况下,CacheTTL和CacheUnit强制不生效 +- CacheTTL (int) - 缓存时间 +- CacheUnit (str) - 缓存时间的单位。sec(秒),min(分钟),hour(小时),day(天)。上限1年。 +- Description (str) - 缓存规则描述 +- FollowOriginRule (bool) - 是否优先遵循源站头部缓存策略,false为不优先遵循源站,true为优先遵循源站缓存头部。默认为0 +- HttpCodePattern (str) - 状态码模式,非200,206状态码,多个状态码用竖线(|)分隔,该属性仅仅在状态码缓存配置列表中返回 +- PathPattern (str) - 路径模式,支持正则

+
+ +
+
+batch_refresh_new_ucdn_domain_cache(req: Optional[dict] = None, **kwargs) dict[source]
+

BatchRefreshNewUcdnDomainCache - 批量刷新缓存

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (str) - (Required) 刷新类型,file代表文件刷新,dir 代表路径刷新

  • +
  • UrlList (str) - (Required) 待刷新URL列表,以JSON格式描述。刷新多个URL列表时,一次最多提交1000个。每个域名必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面所有img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名

  • +
+

Response

+
    +
  • TaskId (str) - 本次提交url对应的任务id

  • +
+
+ +
+
+control_ucdn_domain_cache_access(req: Optional[dict] = None, **kwargs) dict[source]
+

ControlUcdnDomainCacheAccess - 封禁解封缓存访问

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (str) - (Required) forbid=封禁 unforbid=解封 其他值非法

  • +
  • UrlList (list) - (Required) 待封禁的Url,一次封禁多个Url时最多一次30条,只能对表示文件的Url进行操作

  • +
+

Response

+
+ +
+
+delete_certificate(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteCertificate - 删除证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CertName (str) - (Required) 证书名称

  • +
+

Response

+
+ +
+
+describe_new_ucdn_prefetch_cache_task(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNewUcdnPrefetchCacheTask - 获取预取任务状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Limit (int) - 返回数据长度,默认全部,自然数

  • +
  • Offset (int) - 数据偏移量,默认为0,自然数

  • +
  • Status (str) - 需要获取的内容预热的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态

  • +
  • TaskId (list) - 提交任务时返回的任务ID

  • +
+

Response

+
    +
  • TaskList (list) - 见 TaskInfo 模型定义

  • +
  • TotalCount (int) - 预热任务的总数

  • +
+

Response Model

+

TaskInfo +- CreateTime (int) - 刷新任务创建的时间。格式为Unix Timestamp +- Status (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 +- TaskId (str) - 提交任务时返回的任务ID +- UrlLists (list) - 见 UrlProgressInfo 模型定义

+

UrlProgressInfo +- CreateTime (int) - 刷新任务创建的时间。格式为Unix Timestamp +- FinishTime (int) - 任务完成时间。格式为Unix Timestamp +- Progress (int) - 刷新进度,单位% +- Status (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 +- Url (str) - 刷新的单条url

+
+ +
+
+describe_new_ucdn_refresh_cache_task(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNewUcdnRefreshCacheTask - 获取域名刷新任务状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Limit (int) - 返回数据长度,默认全部,自然数

  • +
  • Offset (int) - 数据偏移量,默认为0,自然数

  • +
  • Status (str) - 需要获取的内容刷新的状态,枚举值:success:成功;wait:等待处理;process:正在处理;failure:失败; unknow:未知,默认选择所有状态

  • +
  • TaskId (list) - 提交任务时返回的任务ID

  • +
+

Response

+
    +
  • TaskList (list) - 见 TaskInfo 模型定义

  • +
  • TotalCount (int) - 刷新任务的总数

  • +
+

Response Model

+

TaskInfo +- CreateTime (int) - 刷新任务创建的时间。格式为Unix Timestamp +- Status (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 +- TaskId (str) - 提交任务时返回的任务ID +- UrlLists (list) - 见 UrlProgressInfo 模型定义

+

UrlProgressInfo +- CreateTime (int) - 刷新任务创建的时间。格式为Unix Timestamp +- FinishTime (int) - 任务完成时间。格式为Unix Timestamp +- Progress (int) - 刷新进度,单位% +- Status (str) - 刷新任务的当前状态,枚举值:success:成功;wait:排队中;process:处理中;failure:失败; unknow:未知 +- Url (str) - 刷新的单条url

+
+ +
+
+get_certificate_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCertificateV2 - 获取证书列表(新)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Limit (int) - 长度,默认为全部,非负整数

  • +
  • Offset (int) - 偏移,默认为0,非负整数

  • +
+

Response

+
    +
  • CertList (list) - 见 CertList 模型定义

  • +
  • TotalCount (int) - 证书数量

  • +
+

Response Model

+

CertList +- BeginTime (int) - 证书开始时间 +- CaCert (str) - ca证内容 +- CertName (str) - 证书名 +- CommonName (str) - 通用名 +- DnsName (str) - dns名称 +- DomainCount (int) - 已配置域名个数 +- Domains (list) - 已配置的域名列表 +- EndTime (int) - 证书获取时间 +- UserCert (str) - 证书内容

+
+ +
+
+get_new_ucdn_domain_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnDomainBandwidth - 获取域名带宽数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • BandwidthList (list) - 见 BandwidthInfo 模型定义

  • +
  • Traffic (float) - 从起始时间到结束时间内的所使用的CDN总流量,单位GB

  • +
+

Response Model

+

BandwidthInfo +- CdnBandwidth (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps(如果请求参数Type为0,则Value是五分钟粒度的带宽值,如果Type为1,则Value是1小时的带宽峰值,如果Type为2,则Value是一天内的带宽峰值) +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_new_ucdn_domain_hit_rate(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnDomainHitRate - 获取域名命中率

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Type (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)默认5分钟

  • +
+

Response

+
    +
  • HitRateList (list) - 见 HitRateInfo 模型定义

  • +
+

Response Model

+

HitRateInfo +- FlowHitRate (float) - 总流量命中率,单位% +- RequestHitRate (float) - 请求数命中率,单位% +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_new_ucdn_domain_http_code(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnDomainHttpCode - 获取域名状态码监控

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • HttpCodeDetail (list) - 见 HttpCodeInfo 模型定义

  • +
+

Response Model

+

HttpCodeInfo +- HttpFiveXX (int) - 5xx数量 +- HttpFourXX (int) - 4xx数量 +- HttpOneXX (int) - 1xx数量 +- HttpThreeXX (int) - 3xx数量 +- HttpTwoXX (int) - 2xx数量 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_new_ucdn_domain_http_code_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnDomainHttpCodeV2 - 获取域名详细状态码监控

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始时间,格式为Unix Timestamp。

  • +
  • EndTime (int) - (Required) 查询的结束时间,格式为Unix Timestamp。

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
+

Response

+
    +
  • HttpCodeV2Detail (list) - 见 HttpCodeV2Detail 模型定义

  • +
+

Response Model

+

HttpCodeV2Detail +- Http100 (int) - http100数量 +- Http101 (int) - http101数量 +- Http102 (int) - http102数量 +- Http200 (int) - http200数量 +- Http201 (int) - http201数量 +- Http202 (int) - http202数量 +- Http203 (int) - http203数量 +- Http204 (int) - http204数量 +- Http205 (int) - http205数量 +- Http206 (int) - http206数量 +- Http207 (int) - http207数量 +- Http300 (int) - http300数量 +- Http301 (int) - http301数量 +- Http302 (int) - http302数量 +- Http303 (int) - http303数量 +- Http304 (int) - http304数量 +- Http305 (int) - http305数量 +- Http306 (int) - http306数量 +- Http307 (int) - http307数量 +- Http400 (int) - http400数量 +- Http401 (int) - http401数量 +- Http402 (int) - http402数量 +- Http403 (int) - http403数量 +- Http404 (int) - http404数量 +- Http405 (int) - http405数量 +- Http406 (int) - http406数量 +- Http407 (int) - http407数量 +- Http408 (int) - http408数量 +- Http409 (int) - http409数量 +- Http410 (int) - http410数量 +- Http411 (int) - http411数量 +- Http412 (int) - http412数量 +- Http413 (int) - http413数量 +- Http414 (int) - http414数量 +- Http415 (int) - http415数量 +- Http416 (int) - http416数量 +- Http417 (int) - http417数量 +- Http418 (int) - http418数量 +- Http421 (int) - http421数量 +- Http422 (int) - http422数量 +- Http423 (int) - http423数量 +- Http424 (int) - http424数量 +- Http425 (int) - http425数量 +- Http426 (int) - http426数量 +- Http449 (int) - http449数量 +- Http451 (int) - http451数量 +- Http500 (int) - http500数量 +- Http501 (int) - http501数量 +- Http502 (int) - http502数量 +- Http503 (int) - http503数量 +- Http504 (int) - http504数量 +- Http505 (int) - http505数量 +- Http506 (int) - http506数量 +- Http507 (int) - http507数量 +- Http509 (int) - http509数量 +- Http510 (int) - http510数量 +- Time (int) - 时间 +- Total (int) - 当前分组的总状态码数

+
+ +
+
+get_new_ucdn_domain_request_num(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnDomainRequestNum - 获取域名请求数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)

  • +
  • Areacode (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • RequestList (list) - 见 RequestInfo 模型定义

  • +
+

Response Model

+

RequestInfo +- CdnRequest (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 +- OriginRequest (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_new_ucdn_log_referer_statistics(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnLogRefererStatistics - 获取热点referer统计

+

Request

+
    +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外 ;目前只支持国内

  • +
  • BeginTime (int) - 查询带宽的起始时间,格式:时间戳

  • +
  • DomainId (str) - 域名id,创建域名时生成的id

  • +
  • EndTime (int) - 查询统计日志的结束时间,格式:时间戳。最大时间间隔30天

  • +
  • Limit (int) - 返回的结果数量限制,默认1000

  • +
  • OrderBy (int) - 0表示按流量降序排列,1表示按照下载次数降序排列,默认为0

  • +
+

Response

+
    +
  • RefererStatistics (list) - 见 RefererStatistics 模型定义

  • +
+

Response Model

+

RefererList +- Percent (float) - 次数占比,单位% +- Referer (str) - 客户端请求的referer +- RequestTimes (int) - 次数

+

RefererStatistics +- Date (str) - 日期 +- RefererList (list) - 见 RefererList 模型定义

+
+ +
+
+get_new_ucdn_log_url_statistics(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNewUcdnLogUrlStatistics - 获取日志url统计

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • DomainId (str) - (Required) 域名Id

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外 只支持国内

  • +
  • BeginTime (int) - 查询带宽的起始时间,格式:时间戳。BeginTime和EndTime必须同时赋值

  • +
  • EndTime (int) - 查询统计日志的结束时间,格式:时间戳,最多可拉取30天

  • +
  • Limit (int) - 返回的结果数量限制,默认1000

  • +
  • OrderBy (int) - 0表示按流量降序排列,1表示按照下载次数降序排列,默认为0

  • +
+

Response

+
    +
  • UrlStatisticsList (list) - 见 UrlStatistics 模型定义

  • +
+

Response Model

+

DownloadStatisticInfo +- DownloadTimes (int) - 下载次数 +- Percent (float) - 流量占比,单位% +- Traffic (float) - 流量(单位为G) +- Url (str) - 下载链接的url

+

UrlStatistics +- Date (str) - 日期 +- UrlList (list) - 见 DownloadStatisticInfo 模型定义

+
+ +
+
+get_ucdn_domain_95bandwidth_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomain95BandwidthV2 - 获取域名九五峰值带宽数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始日期,格式为Unix Timestamp

  • +
  • EndTime (int) - (Required) 查询的结束日期,格式为Unix Timestamp

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
+

Response

+
    +
  • CdnBandwidth (float) - 查询期间的CDN的95带宽值,单位Mbps

  • +
  • Time (int) - 查询时间期间的95带宽时间点 Unix时间戳

  • +
+
+ +
+
+get_ucdn_domain_bandwidth_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainBandwidthV2 - 获取域名带宽数据(新)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外 不填默认为全部区域

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Primeval (int) - 原始带宽,不为0则获取原始带宽,默认为0

  • +
  • Protocol (str) - 协议,http、https 不传则查所有协议的带宽

  • +
  • Type (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度)

  • +
+

Response

+
    +
  • BandwidthTrafficList (list) - 见 BandwidthTrafficInfo 模型定义

  • +
+

Response Model

+

BandwidthTrafficInfo +- CdnBandwidth (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps(如果请求参数Type为0,则Value是五分钟粒度的带宽值,如果Type为1,则Value是1小时的带宽峰值,如果Type为2,则Value是一天内的带宽峰值) +- Time (int) - 带宽获取的时间点。格式:时间戳 +- Traffic (float) - 对应时间粒度的流量,单位字节

+
+ +
+
+get_ucdn_domain_config(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainConfig - 批量获取加速域名配置

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ChannelType (str) - 产品类型ucdn,可不填,默认为ucdn

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认获取账号下的所有域名信息,n为自然数,从DomainId.0开始。

  • +
  • Limit (int) - 返回数据长度, 默认全部,非负整数

  • +
  • Offset (int) - 数据偏移量,默认0,非负整数

  • +
+

Response

+
    +
  • DomainList (list) - 见 DomainConfigInfo 模型定义

  • +
+

Response Model

+

DomainConfigInfo +- AccessControlConf (dict) - 见 AccessControlConf 模型定义 +- AdvancedConf (dict) - 见 AdvancedConf 模型定义 +- AreaCode (str) - 查询带宽区域 cn代表国内 abroad代表海外 all表示全部区域 +- CacheConf (dict) - 见 CacheAllConfig 模型定义 +- CdnType (str) - 加速域名的业务类型,web代表网站,stream代表视频 ,download 代表下载 +- CertNameAbroad (str) - 国外证书名称 +- CertNameCn (str) - 国内证书名称 +- Cname (str) - cdn域名。创建加速域名生成的cdn域名,用于设置CNAME记录 +- CreateTime (int) - 域名创建的时间。格式:时间戳 +- Domain (str) - 域名 +- DomainId (str) - 域名Id +- HttpsStatusAbroad (str) - 国外https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 +- HttpsStatusCn (str) - 国内https状态 enableing-开启中 fail-开启失败 enable-启用 disable-未启用 +- OriginConf (dict) - 见 OriginConf 模型定义 +- Status (str) - 创建的加速域名的当前的状态。check代表审核中,checkSuccess代表审核通过,checkFail代表审核失败,enable代表加速中,disable代表停止加速,delete代表删除加速enableing代表正在开启加速,disableing代表正在停止加速中,deleteing代表删除中 +- Tag (str) - 业务组:Default +- TestUrl (str) - 测试url。用于域名创建加速时的测试

+

AccessControlConf +- IpBlackList (list) - ip黑名单,多个ip,可表示为:IpBlackList.0=1.1.1.1,IpBlackList.1=2.2.2.2 +- ReferConf (dict) - 见 ReferConf 模型定义

+

ReferConf +- NullRefer (int) - ReferType为白名单时(删除),NullRefer为0代表不允许NULL refer访问,为1代表允许Null refer访问 +- ReferList (list) - Refer防盗链规则列表,支持正则表达式 +- ReferType (int) - Refer防盗链配置 0白名单,1黑名单

+

AdvancedConf +- Http2Https (bool) - http转https回源 true是,false否 +- HttpClientHeader (list) - 客户端响应http头列表 +- HttpOriginHeader (list) - 源站http头列表

+

CacheAllConfig +- CacheHost (str) - 缓存Host,不同的域名可以配置为同一个CacheHost来实现缓存共享,默认为加速域名 +- CacheKeyList (list) - 见 CacheKeyInfo 模型定义 +- CacheList (list) - 见 CacheConf 模型定义 +- HttpCodeCacheList (list) - 见 CacheConf 模型定义

+

CacheKeyInfo +- Ignore (bool) - 是否忽略 +- PathPattern (str) - 路径模式,支持正则 +- QueryString (str) - 自定义变量,以$符号开头,多个变量用加号(+)连接,$querystring表示所有变量

+

CacheConf +- CacheBehavior (bool) - 是否缓存,true为缓存,flase为不缓存。为flase的情况下,CacheTTL和CacheUnit强制不生效 +- CacheTTL (int) - 缓存时间 +- CacheUnit (str) - 缓存时间的单位。sec(秒),min(分钟),hour(小时),day(天)。上限1年。 +- Description (str) - 缓存规则描述 +- FollowOriginRule (bool) - 是否优先遵循源站头部缓存策略,false为不优先遵循源站,true为优先遵循源站缓存头部。默认为0 +- HttpCodePattern (str) - 状态码模式,非200,206状态码,多个状态码用竖线(|)分隔,该属性仅仅在状态码缓存配置列表中返回 +- PathPattern (str) - 路径模式,支持正则

+

OriginConf +- BackupOriginEnable (bool) - 1如果为false表示BackupOriginIp为空,表示没有备份源站,忽略BackupOriginIp,BackupOriginHost字段2如果为true表示BackupOriginIp.n必须至少有一个备份源站地址 +- BackupOriginHost (str) - 备份回源Http请求头部Host,默认是加速域名 +- BackupOriginIpList (list) - 备份源站ip即cdn服务器回源访问的ip地址。多个源站ip,可以这样表述,如:[“1.1.1.1”,”2.2.2.2”] +- OriginErrorCode (str) - 主源响应的回源错误码(如:404|500),默认空字符串 +- OriginErrorNum (int) - 回主源的回源失败数,默认1 +- OriginFollow301 (int) - 跟随301跳转 0=不跟随 1=跟随 +- OriginHost (str) - 回源Http请求头部Host,默认是加速域名 +- OriginIpList (list) - 源站ip即cdn服务器回源访问的ip地址。多个源站ip,可以这样表述,如:[“1.1.1.1”,”2.2.2.2”] +- OriginPort (int) - 回源端口 +- OriginProtocol (str) - 源站协议http,http|https 默认http

+
+ +
+
+get_ucdn_domain_hit_rate(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainHitRate - 获取域名命中率

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照一分钟的粒度)默认5分钟

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • HitType (int) - 命中类型:0=整体命中 1=边缘命中 默认是0

  • +
+

Response

+
    +
  • HitRateList (list) - 见 HitRateInfoV2 模型定义

  • +
+

Response Model

+

HitRateInfoV2 +- FlowHitRate (float) - 总流量命中率,单位% +- RequestHitRate (float) - 请求数命中率,单位% +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_domain_http_code_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainHttpCodeV2 - 获取域名状态码信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示1分钟粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Layer (str) - 指定获取的状态码是边缘还是上层 edge 表示边缘 layer 表示上层

  • +
+

Response

+
    +
  • HttpCodeDetail (list) - 见 HttpCodeInfoV2 模型定义

  • +
+

Response Model

+

HttpCodeInfoV2 +- Http1XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Http2XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Http3XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Http4XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Http5XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Http6XX (dict) - 见 HttpCodeV2Detail 模型定义 +- Time (int) - 带宽获取的时间点。格式:时间戳

+

HttpCodeV2Detail +- Http100 (int) - http100数量 +- Http101 (int) - http101数量 +- Http102 (int) - http102数量 +- Http200 (int) - http200数量 +- Http201 (int) - http201数量 +- Http202 (int) - http202数量 +- Http203 (int) - http203数量 +- Http204 (int) - http204数量 +- Http205 (int) - http205数量 +- Http206 (int) - http206数量 +- Http207 (int) - http207数量 +- Http300 (int) - http300数量 +- Http301 (int) - http301数量 +- Http302 (int) - http302数量 +- Http303 (int) - http303数量 +- Http304 (int) - http304数量 +- Http305 (int) - http305数量 +- Http306 (int) - http306数量 +- Http307 (int) - http307数量 +- Http400 (int) - http400数量 +- Http401 (int) - http401数量 +- Http402 (int) - http402数量 +- Http403 (int) - http403数量 +- Http404 (int) - http404数量 +- Http405 (int) - http405数量 +- Http406 (int) - http406数量 +- Http407 (int) - http407数量 +- Http408 (int) - http408数量 +- Http409 (int) - http409数量 +- Http410 (int) - http410数量 +- Http411 (int) - http411数量 +- Http412 (int) - http412数量 +- Http413 (int) - http413数量 +- Http414 (int) - http414数量 +- Http415 (int) - http415数量 +- Http416 (int) - http416数量 +- Http417 (int) - http417数量 +- Http418 (int) - http418数量 +- Http421 (int) - http421数量 +- Http422 (int) - http422数量 +- Http423 (int) - http423数量 +- Http424 (int) - http424数量 +- Http425 (int) - http425数量 +- Http426 (int) - http426数量 +- Http449 (int) - http449数量 +- Http451 (int) - http451数量 +- Http500 (int) - http500数量 +- Http501 (int) - http501数量 +- Http502 (int) - http502数量 +- Http503 (int) - http503数量 +- Http504 (int) - http504数量 +- Http505 (int) - http505数量 +- Http506 (int) - http506数量 +- Http507 (int) - http507数量 +- Http509 (int) - http509数量 +- Http510 (int) - http510数量 +- Time (int) - 时间 +- Total (int) - 当前分组的总状态码数

+
+ +
+
+get_ucdn_domain_info_list(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainInfoList - 获取域名基本信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • PageIndex (int) - 返回第几页,不填默认是第1页

  • +
  • PageSize (int) - 分页的大小,不填默认每页20个

  • +
+

Response

+
    +
  • DomainInfoList (list) - 见 DomainBaseInfo 模型定义

  • +
  • TotalCount (int) - 账户下域名总个数

  • +
+

Response Model

+

DomainBaseInfo +- Domain (str) - 域名 +- DomainId (str) - 域名的资源id

+
+ +
+
+get_ucdn_domain_log(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainLog - 获取加速域名原始日志

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。

  • +
  • DomainId (list) - 域名ID,创建加速域名时生成。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
  • Type (int) - 查询粒度 0=default(没有粒度) 1=按小时 2=按天

  • +
+

Response

+
    +
  • LogSet (list) - 见 LogSetList 模型定义

  • +
+

Response Model

+

LogSetList +- Domain (str) - 域名 +- Logs (list) - 见 LogSetInfo 模型定义

+

LogSetInfo +- AbroadLog (list) - 国外日志url列表 +- CnLog (list) - 国内日志url列表 +- Time (int) - 日志时间UnixTime

+
+ +
+
+get_ucdn_domain_origin_http_code(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainOriginHttpCode - 获取域名源站状态码监控

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • HttpCodeDetail (list) - 见 HttpCodeInfo 模型定义

  • +
+

Response Model

+

HttpCodeInfo +- HttpFiveXX (int) - 5xx数量 +- HttpFourXX (int) - 4xx数量 +- HttpOneXX (int) - 1xx数量 +- HttpThreeXX (int) - 3xx数量 +- HttpTwoXX (int) - 2xx数量 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_domain_origin_http_code_detail(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainOriginHttpCodeDetail - 获取域名源站详细状态码监控

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始时间,格式为Unix Timestamp。

  • +
  • EndTime (int) - (Required) 查询的结束时间,格式为Unix Timestamp。

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
+

Response

+
    +
  • HttpCodeV2Detail (list) - 见 HttpCodeV2Detail 模型定义

  • +
+

Response Model

+

HttpCodeV2Detail +- Http100 (int) - http100数量 +- Http101 (int) - http101数量 +- Http102 (int) - http102数量 +- Http200 (int) - http200数量 +- Http201 (int) - http201数量 +- Http202 (int) - http202数量 +- Http203 (int) - http203数量 +- Http204 (int) - http204数量 +- Http205 (int) - http205数量 +- Http206 (int) - http206数量 +- Http207 (int) - http207数量 +- Http300 (int) - http300数量 +- Http301 (int) - http301数量 +- Http302 (int) - http302数量 +- Http303 (int) - http303数量 +- Http304 (int) - http304数量 +- Http305 (int) - http305数量 +- Http306 (int) - http306数量 +- Http307 (int) - http307数量 +- Http400 (int) - http400数量 +- Http401 (int) - http401数量 +- Http402 (int) - http402数量 +- Http403 (int) - http403数量 +- Http404 (int) - http404数量 +- Http405 (int) - http405数量 +- Http406 (int) - http406数量 +- Http407 (int) - http407数量 +- Http408 (int) - http408数量 +- Http409 (int) - http409数量 +- Http410 (int) - http410数量 +- Http411 (int) - http411数量 +- Http412 (int) - http412数量 +- Http413 (int) - http413数量 +- Http414 (int) - http414数量 +- Http415 (int) - http415数量 +- Http416 (int) - http416数量 +- Http417 (int) - http417数量 +- Http418 (int) - http418数量 +- Http421 (int) - http421数量 +- Http422 (int) - http422数量 +- Http423 (int) - http423数量 +- Http424 (int) - http424数量 +- Http425 (int) - http425数量 +- Http426 (int) - http426数量 +- Http449 (int) - http449数量 +- Http451 (int) - http451数量 +- Http500 (int) - http500数量 +- Http501 (int) - http501数量 +- Http502 (int) - http502数量 +- Http503 (int) - http503数量 +- Http504 (int) - http504数量 +- Http505 (int) - http505数量 +- Http506 (int) - http506数量 +- Http507 (int) - http507数量 +- Http509 (int) - http509数量 +- Http510 (int) - http510数量 +- Time (int) - 时间 +- Total (int) - 当前分组的总状态码数

+
+ +
+
+get_ucdn_domain_origin_request_num(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainOriginRequestNum - 获取域名回源请求数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始时间,格式为Unix Timestamp

  • +
  • EndTime (int) - (Required) 查询的结束时间,格式为Unix Timestamp

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟)

  • +
  • Areacode (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
+

Response

+
    +
  • RequestList (list) - 见 RequestInfoV2 模型定义

  • +
+

Response Model

+

RequestInfoV2 +- CdnRequest (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_domain_prefetch_enable(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainPrefetchEnable - 获取域名预取开启状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • DomainId (str) - (Required) 域名ID,创建加速域名时生成。

  • +
+

Response

+
    +
  • Enable (int) - 0表示该域名未开启预取,1表示该域名已开启预取

  • +
+
+ +
+
+get_ucdn_domain_request_num_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainRequestNumV2 - 获取域名请求数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始时间,格式为Unix Timestamp

  • +
  • EndTime (int) - (Required) 查询的结束时间,格式为Unix Timestamp

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟)

  • +
  • Areacode (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
+

Response

+
    +
  • RequestList (list) - 见 RequestInfo 模型定义

  • +
+

Response Model

+

RequestInfo +- CdnRequest (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 +- OriginRequest (float) - 返回值返回指定时间区间内的cdn回源的请求次数之和 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_domain_request_num_v3(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainRequestNumV3 - 获取域名请求数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始时间,格式为Unix Timestamp

  • +
  • EndTime (int) - (Required) 查询的结束时间,格式为Unix Timestamp

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度, 3=按1分钟)

  • +
  • Areacode (str) - 查询区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • Protocol (str) - 协议,http、https 不传则查所有协议的带宽

  • +
+

Response

+
    +
  • RequestList (list) - 见 RequestInfoV2 模型定义

  • +
+

Response Model

+

RequestInfoV2 +- CdnRequest (float) - 返回值返回指定时间区间内的cdn收到的请求次数之和 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_domain_traffic(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnDomainTraffic - 获取加速域名流量使用信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • AccountType (str) - 指定按项目查询,还是按整个账户查询 取值 top 表示按整个账户查询,取值org表示按项目查询

  • +
  • Areacode (str) - 查询流量区域 cn代表国内 abroad代表海外,默认全部区域

  • +
  • BeginTime (int) - 查询的起始日期,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值

  • +
  • DomainId (list) - 域名ID,创建加速域名时生成,n从自然数0开始。默认全部域名

  • +
  • EndTime (int) - 查询的结束日期,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天

  • +
+

Response

+
    +
  • TrafficSet (list) - 见 UcdnDomainTrafficSet 模型定义

  • +
+

Response Model

+

UcdnDomainTrafficSet +- Time (int) - 流量获取的时间点,格式为Unix Timestamp +- Value (float) - 查询每日流量总值,单位:GB

+
+ +
+
+get_ucdn_pass_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnPassBandwidth - 获取回源带宽数据(cdn回客户源站部分)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • BandwidthDetail (list) - 见 BandwidthInfoDetail 模型定义

  • +
+

Response Model

+

BandwidthInfoDetail +- Bandwidth (float) - 返回值带宽值数据。 +- Time (int) - 宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_pass_bandwidth_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnPassBandwidthV2 - 获取回源带宽数据(cdn回客户源站部分)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (int) - (Required) 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天的粒度,3表示按照1分钟粒度)

  • +
  • Areacode (str) - 查询带宽区域 cn代表国内 abroad代表海外,只支持国内

  • +
  • BeginTime (int) - 查询的起始时间,格式为Unix Timestamp。如果有EndTime,BeginTime必须赋值。如没有赋值,则返回缺少参 数错误,如果没有EndTime,BeginTime也可以不赋值,EndTime默认当前时间,BeginTime 默认前一天的当前时间。

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • EndTime (int) - 查询的结束时间,格式为Unix Timestamp。EndTime默认为当前时间,BeginTime默认为当前时间前一天时间。

  • +
+

Response

+
    +
  • BandwidthList (list) - 见 BandwidthInfoDetail 模型定义

  • +
+

Response Model

+

BandwidthInfoDetail +- Bandwidth (float) - 返回值带宽值数据。 +- Time (int) - 宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_pro_isp_bandwidth_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnProIspBandwidthV2 - 按省份运营商获取域名带宽数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始日期,格式为Unix Timestamp

  • +
  • EndTime (int) - (Required) 查询的结束日期,格式为Unix Timestamp

  • +
  • Type (int) - (Required) 时间粒度0 (按5分钟粒度)1 (按小时粒度)2(按天粒度)3(按分钟粒度)

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • Isp (str) - 运营商代码(运营商拼音),一次只能查询一个运营商,不传递默认取所有运营商

  • +
  • Province (list) - 省份代码(省份拼音),可以传多个,不传则查询所有省份

  • +
+

Response

+
    +
  • BandwidthSet (list) - 见 ProIspBandwidthSet 模型定义

  • +
+

Response Model

+

ProIspBandwidthSet +- BandwidthTrafficList (list) - 见 ProIspBandwidthList 模型定义 +- Province (str) - 省份代码

+

ProIspBandwidthList +- CdnBandwidth (float) - 返回值返回指定时间区间内CDN的带宽峰值,单位Mbps +- Time (int) - 带宽获取的时间点。格式:时间戳 +- Traffic (float) - 对应时间粒度的流量,单位字节

+
+ +
+
+get_ucdn_pro_isp_request_num_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnProIspRequestNumV2 - 按省份运营商获取域名请求数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BeginTime (int) - (Required) 查询的起始日期,格式为Unix Timestamp 忽略时间部分

  • +
  • EndTime (int) - (Required) 查询的结束日期,格式为Unix Timestamp 忽略时间部分

  • +
  • DomainId (list) - 域名id,创建域名时生成的id。默认全部域名

  • +
  • Isp (str) - 运营商代码,一次只能查询一个运营商,不传递默认取所有运营商

  • +
  • Province (list) - 省份代码,可以传多个,不传则查询所有省份

  • +
  • Type (int) - 时间粒度(0表示按照5分钟粒度,1表示按照1小时粒度,2表示按照一天粒度,3表示按照一分钟粒度)

  • +
+

Response

+
    +
  • RequestNumSet (list) - 见 ProIspRequestNumSetV2 模型定义

  • +
+

Response Model

+

ProIspRequestNumSetV2 +- Province (str) - 省份代码 +- RequestList (list) - 见 ProIspRequestListV2 模型定义

+

ProIspRequestListV2 +- CdnRequest (float) - 返回值返回指定时间区间内的请求数 +- Time (int) - 带宽获取的时间点。格式:时间戳

+
+ +
+
+get_ucdn_traffic(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnTraffic - 获取流量信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
+

Response

+
    +
  • TrafficSet (list) - 见 TrafficSet 模型定义

  • +
+

Response Model

+

TrafficSet +- Areacode (str) - 购买流量的区域, cn: 国内; abroad: 国外 +- TrafficLeft (float) - Areacode区域内总剩余流量, 单位GB +- TrafficTotal (float) - Areacode区域内总购买流量, 单位GB +- TrafficUsed (float) - Areacode区域内总使用流量, 单位GB

+
+ +
+
+get_ucdn_traffic_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUcdnTrafficV2 - 获取流量信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
+

Response

+
    +
  • TrafficSet (list) - 见 TrafficSet 模型定义

  • +
+

Response Model

+

TrafficSet +- Areacode (str) - 购买流量的区域, cn: 国内; abroad: 国外 +- TrafficLeft (float) - Areacode区域内总剩余流量, 单位GB +- TrafficTotal (float) - Areacode区域内总购买流量, 单位GB +- TrafficUsed (float) - Areacode区域内总使用流量, 单位GB

+
+ +
+
+prefetch_new_ucdn_domain_cache(req: Optional[dict] = None, **kwargs) dict[source]
+

PrefetchNewUcdnDomainCache - 提交预取任务

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • UrlList (list) - (Required) 预热URL列表,n从自然数0开始。UrlList.n字段必须以”http://域名/”开始。如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名

  • +
+

Response

+
    +
  • TaskId (str) - 本次提交url对应的任务id

  • +
+
+ +
+
+query_ip_location(req: Optional[dict] = None, **kwargs) dict[source]
+

QueryIpLocation - 查询IP信息

+

Request

+
    +
  • Ip (list) - (Required) ip列表

  • +
+

Response

+
    +
  • Data (list) - 见 IpLocationInfo 模型定义

  • +
+

Response Model

+

IpLocationInfo +- Area (str) - 地区 +- City (str) - 城市 +- Exist (bool) - ip是否存在 +- Ip (str) - 客户端请求的ip +- Isp (str) - 运营商

+
+ +
+
+refresh_new_ucdn_domain_cache(req: Optional[dict] = None, **kwargs) dict[source]
+

RefreshNewUcdnDomainCache - 刷新缓存

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Type (str) - (Required) 刷新类型,file代表文件刷新,dir 代表路径刷新

  • +
  • UrlList (list) - (Required) 需要刷新的URL,n 从自然数0开始,刷新多个URL列表时,一次最多提交30个。必须以”http://域名/”开始。目录要以”/”结尾, 如刷新目录a下所有文件,格式为:http://abc.ucloud.cn/a/;如刷新文件目录a下面img.png文件, 格式为http://abc.ucloud.cn/a/img.png。请正确提交需要刷新的域名

  • +
+

Response

+
    +
  • TaskId (str) - 本次提交url对应的任务id

  • +
+
+ +
+
+switch_ucdn_charge_type(req: Optional[dict] = None, **kwargs) dict[source]
+

SwitchUcdnChargeType - 切换账号计费方式

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ChargeType (str) - (Required) 计费方式。traffic代表按流量包计费,bandwidth按带宽付费

  • +
+

Response

+
+ +
+ +
+
+

UDB

+
+
+class ucloud.services.udb.client.UDBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+backup_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

BackupUDBInstance - 备份UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份名称

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • BackupMethod (str) - 使用的备份方式。(快照备份即物理备份。注意只有SSD版本的mysql实例支持设置为snapshot)

  • +
  • Blacklist (str) - 备份黑名单列表,以 ; 分隔。注意:只有逻辑备份下备份黑名单才生效,快照备份备份黑名单下无效

  • +
  • ForceBackup (bool) - true表示逻辑备份时是使用 –force 参数,false表示不使用 –force 参数。物理备份此参数无效。

  • +
  • UseBlacklist (bool) - 是否使用黑名单备份,默认false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_binlog(req: Optional[dict] = None, **kwargs) dict[source]
+

BackupUDBInstanceBinlog - 备份UDB指定时间段的binlog列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupFile (str) - (Required) 需要备份文件,可通过DescribeUDBInstanceBinlog获得 如果要传入多个文件名,以空格键分割,用单引号包含.

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • BackupName (str) - DB备份文件名称

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_error_log(req: Optional[dict] = None, **kwargs) dict[source]
+

BackupUDBInstanceErrorLog - 备份UDB指定时间段的errorlog

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份名称

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+backup_udb_instance_slow_log(req: Optional[dict] = None, **kwargs) dict[source]
+

BackupUDBInstanceSlowLog - 备份UDB指定时间段的slowlog分析结果

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 备份文件名称

  • +
  • BeginTime (int) - (Required) 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • EndTime (int) - (Required) 过滤条件:结束时间(时间戳)

  • +
+

Response

+
+ +
+
+change_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ChangeUDBParamGroup - 修改配置文件

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • GroupId (str) - (Required) 参数组Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+check_recover_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckRecoverUDBInstance - 核查db是否可以使用回档功能

+

Request

+ +

Response

+
    +
  • LastestTime (int) - 核查成功返回值为可以回档到的最近时刻,核查失败不返回

  • +
+
+ +
+
+check_udb_instance_to_ha_allowance(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckUDBInstanceToHAAllowance - 核查db是否可以升级为高可用

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
+

Response

+
    +
  • Allowance (str) - Yes ,No ,Yes即可以升级,No为不可以升级

  • +
+
+ +
+
+clear_udb_log(req: Optional[dict] = None, **kwargs) dict[source]
+

ClearUDBLog - 清除UDB实例的log

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取

  • +
  • LogType (int) - (Required) 日志类型,10-error(暂不支持)、20-slow(暂不支持 )、30-binlog

  • +
  • BeforeTime (int) - 删除时间点(至少前一天)之前log,采用时间戳(秒),默认当 前时间点前一天

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+create_mongo_db_replica_set(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateMongoDBReplicaSet - 一键创建DB副本集

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AdminPassword (str) - (Required) 管理员密码

  • +
  • DBTypeId (str) - (Required) DB类型id对应的字符串形式(例如:mongodb-2.6)注意:当前仅支持mongodb

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 3000G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M

  • +
  • Name (str) - (Required) PrimaryDB实例名称,至少6位

  • +
  • ParamGroupId (int) - (Required) DB实例使用的配置参数组id

  • +
  • Port (int) - (Required) 端口号

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • BackupCount (int) - 备份策略,每周备份数量,默认7次

  • +
  • BackupDuration (int) - 备份策略,备份时间间隔,单位小时计,默认24小时

  • +
  • BackupTime (int) - 备份策略,备份开始时间,单位小时计,默认1点

  • +
  • CPU (int) - cpu核数

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Month

  • +
  • ClusterId (str) - 所属分片集群的ID

  • +
  • CouponId (list) - CouponId.0 代表第一个代金券id,对于传入多个代金券id,后面为 CouponId.1, CouponId.2 以此类推

  • +
  • InstanceType (str) - UDB数据库机型

  • +
  • Quantity (int) - 购买时长(N个月),默认值1个月。如果为0,代表购买到月底。

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • SubnetId (str) - 子网ID

  • +
  • UseSSD (bool) - 是否使用SSD,默认为true

  • +
  • VPCId (str) - VPC的ID

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • DBIds (list) - 返回所有副本集成员的Id

  • +
  • RetCode (int) - 返回码

  • +
+
+ +
+
+create_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBInstance - 创建UDB实例(包括创建mysql master节点、mongodb primary/configsvr节点和从备份恢复实例)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AdminPassword (str) - (Required) 管理员密码

  • +
  • DBTypeId (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6,14:postgresql-10.4

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 32T

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M/128000M/192000M/256000M/320000M

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • ParamGroupId (int) - (Required) DB实例使用的配置参数组id

  • +
  • Port (int) - (Required) 端口号,mysql默认3306,mongodb默认27017,postgresql默认5432

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • BackupCount (int) - 备份策略,每周备份数量,默认7次

  • +
  • BackupDuration (int) - 备份策略,备份时间间隔,单位小时计,默认24小时

  • +
  • BackupId (int) - 备份id,如果指定,则表明从备份恢复实例

  • +
  • BackupTime (int) - 备份策略,备份开始时间,单位小时计,默认1点

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区,参见 可用区列表

  • +
  • CPU (int) - cpu核数

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Month

  • +
  • ClusterRole (str) - 当DB类型(DBTypeId)为mongodb时,需要指定mongo的角色,可选值为configsrv (配置节点),shardsrv (数据节点)

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DisableSemisync (bool) - 是否开启异步高可用,默认不填,可置为true

  • +
  • EnableIpV6 (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true

  • +
  • HAArch (str) - 高可用架构:1) haproxy(默认): 当前仅支持mysql。2) sentinel: 基于vip和哨兵节点的架构,当前支持mysql和pg。

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 默认是”Normal”

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、“NVMe”,如果UseSSD为true ,则必选

  • +
  • SubnetId (str) - 子网ID

  • +
  • Tag (str) - 实例所在的业务组名称

  • +
  • UDBCId (str) - 专区ID信息(如果这个参数存在这说明是在专区中创建DB)

  • +
  • UseSSD (bool) - 是否使用SSD,默认为true。目前主要可用区、海外机房、新机房只提供SSD资源,非SSD资源不再提供。

  • +
  • VPCId (str) - VPC的ID

  • +
+

Response

+
    +
  • DBId (str) - BD实例id

  • +
+
+ +
+
+create_udb_instance_by_recovery(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBInstanceByRecovery - 创建db,将新创建的db恢复到指定db某个指定时间点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • RecoveryTime (int) - (Required) 恢复到某个时间点的时间戳(UTC时间格式,默认单位秒)

  • +
  • SrcDBId (str) - (Required) 源实例的Id

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • EnableIpV6 (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • SubnetId (str) - 子网ID

  • +
  • UDBCId (str) - 专区的Id

  • +
  • UseSSD (bool) - 指定是否是否使用SSD,默认使用主库的配置

  • +
  • VPCId (str) - VPC的ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - db实例id

  • +
+
+ +
+
+create_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBParamGroup - 从已有配置文件创建新配置文件

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBTypeId (str) - (Required) DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6

  • +
  • Description (str) - (Required) 参数组描述

  • +
  • GroupName (str) - (Required) 新配置参数组名称

  • +
  • SrcGroupId (int) - (Required) 源参数组id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • RegionFlag (bool) - 是否是地域级别的配置文件,默认是false

  • +
+

Response

+
    +
  • GroupId (int) - 新配置参数组id

  • +
+
+ +
+
+create_udb_replication_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBReplicationInstance - 创建MongoDB的副本节点(包括仲裁)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • SrcId (str) - (Required) primary节点的DBId,该值可以通过DescribeUDBInstance获取

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • IsArbiter (bool) - 是否是仲裁节点,默认false,仲裁节点按最小机型创建

  • +
  • Port (int) - 端口号,默认27017,取值范围3306至65535。

  • +
  • UseSSD (bool) - 是否使用SSD,默认 为 true

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - 创建从节点的DBId

  • +
+
+ +
+
+create_udb_route_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBRouteInstance - 创建mongos实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ConfigsvrId (list) - (Required) 配置服务器的dbid,允许一个或者三个。

  • +
  • DBTypeId (str) - (Required) DB类型id,mongodb按版本细分有1:mongodb-2.4,2:mongodb-2.6,3:mongodb-3.0,4:mongodb-3.2

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 600M/1500M/3000M /6000M/15000M/30000M

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • ParamGroupId (int) - (Required) DB实例使用的配置参数组id

  • +
  • Port (int) - (Required) 端口号,mongodb默认27017

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认: Month

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • UseSSD (bool) - 是否使用SSD,默认为ture

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - db实例id

  • +
+
+ +
+
+create_udb_slave(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDBSlave - 创建UDB实例的slave

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • SrcId (str) - (Required) master实例的DBId,该值可以通过DescribeUDBInstance获取

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,默认和主库保持一致

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DiskSpace (int) - 磁盘空间(GB), 暂时支持20G - 3000G(API支持,前端暂时只开放内存定制)

  • +
  • InstanceMode (str) - UDB实例部署模式,可选值如下:Normal: 普通单点实例HA: 高可用部署实例

  • +
  • InstanceType (str) - UDB实例类型:Normal、SATA_SSD、NVMe_SSD

  • +
  • IsLock (bool) - 是否锁主库,默认为true

  • +
  • MemoryLimit (int) - 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/12000M/16000M/ 24000M/32000M/48000M/ 64000M/96000M/128000M/192000M/256000M/320000M

  • +
  • ParamGroupId (int) - DB实例使用的配置参数组id,默认和主库保持一致

  • +
  • Port (int) - 端口号

  • +
  • Quantity (int) - 购买时长,默认默认和主库保持一致

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”、“NVMe”,如果UseSSD为true ,则必选

  • +
  • SubnetId (str) - 子网ID(如果不传用默认子网)

  • +
  • UseSSD (bool) - 是否使用SSD,默认为true

  • +
  • VPCId (str) - VPCID(如果不传用默认的VPC)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DBId (str) - 创建slave的DBId

  • +
+
+ +
+
+delete_udb_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDBBackup -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • Region (str) - (Config)

  • +
  • BackupId (int) - (Required)

  • +
  • Zone (str) - (Required)

  • +
  • BackupZone (str) -

  • +
+

Response

+
+ +
+
+delete_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDBInstance - 删除UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例的id,该值可以通过DescribeUDBInstance获取

  • +
  • UDBCId (str) - 专区ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+delete_udb_log_package(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDBLogPackage - 删除UDB日志包

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 日志包id,可通过DescribeUDBLogPackage获得

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
+

Response

+
+ +
+
+delete_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDBParamGroup - 删除配置参数组

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (int) - (Required) 参数组id,可通过DescribeUDBParamGroup获取

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • RegionFlag (bool) - 是否属于地域级别

  • +
+

Response

+
+ +
+
+describe_udb_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBBackup - 列表UDB实例备份信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - (Required) 分页显示的起始偏移,列表操作则指定

  • +
  • BackupType (int) - 备份类型,取值为0或1,0表示自动,1表示手动

  • +
  • BeginTime (int) - 过滤条件:起始时间(Unix时间戳)

  • +
  • DBId (str) - DB实例Id,如果指定,则只获取该db的备份信息 该值可以通过DescribeUDBInstance获取

  • +
  • EndTime (int) - 过滤条件:结束时间(Unix时间戳)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBBackupSet 模型定义

  • +
  • TotalCount (int) - 满足条件备份总数,如果指定dbid,则是该db备份总数

  • +
+

Response Model

+

UDBBackupSet +- BackupEndTime (int) - 备份完成时间(Unix时间戳) +- BackupId (int) - 备份id +- BackupName (str) - 备份名称 +- BackupSize (int) - 备份文件大小(字节) +- BackupTime (int) - 备份时间(Unix时间戳) +- BackupType (int) - 备份类型,取值为0或1,0表示自动,1表示手动 +- BackupZone (str) - 跨机房高可用备库所在可用区 +- DBId (str) - dbid +- DBName (str) - 对应的db名称 +- State (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 +- Zone (str) - 备份所在可用区

+
+ +
+
+describe_udb_backup_blacklist(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBBackupBlacklist - 获取UDB实例的备份黑名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Blacklist (str) - DB的黑名单列表, db.%为指定库 dbname.tablename为指定表

  • +
+
+ +
+
+describe_udb_binlog_backup_url(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBBinlogBackupURL - 获取UDB的Binlog备份地址

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例binlog备份ID,可以从DescribeUDBLogPackage结果当中获得

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - DB实例备份文件的公网地址

  • +
  • InnerBackupPath (str) - DB实例备份文件的内网地址

  • +
+
+ +
+
+describe_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstance - 获取UDB实例信息,支持两类操作:(1)指定DBId用于获取该db的信息;(2)指定ClassType、Offset、Limit用于列表操作,查询某一个类型db。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClassType (str) - DB种类,如果是列表操作,则需要指定,不区分大小写,其取值如下:mysql: SQL;mongo: NOSQL;postgresql: postgresql

  • +
  • DBId (str) - DB实例id,如果指定则获取单个db实例的描述,否则为列表操作。 指定DBId时无需填写ClassType、Offset、Limit

  • +
  • IncludeSlaves (bool) - 当只获取这个特定DBId的信息时,如果有该选项,那么把这个DBId实例的所有从库信息一起拉取并返回

  • +
  • IsInUDBC (bool) - 是否查看专区里面DB

  • +
  • Limit (int) - 分页显示数量,列表操作时必填

  • +
  • Offset (int) - 分页显示起始偏移位置,列表操作时必填

  • +
  • UDBCId (str) - IsInUDBC为True,UDBCId为空,说明查看整个可用区的专区的db,如果UDBId不为空则只查看此专区下面的db

  • +
  • Zone (str) - 可用区,不填时默认全部可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstanceSet 模型定义

  • +
  • TotalCount (int) - 用户db组的数量,对于 mysql: 主从结对数量,没有slave,则只有master mongodb: 副本集数量

  • +
+

Response Model

+

UDBInstanceSet +- AdminUser (str) - 管理员帐户名,默认root +- BackupBeginTime (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 +- BackupBlacklist (str) - 备份策略,备份黑名单,mongodb则不适用 +- BackupCount (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 +- BackupDate (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 +- BackupDuration (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 +- BackupZone (str) - 跨可用区高可用备库所在可用区 +- ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic +- ClusterRole (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 +- CreateTime (int) - DB实例创建时间,采用UTC计时时间戳 +- DBId (str) - DB实例id +- DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 +- DataFileSize (float) - DB实例数据文件大小,单位GB +- DataSet (list) - 见 UDBSlaveInstanceSet 模型定义 +- DiskSpace (int) - 磁盘空间(GB), 默认根据配置机型 +- DiskUsedSize (float) - DB实例磁盘已使用空间,单位GB +- ExpiredTime (int) - DB实例过期时间,采用UTC计时时间戳 +- IPv6Address (str) - 该实例的ipv6地址 +- InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 +- InstanceType (str) - UDB数据库机型 +- InstanceTypeId (int) - UDB数据库机型ID +- LogFileSize (float) - DB实例日志文件大小,单位GB +- MemoryLimit (int) - 内存限制(MB),默认根据配置机型 +- ModifyTime (int) - DB实例修改时间,采用UTC计时时间戳 +- Name (str) - 实例名称,至少6位 +- ParamGroupId (int) - DB实例使用的配置参数组id +- Port (int) - 端口号,mysql默认3306,mongodb默认27017 +- Role (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 +- SSDType (str) - SSD类型,SATA/PCI-E/NVMe +- SrcDBId (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id +- State (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 +- SubnetId (str) - 子网ID +- SystemFileSize (float) - DB实例系统文件大小,单位GB +- Tag (str) - 获取资源其他信息 +- UseSSD (bool) - 是否使用SSD +- UserUFileData (dict) - 见 UFileDataSet 模型定义 +- VPCId (str) - VPC的ID +- VirtualIP (str) - DB实例虚ip +- VirtualIPMac (str) - DB实例虚ip的mac地址 +- Zone (str) - DB实例所在可用区

+

UDBSlaveInstanceSet +- AdminUser (str) - 管理员帐户名,默认root +- BackupBeginTime (int) - 备份策略,不可修改,开始时间,单位小时计,默认3点 +- BackupBlacklist (str) - 备份策略,备份黑名单,mongodb则不适用 +- BackupCount (int) - 备份策略,不可修改,备份文件保留的数量,默认7次 +- BackupDate (str) - 备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 +- BackupDuration (int) - 备份策略,一天内备份时间间隔,单位小时,默认24小时 +- ChargeType (str) - Year, Month, Dynamic,Trial,默认: Dynamic +- ClusterRole (str) - 当DB类型为mongodb时,返回该实例所在集群中的角色,包括:mongos、configsrv_sccc、configsrv_csrs、shardsrv_datanode、shardsrv_arbiter,其中congfigsrv分为sccc和csrs两种模式,shardsrv分为datanode和arbiter两种模式 +- CreateTime (int) - DB实例创建时间,采用UTC计时时间戳 +- DBId (str) - DB实例id +- DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6 +- DataFileSize (float) - DB实例数据文件大小,单位GB +- DiskSpace (int) - 磁盘空间(GB), 默认根据配置机型 +- DiskUsedSize (float) - DB实例磁盘已使用空间,单位GB +- ExpiredTime (int) - DB实例过期时间,采用UTC计时时间戳 +- IPv6Address (str) - 获取该实例的IPv6地址 +- InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例;”HA”: 高可用版UDB实例 +- InstanceType (str) - UDB数据库机型 +- InstanceTypeId (int) - UDB数据库机型ID +- LogFileSize (float) - DB实例日志文件大小,单位GB +- MemoryLimit (int) - 内存限制(MB),默认根据配置机型 +- ModifyTime (int) - DB实例修改时间,采用UTC计时时间戳 +- Name (str) - 实例名称,至少6位 +- ParamGroupId (int) - DB实例使用的配置参数组id +- Port (int) - 端口号,mysql默认3306,mongodb默认27017 +- Role (str) - DB实例角色,mysql区分master/slave,mongodb多种角色 +- SSDType (str) - SSD类型,SATA/PCI-E +- SrcDBId (str) - 对mysql的slave而言是master的DBId,对master则为空, 对mongodb则是副本集id +- State (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 +- SubnetId (str) - 子网ID +- SystemFileSize (float) - DB实例系统文件大小,单位GB +- Tag (str) - 获取资源其他信息 +- UseSSD (bool) - 是否使用SSD +- VPCId (str) - VPC的ID +- VirtualIP (str) - DB实例虚ip +- VirtualIPMac (str) - DB实例虚ip的mac地址 +- Zone (str) - 可用区

+

UFileDataSet +- Bucket (str) - bucket名称 +- TokenID (str) - Ufile的令牌tokenid

+
+ +
+
+describe_udb_instance_backup_state(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceBackupState - 获取UDB实例备份状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 备份记录ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区,参见[可用区列表]

  • +
+

Response

+
    +
  • BackupEndTime (int) -

  • +
  • BackupSize (int) -

  • +
  • State (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期

  • +
+
+ +
+
+describe_udb_instance_backup_url(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceBackupURL - 获取UDB备份下载地址

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例备份ID,该值可以通过DescribeUDBBackup获取

  • +
  • DBId (str) - (Required) DB实例Id,该值可通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - DB实例备份文件公网的地址

  • +
  • InnerBackupPath (str) - DB实例备份文件内网的地址

  • +
+
+ +
+
+describe_udb_instance_binlog(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceBinlog - 获取UDB指定时间段的binlog列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BeginTime (int) - (Required) 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • EndTime (int) - (Required) 过滤条件:结束时间(时间戳)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstanceBinlogSet 模型定义

  • +
+

Response Model

+

UDBInstanceBinlogSet +- BeginTime (int) - Binlog文件生成时间(时间戳) +- EndTime (int) - Binlog文件结束时间(时间戳) +- Name (str) - Binlog文件名 +- Size (int) - Binlog文件大小

+
+ +
+
+describe_udb_instance_binlog_backup_state(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceBinlogBackupState - 获取udb实例备份状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) 备份记录ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用备库所在可用区

  • +
+

Response

+
    +
  • State (str) - 备份状态 0 Backuping // 备份中 1 Success // 备份成功 2 Failed // 备份失败 3 Expired // 备份过期

  • +
+
+ +
+
+describe_udb_instance_log(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceLog - 查询某一段时间内UDB的错误日志或慢查询日志

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BeginTime (int) - (Required) 查询的日志开始的时间戳(Unix Timestamp)。对于实时查询,这个参数应该是上次轮询请求时的时间戳,后台会返回从该值到当前时间的日志内容。

  • +
  • DBId (str) - (Required) 实例ID

  • +
  • EndTime (int) - (Required) 查询日志的结束时间戳(Unix Timestamp),对于实时查询不传该值,与BeginTime的差值不超过24小时:(EndTime-BeginTime) < 24*60*60

  • +
  • LogType (str) - (Required) 查询日志的类型error:错误日志;slow:慢日志

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Log (str) - 查询到的日志内容,一段纯文本

  • +
  • NextTime (str) - 此次查询到的日志的下一个时间,用于下一次轮询时的BeginTime参数;如果日志查询结束则返回为空,前端结束查询

  • +
+
+ +
+
+describe_udb_instance_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstancePrice - 获取UDB实例价格信息

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBTypeId (str) - (Required) UDB实例的DB版本字符串

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB),暂时支持20(GB) - 3000(GB), 输入不带单位

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),单位为MB.目前支持:1000-96000

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year,按年付费; Month,按月付费 Dynamic,按需付费(需开启权限) Trial,试用(需开启权限)默认为月付

  • +
  • Count (int) - 购买DB实例数量,最大数量为10台, 默认为1台

  • +
  • InstanceMode (str) - 实例的部署类型。可选值为:Normal: 普通单点实例,Slave: 从库实例,HA: 高可用部署实例,默认是Normal

  • +
  • Quantity (int) - DB购买多少个”计费时间单位”,默认值为1。比如:买2个月,Quantity就是2。如果计费单位是“按月”,并且Quantity为0,表示“购买到月底”

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必填

  • +
  • UseSSD (str) - 是否使用SSD,只能填true或false,默认为false

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBInstancePriceSet 模型定义

  • +
+

Response Model

+

UDBInstancePriceSet +- ChargeType (str) - Year, Month, Dynamic,Trial +- Price (int) - 价格,单位为分

+
+ +
+
+describe_udb_instance_state(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceState - 获取UDB实例状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • State (str) - DB状态标记 Init:初始化中;Fail:安装失败; Starting:启动中; Running : 运行 ;Shutdown:关闭中; Shutoff :已关闭; Delete:已删除; Upgrading:升级中; Promoting: 提升为独库进行中; Recovering: 恢复中; Recover fail:恢复失败。

  • +
+
+ +
+
+describe_udb_instance_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBInstanceUpgradePrice - 获取UDB实例升降级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G - 500G

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB)

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”,如果UseSSD为true ,则必选

  • +
  • UseSSD (bool) - 是否使用SSD,默认为false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (int) - 价格,单位为分

  • +
+
+ +
+
+describe_udb_log_backup_url(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBLogBackupURL - 获取UDB的slowlog备份地址

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (int) - (Required) DB实例备份ID

  • +
  • DBId (str) - (Required) DB实例Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - 备份外网URL

  • +
  • UsernetPath (str) - 备份用户网URL

  • +
+
+ +
+
+describe_udb_log_package(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBLogPackage - 列表UDB实例binlog或slowlog或errorlog备份信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - (Required) 分页显示的起始偏移,列表操作则指定

  • +
  • BeginTime (int) - 过滤条件:起始时间(时间戳)

  • +
  • DBId (str) - DB实例Id,如果指定,则只获取该db的备份信息

  • +
  • EndTime (int) - 过滤条件:结束时间(时间戳)

  • +
  • Type (int) - 需要列出的备份文件类型,每种文件的值如下 2 : BINLOG_BACKUP 3 : SLOW_QUERY_BACKUP 4 : ERRORLOG_BACKUP

  • +
  • Types (list) - Types作为Type的补充,支持多值传入,可以获取多个类型的日志记录,如:Types.0=2&Types.1=3

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 LogPackageDataSet 模型定义

  • +
  • TotalCount (int) - 备份总数,如果指定dbid,则是该db备份总数

  • +
+

Response Model

+

LogPackageDataSet +- BackupId (int) - 备份id +- BackupName (str) - 备份名称 +- BackupSize (int) - 备份文件大小 +- BackupTime (int) - 备份时间 +- BackupType (int) - 备份类型,包括2-binlog备份,3-slowlog备份 +- BackupZone (str) - 跨可用区高可用备库所在可用区 +- DBId (str) - dbid +- DBName (str) - 对应的db名称 +- State (str) - 备份状态 Backuping // 备份中 Success // 备份成功 Failed // 备份失败 Expired // 备份过期 +- Zone (str) - 所在可用区

+
+ +
+
+describe_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBParamGroup - 获取参数组详细参数信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClassType (str) - 如果未指定GroupId,则可选是否选取特定DB类型的配置(sql, nosql, postgresql, sqlserver)

  • +
  • GroupId (int) - 参数组id,如果指定则获取描述,否则是列表操作,需要 指定Offset/Limit

  • +
  • IsInUDBC (bool) - 是否选取专区中配置

  • +
  • Limit (int) - 分页显示的条目数,列表操作则指定

  • +
  • Offset (int) - 分页显示的起始偏移,列表操作则指定

  • +
  • RegionFlag (bool) - 当请求没有填写Zone时,如果指定为true,表示只拉取跨可用区的相关配置文件,否则,拉取所有机房的配置文件(包括每个单可用区和跨可用区)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBParamGroupSet 模型定义

  • +
  • TotalCount (int) - 参数组总数,列表操作时才会有该参数

  • +
+

Response Model

+

UDBParamGroupSet +- DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id 目前id的取值范围为[1,7],数值对应的版本如下 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6 7:percona-5.6 +- Description (str) - 参数组描述 +- GroupId (int) - 参数组id +- GroupName (str) - 参数组名称 +- Modifiable (bool) - 参数组是否可修改 +- ParamMember (list) - 见 UDBParamMemberSet 模型定义 +- RegionFlag (bool) - +- Zone (str) -

+

UDBParamMemberSet +- AllowedVal (str) - 允许的值(根据参数类型,用分隔符表示) +- ApplyType (int) - 参数值应用类型,取值范围为{0,10,20},各值代表 意义为0-unknown、10-static、20-dynamic +- FormatType (int) - 允许值的格式类型,取值范围为{0,10,20},意义分 别为PVFT_UNKOWN=0,PVFT_RANGE=10, PVFT_ENUM=20 +- Key (str) - 参数名称 +- Modifiable (bool) - 是否可更改,默认为false +- Value (str) - 参数值 +- ValueType (int) - 参数值应用类型,取值范围为{0,10,20,30},各值 代表意义为 0-unknown、10-int、20-string、 30-bool

+
+ +
+
+describe_udb_splitting_info(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBSplittingInfo - 描述读写分离功能的详细信息

+

Request

+ +

Response

+
    +
  • DBTypeId (str) - 数据库版本

  • +
  • DataSet (list) - 见 UDBRWSplittingSet 模型定义

  • +
  • DelayThreshold (int) - 时间阈值

  • +
  • MasterDBId (str) - DB实例ID

  • +
  • Port (int) - 端口号

  • +
  • RWIP (str) - 读写分离IP

  • +
  • RWState (str) - 读写分离状态

  • +
  • ReadModel (str) - 读写分离策略

  • +
  • Zone (str) - 可用区

  • +
+

Response Model

+

UDBRWSplittingSet +- DBId (str) - DB实例ID +- ReadWeight (int) - 读写分离比重 +- Role (str) - 主库/从库 +- State (str) - DB状态 +- VirtualIP (str) - DBIP

+
+ +
+
+describe_udb_type(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDBType - 获取UDB支持的类型信息

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 跨可用区高可用DB的备库所在区域,仅当该可用区支持跨可用区高可用时填入。参见 可用区列表

  • +
  • CompatibleWithDBType (str) - 返回从备份创建实例时,该版本号所支持的备份创建版本。如果没传,则表示不是从备份创建。

  • +
  • DBClusterType (str) - DB实例类型,如mysql,sqlserver,mongo,postgresql

  • +
  • DiskType (str) - 返回支持某种磁盘类型的DB类型,如Normal、SSD、NVMe_SSD。如果没传,则表示任何磁盘类型均可。

  • +
  • InstanceMode (str) - 返回支持某种实例类型的DB类型。如果没传,则表示任何实例类型均可。normal:单点,ha:高可用,sharded_cluster:分片集群

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDBTypeSet 模型定义

  • +
+

Response Model

+

UDBTypeSet +- DBTypeId (str) - DB类型id,mysql/mongodb按版本细分各有一个id, 目前id的取值范围为[1,7],数值对应的版本如下: 1:mysql-5.5,2:mysql-5.1,3:percona-5.5 4:mongodb-2.4,5:mongodb-2.6,6:mysql-5.6, 7:percona-5.6

+
+ +
+
+disable_udb_rw_splitting(req: Optional[dict] = None, **kwargs) dict[source]
+

DisableUDBRWSplitting - 关闭DB的读写分离功能

+

Request

+ +

Response

+
+ +
+
+edit_udb_backup_blacklist(req: Optional[dict] = None, **kwargs) dict[source]
+

EditUDBBackupBlacklist - 编辑UDB实例的备份黑名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Blacklist (str) - (Required) 黑名单,规范示例,指定库mysql.%;test.%; 指定表city.address;

  • +
  • DBId (str) - (Required) DB实例Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+enable_udb_rw_splitting(req: Optional[dict] = None, **kwargs) dict[source]
+

EnableUDBRWSplitting - 开启DB的读写分离功能

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • MasterDBId (str) - (Required) DB实例ID(主库)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BackupZone (str) - 备份的可用区。用于创建跨可用区读写分离的一个节点,跨机房的读写分离必须有这个参数

  • +
+

Response

+
    +
  • MasterDBId (str) - DB实例ID(主库)

  • +
  • RWIp (str) - 读写分离访问IP

  • +
+
+ +
+
+extract_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ExtractUDBParamGroup - 获取配置文件内容

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (int) - (Required) 配置id

  • +
  • RegionFlag (bool) - 是否跨可用区,RegionFlag为true时表示跨可用区配置文件。如果RegionFlag=true,Zone可以不传,否则Zone必须传。

  • +
  • Zone (str) - 可用区。如果RegionFlag=false,必须传,反之,可不传。参见 可用区列表

  • +
+

Response

+
    +
  • Content (str) - 配置文件内容

  • +
+
+ +
+
+fetch_udb_instance_earliest_recover_time(req: Optional[dict] = None, **kwargs) dict[source]
+

FetchUDBInstanceEarliestRecoverTime - 获取UDB最早可回档的时间点

+

Request

+ +

Response

+
    +
  • EarliestTime (int) - 获取最早可回档时间点

  • +
+
+ +
+
+get_udb_client_conn_num(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDBClientConnNum - 输入一个DBID,能够获取客户端来源IP以及对应的连接数

+

Request

+ +

Response

+
    +
  • DataSet (list) - 见 ConnNumMap 模型定义

  • +
+

Response Model

+

ConnNumMap +- Ip (str) - 客户端IP +- Num (int) - 该Ip连接数

+
+ +
+
+modify_udb_instance_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUDBInstanceName - 重命名UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Name (str) - (Required) 实例的新名字, 长度要求为6~63位

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+modify_udb_instance_password(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUDBInstancePassword - 修改DB实例的管理员密码

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的ID,该值可以通过DescribeUDBInstance获取

  • +
  • Password (str) - (Required) 实例的新密码

  • +
  • AccountName (str) - sqlserver帐号,仅在sqlserver的情况下填该参数

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+promote_udb_instance_to_ha(req: Optional[dict] = None, **kwargs) dict[source]
+

PromoteUDBInstanceToHA - 普通db升级为高可用(只针对mysql5.5及以上版本SSD机型的实例) ,对于NVMe机型的单点升级高可用,虽然也能使用该操作再加上SwitchUDBInstanceToHA,但是更建议直接调用新的API接口(UpgradeUDBInstanceToHA)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
+

Response

+
+ +
+
+promote_udb_slave(req: Optional[dict] = None, **kwargs) dict[source]
+

PromoteUDBSlave - 从库提升为独立库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • IsForce (bool) - 是否强制(如果从库落后可能会禁止提升),默认false 如果落后情况下,强制提升丢失数据

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeUDBInstance - 修改(升级和降级)UDB实例的配置,包括内存和磁盘的配置,对于内存升级无需关闭实例,其他场景需要事先关闭实例。两套参数可以配置升降机:1.配置UseSSD和SSDType 2.配置InstanceType,不需要配置InstanceMode。这两套第二套参数的优先级更高

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id

  • +
  • DiskSpace (int) - (Required) 磁盘空间(GB), 暂时支持20G-32T

  • +
  • MemoryLimit (int) - (Required) 内存限制(MB),目前支持以下几档 1000M/2000M/4000M/ 6000M/8000M/ 12000M/16000M/ 24000M/32000M/ 48000M/64000M/96000M/128000M/192000M/256000M/320000M。

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • InstanceMode (str) - UDB实例模式类型, 可选值如下: “Normal”: 普通版UDB实例 “HA”: 高可用版UDB实例 默认是”Normal”

  • +
  • InstanceType (str) - UDB数据库机型: “Normal”: “标准机型” , “SATA_SSD”: “SSD机型” , “PCIE_SSD”: “SSD高性能机型” , “Normal_Volume”: “标准大容量机型”, “SATA_SSD_Volume”: “SSD大容量机型” , “PCIE_SSD_Volume”: “SSD高性能大容量机型”,“NVMe_SSD”:“快杰机型”

  • +
  • SSDType (str) - SSD类型,可选值为”SATA”、”PCI-E”、“NVMe”,如果UseSSD为true ,则必选

  • +
  • StartAfterUpgrade (bool) - DB关闭状态下升降级,升降级后是否启动DB,默认为false

  • +
  • UDBCId (str) - 专区的ID,如果有值表示专区中的DB配置升降级

  • +
  • UseSSD (bool) - 是否使用SSD,默认为true

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+restart_rw_splitting(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartRWSplitting - 读写分离中间件重启,对应docker重启,但是ip不变

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • MasterDBId (str) - (Required) 待关闭读写分离中间键ProxyId

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+restart_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartUDBInstance - 重启UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+set_udb_rw_splitting(req: Optional[dict] = None, **kwargs) dict[source]
+

SetUDBRWSplitting - 设置读写分离的模式

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBIds (list) - (Required) DBIds.0 代表UDB主节点, DBIds.1 到DBIds.n 代表1到N个从节点

  • +
  • MasterDBId (str) - (Required) DB实例ID(master)

  • +
  • ReadModel (str) - (Required) 读写分离策略

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DelayThreshold (int) - 时间阙值

  • +
  • ReadPercents (list) - udb主从节点的只读比例。ReadPercents.0代表主节点的只读比例,ReadPercents.1代表从节点1的读写比例, 以此类推

  • +
+

Response

+
+ +
+
+start_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUDBInstance - 启动UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+stop_udb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUDBInstance - 关闭UDB实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • ForceToKill (bool) - 是否使用强制手段关闭DB,默认是false

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+switch_udb_ha_to_sentinel(req: Optional[dict] = None, **kwargs) dict[source]
+

SwitchUDBHAToSentinel - UDB高可用实例从HAProxy版本升级为Sentinel版本(不带HAProxy)升级耗时5-10秒

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) UDB的实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ForceSwitch (bool) - 是否跳过预检查强制升级。

  • +
+

Response

+
+ +
+
+switch_udb_instance_to_ha(req: Optional[dict] = None, **kwargs) dict[source]
+

SwitchUDBInstanceToHA - 普通UDB切换为高可用(只针对mysql5.5及以上版本SSD机型的实例) ,原db状态为WaitForSwitch时,调用该api; 对于NVMe机型的单点升级高可用,虽然也能使用PromoteUDBInstanceToHA再加上该操作,但是更建议直接调用新的API接口(UpgradeUDBInstanceToHA)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • ChargeType (str) - Year, Month, Dynamic,Trial,不填则按现在单点计费执行

  • +
  • Quantity (str) - 购买时长,需要和 ChargeType 搭配使用,否则使用单点计费策略的值

  • +
  • Tag (str) - 业务组

  • +
+

Response

+
    +
  • DBId (str) - 切换后高可用db实例的Id

  • +
+
+ +
+
+update_udb_instance_backup_strategy(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUDBInstanceBackupStrategy - 修改UDB自动备份策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 主节点的Id

  • +
  • BackupDate (str) - 备份时期标记位。共7位,每一位为一周中一天的备份情况,0表示关闭当天备份,1表示打开当天备份。最右边的一位为星期天的备份开关,其余从右到左依次为星期一到星期六的备份配置开关,每周必须至少设置两天备份。例如:1100000表示打开星期六和星期五的备份功能

  • +
  • BackupMethod (str) - 选择默认的备份方式,可选 snapshot 表示使用快照/物理备份,不填或者其它任何值为默认的逻辑备份。需要同时设置BackupDate字段。(注意现在只有SSD 版本的 MySQL实例支持物理备份)

  • +
  • BackupTime (int) - 备份的整点时间,范围[0,23]

  • +
  • ForceDump (bool) - 当导出某些数据遇到问题后,是否强制导出其他剩余数据默认是false需要同时设置BackupDate字段

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+update_udb_instance_slave_backup_switch(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUDBInstanceSlaveBackupSwitch - 开启或者关闭UDB从库备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupSwitch (int) - (Required) 从库的备份开关,范围[0,1],0表示从库备份功能关闭,1 表示从库备份开关打开。

  • +
  • MasterDBId (str) - (Required) 主库的Id

  • +
  • SlaveDBId (str) - 从库的Id,如果从库备份开关设定为打开,则必须赋值。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+update_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUDBParamGroup - 更新UDB配置参数项

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (int) - (Required) 配置参数组id,使用DescribeUDBParamGroup获得

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Description (str) - 配置文件的描述,不传时认为不修改

  • +
  • Key (str) - 参数名称(与Value配合使用)

  • +
  • Name (str) - 配置文件的名字,不传时认为不修改名字,传了则不能为空

  • +
  • RegionFlag (bool) - 该配置文件是否是地域级别配置文件,默认是false

  • +
  • Value (str) - 参数值(与Key配合使用)

  • +
+

Response

+
+ +
+
+upgrade_udb_instance_to_ha(req: Optional[dict] = None, **kwargs) dict[source]
+

UpgradeUDBInstanceToHA - 快杰普通db升级为高可用(只针对mysql5.5及以上版本Nvme机型的实例)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DBId (str) - (Required) 实例的Id,该值可以通过DescribeUDBInstance获取

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+upload_udb_param_group(req: Optional[dict] = None, **kwargs) dict[source]
+

UploadUDBParamGroup - 导入UDB配置

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Content (str) - (Required) 配置内容,导入的配置内容采用base64编码

  • +
  • DBTypeId (str) - (Required) DB类型id,DB类型id,mysql/mongodb/postgesql按版本细分 1:mysql-5.1,2:mysql-5.5,3:percona-5.5,4:mysql-5.6,5:percona-5.6,6:mysql-5.7,7:percona-5.7,8:mariadb-10.0,9:mongodb-2.4,10:mongodb-2.6,11:mongodb-3.0,12:mongodb-3.2,13:postgresql-9.4,14:postgresql-9.6

  • +
  • Description (str) - (Required) 参数组描述

  • +
  • GroupName (str) - (Required) 配置参数组名称

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • RegionFlag (bool) - 该配置文件是否是地域级别配置文件,默认是false

  • +
+

Response

+
    +
  • GroupId (int) - 配置参数组id

  • +
+
+ +
+ +
+
+

UDPN

+
+
+class ucloud.services.udpn.client.UDPNClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_udpn(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateUDPN - 分配一条 UDPN 专线

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽

  • +
  • Peer1 (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-ca, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • Peer2 (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-ca, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • ChargeType (str) - 计费类型,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费

  • +
  • CouponId (str) - 代金劵

  • +
  • PayMode (str) - 计费模式. 枚举值:”Traffic”, 流量计费模式; 否则 带宽计费模式;

  • +
  • Quantity (int) - 计费时长,默认 1

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • RetCode (int) - 返回码

  • +
  • UDPNId (str) - 资源名称

  • +
+
+ +
+
+describe_udpn(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDPN - 描述 UDPN

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度,默认为 20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为 0

  • +
  • UDPNId (str) - 申请到的 UDPN 资源 ID。若为空,则查询该用户在机房所有的专线信息。非默认项目资源,需填写ProjectId

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDPNData 模型定义

  • +
  • TotalCount (int) - 查询到的总数量

  • +
+

Response Model

+

UDPNData +- Bandwidth (int) - 带宽 +- ChargeType (str) - 计费类型 +- CreateTime (int) - unix 时间戳 创建时间 +- ExpireTime (int) - unix 时间戳 到期时间 +- Peer1 (str) - 可用区域 1 +- Peer2 (str) - 可用区域 2 +- UDPNId (str) - UDPN 资源短 ID

+
+ +
+
+get_udpn_line_list(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDPNLineList - 获取当前支持的专线线路列表

+

Request

+ +

Response

+
    +
  • DataSet (list) - 见 UDPNLineSet 模型定义

  • +
  • TotalCount (int) - DataSet中的元素个数

  • +
+

Response Model

+

UDPNLineSet +- BandwidthUpperLimit (int) - 线路带宽上限,单位 M +- LocalRegion (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky +- RemoteRegion (str) - 支持UDPN的地域之一,北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 华盛顿:us-ws, 洛杉矶:us-la, 东京:jpn-tky

+
+ +
+
+get_udpn_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDPNPrice - 获取 UDPN 价格

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽信息

  • +
  • Peer1 (str) - (Required) 专线可用区1,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • Peer2 (str) - (Required) 专线可用区2,支持地域:北京二:cn-bj2, 上海二:cn-sh2, 广东:cn-gd, 亚太: hk, 上海一:cn-sh1, 法兰克福:ge-fra, 新加坡:sg, 洛杉矶:us-la, 华盛顿:us-ws, 东京:jpn-tky

  • +
  • ChargeType (str) - 计费类型

  • +
  • PayMode (str) - PayMode,枚举值,Bandwidth:带宽;Traffic:流量 默认不填写:带宽

  • +
  • Quantity (int) - 购买时长

  • +
+

Response

+
    +
  • Price (float) - 专线价格

  • +
  • PurchaseValue (int) - 资源有效期 unix 时间戳

  • +
+
+ +
+
+get_udpn_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDPNUpgradePrice - 获取专线升级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽

  • +
  • UDPNId (str) - (Required) 专线带宽资源 Id

  • +
+

Response

+
    +
  • Price (float) - 升级后的价格

  • +
+
+ +
+
+modify_udpn_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUDPNBandwidth - 修改带宽值

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config)

  • +
  • Bandwidth (int) - (Required) 调整后专线带宽, 单位为Mbps,取值范围为大于等于2且小于等于1000([2-1000])的整数

  • +
  • UDPNId (str) - (Required) UDPN Id

  • +
  • CouponId (str) - 代金劵 ID

  • +
+

Response

+
+ +
+
+release_udpn(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseUDPN - 释放 UDPN

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDPNId (str) - (Required) UDPN 资源 Id

  • +
+

Response

+
+ +
+ +
+
+

UDisk

+
+
+class ucloud.services.udisk.client.UDiskClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+attach_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

AttachUDisk - 将一个可用的UDisk挂载到某台主机上,当UDisk挂载成功后,还需要在主机内部进行文件系统操作

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要挂载的UDisk实例ID.

  • +
  • HostId (str) - Host实例ID

  • +
  • MultiAttach (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes )

  • +
  • UHostId (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DeviceName (str) - 挂载的设备名称

  • +
  • HostId (str) - 挂载的Host实例ID

  • +
  • UDiskId (str) - 挂载的UDisk实例ID

  • +
  • UHostId (str) - 挂载的UHost实例ID。【即将废弃,建议使用HostId】

  • +
+
+ +
+
+clone_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

CloneUDisk - 从UDisk创建UDisk克隆

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • SourceId (str) - (Required) 克隆父Disk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay,Trial 默认: Month

  • +
  • Comment (str) - Disk注释

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • HostId (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • RdmaClusterId (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
    +
  • UDiskId (list) - 创建UDisk Id

  • +
+
+ +
+
+clone_udisk_snapshot(req: Optional[dict] = None, **kwargs) dict[source]
+

CloneUDiskSnapshot - 从快照创建UDisk克隆

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • SourceId (str) - (Required) 克隆父Snapshot的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay 默认: Dynamic

  • +
  • Comment (str) - Disk注释

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • HostId (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • RdmaClusterId (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。

  • +
  • Size (int) - 购买UDisk大小,单位:GB,范围[1~8000]。(UDisk大小设定对本地盘快照有效,对云盘快照无效)

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
    +
  • UDiskId (list) - 创建UDisk Id

  • +
+
+ +
+
+clone_udisk_udataark(req: Optional[dict] = None, **kwargs) dict[source]
+

CloneUDiskUDataArk - 从数据方舟的备份创建UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • SnapshotTime (int) - (Required) 指定从方舟克隆的备份时间点

  • +
  • UDiskId (str) - (Required) 需要克隆的源盘id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay 默认: Dynamic

  • +
  • Comment (str) - Disk注释

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • HostId (str) - Host实例ID。克隆出的云盘可直接挂载到该主机上。

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • RdmaClusterId (str) - 【已废弃】RDMA集群id。指定RSSD云盘克隆到对应的RDMA集群。

  • +
  • Size (int) - 购买UDisk大小,单位:GB,范围[1~8000]。(UDisk大小设定对本地盘备份有效,对云盘备份无效)

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
    +
  • UDiskId (list) - 创建UDisk Id

  • +
+
+ +
+
+create_attach_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateAttachUDisk - 创建并挂载UDisk磁盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000];高效数据盘:范围[1~32000]。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic, Postpay, Trial 。 Size小于等于2000时,默认为Dynamic;Size大于2000时,默认为Month。

  • +
  • CmkId (str) - 加密需要的cmk id,UKmsMode为Yes时,必填

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DiskType (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),默认值(DataDisk)

  • +
  • HostId (str) - Host实例ID。当创建云盘类型为RSSDDataDisk时,根据传入的HostId,创建与虚机在同一PodId下的云盘。

  • +
  • MultiAttach (str) - 是否允许多点挂载(Yes: 允许多点挂载, No: 不允许多点挂载, 不填默认Yes )

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
  • UHostId (str) - UHost实例ID。当创建云盘类型为RSSDDataDisk时,根据传入的UHostId,创建与虚机在同一PodId下的云盘。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】

  • +
  • UKmsMode (str) - 是否加密。Yes:加密,No:不加密,默认值(No)

  • +
+

Response

+
    +
  • DeviceName (str) - 挂载设备名称

  • +
  • HostId (str) - 挂载的Host实例ID

  • +
  • UDiskId (str) - 挂载的UDisk实例ID

  • +
  • UHostId (str) - 挂载的UHost实例ID。【即将废弃,建议使用HostId】

  • +
+
+ +
+
+create_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDisk - 创建UDisk磁盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 实例名称

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000];高效数据盘:范围[1~32000]。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic, Postpay, Trial 。默认为Dynamic。

  • +
  • CmkId (str) - 加密需要的cmk id,UKmsMode为Yes时,必填

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DiskType (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),默认值(DataDisk)

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • RdmaClusterId (str) - RDMA集群id。DiskType为RSSDDataDisk可填,指定云盘创建到对应的RDMA集群。

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
  • UKmsMode (str) - 是否加密。Yes:加密,No:不加密,默认值(No)

  • +
+

Response

+
    +
  • UDiskId (list) - UDisk实例Id

  • +
+
+ +
+
+create_udisk_snapshot(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDiskSnapshot - 创建snapshot快照

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 快照名称

  • +
  • UDiskId (str) - (Required) 快照的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic 默认: Dynamic (已废弃)

  • +
  • Comment (str) - 快照描述

  • +
  • Quantity (int) - 购买时长 默认: 1 (已废弃)

  • +
+

Response

+
    +
  • SnapshotId (list) - 快照Id

  • +
+
+ +
+
+delete_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDisk - 删除UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 要删除的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+delete_udisk_snapshot(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDiskSnapshot - 删除Snapshot

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • SnapshotId (str) - 快照Id(填写后不能填写UDisk Id)

  • +
  • UDiskId (str) - UDisk Id,删除该盘所创建出来的所有快照(填写后不能填写SnapshotId)

  • +
+

Response

+
+ +
+
+describe_recycle_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeRecycleUDisk - 拉取回收站中云硬盘列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 RecycleUDiskSet 模型定义

  • +
  • TotalCount (int) - 磁盘数量

  • +
+

Response Model

+

RecycleUDiskSet +- CountdownTime (int) - 销毁倒计时 +- CreateTime (int) - 创建时间 +- ExpiredTime (int) - 过期时间 +- Name (str) - 磁盘名称 +- Size (int) - 磁盘容量 +- Tag (str) - 业务组 +- UDiskId (str) - 磁盘id +- Zone (str) - 可用区

+
+ +
+
+describe_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDisk - 获取UDisk实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskType (str) - ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:”CLOUD_NORMAL”,IsBoot:”False”;普通系统盘:DiskType:”CLOUD_NORMAL”,IsBoot:”True”;SSD数据盘:DiskType:”CLOUD_SSD”,IsBoot:”False”;SSD系统盘:DiskType:”CLOUD_SSD”,IsBoot:”True”;RSSD数据盘:DiskType:”CLOUD_RSSD”,IsBoot:”False”;RSSD系统盘:DiskType:”CLOUD_RSSD”,IsBoot:”True”;高效数据盘:DiskType:”CLOUD_EFFICIENCY”,IsBoot:”False”;高效系统盘:DiskType:”CLOUD_EFFICIENCY”,IsBoot:”True”;为空拉取所有。ProtocolVersion字段为0或没有该字段时,可设为以下几个值:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;RSSD系统盘:RSSDSystemDisk:高效数据盘:EfficiencyDataDisk;高效系统盘:EfficiencySystemDisk;为空拉取所有。

  • +
  • HostId (str) - 根据传入的HostId,返回与该主机关联的云盘信息。

  • +
  • HostIdForAttachment (str) - 根据传入的HostIdForAttachment,筛选出能被挂载在该主机上的云盘。目前主要针对RSSD云盘。

  • +
  • HostProduct (str) - 宿主产品类型,可筛选挂载在该类型宿主上的云盘。可选值:uhost, uphost。为空拉取所有。(当HostIdForAttachment字段不为空时,该字段可以不填,若HostIdForAttachment与该字段宿主类型冲突,则以HostIdForAttachment字段为准。)

  • +
  • IgnoreBackupMode (str) - 是否忽略快照服务信息。Yes:忽略,No:不忽略,默认值(No)。(如不关心快照服务信息,建议选填“Yes”,可降低请求延时)

  • +
  • IgnoreUBillInfo (str) - 是否忽略计费信息。Yes:忽略,No:不忽略,默认值(No)。(如不关心账单信息,建议选填“Yes”,可降低请求延时)

  • +
  • IsBoot (str) - ProtocolVersion字段为1且DiskType不为空时,必须设置,设置规则请参照DiskType;ProtocolVersion字段为1且DiskType为空时,该字段无效。ProtocolVersion字段为0或没有该字段时,该字段无效。

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • ProtocolVersion (int) - 请求协议版本,建议升级为1,为1时DiskType与UHost磁盘类型定义一致;默认为0

  • +
  • UDiskBasicInfo (str) - 是否只返回云盘基础信息(只包含云盘及关联主机的资源信息)。Yes:是,No:否,默认值(No)。(如仅需要基础信息,建议选填“Yes”,可降低请求延时)

  • +
  • UDiskId (str) - UDisk Id(留空返回全部)

  • +
  • UHostIdForAttachment (str) - 根据传入的UHostIdForAttachment,筛选出能被挂载在该主机上的云盘【本字段即将废弃,建议使用HostIdForAttachment】

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskDataSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UDiskDataSet +- ArkSwitchEnable (int) - 是否支持开启方舟,1支持 ,0不支持 +- BackupMode (str) - 该盘的备份方式。快照服务:”SnapshotService”;数据方舟:”UDataArk”;无备份方式:”” +- ChargeType (str) - Year,Month,Dynamic,Trial,Postpay +- CloneEnable (int) - 是否支持克隆,1支持 ,0不支持 +- CmkId (str) - 该盘的cmk id +- CmkIdAlias (str) - cmk id 别名 +- CmkIdStatus (str) - 该盘cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) +- CreateTime (int) - 创建时间 +- DataKey (str) - 该盘的密文密钥 +- DeviceName (str) - 挂载的设备名称 +- DiskType (str) - 请求中的ProtocolVersion字段为1时,需结合IsBoot确定具体磁盘类型:普通数据盘:DiskType:”CLOUD_NORMAL”,IsBoot:”False”; 普通系统盘:DiskType:”CLOUD_NORMAL”,IsBoot:”True”;SSD数据盘:DiskType:”CLOUD_SSD”,IsBoot:”False”;SSD系统盘:DiskType:”CLOUD_SSD”,IsBoot:”True”;RSSD数据盘:DiskType:”CLOUD_RSSD”,IsBoot:”False”;RSSD系统盘:DiskType:”CLOUD_RSSD”,IsBoot:”True”;高效数据盘:DiskType:”CLOUD_EFFICIENCY”,IsBoot:”False”;高效系统盘:DiskType:”CLOUD_EFFICIENCY”,IsBoot:”True”。请求中的ProtocolVersion字段为0或没有该字段时,云硬盘类型参照如下:普通数据盘:DataDisk;普通系统盘:SystemDisk;SSD数据盘:SSDDataDisk;SSD系统盘:SSDSystemDisk;RSSD数据盘:RSSDDataDisk;RSSD系统盘:RSSDSystemDisk;高效数据盘:EfficiencyDataDisk;高效系统盘:EfficiencySystemDisk。 +- ExpiredTime (int) - 过期时间 +- HostIP (str) - 挂载的Host的IP +- HostId (str) - 挂载的Host的Id +- HostName (str) - 挂载的Host的Name +- IsBoot (str) - 是否是系统盘,是:”True”, 否:”False” +- IsExpire (str) - 资源是否过期,过期:”Yes”, 未过期:”No” +- Name (str) - 实例名称 +- RdmaClusterId (str) - RDMA集群id,仅RSSD返回该值;其他类型云盘返回””。当云盘的此值与快杰云主机的RdmaClusterId相同时,RSSD可以挂载到这台云主机。 +- Size (int) - 容量单位GB +- SnapEnable (int) - 是否支持快照,1支持 ,0不支持 +- SnapshotCount (int) - 该盘快照个数 +- SnapshotLimit (int) - 该盘快照上限 +- Status (str) - 状态:Available(可用),Attaching(挂载中), InUse(已挂载), Detaching(卸载中), Initializating(分配中), Failed(创建失败),Cloning(克隆中),Restoring(恢复中),RestoreFailed(恢复失败), +- Tag (str) - 业务组名称 +- UDataArkMode (str) - 是否开启数据方舟,开启:”Yes”, 不支持:”No” +- UDiskId (str) - UDisk实例Id +- UHostIP (str) - 挂载的UHost的IP。【即将废弃,建议使用HostIP】 +- UHostId (str) - 挂载的UHost的Id。【即将废弃,建议使用HostId】 +- UHostName (str) - 挂载的UHost的Name。【即将废弃,建议使用HostName】 +- UKmsMode (str) - 是否是加密盘,是:”Yes”, 否:”No” +- Version (str) - 是否支持数据方舟,支持:”2.0”, 不支持:”1.0” +- Zone (str) - 可用区

+
+ +
+
+describe_udisk_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDiskPrice - 获取UDisk实例价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];普通系统盘:范围[1~8000];SSD系统盘:范围[1~4000];RSSD数据盘:范围[1~32000];RSSD系统盘:范围[1~4000];高效数据盘:范围[1~32000];高效系统盘:范围[1~500]。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic,Postpay,Trial 默认: Month

  • +
  • DiskType (str) - UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDSystemDisk(RSSD系统盘),EfficiencySystemDisk(高效系统盘),默认值(DataDisk)

  • +
  • IsTotalPrice (str) - 是否将快照服务(数据方舟),云硬盘放入一张订单, 是:”Yes”,否:”No”,默认是”No”

  • +
  • MachineType (str) - 云主机机型(V2.0),枚举值[“N”, “C”, “G”, “O”, “OM”]。参考 云主机机型说明

  • +
  • Quantity (int) - 购买UDisk的时长,默认值为1

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskPriceDataSet 模型定义

  • +
+

Response Model

+

UDiskPriceDataSet +- ChargeName (str) - “UDataArk”,”SnapshotService”,”UDisk”,”Total” +- ChargeType (str) - Year, Month, Dynamic,Trial +- ListPrice (int) - 原价(对应计费OriginalPrice) +- OriginalPrice (int) - 用户折后价(对应计费CustomPrice) +- Price (int) - 实际价格 (单位: 分)

+
+ +
+
+describe_udisk_snapshot(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDiskSnapshot - 获取UDisk快照

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • SnapshotId (str) - 快照id,SnapshotId , UDiskId 同时传SnapshotId优先

  • +
  • UDiskId (str) - UDiskId,返回该盘所做快照.(必须同时传Zone)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDiskSnapshotSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UDiskSnapshotSet +- CmkId (str) - 该快照的cmk id +- CmkIdAlias (str) - cmk id 别名 +- CmkIdStatus (str) - 该快照cmk的状态, Enabled(正常),Disabled(失效),Deleted(删除),NoCmkId(非加密盘) +- Comment (str) - 快照描述 +- CreateTime (int) - 创建时间 +- DataKey (str) - 该快照的密文密钥 +- DiskType (int) - 磁盘类型,0:普通数据盘;1:普通系统盘;2:SSD数据盘;3:SSD系统盘;4:RSSD数据盘;5:RSSD系统盘。 +- ExpiredTime (int) - 过期时间 +- IsUDiskAvailable (bool) - 对应磁盘是否处于可用状态 +- Name (str) - 快照名称 +- Size (int) - 容量单位GB +- SnapshotId (str) - 快照Id +- Status (str) - 快照状态,Normal:正常,Failed:失败,Creating:制作中 +- UDiskId (str) - 快照的源UDisk的Id +- UDiskName (str) - 快照的源UDisk的Name +- UHostId (str) - 对应磁盘制作快照时所挂载的主机 +- UKmsMode (str) - 是否是加密盘快照,是:”Yes”, 否:”No” +- Version (str) - 快照版本 +- Zone (str) - 可用区

+
+ +
+
+describe_udisk_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDiskUpgradePrice - 获取UDisk升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UDisk大小,单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];普通系统盘:范围[1~8000];SSD系统盘:范围[1~4000];RSSD数据盘:范围[1~32000];RSSD系统盘:范围[1~4000];高效数据盘:范围[1~32000];高效系统盘:范围[1~500]。

  • +
  • SourceId (str) - (Required) 升级目标UDisk ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DiskType (str) - 【已废弃】UDisk 类型: DataDisk(普通数据盘),SSDDataDisk(SSD数据盘),RSSDDataDisk(RSSD数据盘),EfficiencyDataDisk(高效数据盘),SystemDisk(普通系统盘),SSDSystemDisk(SSD系统盘),RSSDSystemDisk(RSSD系统盘),EfficiencySystemDisk(高效系统盘),默认值(DataDisk)

  • +
  • MachineType (str) - 【已废弃】云主机机型(V2.0),枚举值[“N”, “C”, “G”, “O”, “OM”]。参考 云主机机型说明

  • +
  • SnapshotService (str) - 是否开启快照服务(开启快照服务,可免费开启数据方舟)。Yes:开启,No:不开启,默认值:No。仅支持查询开启快照服务的价格。

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
    +
  • OriginalPrice (int) - 用户折后价 (对应计费CustomPrice)

  • +
  • Price (int) - 价格

  • +
+
+ +
+
+detach_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

DetachUDisk - 卸载某个已经挂载在指定UHost实例上的UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要卸载的UDisk实例ID

  • +
  • HostId (str) - Host实例ID

  • +
  • UHostId (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • HostId (str) - 卸载的Host实例ID

  • +
  • UDiskId (str) - 卸载的UDisk实例ID

  • +
  • UHostId (str) - 卸载的UHost实例ID。【即将废弃,建议使用HostId】

  • +
+
+ +
+
+recover_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

RecoverUDisk - 从回收站中恢复云硬盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 云硬盘资源ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic 默认: Dynamic

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
+

Response

+
+ +
+
+rename_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

RenameUDisk - 重命名UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 重命名的UDisk的Id

  • +
  • UDiskName (str) - (Required) 重命名UDisk的name

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeUDisk - 调整UDisk容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 调整后大小, 单位:GB,普通数据盘:范围[1~8000];SSD数据盘:范围[1~8000];RSSD数据盘:范围[1~32000]。

  • +
  • UDiskId (str) - (Required) UDisk Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • MachineType (str) - 云主机机型(V2.0),枚举值[“N”, “C”, “G”, “O”, “OM”]。参考 云主机机型说明

  • +
+

Response

+
+ +
+
+restore_udisk(req: Optional[dict] = None, **kwargs) dict[source]
+

RestoreUDisk - 从备份恢复数据至UDisk

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要恢复的盘ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • SnapshotId (str) - 从指定的快照恢复

  • +
  • SnapshotTime (int) - 指定从方舟恢复的备份时间点

  • +
+

Response

+
+ +
+
+set_udisk_udataark_mode(req: Optional[dict] = None, **kwargs) dict[source]
+

SetUDiskUDataArkMode - 设置UDisk数据方舟的状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UDiskId (str) - (Required) 需要设置数据方舟的UDisk的Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • UDataArkMode (str) - 【开启数据方舟入口已关闭】是否开启数据方舟。Yes:开启,No:不开启,默认值:No

  • +
+

Response

+
+ +
+ +
+
+

UHost

+
+
+class ucloud.services.uhost.client.UHostClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+copy_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

CopyCustomImage - 复制自制镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SourceImageId (str) - (Required) 源镜像Id, 参见 DescribeImage

  • +
  • TargetProjectId (str) - (Required) 目标项目Id, 参见 GetProjectList

  • +
  • TargetImageDescription (str) - 目标镜像描述

  • +
  • TargetImageName (str) - 目标镜像名称

  • +
  • TargetRegion (str) - 目标地域,不跨地域不用填

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • TargetImageId (str) - 目标镜像Id

  • +
+
+ +
+
+create_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateCustomImage - 从指定UHost实例,生成自定义镜像。

+

Request

+ +

Response

+
    +
  • ImageId (str) - 镜像Id

  • +
+
+ +
+
+create_isolation_group(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateIsolationGroup - 创建硬件隔离组,组内机器严格隔离在不同宿主机上。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupName (str) - (Required) 硬件隔离组名称。请遵照 字段规范 设定隔离组名称。

  • +
  • Remark (str) - 备注。请遵照 字段规范 设定隔离组备注。

  • +
+

Response

+
    +
  • GroupId (str) - 硬件隔离组id

  • +
+
+ +
+
+create_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUHostInstance - 创建UHost实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - (Required) 镜像ID。 请通过 DescribeImage 获取

  • +
  • LoginMode (str) - (Required) 主机登陆模式。密码(默认选项): Password,密钥:KeyPair。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AlarmTemplateId (int) - 告警模板id,如果传了告警模板id,且告警模板id正确,则绑定告警模板。绑定告警模板失败只会在后台有日志,不会影响创建主机流程,也不会在前端报错。

  • +
  • AutoDataDiskInit (str) - 数据盘是否需要自动分区挂载。当镜像支持“Cloud-init”Feature时可填写此字段。取值 >“On” 自动挂载(默认值)> “Off” 不自动挂载。

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时预付费 > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) Preemptive计费为抢占式实例 默认为月付

  • +
  • CouponId (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看

  • +
  • Disks (list) - 见 CreateUHostInstanceParamDisks 模型定义

  • +
  • GPU (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关)

  • +
  • GpuType (str) - GPU类型,枚举值[“K80”, “P40”, “V100”, “T4”, “T4S”,”2080Ti”,”2080Ti-4C”,”1080Ti”],MachineType为G时必填

  • +
  • HotplugFeature (bool) - 热升级特性。True为开启,False为未开启,默认False。

  • +
  • IsolationGroup (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。

  • +
  • KeyPairId (str) - KeypairId 密钥对ID,LoginMode为KeyPair时此项必须

  • +
  • MachineType (str) - 云主机机型(V2.0),在本字段和字段UHostType中,仅需要其中1个字段即可。枚举值[“N”, “C”, “G”, “O”, “OS”, “OPRO”, “OMAX”, “O.BM”]。参考 云主机机型说明

  • +
  • MaxCount (int) - 本次最大创建主机数量,取值范围是[1,100],默认值为1。

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192

  • +
  • MinimalCpuPlatform (str) - 最低cpu平台,枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”;”Intel/CascadelakeR”; “Amd/Epyc2”,”Amd/Auto”],默认值是”Intel/Auto”。

  • +
  • Name (str) - UHost实例名称。默认:UHost。请遵照 字段规范 设定实例名称。

  • +
  • NetCapability (str) - 网络增强特性。枚举值:Normal(默认),不开启; Super,开启网络增强1.0; Ultra,开启网络增强2.0(仅支持部分可用区,请参考控制台)

  • +
  • NetworkInterface (list) - 见 CreateUHostInstanceParamNetworkInterface 模型定义

  • +
  • Password (str) - UHost密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。

  • +
  • PrivateIp (list) - 【数组】创建云主机时指定内网IP。若不传值,则随机分配当前子网下的IP。调用方式举例:PrivateIp.0=x.x.x.x。当前只支持一个内网IP。

  • +
  • Quantity (int) - 购买时长。默认:值 1。按小时购买(Dynamic/Postpay)时无需此参数。 月付时,此参数传0,代表购买至月末。

  • +
  • SecurityGroupId (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 DescribeFirewall

  • +
  • SubnetId (str) - 子网 ID。默认为当前地域的默认子网。

  • +
  • Tag (str) - 业务组。默认:Default(Default即为未分组)。请遵照 字段规范 设定业务组。

  • +
  • UHostType (str) - 【建议后续不再使用】云主机机型(V1.0),在本字段和字段MachineType中,仅需要其中1个字段即可。参考 云主机机型说明

  • +
  • UserData (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码

  • +
  • VPCId (str) - VPC ID。默认为当前地域的默认VPC。

  • +
+

Response

+
    +
  • IPs (list) - 【批量创建不会返回】IP信息

  • +
  • UHostIds (list) - UHost实例Id集合

  • +
+

Request Model

+

CreateUHostInstanceParamDisks +- BackupType (str) - 磁盘备份方案。枚举值:> NONE,无备份 > DATAARK,数据方舟 > SNAPSHOT(SNAPSHOT模式目前仅在上海C支持),快照 当前磁盘支持的备份模式参考 磁盘类型 ,默认值:NONE +- CouponId (str) - 云盘代金券id。不适用于系统盘/本地盘。请通过DescribeCoupon接口查询,或登录用户中心查看 +- Encrypted (bool) - 【功能仅部分可用区开放,详询技术支持】磁盘是否加密。加密:true, 不加密: false加密必须传入对应的的KmsKeyId,默认值false +- IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 +- KmsKeyId (str) - 【功能仅部分可用区开放,详询技术支持】kms key id。选择加密盘时必填。 +- Size (int) - 磁盘大小,单位GB,必须是10GB的整数倍。请参考 磁盘类型 。 +- Type (str) - 磁盘类型。请参考 磁盘类型

+

CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH +- Area (str) - 填写支持SSH访问IP的地区名称,如“洛杉矶”,“新加坡”,“香港”,“东京”,“华盛顿”,“法兰克福”。Area和AreaCode两者必填其中之一。 +- AreaCode (str) - GlobalSSH的地区编码,格式为区域航空港国际通用代码。Area和AreaCode两者必填其中之一。 +- Port (int) - SSH端口,1-65535且不能使用80,443端口

+

CreateUHostInstanceParamNetworkInterfaceEIP +- Bandwidth (int) - 【若绑定EIP,此参数必填】弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-800] +- CouponId (str) - 当前EIP代金券id。请通过DescribeCoupon接口查询,或登录用户中心查看。 +- GlobalSSH (dict) - 见 CreateUHostInstanceParamNetworkInterfaceEIPGlobalSSH 模型定义 +- OperatorName (str) - 【若绑定EIP,此参数必填】弹性IP的线路。枚举值: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International +- PayMode (str) - 弹性IP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; “ShareBandwidth”,共享带宽模式. “Free”:免费带宽模式,默认为 “Bandwidth” +- ShareBandwidthId (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效

+

CreateUHostInstanceParamNetworkInterfaceIPv6

+

CreateUHostInstanceParamNetworkInterface +- CreateCernetIp (bool) - 申请并绑定一个教育网EIP。True为申请并绑定,False为不会申请绑定,默认False。当前只支持具有HPC特性的机型。 +- EIP (dict) - 见 CreateUHostInstanceParamNetworkInterfaceEIP 模型定义

+

CreateUHostInstanceParamVirtualGpuGPUVirtualGpu

+

CreateUHostInstanceParamVirtualGpu

+

CreateUHostInstanceParamVolumes

+
+ +
+
+create_uhost_key_pair(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUHostKeyPair - 创建主机密钥对信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • KeyPairName (str) - (Required) 密钥对名称。 由字母,数字,符号组成,长度为1-63位。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • KeyPair (dict) - 见 KeyPair 模型定义

  • +
+

Response Model

+

KeyPair +- CreateTime (int) - 密钥对的创建时间,格式为Unix Timestamp。 +- KeyPairFingerPrint (str) - 密钥对指纹。md5(ProjectId|KeyPairId|PublicKey) +- KeyPairId (str) - 密钥对ID。 +- KeyPairName (str) - 密钥对名称。 长度为1~63个英文或中文字符。 +- PrivateKeyBody (str) - 密钥对的私钥内容。只有创建接口才会返回。 +- ProjectId (str) - 项目ID。

+
+ +
+
+delete_isolation_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteIsolationGroup - 删除硬件隔离组。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 硬件隔离组id

  • +
+

Response

+
    +
  • GroupId (str) - 硬件隔离组id

  • +
+
+ +
+
+delete_uhost_key_pairs(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUHostKeyPairs - 删除一对或者多对密钥对。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • KeyPairIds (list) - (Required) 密钥对ID,最多支持 100 对。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+describe_image(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeImage - 获取指定数据中心镜像列表,用户可通过指定操作系统类型,镜像Id进行过滤。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - 镜像Id

  • +
  • ImageType (str) - 镜像类型。标准镜像:Base,镜像市场:Business, 自定义镜像:Custom,默认返回所有类型

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • OsType (str) - 操作系统类型:Linux, Windows 默认返回所有类型

  • +
  • PriceSet (int) - 是否返回价格:1返回,0不返回;默认不返回

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • ImageSet (list) - 见 UHostImageSet 模型定义

  • +
  • RetCode (int) - 返回码

  • +
  • TotalCount (int) - 满足条件的镜像总数

  • +
+

Response Model

+

UHostImageSet +- CreateTime (int) - 创建时间,格式为Unix时间戳 +- Features (list) - 特殊状态标识, 目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra](网络增强2.0), HotPlug(热升级), CloudInit, IPv6 +- FuncType (str) - 行业镜像类型(仅行业镜像将返回这个值) +- ImageDescription (str) - 镜像描述 +- ImageId (str) - 镜像ID +- ImageName (str) - 镜像名称 +- ImageSize (int) - 镜像大小 +- ImageType (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom +- IntegratedSoftware (str) - 集成软件名称(仅行业镜像将返回这个值) +- Links (str) - 介绍链接(仅行业镜像将返回这个值) +- MinimalCPU (str) - 默认值为空’’’。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell” +- OsName (str) - 操作系统名称 +- OsType (str) - 操作系统类型:Linux,Windows +- State (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable +- Vendor (str) - 供应商(仅行业镜像将返回这个值) +- Zone (str) - 可用区,参见 可用区列表

+
+ +
+
+describe_isolation_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeIsolationGroup - 查询硬件隔离组列表。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 待查的硬件隔离组id

  • +
  • Limit (int) - 返回数据长度,默认为20,最大100

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • IsolationGroupSet (list) - 见 IsolationGroup 模型定义

  • +
  • TotalCount (int) - 硬件隔离组总数

  • +
+

Response Model

+

IsolationGroup +- GroupId (str) - 硬件隔离组id +- GroupName (str) - 硬件隔离组名称 +- Remark (str) - 备注 +- SpreadInfoSet (list) - 见 SpreadInfo 模型定义

+

SpreadInfo +- UHostCount (int) - 当前地域所有可用区中硬件隔离组中云主机的数量,不超过7。 +- Zone (str) - 可用区信息

+
+ +
+
+describe_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUHostInstance - 获取主机或主机列表信息,并可根据数据中心,主机ID等参数进行过滤。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • IsolationGroup (str) - 硬件隔离组id。通过硬件隔离组筛选主机。

  • +
  • Limit (int) - 返回数据长度,默认为20,最大100

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • SubnetId (str) - 子网id。通过子网筛选主机。北京一地域无效。

  • +
  • Tag (str) - 要查询的业务组名称

  • +
  • UDiskIdForAttachment (str) - 要挂载的云盘id,过滤返回能被UDiskId挂载的云主机。目前主要针对rssd云盘使用

  • +
  • UHostIds (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。

  • +
  • VPCId (str) - vpc id。通过VPC筛选主机。北京一地域无效。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • TotalCount (int) - UHostInstance总数

  • +
  • UHostSet (list) - 见 UHostInstanceSet 模型定义

  • +
+

Response Model

+

UHostInstanceSet +- AutoRenew (str) - 是否自动续费,自动续费:“Yes”,不自动续费:“No” +- BasicImageId (str) - 基础镜像ID(指当前自定义镜像的来源镜像) +- BasicImageName (str) - 基础镜像名称(指当前自定义镜像的来源镜像) +- BootDiskState (str) - 系统盘状态 Normal表示初始化完成;Initializing表示在初始化。仍在初始化的系统盘无法制作镜像。 +- CPU (int) - 虚拟CPU核数,单位: 个 +- ChargeType (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限);Preemptive 为抢占式实例; +- CloudInitFeature (bool) - true,支持cloutinit方式初始化;false,不支持 +- CpuPlatform (str) - 云主机CPU平台。参考 云主机机型说明 。 +- CreateTime (int) - 创建时间,格式为Unix时间戳 +- DiskSet (list) - 见 UHostDiskSet 模型定义 +- ExpireTime (int) - 到期时间,格式为Unix时间戳 +- GPU (int) - GPU个数 +- HostType (str) - 【建议不再使用】主机系列:N2,表示系列2;N1,表示系列1 +- HotplugFeature (bool) - true: 开启热升级; false,未开启热升级 +- HpcFeature (bool) - true: 开启 hpc 系列功能;false: 未开启 +- IPSet (list) - 见 UHostIPSet 模型定义 +- IPv6Feature (bool) - true:有ipv6特性;false,没有ipv6特性 +- ImageId (str) - 【建议不再使用】主机的系统盘ID。 +- IsolationGroup (str) - 隔离组id,不在隔离组则返回”” +- KeyPair (dict) - 见 UHostKeyPair 模型定义 +- LifeCycle (str) - 主机的生命周期类型。目前仅支持Normal:普通; +- MachineType (str) - 云主机机型(新)。参考 云主机机型说明 。 +- Memory (int) - 内存大小,单位: MB +- Name (str) - UHost实例名称 +- NetCapability (str) - 网络增强。Normal: 无;Super: 网络增强1.0; Ultra: 网络增强2.0 +- NetworkState (str) - 【建议不再使用】网络状态。 连接:Connected, 断开:NotConnected +- OsName (str) - 创建主机的最初来源镜像的操作系统名称(若直接通过基础镜像创建,此处返回和BasicImageName一致) +- OsType (str) - 操作系统类别。返回”Linux”或者”Windows” +- RdmaClusterId (str) - RDMA集群id,仅快杰云主机返回该值;其他类型云主机返回””。当云主机的此值与RSSD云盘的RdmaClusterId相同时,RSSD可以挂载到这台云主机。 +- Remark (str) - 备注 +- RestrictMode (str) - 仅抢占式实例返回,LowSpeed为低速模式,PowerOff为关机模式 +- State (str) - 实例状态,枚举值:>初始化: Initializing; >启动中: Starting; > 运行中: Running; > 关机中: Stopping; >关机: Stopped >安装失败: Install Fail; >重启中: Rebooting; > 未知(空字符串,获取状态超时或出错):”” +- StorageType (str) - 【建议不再使用】主机磁盘类型。 枚举值为:> LocalDisk,本地磁盘; > UDisk 云盘。只要有一块磁盘为本地盘,即返回LocalDisk。 +- SubnetType (str) - 【建议不再使用】仅北京A的云主机会返回此字段。基础网络模式:Default;子网模式:Private +- Tag (str) - 业务组名称 +- TimemachineFeature (str) - 【建议不再使用】数据方舟模式。枚举值:> Yes: 开启方舟; > no,未开启方舟 +- TotalDiskSpace (int) - 总的数据盘存储空间。 +- UHostId (str) - UHost实例ID +- UHostType (str) - 【建议不再使用】云主机机型(旧)。参考 云主机机型说明 。 +- Zone (str) - 可用区。参见 可用区列表

+

UHostDiskSet +- BackupType (str) - 备份方案。若开通了数据方舟,则为DATAARK +- DiskId (str) - 磁盘ID +- DiskType (str) - 磁盘类型。请参考 磁盘类型 。 +- Drive (str) - 磁盘盘符 +- Encrypted (str) - “true”: 加密盘 “false”:非加密盘 +- IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 +- Name (str) - UDisk名字(仅当磁盘是UDisk时返回) +- Size (int) - 磁盘大小,单位: GB +- Type (str) - 【建议不再使用】磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk

+

UHostIPSet +- Bandwidth (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) +- Default (str) - 内网 Private 类型下,表示是否为默认网卡。true: 是默认网卡;其他值:不是。 +- IP (str) - IP地址 +- IPId (str) - 外网IP资源ID 。(内网IP无对应的资源ID) +- IPMode (str) - IPv4/IPv6; +- Mac (str) - 内网 Private 类型下,当前网卡的Mac。 +- NetworkInterfaceId (str) - 弹性网卡为默认网卡时,返回对应的 ID 值 +- SubnetId (str) - IP地址对应的子网 ID。(北京一不支持,字段返回为空) +- Type (str) - 国际: Internation,BGP: Bgp,内网: Private +- VPCId (str) - IP地址对应的VPC ID。(北京一不支持,字段返回为空) +- Weight (int) - 当前EIP的权重。权重最大的为当前的出口IP。

+

UHostKeyPair +- KeyPairId (str) - 密钥对ID +- KeyPairState (str) - 主机密钥对状态,Normal 正常,Deleted 删除

+
+ +
+
+describe_uhost_instance_snapshot(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUHostInstanceSnapshot -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • Region (str) - (Config)

  • +
  • UHostId (str) - (Required)

  • +
  • Zone (str) -

  • +
+

Response

+
    +
  • SnapshotSet (list) - 见 UHostSnapshotSet 模型定义

  • +
  • UhostId (str) -

  • +
+

Response Model

+

UHostSnapshotSet +- SnapshotName (str) - +- SnapshotState (str) - +- SnapshotTime (str) -

+
+ +
+
+describe_uhost_key_pairs(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUHostKeyPairs - 查询一个或多个密钥对。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • KeyPairFingerPrint (str) - 密钥对的指纹。

  • +
  • KeyPairName (str) - 密钥对名称。

  • +
  • Limit (int) - 返回数据长度,默认为20,最大100

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • KeyPairs (list) - 见 KeyPairDesc 模型定义

  • +
  • TotalCount (int) - 密钥对总数

  • +
+

Response Model

+

KeyPairDesc +- CreateTime (int) - 密钥对的创建时间,格式为Unix Timestamp。 +- KeyPairFingerPrint (str) - 密钥对指纹。md5(ProjectId|KeyPairId|PublicKey) +- KeyPairId (str) - 密钥对ID。 +- KeyPairName (str) - 密钥对名称。 长度为1~63个英文或中文字符。 +- ProjectId (str) - 项目ID。

+
+ +
+
+describe_uhost_tags(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUHostTags - 获取指定数据中心的业务组列表。

+

Request

+ +

Response

+
    +
  • TagSet (list) - 见 UHostTagSet 模型定义

  • +
  • TotalCount (int) - 已有主机的业务组总数

  • +
+

Response Model

+

UHostTagSet +- Tag (str) - 业务组名称 +- TotalCount (int) - 该业务组中包含的主机个数 +- Zone (str) - 可用区

+
+ +
+
+get_attached_disk_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAttachedDiskUpgradePrice - 获取挂载磁盘的升级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskId (str) - (Required) 磁盘ID。参见 DescribeUHostInstance 返回值中的DiskSet。

  • +
  • DiskSpace (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 磁盘类型

  • +
  • UHostId (str) - (Required) UHost实例ID。 参见 DescribeUHostInstance

  • +
  • BackupMode (str) - 磁盘备份方案。枚举值:> NONE,无备份 > DATAARK,数据方舟 > SNAPSHOT(SNAPSHOT模式目前仅在上海C支持),快照 当前磁盘支持的备份模式参考 磁盘类型 。默认值为当前的备份模式。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (float) - 升级差价。精度为小数点后2位。

  • +
+
+ +
+
+get_uhost_instance_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUHostInstancePrice - 根据UHost实例配置,获取UHost实例的价格。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CPU (int) - (Required) CPU核数。可选参数:1-64。可选范围参照控制台。默认值: 4

  • +
  • Count (int) - (Required) 购买台数,范围[1,5]

  • +
  • Memory (int) - (Required) 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参照好控制台)。默认值:8192

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时付费 // >Preemptive 抢占式实例 如果不传某个枚举值,默认返回年付、月付、时付的价格组合集。

  • +
  • CpuPlatform (str) - 取值”Intel” “Amd”,默认值“Intel”

  • +
  • Disks (list) - 见 GetUHostInstancePriceParamDisks 模型定义

  • +
  • GPU (int) - GPU卡核心数。仅GPU机型支持此字段。

  • +
  • GpuType (str) - GPU类型,枚举值[“K80”, “P40”, “V100”, “T4”,”T4S”,”2080Ti”,”2080Ti-4C”,”1080Ti”]

  • +
  • ImageId (str) - 镜像Id,可通过 DescribeImage 获取镜像ID, 如果镜像ID不传,系统盘大小必传

  • +
  • MachineType (str) - 云主机机型(V2版本概念)。枚举值[“N”, “C”, “G”, “O”, “OS”, “OPRO”, “OMAX”, “O.BM”]。参考 云主机机型说明

  • +
  • NetCapability (str) - 网络增强。枚举值:Normal,不开启; Super,开启网络增强1.0。 默认值为Normal。

  • +
  • Quantity (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。

  • +
  • UHostType (str) - 【待废弃】云主机机型(V1版本概念)。参考 云主机机型说明

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PriceSet (list) - 见 UHostPriceSet 模型定义

  • +
+

Request Model

+

GetUHostInstancePriceParamDisks +- BackupType (str) - 磁盘备份方案。枚举值:> NONE,无备份 > DATAARK,数据方舟 > SNAPSHOT,快照当前磁盘支持的备份模式参考 磁盘类型 +- IsBoot (str) - 是否是系统盘。枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 +- Size (int) - 磁盘大小,单位GB。请参考 磁盘类型 。 +- Type (str) - 磁盘类型。请参考 磁盘类型

+

GetUHostInstancePriceParamVolumes

+

GetUHostInstancePriceParamVirtualGpu

+

Response Model

+

UHostPriceSet +- ChargeType (str) - 计费类型。Year,Month,Dynamic +- ListPrice (float) - 产品列表价。 +- OriginalPrice (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价)。 +- Price (float) - 价格,单位: 元,保留小数点后两位有效数字

+
+ +
+
+get_uhost_instance_vnc_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUHostInstanceVncInfo - 获取指定UHost实例的管理VNC配置详细信息。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
  • VncIP (str) - Vnc登录IP

  • +
  • VncPassword (str) - Vnc 登录密码

  • +
  • VncPort (int) - Vnc登录端口

  • +
+
+ +
+
+get_uhost_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUHostUpgradePrice - 获取UHost实例升级配置的价格。可选配置范围请参考 云主机机型说明

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例ID。 参见 DescribeUHostInstance

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-64(可选范围参考控制台)。默认值为当前实例的CPU核数。

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值为当前实例的内存大小。

  • +
  • NetCapValue (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • OriginalPrice (float) - 限时优惠的折前原价

  • +
  • Price (float) - 规格调整差价。精确到小数点后2位。

  • +
+
+ +
+
+import_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

ImportCustomImage - 把UFile的镜像文件导入到UHost,生成自定义镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Auth (bool) - (Required) 是否授权。必须填true

  • +
  • Format (str) - (Required) 镜像格式,可选RAW、VHD、VMDK、qcow2

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • OsName (str) - (Required) 操作系统详细版本,请参考控制台的镜像版本;OsType为Other时,输入参数为Other

  • +
  • OsType (str) - (Required) 操作系统平台,比如CentOS、Ubuntu、Windows、RedHat等,请参考控制台的镜像版本;若导入控制台上没有的操作系统,参数为Other

  • +
  • UFileUrl (str) - (Required) UFile私有空间地址

  • +
  • ImageDescription (str) - 镜像描述

  • +
+

Response

+
    +
  • ImageId (str) - 镜像Id

  • +
+
+ +
+
+import_uhost_key_pairs(req: Optional[dict] = None, **kwargs) dict[source]
+

ImportUHostKeyPairs - 导入密钥对后,仅保管公钥部分,需自行妥善保存密钥对的私钥部分。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • KeyPairName (str) - (Required) 密钥对名称。由字母,数字,符号组成,长度为1-63位。

  • +
  • PublicKeyBody (str) - (Required) 密钥对的公钥内容。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • KeyPairFingerPrint (str) - 密钥对指纹。根据RFC4716定义的公钥指纹格式,采用MD5信息摘要算法。算法处理的具体信息格式:ProjectIdKeyPairId|PublicKeyBody

  • +
  • KeyPairId (str) - 密钥对标识

  • +
  • KeyPairName (str) - 密钥对名称

  • +
+
+ +
+
+leave_isolation_group(req: Optional[dict] = None, **kwargs) dict[source]
+

LeaveIsolationGroup - 移除硬件隔离组中的主机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 硬件隔离组id

  • +
  • UHostId (str) - (Required) 主机id

  • +
  • Zone (str) - 可用区信息

  • +
+

Response

+
    +
  • UHostId (str) - 主机id

  • +
+
+ +
+
+modify_uhost_instance_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUHostInstanceName - 修改指定UHost实例名称,需要给出数据中心,UHostId,及新的实例名称。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+modify_uhost_instance_remark(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUHostInstanceRemark - 修改指定UHost实例备注信息。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+modify_uhost_instance_tag(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUHostInstanceTag - 修改指定UHost实例业务组标识。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+modify_uhost_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUHostIP - 修改云主机内网 IP 地址

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写时为默认项目。请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PresentIpAddress (str) - (Required) 需要修改为的 IP 地址。新的IP地址和旧IP地址必须属于统一子网,且和主机内部的配置文件一致。

  • +
  • UHostId (str) - (Required) 指定云主机 ID。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • PreviousIpAddress (str) - 所需修改的原 IP 地址 ,当云主机只有一个IP地址时,此参数不必填写。

  • +
+

Response

+
    +
  • Message (str) - 输出错误的信息

  • +
  • UHostId (str) - 目标云主机 ID

  • +
+
+ +
+
+poweroff_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

PoweroffUHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost的实例ID

  • +
+
+ +
+
+reboot_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

RebootUHostInstance - 重新启动UHost实例,需要指定数据中心及UHostID两个参数的值。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+reinstall_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

ReinstallUHostInstance - 重新安装指定UHost实例的操作系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例资源ID 参见 DescribeUHostInstance

  • +
  • AutoDataDiskInit (str) - 数据盘是否需要自动分区挂载。当镜像支持Cloud-init Feature时可填写此字段。取值“On”(默认值), “Off”

  • +
  • BootDiskSpace (int) - 系统盘大小。 单位:GB, 范围[20,100], 步长:10

  • +
  • ImageId (str) - 镜像Id,默认使用原镜像 参见 DescribeImage

  • +
  • KeyPairId (str) - KeypairId 密钥对ID,LoginMode为KeyPair时此项必须。

  • +
  • LoginMode (str) - 主机登陆模式。密码(默认选项): Password,密钥 KeyPair。

  • +
  • Password (str) - 如果重装UHost实例时LoginMode为Password,则必须填写,如果LoginMode为KeyPair,不需要填写 (密码格式使用BASE64编码;举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。)

  • +
  • ReserveDisk (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes;如果是从Windows重装为Linux或反之,则无法保留数据盘(该参数目前仅对本地数据盘起作用)

  • +
  • UserData (str) - cloudinit初始化使用。注意:1、总数据量大小不超多16K 2、使用base64编码

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UHostId (str) - UHost实例资源ID

  • +
+
+ +
+
+reset_uhost_instance_password(req: Optional[dict] = None, **kwargs) dict[source]
+

ResetUHostInstancePassword - 重置UHost实例的管理员密码。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Password (str) - (Required) UHost新密码(密码格式使用BASE64编码)

  • +
  • UHostId (str) - (Required) UHost实例ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+resize_attached_disk(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeAttachedDisk - 修改挂载的磁盘大小,包含系统盘和数据盘

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskId (str) - (Required) 磁盘ID。参见 DescribeUHostInstance 返回值中的DiskSet。

  • +
  • DiskSpace (int) - (Required) 磁盘大小,单位GB,步长为10。取值范围需大于当前磁盘大小,最大值请参考 磁盘类型

  • +
  • UHostId (str) - (Required) UHost实例ID。 参见 DescribeUHostInstance

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DryRun (bool) - 用于测试磁盘是否支持在线扩容。DryRun=true,不会执行实际操作,只会返回操作的预期结果。DryRun = false ,正常执行扩容操作。

  • +
+

Response

+
    +
  • DiskId (str) - 改配成功的磁盘id

  • +
  • NeedRestart (bool) - 扩容后的状态。NeedRestart = true,必须关闭后启动实例才能使用扩容的磁盘空间。NeedRestart = false,磁盘扩容后无需重启操作。

  • +
+
+ +
+
+resize_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeUHostInstance - 修改指定UHost实例的资源配置,如CPU核心数,内存容量大小,网络增强等。可选配置范围请参考 云主机机型说明

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost实例ID 参见 DescribeUHostInstance

  • +
  • CPU (int) - 虚拟CPU核数。可选参数:1-240(可选范围与UHostType相关)。默认值为当前实例的CPU核数

  • +
  • Memory (int) - 内存大小。单位:MB。范围 :[1024, 1966080],取值为1024的倍数(可选范围与UHostType相关)。默认值为当前实例的内存大小。

  • +
  • NetCapValue (int) - 网卡升降级(1,表示升级,2表示降级,0表示不变)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+start_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUHostInstance - 启动处于关闭状态的UHost实例,需要指定数据中心及UHostID两个参数的值。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+stop_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUHostInstance - 指停止处于运行状态的UHost实例,需指定数据中心及UhostID。

+

Request

+ +

Response

+
    +
  • UHostId (str) - UHost实例ID

  • +
+
+ +
+
+terminate_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminateCustomImage - 删除用户自定义镜像

+

Request

+ +

Response

+
    +
  • ImageId (str) - 自制镜像Id

  • +
+
+ +
+
+terminate_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminateUHostInstance - 删除指定数据中心的UHost实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostId (str) - (Required) UHost资源Id 参见 DescribeUHostInstance

  • +
  • ReleaseEIP (bool) - 删除主机时是否释放绑定的EIP。默认为false。

  • +
  • ReleaseUDisk (bool) - 删除主机时是否同时删除挂载的数据盘。默认为false。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • InRecycle (str) - 用于判断主机删除时是否进入回收站。放入回收站:”Yes”, 彻底删除:“No”。

  • +
  • UHostId (str) - UHost 实例 Id

  • +
+
+ +
+
+upgrade_to_ark_uhost_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

UpgradeToArkUHostInstance - 普通升级为方舟机型

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UHostIds (list) - (Required) UHost主机的资源ID,例如UHostIds.0代表希望升级的主机1,UHostIds.1代表主机2。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 代金券ID 请参考DescribeCoupon接口

  • +
+

Response

+
    +
  • UHostSet (list) - UHost主机的资源ID数组

  • +
+
+ +
+ +
+
+

ULB

+
+
+class ucloud.services.ulb.client.ULBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_backend(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateBackend - 添加ULB后端资源实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ResourceId (str) - (Required) 所添加的后端资源的资源ID

  • +
  • ResourceType (str) - (Required) 所添加的后端资源的类型,枚举值:UHost -> 云主机;UNI -> 虚拟网卡;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;默认值为UHost。报文转发模式不支持UDocker、UHybrid、CUBE

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • VServerId (str) - (Required) VServer实例的ID

  • +
  • Enabled (int) - 后端实例状态开关,枚举值: 1:启用; 0:禁用 默认为启用

  • +
  • IsBackup (int) - rs是否为backup,默认为00:普通rs1:backup的rs

  • +
  • Port (int) - 所添加的后端资源服务端口,取值范围[1-65535],默认80

  • +
  • ResourceIP (str) - 所添加的后端服务器的资源实例IP,当ResourceType 为 UHybrid 时有效,且必填

  • +
  • SubnetId (str) - 所添加的后端服务器所在的子网,当ResourceType 为 UHybrid 时有效,且必填

  • +
  • VPCId (str) - 所添加的后端服务器所在的vpc,当ResourceType 为 UHybrid 时有效,且必填

  • +
  • Weight (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1

  • +
+

Response

+
    +
  • BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关),可用于 UpdateBackendAttribute/UpdateBackendAttributeBatch/ReleaseBackend

  • +
+
+ +
+
+allocate_backend_batch(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateBackendBatch -

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • Region (str) - (Config)

  • +
  • ULBId (str) - (Required)

  • +
  • VServerId (str) - (Required)

  • +
  • ApiVersion (int) -

  • +
  • Backends (list) -

  • +
+

Response

+
    +
  • BackendSet (list) - 见 BackendSet 模型定义

  • +
+

Response Model

+

BackendSet +- BackendId (str) - +- ResourceId (str) -

+
+ +
+
+bind_ssl(req: Optional[dict] = None, **kwargs) dict[source]
+

BindSSL - 将SSL证书绑定到VServer

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的Id

  • +
  • ULBId (str) - (Required) 所绑定ULB实例ID

  • +
  • VServerId (str) - (Required) 所绑定VServer实例ID

  • +
+

Response

+
+ +
+
+create_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

CreatePolicy - 创建VServer内容转发策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (list) - (Required) 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId

  • +
  • Match (str) - (Required) 内容转发匹配字段

  • +
  • ULBId (str) - (Required) 需要添加内容转发策略的负载均衡实例ID

  • +
  • VServerId (str) - (Required) 需要添加内容转发策略的VServer实例ID

  • +
  • PolicyPriority (int) - 策略优先级,1-9999

  • +
  • Type (str) - 内容转发匹配字段的类型

  • +
+

Response

+
    +
  • PolicyId (str) - 内容转发策略ID

  • +
+
+ +
+
+create_ssl(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLName (str) - (Required) SSL证书的名字,默认值为空

  • +
  • CaCert (str) - CA证书

  • +
  • PrivateKey (str) - 加密证书的私钥

  • +
  • SSLContent (str) - SSL证书的完整内容,包括用户证书、加密证书的私钥、CA证书

  • +
  • SSLType (str) - 所添加的SSL证书类型,目前只支持Pem格式

  • +
  • UserCert (str) - 用户的证书

  • +
+

Response

+
    +
  • SSLId (str) - SSL证书的Id

  • +
+
+ +
+
+create_ulb(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateULB - 创建负载均衡实例,可以选择内网或者外网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - ULB 所属的业务组ID,如果不传则使用默认的业务组

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费

  • +
  • FirewallId (str) - 防火墙ID,如果不传,则默认不绑定防火墙

  • +
  • InnerMode (str) - 创建的ULB是否为内网模式

  • +
  • ListenType (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发。默认为RequestProxy

  • +
  • OuterMode (str) - 创建的ULB是否为外网模式,默认即为外网模式

  • +
  • Remark (str) - 备注

  • +
  • SubnetId (str) - 内网ULB 所属的子网ID,如果不传则使用默认的子网

  • +
  • Tag (str) - 业务组

  • +
  • ULBName (str) - 负载均衡的名字,默认值为“ULB”

  • +
  • VPCId (str) - ULB所在的VPC的ID, 如果不传则使用默认的VPC

  • +
+

Response

+
    +
  • IPv6AddressId (str) - IPv6地址Id

  • +
  • ULBId (str) - 负载均衡实例的Id

  • +
+
+ +
+
+create_vserver(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVServer - 创建VServer实例,定义监听的协议和端口以及负载均衡算法

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例ID

  • +
  • ClientTimeout (int) - ListenType为RequestProxy时表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;ListenType为PacketsTransmit时表示连接保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持

  • +
  • Domain (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查域名

  • +
  • FrontendPort (int) - VServer后端端口,取值范围[1-65535];默认值为80

  • +
  • ListenType (str) - 监听器类型,枚举值,RequestProxy ,请求代理;PacketsTransmit ,报文转发。默认为RequestProxy

  • +
  • Method (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup ->主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:”Roundrobin”

  • +
  • MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测;Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping

  • +
  • Path (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查路径

  • +
  • PersistenceInfo (str) - 根据PersistenceType确认; None和ServerInsert: 此字段无意义; UserDefined:此字段传入自定义会话保持String

  • +
  • PersistenceType (str) - VServer会话保持方式,默认关闭会话保持。枚举值:None -> 关闭;ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY。

  • +
  • Protocol (str) - VServer实例的协议,请求代理模式下有 HTTP、HTTPS、TCP,报文转发下有 TCP,UDP。默认为“HTTP”

  • +
  • RequestMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文

  • +
  • ResponseMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文

  • +
  • VServerName (str) - VServer实例名称,默认为”VServer”

  • +
+

Response

+
    +
  • VServerId (str) - VServer实例的Id

  • +
+
+ +
+
+delete_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

DeletePolicy - 删除内容转发策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PolicyId (str) - (Required) 内容转发策略ID

  • +
  • VServerId (str) - VServer 资源ID

  • +
+

Response

+
+ +
+
+delete_ssl(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSSL - 删除SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的ID

  • +
+

Response

+
+ +
+
+delete_ulb(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteULB - 删除负载均衡实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • ReleaseEip (bool) - 删除ulb时是否释放绑定的EIP,false标识只解绑EIP,true表示会释放绑定的EIP,默认是false。Anycast IP 此参数无效

  • +
+

Response

+
+ +
+
+delete_vserver(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVServer - 删除VServer实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
  • VServerId (str) - (Required) VServer实例的ID

  • +
+

Response

+
+ +
+
+describe_ssl(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSSL - 获取SSL证书信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值,默认为20

  • +
  • Offset (int) - 数据偏移量,默认值为0

  • +
  • SSLId (str) - SSL证书的Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBSSLSet 模型定义

  • +
  • TotalCount (int) - 满足条件的SSL证书总数

  • +
+

Response Model

+

ULBSSLSet +- BindedTargetSet (list) - 见 SSLBindedTargetSet 模型定义 +- CreateTime (int) - SSL证书的创建时间 +- HashValue (str) - SSL证书的HASH值 +- SSLContent (str) - SSL证书的内容 +- SSLId (str) - SSL证书的Id +- SSLName (str) - SSL证书的名字 +- SSLType (str) - SSL证书类型,暂时只有 Pem 一种类型

+

SSLBindedTargetSet +- ULBId (str) - VServer 所属的ULB实例的资源ID +- ULBName (str) - ULB实例的名称 +- VServerId (str) - SSL证书绑定到的VServer的资源ID +- VServerName (str) - 对应的VServer的名字

+
+ +
+
+describe_ulb(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeULB - 获取ULB详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - ULB所属的业务组ID

  • +
  • Limit (int) - 数据分页值,默认为20

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
  • SubnetId (str) - ULB所属的子网ID

  • +
  • ULBId (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息

  • +
  • VPCId (str) - ULB所属的VPC

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBSet 模型定义

  • +
  • TotalCount (int) - 满足条件的ULB总数

  • +
+

Response Model

+

ULBSet +- Bandwidth (int) - 带宽 +- BandwidthType (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 +- BusinessId (str) - ULB 所属的业务组ID +- CreateTime (int) - ULB的创建时间,格式为Unix Timestamp +- EnableLog (int) - ULB是否开启日志功能。0,关闭;1,开启 +- FirewallSet (list) - 见 FirewallSet 模型定义 +- IPSet (list) - 见 ULBIPSet 模型定义 +- IPVersion (str) - ULB ip类型,枚举值:IPv6 / IPv4 (内部测试,暂未对外开放) +- ListenType (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 +- LogSet (dict) - 见 LoggerSet 模型定义 +- Name (str) - 负载均衡的资源名称 +- PrivateIP (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 +- Remark (str) - 负载均衡的备注 +- SubnetId (str) - ULB 为 InnerMode 时,ULB 所属的子网ID,默认为空 +- Tag (str) - 负载均衡的业务组名称 +- ULBId (str) - 负载均衡的资源ID +- ULBType (str) - ULB 的类型 +- VPCId (str) - ULB所在的VPC的ID +- VServerSet (list) - 见 ULBVServerSet 模型定义

+

ULBIPSet +- Bandwidth (int) - 弹性IP的带宽值(暂未对外开放) +- BandwidthType (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) +- EIP (str) - 弹性IP地址 +- EIPId (str) - 弹性IP的ID +- OperatorName (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP

+

ULBVServerSet +- BackendSet (list) - 见 ULBBackendSet 模型定义 +- ClientTimeout (int) - 空闲连接的回收时间,单位:秒。 +- Domain (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 +- FrontendPort (int) - VServer服务端口 +- ListenType (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 +- Method (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 +- MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize +- Path (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 +- PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 +- PersistenceType (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 +- PolicySet (list) - 见 ULBPolicySet 模型定义 +- Protocol (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 +- RequestMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 +- ResponseMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 +- SSLSet (list) - 见 ULBSSLSet 模型定义 +- Status (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 +- VServerId (str) - VServer实例的Id +- VServerName (str) - VServer实例的名字

+

ULBBackendSet +- BackendId (str) - 后端资源实例的Id +- Enabled (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 +- IsBackup (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs +- Port (int) - 后端提供服务的端口 +- PrivateIP (str) - 后端提供服务的内网IP +- ResourceId (str) - 资源实例的资源Id +- ResourceName (str) - 资源实例的资源名称 +- ResourceType (str) - 资源实例的类型 +- Status (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 +- SubResourceId (str) - 资源绑定的虚拟网卡实例的资源Id +- SubResourceName (str) - 资源绑定的虚拟网卡实例的资源名称 +- SubResourceType (str) - 资源绑定的虚拟网卡实例的类型 +- SubnetId (str) - 后端提供服务的资源所在的子网的ID +- Weight (int) -

+

ULBPolicySet +- BackendSet (list) - 见 PolicyBackendSet 模型定义 +- Match (str) - 内容转发匹配字段;默认内容转发类型下为空。 +- PolicyId (str) - 内容转发Id,默认内容转发类型下为空。 +- PolicyPriority (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 +- PolicyType (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 +- TotalCount (int) - 默认内容转发类型下返回当前rs总数 +- Type (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 +- VServerId (str) - 所属VServerId

+

PolicyBackendSet +- BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 +- ObjectId (str) - 后端资源的对象ID +- Port (int) - 所添加的后端资源服务端口 +- PrivateIP (str) - 后端资源的内网IP +- ResourceName (str) - 后端资源的实例名称 +- ResourceType (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 +- SubResourceId (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID +- SubResourceName (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 +- SubResourceType (str) - “UNI”或者为空

+

ULBSSLSet +- BindedTargetSet (list) - 见 SSLBindedTargetSet 模型定义 +- CreateTime (int) - SSL证书的创建时间 +- HashValue (str) - SSL证书的HASH值 +- SSLContent (str) - SSL证书的内容 +- SSLId (str) - SSL证书的Id +- SSLName (str) - SSL证书的名字 +- SSLType (str) - SSL证书类型,暂时只有 Pem 一种类型

+

SSLBindedTargetSet +- ULBId (str) - VServer 所属的ULB实例的资源ID +- ULBName (str) - ULB实例的名称 +- VServerId (str) - SSL证书绑定到的VServer的资源ID +- VServerName (str) - 对应的VServer的名字

+

LoggerSet +- BucketName (str) - ulb日志上传的bucket +- TokenID (str) - 上传到bucket使用的token的tokenid +- TokenName (str) - bucket的token名称

+

FirewallSet +- FirewallId (str) - 防火墙ID +- FirewallName (str) - 防火墙名称

+
+ +
+
+describe_ulb_simple(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeULBSimple - 获取ULB信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - ULB所属的业务组ID

  • +
  • Limit (int) - 数据分页值,默认为10000

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
  • SubnetId (str) - ULB所属的子网ID

  • +
  • ULBId (str) - 负载均衡实例的Id。 若指定则返回指定的负载均衡实例的信息; 若不指定则返回当前数据中心中所有的负载均衡实例的信息

  • +
  • VPCId (str) - ULB所属的VPC

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBSimpleSet 模型定义

  • +
  • TotalCount (int) - 满足条件的ULB总数

  • +
+

Response Model

+

LoggerSet +- BucketName (str) - ulb日志上传的bucket +- TokenID (str) - 上传到bucket使用的token的tokenid +- TokenName (str) - bucket的token名称

+

FirewallSet +- FirewallId (str) - 防火墙ID +- FirewallName (str) - 防火墙名称

+

ULBIPSet +- Bandwidth (int) - 弹性IP的带宽值(暂未对外开放) +- BandwidthType (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) +- EIP (str) - 弹性IP地址 +- EIPId (str) - 弹性IP的ID +- OperatorName (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP

+

ULBSimpleSet +- Bandwidth (int) - 带宽 +- BandwidthType (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 +- BusinessId (str) - ULB 所属的业务组ID +- CreateTime (int) - ULB的创建时间,格式为Unix Timestamp +- EnableLog (int) - ULB是否开启日志功能。0,关闭;1,开启 +- FirewallSet (list) - 见 FirewallSet 模型定义 +- IPSet (list) - 见 ULBIPSet 模型定义 +- IPVersion (str) - ULB提供服务的IP类型。枚举值,“IPv4”,”IPv6”。默认为“IPv4” +- ListenType (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 +- LogSet (dict) - 见 LoggerSet 模型定义 +- Name (str) - 负载均衡的资源名称 +- PrivateIP (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 +- Remark (str) - 负载均衡的备注 +- SubnetId (str) - ULB 为 InnerMode 时,ULB 所属的子网ID +- Tag (str) - 负载均衡的业务组名称 +- ULBId (str) - 负载均衡的资源ID +- ULBType (str) - ULB 的类型(InnerMode or OuterMode) +- VPCId (str) - ULB所在的VPC的ID +- VServerCount (int) - ulb下vserver数量

+
+ +
+
+describe_vserver(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVServer - 获取ULB下的VServer的详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例的Id

  • +
  • Limit (int) - 数据分页值

  • +
  • Offset (int) - 数据偏移量

  • +
  • VServerId (str) - VServer实例的Id;若指定则返回指定的VServer实例的信息; 若不指定则返回当前负载均衡实例下所有VServer的信息

  • +
+

Response

+
    +
  • DataSet (list) - 见 ULBVServerSet 模型定义

  • +
  • TotalCount (int) - 满足条件的VServer总数

  • +
+

Response Model

+

ULBVServerSet +- BackendSet (list) - 见 ULBBackendSet 模型定义 +- ClientTimeout (int) - 空闲连接的回收时间,单位:秒。 +- Domain (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 +- FrontendPort (int) - VServer服务端口 +- ListenType (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 +- Method (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 +- MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize +- Path (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 +- PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 +- PersistenceType (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 +- PolicySet (list) - 见 ULBPolicySet 模型定义 +- Protocol (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 +- RequestMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 +- ResponseMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 +- SSLSet (list) - 见 ULBSSLSet 模型定义 +- Status (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 +- VServerId (str) - VServer实例的Id +- VServerName (str) - VServer实例的名字

+

ULBBackendSet +- BackendId (str) - 后端资源实例的Id +- Enabled (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 +- IsBackup (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs +- Port (int) - 后端提供服务的端口 +- PrivateIP (str) - 后端提供服务的内网IP +- ResourceId (str) - 资源实例的资源Id +- ResourceName (str) - 资源实例的资源名称 +- ResourceType (str) - 资源实例的类型 +- Status (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 +- SubResourceId (str) - 资源绑定的虚拟网卡实例的资源Id +- SubResourceName (str) - 资源绑定的虚拟网卡实例的资源名称 +- SubResourceType (str) - 资源绑定的虚拟网卡实例的类型 +- SubnetId (str) - 后端提供服务的资源所在的子网的ID +- Weight (int) -

+

ULBPolicySet +- BackendSet (list) - 见 PolicyBackendSet 模型定义 +- Match (str) - 内容转发匹配字段;默认内容转发类型下为空。 +- PolicyId (str) - 内容转发Id,默认内容转发类型下为空。 +- PolicyPriority (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 +- PolicyType (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 +- TotalCount (int) - 默认内容转发类型下返回当前rs总数 +- Type (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 +- VServerId (str) - 所属VServerId

+

PolicyBackendSet +- BackendId (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 +- ObjectId (str) - 后端资源的对象ID +- Port (int) - 所添加的后端资源服务端口 +- PrivateIP (str) - 后端资源的内网IP +- ResourceName (str) - 后端资源的实例名称 +- ResourceType (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 +- SubResourceId (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID +- SubResourceName (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 +- SubResourceType (str) - “UNI”或者为空

+

ULBSSLSet +- BindedTargetSet (list) - 见 SSLBindedTargetSet 模型定义 +- CreateTime (int) - SSL证书的创建时间 +- HashValue (str) - SSL证书的HASH值 +- SSLContent (str) - SSL证书的内容 +- SSLId (str) - SSL证书的Id +- SSLName (str) - SSL证书的名字 +- SSLType (str) - SSL证书类型,暂时只有 Pem 一种类型

+

SSLBindedTargetSet +- ULBId (str) - VServer 所属的ULB实例的资源ID +- ULBName (str) - ULB实例的名称 +- VServerId (str) - SSL证书绑定到的VServer的资源ID +- VServerName (str) - 对应的VServer的名字

+
+ +
+
+release_backend(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseBackend - 从VServer释放后端资源实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID)

  • +
  • ULBId (str) - (Required) 负载均衡实例的ID

  • +
+

Response

+
+ +
+
+unbind_ssl(req: Optional[dict] = None, **kwargs) dict[source]
+

UnbindSSL - 从VServer解绑SSL证书

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SSLId (str) - (Required) SSL证书的Id

  • +
  • ULBId (str) - (Required) 所绑定ULB实例ID

  • +
  • VServerId (str) - (Required) 所绑定VServer实例ID

  • +
+

Response

+
+ +
+
+update_backend_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateBackendAttribute - 更新ULB后端资源实例(服务节点)属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackendId (str) - (Required) 后端资源实例的ID(ULB后端ID,非资源自身ID)

  • +
  • ULBId (str) - (Required) 负载均衡资源ID

  • +
  • Enabled (int) - 后端实例状态开关

  • +
  • IsBackup (int) - 是否为backup0:主rs1:备rs默认为0

  • +
  • Port (int) - 后端资源服务端口,取值范围[1-65535]

  • +
  • Weight (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1

  • +
+

Response

+
+ +
+
+update_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdatePolicy - 更新内容转发规则,包括转发规则后的服务节点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Match (str) - (Required) 内容转发匹配字段

  • +
  • ULBId (str) - (Required) 需要添加内容转发策略的负载均衡实例ID

  • +
  • VServerId (str) - (Required) 需要添加内容转发策略的VServer实例ID,只支持请求代理模式下,HTTP或HTTPS协议的VServer

  • +
  • BackendId (list) - 内容转发策略应用的后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId,不传表示更新转发节点为空

  • +
  • PolicyId (str) - 转发规则的ID,当Type为Default时,可以不传或为空

  • +
  • Type (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名转发规则;Path -> 路径转发规则;Default -> 默认转发规则,不传默认值Domain

  • +
+

Response

+
+ +
+
+update_ulb_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateULBAttribute - 更新ULB名字业务组备注等属性字段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) ULB资源ID

  • +
  • Name (str) - 名字

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务

  • +
+

Response

+
+ +
+
+update_vserver_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVServerAttribute - 更新VServer实例属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ULBId (str) - (Required) 负载均衡实例ID

  • +
  • VServerId (str) - (Required) VServer实例ID

  • +
  • ClientTimeout (int) - 请求代理的VServer下表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;报文转发的VServer下表示回话保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持

  • +
  • Domain (str) - MonitorType 为 Path 时指定健康检查发送请求时HTTP HEADER 里的域名

  • +
  • Method (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup -> 主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:”Roundrobin”

  • +
  • MonitorType (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测,Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping

  • +
  • Path (str) - MonitorType 为 Path 时指定健康检查发送请求时的路径,默认为 /

  • +
  • PersistenceInfo (str) - 根据PersistenceType确定: None或ServerInsert, 此字段无意义; UserDefined, 则此字段传入用户自定义会话保持String. 若无此字段则不做修改

  • +
  • PersistenceType (str) - VServer会话保持模式,若无此字段则不做修改。枚举值:None:关闭;ServerInsert:自动生成KEY;UserDefined:用户自定义KEY。

  • +
  • RequestMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文

  • +
  • ResponseMsg (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文

  • +
  • VServerName (str) - VServer实例名称,若无此字段则不做修改

  • +
+

Response

+
+ +
+ +
+
+

UMem

+
+
+class ucloud.services.umem.client.UMemClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+check_udredis_space_allowance(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckUDredisSpaceAllowance - 检查高性能UMem剩余资源,以及分片扩容前的资源预检查

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Count (str) - (Required) 创建实例的数量,[1-10]

  • +
  • Size (int) - (Required) 创建实例的容量大小,,扩容时的分片目标容量大小

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • GroupId (str) - 资源ID,扩缩容时的必传参数

  • +
+

Response

+
    +
  • Count (int) - 创建实例资源时,表示可创建的数量;扩容资源时,返回1表示可以扩容,0表示可用区资源不足不能扩容

  • +
+
+ +
+
+check_uredis_allowance(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckURedisAllowance - 检查主备Redis的资源是否足够创建新实例,以及主备Redis的扩容资源预检查

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Count (int) - (Required) 创建实例的数量,[1-10]

  • +
  • Size (int) - (Required) 创建实例的容量大小, 单位:GB 目前仅支持1/2/4/8/16/32六种规格;扩缩容时,表示实例的目标资源大小

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • GroupId (str) - 资源ID,扩容实例资源时的必传参数

  • +
  • Protocol (str) -

  • +
  • RegionFlag (bool) - 是否是跨机房URedis(默认false)

  • +
  • SlaveZone (str) -

  • +
+

Response

+
    +
  • Count (int) - 创建实例资源时,表示可创建的数量;扩容资源时,返回1表示可以扩容,0表示可用区资源不足不能扩容

  • +
+
+ +
+
+create_umem_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUMemBackup - 创建分布式redis备份

+

Request

+ +

Response

+
    +
  • BackupId (str) - 备份Id

  • +
+
+ +
+
+create_umem_cache_group(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUMemcacheGroup - 创建单机Memcache

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 请求创建组的名称 范围[6-60]

  • +
  • ChargeType (str) - 计费模式,Year , Month, Dynamic 默认: Month

  • +
  • ConfigId (str) - 配置ID,目前仅支持默认配置id 默认配置id:”9a891891-c245-4b66-bce8-67e59430d67c”

  • +
  • CouponId (str) - 代金券ID

  • +
  • Protocol (str) -

  • +
  • Quantity (int) - 购买时长,默认为1

  • +
  • Size (int) - 每个节点的内存大小,单位GB,默认1GB 目前仅支持1/2/4/8/16/32这几档

  • +
  • SubnetId (str) -

  • +
  • Tag (str) - 业务组 默认:Default

  • +
  • VPCId (str) -

  • +
  • Version (str) - Memcache版本信息,默认为1.4.31

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • GroupId (str) - 创建的组ID

  • +
+
+ +
+
+create_umem_space(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUMemSpace - 创建UMem内存空间

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 空间名称,长度(6<=size<=63)

  • +
  • Size (int) - (Required) 内存大小, 单位:GB, 范围[1~1024]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year , Month, Dynamic, Trial 默认: Month

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Protocol (str) - 协议:memcache, redis (默认redis).注意:redis无single类型

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • SubnetId (str) -

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • VPCId (str) -

  • +
+

Response

+
    +
  • SpaceId (str) - 创建内存空间ID列表

  • +
+
+ +
+
+create_uredis_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateURedisBackup - 创建主备Redis备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupName (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_)

  • +
  • GroupId (str) - (Required) 资源id

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupId (str) - 备份id

  • +
+
+ +
+
+create_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateURedisGroup - 创建主备redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • HighAvailability (str) - (Required) 是否开启高可用,enable或disable

  • +
  • Name (str) - (Required) 请求创建组的名称 (范围[6-63],只能包含英文、数字以及符号-和_)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AutoBackup (str) - 是否自动备份,enable或disable,默认disable

  • +
  • BackupId (str) - 有此项代表从备份中创建,无代表正常创建

  • +
  • BackupTime (int) - 自动备份开始时间,范围[0-23],默认3点

  • +
  • ChargeType (str) - 计费模式,Year , Month, Dynamic 默认: Month

  • +
  • ConfigId (str) - 配置ID,目前支持 3.0版本配置ID:”03f58ca9-b64d-4bdd-abc7-c6b9a46fd801”,3.2版本配置ID:”3e45ac48-f8a2-a9q2-261d-l342dab130gf”, 4.0版本配置ID:”6c9298a3-9d7f-428c-b1d0-e87ab3b8a1ea”,默认版本3.0,从备份创建为必传项

  • +
  • CouponId (str) - 代金券ID

  • +
  • EnableIpV6 (bool) - 是否创建使用ipv6 资源, 默认为false, 或者不填, 创建ipv6为true

  • +
  • MasterGroupId (str) - Master Redis Group的ID,创建只读Slave时,必须填写

  • +
  • Password (str) - 初始化密码,需要 base64 编码

  • +
  • Quantity (int) - 购买时长,默认为1

  • +
  • Size (int) - 每个节点的内存大小,单位GB,默认1GB,目前仅支持1/2/4/8/16/32,六种

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • SubnetId (str) - 子网ID

  • +
  • Tag (str) - 业务组名称

  • +
  • VPCId (str) - VPC的ID

  • +
  • Version (str) - Redis版本信息(详见DescribeURedisVersion返回结果),默认版本3.0

  • +
+

Response

+
    +
  • GroupId (str) - 创建的组ID

  • +
+
+ +
+
+delete_umem_cache_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUMemcacheGroup - 删除单机Memcache

+

Request

+ +

Response

+
+ +
+
+delete_umem_space(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUMemSpace - 删除UMem内存空间

+

Request

+ +

Response

+
+ +
+
+delete_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteURedisGroup - 删除主备redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组ID

  • +
+

Response

+
+ +
+
+describe_ud_redis_proxy_info(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDRedisProxyInfo - 拉取udredis所有的代理信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SpaceId (str) - (Required) udredis实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDRedisProxyInfo 模型定义

  • +
+

Response Model

+

UDRedisProxyInfo +- ProxyId (str) - 代理id +- ResourceId (str) - 代理资源id +- State (str) - 代理状态 +- Vip (str) - 代理ip

+
+ +
+
+describe_ud_redis_slowlog(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDRedisSlowlog - 查询UDRedis慢日志

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • InstanceId (str) - (Required) 实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Limit (int) - 分页显示的条目数,默认为10

  • +
+

Response

+
    +
  • DataSet (list) - 见 UDRedisSlowlogSet 模型定义

  • +
  • TotalCount (int) - 总条目数

  • +
+

Response Model

+

UDRedisSlowlogSet +- BlockId (str) - 分片id +- Command (str) - 查询命令 +- SpendTime (int) - 查询消耗的时间 +- StartTime (int) - 查询发生的时间

+
+ +
+
+describe_umem(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMem - 获取UMem列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Protocol (str) - (Required) 协议类型: memcache, redis

  • +
  • Limit (int) - 分页显示的条目数, 默认值为20

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
  • ResourceId (str) - 资源ID

  • +
  • ResourceType (str) -

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemDataSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UMemDataSet +- Address (list) - 见 UMemSpaceAddressSet 模型定义 +- AutoBackup (str) - 是否需要自动备份,enable,disable +- BackupTime (int) - 自动备份开始时间,单位小时计,范围[0-23] +- ChargeType (str) - 计费模式,Year, Month, Dynamic, Trial +- ConfigId (str) - 节点的配置ID +- CreateTime (int) - 创建时间 +- DataSet (list) - 见 UMemSlaveDataSet 模型定义 +- ExpireTime (int) - 到期时间 +- HighAvailability (str) - 是否开启高可用,enable,disable +- Name (str) - 资源名称 +- OwnSlave (str) - 是否拥有只读Slave“Yes” 包含“No” 不包含 +- Protocol (str) - 协议类型: memcache, redis +- ResourceId (str) - 资源ID +- ResourceType (str) - distributed: 分布式版Redis,或者分布式Memcache;single:主备版Redis,或者单机Memcache;performance:高性能版 +- RewriteTime (int) - 主备redis和分布式redis运维时间0 //0点1 //1点以此类推单机版memcache不返回该项 +- Role (str) - 表示实例是主库还是从库,master,slave仅主备redis返回该项参数 +- Size (int) - 容量单位GB +- SlaveZone (str) - 跨机房URedis,slave redis所在可用区,参见 可用区列表 +- State (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中SetPasswordFail //设置密码失败 +- SubnetId (str) - 子网 +- Tag (str) - 业务组名称 +- Type (str) - 空间类型:single(无热备),double(热备) +- UsedSize (int) - 使用量单位MB +- VPCId (str) - vpc +- Version (str) - Redis版本信息 +- Zone (str) - 实例所在可用区,或者master redis所在可用区,参见 可用区列表

+

UMemSpaceAddressSet +- IP (str) - UMem实例访问IP +- Port (int) - UMem实例访问Port

+

UMemSlaveDataSet +- ChargeType (str) - 计费模式,Year, Month, Dynamic, Trial +- ConfigId (str) - 节点的配置ID +- CreateTime (int) - 创建时间 +- ExpireTime (int) - 到期时间 +- GroupId (str) - 资源id +- GroupName (str) - 资源名称 +- MasterGroupId (str) - 主实例id +- MemorySize (int) - 实力大小 +- ModifyTime (int) - 修改时间 +- Name (str) - 资源名称 +- Port (int) - 端口 +- ResourceType (str) - distributed: 分布式版Redis,或者分布式Memcache;single:主备版Redis,或者单机Memcache;performance:高性能版 +- RewriteTime (int) - 主备Redis返回运维时间 0//0点 1 //1点 以此类推 +- Role (str) - 表示实例是主库还是从库,master,slave +- Size (int) - 容量单位GB +- State (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中SetPasswordFail //设置密码失败 +- SubnetId (str) - 子网 +- Tag (str) - 业务组名称 +- UsedSize (int) - 使用量单位MB +- VPCId (str) - vpc +- Version (str) - Redis版本信息 +- VirtualIP (str) - +- Zone (str) - 实例所在可用区,或者master redis所在可用区,参见 可用区列表

+
+ +
+
+describe_umem_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemBackup - 查询分布式redis备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SpaceId (str) - (Required) 资源id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Limit (int) - 分页显示的条目数, 默认值为10

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemBackupSet 模型定义

  • +
+

Response Model

+

UMemBackupSet +- BackupId (str) - 空间的备份ID +- BackupName (str) - 备份名称 +- BackupType (str) - 备份类型: auto(自动) ,manual(手动) +- BlockCount (int) - 本次备份,分片的数量 +- CreateTime (int) - 创建时间 +- State (str) - Starting:备份中 Done:完成

+
+ +
+
+describe_umem_backup_url(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemBackupURL - 获取分布式redis 备份下载链接

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (str) - (Required) 备份Id

  • +
  • SpaceId (str) - (Required) 资源id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BlockId (str) - 分片id

  • +
+

Response

+
    +
  • BackupURL (list) - 备份url,每个分片一个下载URL

  • +
+
+ +
+
+describe_umem_block_info(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemBlockInfo - 拉取UDRedis分片信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 分页显示的条目数, 默认值为10

  • +
  • Offset (int) - (Required) 分页显示的起始偏移, 默认值为0

  • +
  • SpaceId (str) - (Required) UMem内存资源ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemBlockInfo 模型定义

  • +
+

Response Model

+

UMemBlockInfo +- BlockId (str) - 分片id +- BlockPort (int) - 分片端口 +- BlockSize (int) - 容量单位GB +- BlockSlotBegin (int) - 分片维护的键槽起始值 +- BlockSlotEnd (int) - 分片维护的键槽结束值 +- BlockState (str) - 实例状态 Starting // 创建中 Creating // 初始化中 CreateFail // 创建失败 Fail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中 SetPasswordFail //设置密码失败 +- BlockUsedSize (int) - 使用量单位MB +- BlockVip (str) - 分片ip

+
+ +
+
+describe_umem_cache_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemcacheGroup - 显示Memcache

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit

  • +
  • Limit (int) - 分页显示的条目数, 默认值为20

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemcacheGroupSet 模型定义

  • +
  • TotalCount (int) - 组的总的节点个数

  • +
+

Response Model

+

UMemcacheGroupSet +- ChargeType (str) - 计费类型:Year,Month,Dynamic 默认Dynamic +- ConfigId (str) - 节点的配置ID +- CreateTime (int) - 创建时间 (UNIX时间戳) +- ExpireTime (int) - 过期时间 (UNIX时间戳) +- GroupId (str) - 组ID +- ModifyTime (int) - 修改时间 (UNIX时间戳) +- Name (str) - 组名称 +- Port (int) - 节点分配的服务端口 +- Size (int) - 容量单位GB +- State (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败Restarting // 重启中 +- SubnetId (str) - +- Tag (str) - 业务组名称 +- UsedSize (int) - 使用量单位MB +- VPCId (str) - +- Version (str) - Memcache版本信息,默认为1.4.31 +- VirtualIP (str) - 节点的虚拟IP地址

+
+ +
+
+describe_umem_cache_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemcachePrice - 获取umemcache组价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 容量大小,单位:GB 取值范围[1-32]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,Year, Month, Dynamic,默认: Dynamic 默认: 获取所有计费模式的价格

  • +
  • Quantity (int) - 购买umemcache的时长,默认值为1

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemcachePriceSet 模型定义

  • +
+

Response Model

+

UMemcachePriceSet +- ChargeType (str) - 计费模式,Year, Month, Dynamic +- ListPrice (int) - 产品列表价 +- OriginalPrice (int) - 原价 +- Price (int) - 总价格

+
+ +
+
+describe_umem_cache_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemcacheUpgradePrice - 获取umemcache升级价格信息

+

Request

+
    +
  • GroupId (str) - (Required) 需要升级的空间的GroupId,请参考DescribeUMemcacheGroup接口

  • +
  • Size (int) - (Required) 购买umemcache大小,单位:GB

  • +
+

Response

+
    +
  • Price (float) - 价格,单位:元

  • +
+
+ +
+
+describe_umem_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemPrice - 获取UMem实例价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买umem大小,单位:GB,范围[1~1024]

  • +
  • Type (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - Year, Month, Dynamic 如果不指定,则一次性获取三种计费

  • +
  • Quantity (int) - 购买UMem的时长,默认值为1

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemPriceSet 模型定义

  • +
+

Response Model

+

UMemPriceSet +- ChargeType (str) - Year, Month, Dynamic,Trial +- OriginalPrice (int) - 原价 +- Price (int) - 现价

+
+ +
+
+describe_umem_space(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemSpace - 获取UMem内存空间列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • Protocol (str) - 协议类型: memcache, redis

  • +
  • SpaceId (str) - 内存空间ID (无ID,则获取所有)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 UMemSpaceSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

UMemSpaceSet +- Address (list) - 见 UMemSpaceAddressSet 模型定义 +- ChargeType (str) - Year, Month, Dynamic, Trial +- CreateTime (int) - 创建时间 +- ExpireTime (int) - 到期时间 +- Name (str) - 内存空间名称 +- Protocol (str) - 协议类型: memcache, redis +- RewriteTime (int) - 运维时间0 //0点1 //1点依次类推 +- Size (int) - 容量单位GB +- SpaceId (str) - 内存空间ID +- State (str) - Starting:创建中 Running:运行中 Fail:失败 +- SubnetId (str) - +- Tag (str) - +- Type (str) - 空间类型:single(无热备),double(热备) +- UsedSize (int) - 使用量单位MB +- VPCId (str) - +- Zone (str) - 可用区,参见 可用区列表

+

UMemSpaceAddressSet +- IP (str) - UMem实例访问IP +- Port (int) - UMem实例访问Port

+
+ +
+
+describe_umem_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUMemUpgradePrice - 获取UMem升级价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 购买UMem大小,单位:GB

  • +
  • SpaceId (str) - (Required) 需要升级的空间的SpaceId

  • +
  • Type (str) - (Required) 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • OriginalPrice (int) - 原价

  • +
  • Price (int) - 价格

  • +
+

Response Model

+

PriceDataSet +- CustomPrice (int) - +- PurchaseValue (int) - +- TotalPrice (int) -

+
+ +
+
+describe_uredis_backup(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisBackup - 查询主备redis备份

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID

  • +
  • Limit (int) - 分页显示的条目数, 默认值为10

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisBackupSet 模型定义

  • +
  • TotalCount (int) - 用户名下总的备份个数

  • +
+

Response Model

+

URedisBackupSet +- BackupId (str) - 备份ID +- BackupName (str) - 备份的名称 +- BackupSize (int) - 备份文件大小, 以字节为单位 +- BackupTime (int) - 备份时间 (UNIX时间戳) +- BackupType (str) - 备份类型: Manual 手动 Auto 自动 +- GroupId (str) - 对应的实例ID +- GroupName (str) - 组名称 +- State (str) - 备份的状态: Backuping 备份中 Success 备份成功 Error 备份失败 Expired 备份过期 +- Zone (str) - 可用区,参见 可用区列表

+
+ +
+
+describe_uredis_backup_url(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisBackupURL - 获取主备Redis备份下载链接

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupId (str) - (Required) 备份ID

  • +
  • GroupId (str) - 实例名称

  • +
  • RegionFlag (bool) - 是否是跨机房URedis(默认false)

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • BackupPath (str) - 备份文件公网的地址

  • +
  • BackupURL (str) - 备份文件公网的地址

  • +
+
+ +
+
+describe_uredis_config(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisConfig - 查询主备Redis所有配置文件

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RegionFlag (bool) - (Required) 是否是跨机房URedis(默认false)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ConfigId (str) - 配置文件ID

  • +
  • Limit (int) - 页显示的条目数, 默认值为10

  • +
  • Offset (int) - 页显示的起始偏移, 默认值为0

  • +
  • Version (str) - Redis版本号

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisConfigSet 模型定义

  • +
  • TotalCount (int) - 根据过滤条件得到的总数

  • +
+

Response Model

+

URedisConfigSet +- ConfigId (str) - 配置ID +- CreateTime (int) - 创建时间 (UNIX时间戳) +- Description (str) - 配置描述 +- IsModify (str) - 置是否可以修改 +- ModifyTime (int) - 修改时间 (UNIX时间戳) +- Name (str) - 配置名称 +- RegionFlag (bool) - 是否是跨机房URedis(默认false) +- State (str) - 配置所处的状态 +- Version (str) - 配置对应的Redis版本 +- Zone (str) - Zone

+
+ +
+
+describe_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisGroup - 查询主备Redis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - 组的ID,如果指定则获取描述,否则为列表操 作,需指定Offset/Limit

  • +
  • Limit (int) - 分页显示的条目数, 默认值为20

  • +
  • Offset (int) - 分页显示的起始偏移, 默认值为0

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisGroupSet 模型定义

  • +
  • TotalCount (int) - 组的总的节点个数

  • +
+

Response Model

+

URedisGroupSet +- AutoBackup (str) - 是否需要自动备份,enable,disable +- BackupTime (int) - 组自动备份开始时间,单位小时计,范围[0-23] +- ChargeType (str) - 计费类型:Year,Month,Dynamic 默认Dynamic +- ConfigId (str) - 节点的配置ID +- CreateTime (int) - 创建时间 (UNIX时间戳) +- ExpireTime (int) - 过期时间 (UNIX时间戳) +- GroupId (str) - 组ID +- GroupName (str) - 组名称 +- HighAvailability (str) - 是否开启高可用,enable,disable +- MemorySize (int) - 容量单位GB +- ModifyTime (int) - 修改时间 (UNIX时间戳) +- Name (str) - 组名称 +- Port (int) - 节点分配的服务端口 +- Protocol (str) - 协议 +- RewriteTime (int) - 返回运维时间 0 //0点 1 //1点 以此类推 +- Role (str) - 实例类型 +- Size (int) - 容量单位GB +- SlaveZone (str) - 跨机房URedis,slave redis所在可用区,参见 可用区列表 +- State (str) - 状态标记 Creating // 初始化中 CreateFail // 创建失败 Deleting // 删除中 DeleteFail // 删除失败 Running // 运行 Resizing // 容量调整中 ResizeFail // 容量调整失败 Configing // 配置中 ConfigFail // 配置失败 +- SubnetId (str) - subnetid +- Tag (str) - 业务组名称 +- Type (str) - 空间类型:single(无热备),double(热备) +- UsedSize (int) - 使用量单位MB +- VPCId (str) - vpcid +- Version (str) - Redis版本信息 +- VirtualIP (str) - 节点的虚拟IP地址 +- Zone (str) - 实例所在可用区,或者master redis所在可用区,参见 可用区列表

+
+ +
+
+describe_uredis_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisPrice - 取uredis价格信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 量大小,单位:GB 取值范围[1-32]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,Year, Month, Dynamic;如果不指定,则一次性获取三种计费

  • +
  • ProductType (str) - 产品类型:MS_Redis(标准主备版),S_Redis(从库),默认为MS_Redis

  • +
  • Quantity (int) - 计费模式为Dynamic时,购买的时长, 默认为1

  • +
  • RegionFlag (bool) - 是否是跨机房URedis(默认false)

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisPriceSet 模型定义

  • +
+

Response Model

+

URedisPriceSet +- ChargeType (str) - Year, Month, Dynamic,Trial +- ListPrice (int) - 产品列表价 +- OriginalPrice (int) - 原价 +- Price (int) - 总价格

+
+ +
+
+describe_uredis_slowlog(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisSlowlog - 查询URedis慢日志

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 资源ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Limit (int) - 分页显示的条目数,默认为10

  • +
+

Response

+
    +
  • DataSet (list) - 见 URedisSlowlogSet 模型定义

  • +
  • TotalCount (int) - 总条目数

  • +
+

Response Model

+

URedisSlowlogSet +- Command (str) - 查询命令 +- SpendTime (int) - 查询消耗的时间 +- StartTime (int) - 查询发生的时间

+
+ +
+
+describe_uredis_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisUpgradePrice - 获取uredis升级价格信息

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 要升级的空间的GroupId,请参考DescribeURedisGroup接口

  • +
  • Size (int) - (Required) 购买uredis大小,单位:GB,范围是[1-32]

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (float) - 扩容差价,单位: 元,保留小数点后两位有效数字

  • +
+
+ +
+
+describe_uredis_version(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeURedisVersion - 获取主Redis可用版本

+

Request

+ +

Response

+
    +
  • DataSet (list) - 见 URedisVersionSet 模型定义

  • +
  • TotalCount (int) - 总版本个数

  • +
+

Response Model

+

URedisVersionSet +- Version (str) - Redis版本

+
+ +
+
+flushall_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

FlushallURedisGroup - 清除主备redis数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FlushType (str) - (Required) FlushDb或FlushAll

  • +
  • GroupId (str) - (Required) 组的ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DbNum (int) - 清空的db,FlushType为FlushDb,此项为必传项

  • +
  • OrganizationId (int) - OrganizationId

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • TopOrganizationId (int) - company_id

  • +
+

Response

+
+ +
+
+get_umem_space_state(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUMemSpaceState - 获取UMem内存空间列表

+

Request

+ +

Response

+
    +
  • State (str) - Starting:创建中 Running:运行中 Fail:失败

  • +
+
+ +
+
+i_solation_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ISolationURedisGroup - 打开/关闭URedis

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组的ID

  • +
  • TransformType (str) - (Required) UNBind(关闭)或Bind(打开)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
+

Response

+
+ +
+
+modify_umem_space_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUMemSpaceName - 修改UMem内存空间名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 新的名称,长度(6<=size<=63)

  • +
  • SpaceId (str) - (Required) UMem内存空间ID

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+modify_uredis_group_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyURedisGroupName - 修改主备redis名称

+

Request

+ +

Response

+
+ +
+
+modify_uredis_group_password(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyURedisGroupPassword - 修改主备密码/重置密码

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组的ID

  • +
  • Password (str) - (Required) 新密码字符串,要求长度为6~36个字符,且只能包含英文、数字以及-和下划线;并且需要base64加密;如要取消密码,此值为空字符串,

  • +
  • ResourceType (str) -

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+remove_ud_redis_data(req: Optional[dict] = None, **kwargs) dict[source]
+

RemoveUDRedisData - 清除udredis实例数据

+

Request

+ +

Response

+
+ +
+
+resize_umem_space(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeUMemSpace - 调整内存空间容量

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 内存大小, 单位:GB (需要大于原size,<= 1024)

  • +
  • SpaceId (str) - (Required) UMem 内存空间Id

  • +
  • CouponId (str) - 使用的代金券Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+resize_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeURedisGroup - 通过调用CheckURedisAllowance接口,检查资源情况,根据不同情形来调整主备redis容量,其中主要包括可用区资源不足无法扩容,主备所在宿主机资源不足需要迁移完成扩容(需要主从切换,会闪断及负载升高),以及直接扩容(业务无感知)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • GroupId (str) - (Required) 组ID

  • +
  • Size (int) - (Required) 内存大小, 单位:GB (需要大于原size,且小于等于32) 目前仅支持1/2/4/8/16/32 G 六种容量规格

  • +
  • ChargeType (str) -

  • +
  • CouponId (int) - 代金券ID 请参考DescribeCoupon接口

  • +
  • Type (str) - 空间类型:single(无热备),double(热备)(默认: double)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+restart_umem_cache_group(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartUMemcacheGroup - 重启单机Memcache

+

Request

+ +

Response

+
+ +
+
+restart_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartURedisGroup - 重启主备实例

+

Request

+ +

Response

+
+ +
+
+shutdown_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ShutdownURedisGroup - 关闭主备实例

+

Request

+ +

Response

+
+ +
+
+start_uredis_group(req: Optional[dict] = None, **kwargs) dict[source]
+

StartURedisGroup - 实例关闭状态下,启动实例

+

Request

+ +

Response

+
+ +
+
+update_uredis_backup_strategy(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateURedisBackupStrategy - URedisBackupStrategy

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BackupTime (str) - (Required) 备份时间,默认为0

  • +
  • GroupId (str) - (Required) 组的ID

  • +
  • AutoBackup (str) - 是否打开默认备份功能。enable(打开),disable(关闭),默认enable

  • +
  • SlaveZone (str) - 跨机房URedis,slave所在可用区(必须和Zone在同一Region,且不可相同)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+ +
+
+

UNet

+
+
+class ucloud.services.unet.client.UNetClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+allocate_eip(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateEIP - 根据提供信息, 申请弹性IP

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 共享带宽模式必须指定0M带宽, 非共享带宽模式必须指定非0Mbps带宽. 各地域非共享带宽的带宽范围如下: 流量计费[1-300],带宽计费[1-10000]

  • +
  • OperatorName (str) - (Required) 弹性IP线路,枚举值:国际线路, International;BGP线路:Bgp。使用BGP线路的地域:北京二、上海金融云、上海二、广州等,其他地域均使用国际线路。

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费,默认为按月付费。

  • +
  • CouponId (str) - 代金券ID, 默认不使用

  • +
  • Name (str) - 弹性IP的名称, 默认为 “EIP”

  • +
  • PayMode (str) - 弹性IP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; “ShareBandwidth”,共享带宽模式. 默认为 “Bandwidth”.“PostAccurateBandwidth”:带宽后付费模式

  • +
  • Quantity (int) - 购买的时长, 默认: 1

  • +
  • Remark (str) - 弹性IP的备注, 默认为空

  • +
  • ShareBandwidthId (str) - 绑定的共享带宽Id,仅当PayMode为ShareBandwidth时有效

  • +
  • Tag (str) - 业务组名称, 默认为 “Default”

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetAllocateEIPSet 模型定义

  • +
+

Response Model

+

UnetAllocateEIPSet +- EIPAddr (list) - 见 UnetEIPAddrSet 模型定义 +- EIPId (str) - 申请到的EIP资源ID

+

UnetEIPAddrSet +- IP (str) - IP地址 +- OperatorName (str) - 运营商信息如: 国际: International, BGP: BGP

+
+ +
+
+allocate_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateShareBandwidth - 开通共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 付费方式:Year 按年,Month 按月,Dynamic 按时;

  • +
  • Name (str) - (Required) 共享带宽名字

  • +
  • ShareBandwidth (int) - (Required) 共享带宽值

  • +
  • IPVersion (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4

  • +
  • Quantity (int) - 购买时长

  • +
+

Response

+
    +
  • ShareBandwidthId (str) - 共享带宽资源Id

  • +
+
+ +
+
+associate_eip_with_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

AssociateEIPWithShareBandwidth - 将EIP加入共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。

  • +
  • Region (str) - (Config) 地域。

  • +
  • EIPIds (list) - (Required) 要加入共享带宽的EIP的资源Id

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
  • IPVersion (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4

  • +
+

Response

+
+ +
+
+bind_eip(req: Optional[dict] = None, **kwargs) dict[source]
+

BindEIP - 将尚未使用的弹性IP绑定到指定的资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • ResourceId (str) - (Required) 弹性IP请求绑定的资源ID

  • +
  • ResourceType (str) - (Required) 弹性IP请求绑定的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:natgw;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;uni:虚拟网卡;cube,Cube容器。如果EIP为普通带宽计费,且带宽值高于2G,则只允许绑定在快杰型云主机和ULB

  • +
+

Response

+
+ +
+
+create_bandwidth_package(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateBandwidthPackage - 为非共享带宽模式下, 已绑定资源实例的带宽计费弹性IP附加临时带宽包

+

Request

+
    +
  • ProjectId (str) - (Config)

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 带宽大小(单位Mbps), 取值范围[2,800] (最大值受地域限制)

  • +
  • EIPId (str) - (Required) 所绑定弹性IP的资源ID

  • +
  • TimeRange (int) - (Required) 带宽包有效时长, 取值范围为大于0的整数, 即该带宽包在EnableTime到 EnableTime+TimeRange时间段内生效

  • +
  • CouponId (str) - 代金券ID

  • +
  • EnableTime (int) - 生效时间, 格式为 Unix timestamp, 默认为立即开通

  • +
+

Response

+
    +
  • BandwidthPackageId (str) - 所创建带宽包的资源ID

  • +
+
+ +
+
+create_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateFirewall - 创建防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • Name (str) - (Required) 防火墙名称

  • +
  • Rule (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注,bj1不支持添加备注

  • +
  • Remark (str) - 防火墙描述,默认为空

  • +
  • Tag (str) - 防火墙业务组,默认为Default

  • +
+

Response

+
    +
  • FWId (str) - 防火墙ID

  • +
+
+ +
+
+delete_bandwidth_package(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteBandwidthPackage - 删除弹性IP上已附加带宽包

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BandwidthPackageId (str) - (Required) 带宽包资源ID

  • +
+

Response

+
+ +
+
+delete_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteFirewall - 删除防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
+

Response

+
+ +
+
+describe_bandwidth_package(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeBandwidthPackage - 获取某地域下的带宽包信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20

  • +
  • Offset (int) - 返回数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSets (list) - 见 UnetBandwidthPackageSet 模型定义

  • +
  • TotalCount (int) - 满足条件的带宽包总数

  • +
+

Response Model

+

UnetBandwidthPackageSet +- Bandwidth (int) - 带宽包的临时带宽值, 单位Mbps +- BandwidthPackageId (str) - 带宽包的资源ID +- CreateTime (int) - 创建时间, 格式为 Unix Timestamp +- DisableTime (int) - 失效时间, 格式为 Unix Timestamp +- EIPAddr (list) - 见 EIPAddrSet 模型定义 +- EIPId (str) - 带宽包所绑定弹性IP的资源ID +- EnableTime (int) - 生效时间, 格式为 Unix Timestamp

+

EIPAddrSet +- IP (str) - 弹性IP地址 +- OperatorName (str) - 运营商信息, 枚举值为: BGP: BGP; International: 国际.

+
+ +
+
+describe_bandwidth_usage(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeBandwidthUsage - 获取带宽用量信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPIds (list) - 弹性IP的资源Id. 如果为空, 则返回当前 Region中符合条件的所有EIP的带宽用量, n为自然数

  • +
  • Limit (int) - 返回数据分页值, 取值范围为 [0,10000000] 之间的整数, 默认为20

  • +
  • OffSet (int) - 返回数据偏移量, 默认为0

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetBandwidthUsageEIPSet 模型定义

  • +
  • TotalCount (int) - EIPSet中的元素个数

  • +
+

Response Model

+

UnetBandwidthUsageEIPSet +- CurBandwidth (float) - 最近5分钟带宽用量, 单位Mbps +- EIPId (str) - 弹性IP资源ID

+
+ +
+
+describe_eip(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeEIP - 获取弹性IP信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • EIPIds (list) - 弹性IP的资源ID如果为空, 则返回当前 Region中符合条件的的所有EIP

  • +
  • IPs (list) - IP地址,支持通过ip查询,如果ip与EIP都传,会取并集查询

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • EIPSet (list) - 见 UnetEIPSet 模型定义

  • +
  • TotalBandwidth (int) - 满足条件的弹性IP带宽总和, 单位Mbps

  • +
  • TotalCount (int) - 满足条件的弹性IP总数

  • +
  • UnbindCount (int) - 未绑定的弹性IP总数

  • +
+

Response Model

+

UnetEIPSet +- Bandwidth (int) - 弹性IP的带宽, 单位为Mbps, 当BandwidthType=1时, 该处显示为共享带宽值. 当BandwidthType=0时, 该处显示这个弹性IP的带宽. +- BandwidthType (int) - 带宽模式, 枚举值为: 0: 非共享带宽模式, 1: 共享带宽模式 +- ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按小时付费; Trial, 试用. 按小时付费和试用这两种付费模式需要开通权限. +- CreateTime (int) - 弹性IP的创建时间, 格式为Unix Timestamp +- EIPAddr (list) - 见 UnetEIPAddrSet 模型定义 +- EIPId (str) - 弹性IP的资源ID +- Expire (bool) - 弹性IP是否到期 +- ExpireTime (int) - 弹性IP的到期时间, 格式为Unix Timestamp +- Name (str) - 弹性IP的名称,缺省值为 “EIP” +- PayMode (str) - 弹性IP的计费模式, 枚举值为: “Bandwidth”, 带宽计费; “Traffic”, 流量计费; “ShareBandwidth”,共享带宽模式. 默认为 “Bandwidth”. +- Remark (str) - 弹性IP的备注, 缺省值为 “” +- Resource (dict) - 见 UnetEIPResourceSet 模型定义 +- ShareBandwidthSet (dict) - 见 ShareBandwidthSet 模型定义 +- Status (str) - 弹性IP的资源绑定状态, 枚举值为: used: 已绑定, free: 未绑定, freeze: 已冻结 +- Tag (str) - 弹性IP的业务组标识, 缺省值为 “Default” +- Weight (int) - 外网出口权重, 默认为50, 范围[0-100]

+

UnetEIPAddrSet +- IP (str) - IP地址 +- OperatorName (str) - 运营商信息如: 国际: International, BGP: BGP

+

UnetEIPResourceSet +- EIPId (str) - 弹性IP的资源ID +- ResourceID (str) - 已绑定资源的资源ID +- ResourceName (str) - 已绑定的资源名称 +- ResourceType (str) - 已绑定的资源类型, 枚举值为: uhost, 云主机;natgw:NAT网关;ulb:负载均衡器;upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;vpngw:IPSec VPN;ucdr:云灾备;dbaudit:数据库审计,uni:虚拟网卡。 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的类型。uni,虚拟网卡。

+

ShareBandwidthSet +- ShareBandwidth (int) - 共享带宽带宽值 +- ShareBandwidthId (str) - 共享带宽ID +- ShareBandwidthName (str) - 共享带宽的资源名称

+
+ +
+
+describe_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeFirewall - 获取防火墙组信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • FWId (str) - 防火墙ID,默认为返回所有防火墙

  • +
  • Limit (int) - 返回数据长度,默认为20,最大10000000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceId (str) - 绑定防火墙组的资源ID

  • +
  • ResourceType (str) - 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:”unatgw”,NAT网关; “uhost”,云主机;“uni”,虚拟网卡; “upm”,物理云主机; “hadoophost”,hadoop节点; “fortresshost”,堡垒机; “udhost”,私有专区主机;”udockhost”,容器;”dbaudit”,数据库审计.

  • +
+

Response

+
    +
  • DataSet (list) - 见 FirewallDataSet 模型定义

  • +
  • TotalCount (int) - 防火墙资源数量

  • +
+

Response Model

+

FirewallDataSet +- CreateTime (int) - 防火墙组创建时间,格式为Unix Timestamp +- FWId (str) - 防火墙ID +- GroupId (str) - 安全组ID(即将废弃) +- Name (str) - 防火墙名称 +- Remark (str) - 防火墙备注 +- ResourceCount (int) - 防火墙绑定资源数量 +- Rule (list) - 见 FirewallRuleSet 模型定义 +- Tag (str) - 防火墙业务组 +- Type (str) - 防火墙组类型,枚举值为: “user defined”, 用户自定义防火墙; “recommend web”, 默认Web防火墙; “recommend non web”, 默认非Web防火墙

+

FirewallRuleSet +- DstPort (str) - 目标端口 +- Priority (str) - 优先级 +- ProtocolType (str) - 协议类型 +- Remark (str) - 防火墙规则备注 +- RuleAction (str) - 防火墙动作 +- SrcIP (str) - 源地址

+
+ +
+
+describe_firewall_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeFirewallResource - 获取防火墙组所绑定资源的外网IP

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙ID

  • +
  • Limit (int) - 返回数据长度,默认为20,最大1000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • ResourceSet (list) - 见 ResourceSet 模型定义

  • +
  • TotalCount (int) - 绑定资源总数

  • +
+

Response Model

+

ResourceSet +- Name (str) - 名称 +- PrivateIP (str) - 内网IP +- Remark (str) - 备注 +- ResourceID (str) - 绑定该防火墙的资源id +- ResourceType (str) - 绑定防火墙组的资源类型。”unatgw”,NAT网关; “uhost”,云主机; “upm”,物理云主机; “hadoophost”,hadoop节点; “fortresshost”,堡垒机; “udhost”,私有专区主机;”udockhost”,容器;”dbaudit”,数据库审计,“uni”,虚拟网卡。 +- Status (int) - 状态 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的类型,“uni”,虚拟网卡。 +- Tag (str) - 业务组 +- Zone (int) - 可用区

+
+ +
+
+describe_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeShareBandwidth - 获取共享带宽信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ShareBandwidthIds (list) - 需要返回的共享带宽Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 UnetShareBandwidthSet 模型定义

  • +
  • TotalCount (int) - 符合条件的共享带宽总数,大于等于返回DataSet长度

  • +
+

Response Model

+

UnetShareBandwidthSet +- ChargeType (str) - 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需;后付费:PostPay(按月) +- CreateTime (int) - 创建时间, 格式为Unix Timestamp +- EIPSet (list) - 见 EIPSetData 模型定义 +- ExpireTime (int) - 过期时间, 格式为Unix Timestamp +- IPVersion (str) - 共享带宽类型 +- Name (str) - 共享带宽名称 +- ShareBandwidth (int) - 共享带宽值(预付费)/共享带宽峰值(后付费), 单位Mbps +- ShareBandwidthId (str) - 共享带宽的资源ID

+

EIPSetData +- Bandwidth (int) - EIP带宽值 +- EIPAddr (list) - 见 EIPAddrSet 模型定义 +- EIPId (str) - EIP资源Id

+

EIPAddrSet +- IP (str) - 弹性IP地址 +- OperatorName (str) - 运营商信息, 枚举值为: BGP: BGP; International: 国际.

+
+ +
+
+describe_share_bandwidth_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeShareBandwidthPrice - 获取共享带宽价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 付费方式, 预付费:Year 按年,Month 按月,Dynamic 按需;

  • +
  • ShareBandwidth (int) - (Required) 共享带宽值

  • +
  • OperatorName (str) - 香港地域支持:BGPPro和International。其他地域无需填写该字段

  • +
  • Quantity (int) - 购买数量

  • +
+

Response

+
    +
  • TotalPrice (int) - 共享带宽总价格

  • +
+
+ +
+
+describe_share_bandwidth_update_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeShareBandwidthUpdatePrice - 获取共享带宽升级价格

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ShareBandwidth (int) - (Required) 共享带宽值

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽Id

  • +
+

Response

+
    +
  • Price (float) - 共享带宽升降级价格

  • +
+
+ +
+
+disassociate_eip_with_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

DisassociateEIPWithShareBandwidth - 将EIP移出共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 移出共享带宽后,EIP的外网带宽, 单位为Mbps. 各地域带宽范围如下: 流量计费[1-200],带宽计费[1-800]

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
  • EIPIds (list) - EIP的资源Id;默认移出该共享带宽下所有的EIP

  • +
  • IPVersion (str) - 共享带宽类型,IPv4或者IPv6,不传默认IPv4

  • +
  • PayMode (str) - 移出共享带宽后,EIP的计费模式. 枚举值: “Traffic”, 流量计费; “Bandwidth”, 带宽计费; 默认为 “Bandwidth”.

  • +
+

Response

+
+ +
+
+disassociate_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

DisassociateFirewall - 解绑资源上的防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙ID

  • +
  • ResourceId (str) - (Required) 需要解绑的资源ID

  • +
  • ResourceType (str) - (Required) 资源类型:ULB 表示负载均衡

  • +
+

Response

+
+ +
+
+get_eip_pay_mode(req: Optional[dict] = None, **kwargs) dict[source]
+

GetEIPPayMode - 获取弹性IP计费模式

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (list) - (Required) 弹性IP的资源Id

  • +
+

Response

+
    +
  • EIPPayMode (list) - 见 EIPPayModeSet 模型定义

  • +
+

Response Model

+

EIPPayModeSet +- EIPId (str) - EIP的资源ID +- EIPPayMode (str) - EIP的计费模式. 枚举值为:Bandwidth, 带宽计费;Traffic, 流量计费; “ShareBandwidth”,共享带宽模式

+
+ +
+
+get_eip_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetEIPPrice - 获取弹性IP价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [0-800]

  • +
  • OperatorName (str) - (Required) 弹性IP的线路如下: 国际: International BGP: Bgp 各地域允许的线路参数如下: cn-sh1: Bgp cn-sh2: Bgp cn-gd: Bgp cn-bj1: Bgp cn-bj2: Bgp hk: International us-ca: International th-bkk: International kr-seoul:International us-ws:International ge-fra:International sg:International tw-kh:International.其他海外线路均为 International,泉州为移动单线cn-qz:ChinaMobile

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费; 默认为获取三种价格

  • +
  • PayMode (str) - 弹性IP计费方式r. 枚举值为: Traffic, 流量计费; Bandwidth, 带宽计费; “ShareBandwidth”,共享带宽模式. 默认为Bandwidth

  • +
  • Quantity (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末

  • +
+

Response

+
    +
  • PriceSet (list) - 见 EIPPriceDetailSet 模型定义

  • +
+

Response Model

+

EIPPriceDetailSet +- ChargeType (str) - 弹性IP付费方式 +- OriginalPrice (float) - 弹性IP的原价,单位“元” +- Price (float) - 购买弹性IP的实际价格, 单位”元” +- PurchaseValue (int) - 资源有效期, 以Unix Timestamp表示

+
+ +
+
+get_eip_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetEIPUpgradePrice - 获取弹性IP带宽改动价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps, 范围 [1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
    +
  • Price (float) - 调整带宽后的EIP价格, 单位为”元”, 如需退费此处为负值

  • +
+
+ +
+
+get_throughput_daily_billing_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetThroughputDailyBillingInfo - 获取流量计费EIP每日流量计费信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) EIP的资源ID

  • +
  • EndTime (int) - (Required) 查询结束时间时间戳

  • +
  • StartTime (int) - (Required) 查询开始时间时间戳

  • +
+

Response

+
    +
  • EIPId (str) - 资源ID

  • +
  • Stats (list) - 见 ThroughputDailyBillingInfo 模型定义

  • +
  • TotalOut (int) - 计费总流量

  • +
+

Response Model

+

ThroughputDailyBillingInfo +- BillingState (str) - 是否已计费,“Yes”或者“No” +- EndTime (int) - 计费结束时间 +- QuantityOut (int) - 计费流量,单位“GB” +- StartTime (int) - 计费开始时间

+
+ +
+
+grant_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

GrantFirewall - 将防火墙应用到资源上

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • ResourceId (str) - (Required) 所应用资源ID

  • +
  • ResourceType (str) - (Required) 绑定防火墙组的资源类型,默认为全部资源类型。枚举值为:”unatgw”,NAT网关; “uhost”,云主机; “upm”,物理云主机; “hadoophost”,hadoop节点; “fortresshost”,堡垒机; “udhost”,私有专区主机;”udockhost”,容器;”dbaudit”,数据库审计,”uni“,虚拟网卡,“cube”,Cube容器实例。

  • +
+

Response

+
+ +
+
+modify_eip_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyEIPBandwidth - 调整弹性IP的外网带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 弹性IP的外网带宽, 单位为Mbps. 各地域的带宽值范围如下:流量计费[1-200],带宽计费[1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
+ +
+
+modify_eip_weight(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyEIPWeight - 修改弹性IP的外网出口权重

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
  • Weight (int) - (Required) 外网出口权重, 范围[0-100] 取值为0时, 该弹性IP不会被使用. 取值为100时, 同主机下只会使用这个弹性IP,其他弹性IP不会被使用 请勿将多个绑定在同一资源的弹性IP设置为相同权重

  • +
+

Response

+
+ +
+
+release_eip(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseEIP - 释放弹性IP资源, 所释放弹性IP必须为非绑定状态.

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源ID

  • +
+

Response

+
+ +
+
+release_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseShareBandwidth - 关闭共享带宽

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPBandwidth (int) - (Required) 关闭共享带宽后,各EIP恢复为的带宽值

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽ID

  • +
  • PayMode (str) - 默认为 Bandwidth 带宽计费

  • +
+

Response

+
+ +
+
+resize_share_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizeShareBandwidth - 调整共享带宽的带宽值

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ShareBandwidth (int) - (Required) 带宽值,单位为Mb,范围 [20-5000] (最大值受地域限制)

  • +
  • ShareBandwidthId (str) - (Required) 共享带宽的Id

  • +
+

Response

+
+ +
+
+set_eip_pay_mode(req: Optional[dict] = None, **kwargs) dict[source]
+

SetEIPPayMode - 设置弹性IP计费模式, 切换时会涉及付费/退费.

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Bandwidth (int) - (Required) 调整的目标带宽值, 单位Mbps. 各地域的带宽值范围如下: 流量计费[1-200],其余情况[1-800]

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • PayMode (str) - (Required) 计费模式. 枚举值:”Traffic”, 流量计费模式; “Bandwidth”, 带宽计费模式

  • +
+

Response

+
+ +
+
+un_bind_eip(req: Optional[dict] = None, **kwargs) dict[source]
+

UnBindEIP - 将弹性IP从资源上解绑

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) 弹性IP的资源Id

  • +
  • ResourceId (str) - (Required) 弹性IP请求解绑的资源ID

  • +
  • ResourceType (str) - (Required) 弹性IP请求解绑的资源类型, 枚举值为: uhost: 云主机; ulb, 负载均衡器 upm: 物理机; hadoophost: 大数据集群;fortresshost:堡垒机;udockhost:容器;udhost:私有专区主机;natgw:NAT网关;udb:udb;vpngw:ipsec vpn;ucdr:云灾备;dbaudit:数据库审计;

  • +
+

Response

+
+ +
+
+update_eip_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateEIPAttribute - 更新弹性IP名称,业务组,备注等属性字段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPId (str) - (Required) EIP资源ID

  • +
  • Name (str) - 名字(Name Tag Remark都为空则报错)

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务

  • +
+

Response

+
+ +
+
+update_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateFirewall - 更新防火墙规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • Rule (list) - (Required) 防火墙规则,例如:TCP|22|192.168.1.1/22|DROP|LOW|禁用22端口,第一个参数代表协议:第二个参数代表端口号,第三个参数为ip,第四个参数为ACCEPT(接受)和DROP(拒绝),第五个参数优先级:HIGH(高),MEDIUM(中),LOW(低),第六个参数为该条规则的自定义备注

  • +
+

Response

+
    +
  • FWId (str) - 防火墙id

  • +
+
+ +
+
+update_firewall_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateFirewallAttribute - 更新防火墙规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • FWId (str) - (Required) 防火墙资源ID

  • +
  • Name (str) - 防火墙名称,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
  • Remark (str) - 防火墙备注,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
  • Tag (str) - 防火墙业务组,默认为空,为空则不做修改。Name,Tag,Remark必须填写1个及以上

  • +
+

Response

+
+ +
+ +
+
+

UPHost

+
+
+class ucloud.services.uphost.client.UPHostClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

CreatePHost - 指定数据中心,根据资源使用量创建指定数量的UPHost物理云主机实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - (Required) ImageId,可以通过接口 DescribePHostImage 获取

  • +
  • Password (str) - (Required) 密码(密码需使用base64进行编码)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式,枚举值为:year, 按年付费; month,按月付费;默认为按月付费

  • +
  • Cluster (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G。智能网卡可以选择25G。

  • +
  • CouponId (str) - 代金券

  • +
  • Disks (list) - 见 CreatePHostParamDisks 模型定义

  • +
  • Name (str) - 物理机名称,默认为phost

  • +
  • Quantity (str) - 购买时长,1-10个月或1-10年;默认值为1。月付时,此参数传0,代表购买至月末,1代表整月。

  • +
  • Raid (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid

  • +
  • Remark (str) - 物理机备注,默认为空

  • +
  • SecurityGroupId (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 DescribeFirewall

  • +
  • SubnetId (str) - 子网ID,不填为默认,VPC2.0下需要填写此字段。

  • +
  • Tag (str) - 业务组,默认为default

  • +
  • Type (str) - 物理机类型,默认为:db-2(基础型-SAS-V3)

  • +
  • VPCId (str) - VPC ID,不填为默认,VPC2.0下需要填写此字段。

  • +
  • VpcIp (str) - 指定内网ip创建

  • +
+

Response

+
    +
  • PHostId (list) - PHost的资源ID数组

  • +
+

Request Model

+

CreatePHostParamDisks +- CouponId (str) - 裸金属机型参数->云盘代金券id。不适用于系统盘。请通过DescribeCoupon接口查询,或登录用户中心查看 +- IsBoot (str) - 裸金属机型参数->是否是系统盘。枚举值: True,是系统盘。 False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 +- Size (int) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。 +- Type (str) - 裸金属机型参数->磁盘类型:枚举值:CLOUD_RSSD

+
+ +
+
+create_phost_image(req: Optional[dict] = None, **kwargs) dict[source]
+

CreatePHostImage - 创建裸金属2.0用户自定义镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • PHostId (str) - (Required) UPHost实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ImageDescription (str) - 镜像描述

  • +
+

Response

+
    +
  • ImageId (str) - 镜像ID

  • +
+
+ +
+
+describe_baremetal_machine_type(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeBaremetalMachineType - 获取裸金属机型的详细描述信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Type (str) - 具体机型。若不填写,则返回全部机型

  • +
+

Response

+
    +
  • MachineTypes (list) - 见 PHostCloudMachineTypeSet 模型定义

  • +
+

Response Model

+

PHostClusterSet +- Name (str) - 集群名。枚举值:千兆网络集群:1G;万兆网络集群:10G;智能网卡网络:25G; +- StockStatus (str) - 库存状态。枚举值:有库存:Available;无库存:SoldOut

+

PHostComponentSet +- Count (int) - 组件数量 +- Name (str) - 组件名称

+

PHostCPUSet +- CoreCount (int) - CPU核数 +- Count (int) - CPU个数 +- Frequence (float) - CPU主频 +- Model (str) - CPU型号

+

PHostCloudMachineTypeSet +- CPU (dict) - 见 PHostCPUSet 模型定义 +- Clusters (list) - 见 PHostClusterSet 模型定义 +- Components (dict) - 见 PHostComponentSet 模型定义 +- Memory (int) - 内存大小,单位MB +- Type (str) - 物理云主机机型别名,全网唯一。

+
+ +
+
+describe_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePHost - 获取物理机详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
  • PHostId (list) - PHost资源ID,若为空,则返回当前Region所有PHost。

  • +
  • UDiskIdForAttachment (str) - 要挂载的云盘id,过滤返回能被UDiskId挂载的云主机。目前主要针对rssd云盘使用

  • +
  • VPCId (str) - ULB使用参数,获取同VPC下机器信息。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostSet (list) - 见 PHostSet 模型定义

  • +
  • TotalCount (int) - 满足条件的PHost总数

  • +
+

Response Model

+

PHostSet +- AutoRenew (str) - 自动续费 +- CPUSet (dict) - 见 PHostCPUSet 模型定义 +- ChargeType (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费;默认为月付 +- Cluster (str) - 网络环境。枚举值:千兆:1G ,万兆:10G +- Components (str) - 组件信息(暂不支持) +- CreateTime (int) - 创建时间 +- DiskSet (list) - 见 PHostDescDiskSet 模型定义 +- ExpireTime (int) - 到期时间 +- IPSet (list) - 见 PHostIPSet 模型定义 +- ImageName (str) - 镜像名称 +- IsSupportKVM (str) - 是否支持紧急登录 +- Memory (int) - 内存大小,单位:MB +- Name (str) - 物理机名称 +- OSType (str) - 操作系统类型 +- OSname (str) - 操作系统名称 +- PHostId (str) - PHost资源ID +- PHostType (str) - 物理机类型,参见DescribePHostMachineType返回值 +- PMStatus (str) - 物理云主机状态。枚举值:> 初始化:Initializing; > 启动中:Starting; > 运行中:Running;> 关机中:Stopping; > 安装失败:InstallFailed; > 重启中:Rebooting;> 关机:Stopped; > 迁移中(裸金属云盘):Migrating +- PhostClass (str) - 物理云产品类型,枚举值:LocalDisk=>代表传统本地盘机型, CloudDisk=>云盘裸金属机型 +- PowerState (str) - 电源状态,on 或 off +- RaidSupported (str) - 是否支持Raid。枚举值:Yes:支持;No:不支持。 +- Remark (str) - 物理机备注 +- SN (str) - 物理机序列号 +- Tag (str) - 业务组 +- Zone (str) - 可用区,参见 可用区列表

+

PHostCPUSet +- CoreCount (int) - CPU核数 +- Count (int) - CPU个数 +- Frequence (float) - CPU主频 +- Model (str) - CPU型号

+

PHostDiskSet +- Count (int) - +- IOCap (int) - +- Name (str) - +- Space (int) - +- Type (str) -

+

PHostIPSet +- Bandwidth (int) - IP对应带宽,单位Mb,内网IP不显示带宽信息 +- IPAddr (str) - IP地址, +- IPId (str) - IP资源ID(内网IP无资源ID)(待废弃) +- MACAddr (str) - MAC地址 +- OperatorName (str) - 国际: Internation, BGP: BGP, 内网: Private +- SubnetId (str) - 子网ID +- VPCId (str) - VPC ID

+

PHostDescDiskSet +- Count (int) - 磁盘数量 +- DiskId (str) - 裸金属机型参数:磁盘ID +- Drive (str) - 裸金属机型参数:磁盘盘符 +- IOCap (int) - 磁盘IO性能,单位MB/s(待废弃) +- IsBoot (str) - 裸金属机型参数:是否是启动盘。True/False +- Name (str) - 磁盘名称,sys/data +- Space (int) - 单盘大小,单位GB +- Type (str) - 磁盘属性

+
+ +
+
+describe_phost_image(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePHostImage - 获取物理云主机镜像列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ImageId (list) - 镜像ID

  • +
  • ImageType (str) - 镜像类别,枚举值,Base是基础镜像;Custom是自制镜像。

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • MachineType (str) - 机器型号,只支持当前zone的展示机型

  • +
  • Offset (int) - 数据偏移量,默认为0

  • +
+

Response

+
    +
  • ImageSet (list) - 见 PHostImageSet 模型定义

  • +
  • TotalCount (int) - 满足条件的镜像总数

  • +
+

Response Model

+

PHostImageSet +- CreateTime (int) - 裸金属2.0参数。镜像创建时间。 +- ImageDescription (str) - 镜像描述 +- ImageId (str) - 镜像ID +- ImageName (str) - 镜像名称 +- ImageSize (int) - 裸金属2.0参数。镜像大小。 +- ImageType (str) - 枚举值:Base=>基础镜像,Custom=>自制镜像。 +- OsName (str) - 操作系统名称 +- OsType (str) - 操作系统类型 +- State (str) - 裸金属2.0参数。镜像当前状态。 +- Support (list) - 支持的机型 +- Version (str) - 当前版本

+
+ +
+
+describe_phost_machine_type(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePHostMachineType - 获取物理云机型的详细描述信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Type (str) - 具体机型。若不填写,则返回全部机型

  • +
+

Response

+
    +
  • MachineTypes (list) - 见 PHostMachineTypeSet 模型定义

  • +
+

Response Model

+

PHostClusterSet +- Name (str) - 集群名。枚举值:千兆网络集群:1G;万兆网络集群:10G;智能网卡网络:25G; +- StockStatus (str) - 库存状态。枚举值:有库存:Available;无库存:SoldOut

+

PHostComponentSet +- Count (int) - 组件数量 +- Name (str) - 组件名称

+

PHostDiskSet +- Count (int) - 磁盘数量 +- IOCap (int) - 磁盘IO性能,单位MB/s(待废弃) +- Name (str) - 磁盘名称,sys/data +- Space (int) - 单盘大小,单位GB +- Type (str) - 磁盘属性

+

PHostCPUSet +- CoreCount (int) - CPU核数 +- Count (int) - CPU个数 +- Frequence (float) - CPU主频 +- Model (str) - CPU型号

+

PHostMachineTypeSet +- CPU (dict) - 见 PHostCPUSet 模型定义 +- Clusters (list) - 见 PHostClusterSet 模型定义 +- Components (dict) - 见 PHostComponentSet 模型定义 +- Disks (list) - 见 PHostDiskSet 模型定义 +- Memory (int) - 内存大小,单位MB +- RaidSupported (str) - 是否支持Raid。枚举值:支持:YES;不支持:NO +- Type (str) - 物理云主机机型别名,全网唯一。

+
+ +
+
+describe_phost_tags(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribePHostTags - 获取物理机tag列表(业务组)

+

Request

+ +

Response

+
    +
  • TagSet (list) - 见 PHostTagSet 模型定义

  • +
  • TotalCount (int) - Tag的个数

  • +
+

Response Model

+

PHostTagSet +- Tag (str) - 业务组名称 +- TotalCount (int) - 该业务组中包含的主机个数

+
+ +
+
+get_phost_disk_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetPhostDiskUpgradePrice - 获取物理云裸金属挂载磁盘的升级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DiskId (str) - (Required) 磁盘ID。

  • +
  • DiskSpace (int) - (Required) 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。

  • +
  • PHostId (str) - (Required) UPHost实例ID。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Price (float) - 升级差价。精度为小数点后2位。

  • +
+
+ +
+
+get_phost_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetPHostPrice - 获取物理机价格列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 计费模式,枚举值为: Year/Month

  • +
  • Count (int) - (Required) 购买数量,范围[1-5]

  • +
  • Quantity (int) - (Required) 购买时长,1-10个月或1-10年;默认值为1。月付时,此参数传0,代表购买至月末,1代表整月。

  • +
  • Cluster (str) - 网络环境,可选千兆:1G ;万兆:10G;25G网络:25G。

  • +
  • Disks (list) - 见 GetPHostPriceParamDisks 模型定义

  • +
  • Type (str) - 默认为:DB(数据库型),可以通过接口 DescribePHostMachineType 获取

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PriceSet (list) - 见 PHostPriceSet 模型定义

  • +
+

Request Model

+

GetPHostPriceParamDisks +- IsBoot (str) - 裸金属机型参数->枚举值:> True,是系统盘 > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 +- Size (str) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB。数据盘是20-32000G。 +- Type (str) - 裸金属机型参数->磁盘类型:枚举值:CLOUD_RSSD

+

Response Model

+

PHostPriceSet +- ChargeType (str) - Year/Month +- OriginalPrice (float) - 原价格, 单位:元, 保留小数点后两位有效数字 +- Price (float) - 价格, 单位:元, 保留小数点后两位有效数字 +- Product (str) - 枚举值:phost=>为主机价格,如果是云盘包括了系统盘价格。cloudDisk=>所有数据盘价格,只是裸金属机型才返回此参数。

+
+ +
+
+modify_phost_image_info(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyPHostImageInfo - 修改自定义镜像名称和备注

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ImageId (str) - (Required) 镜像ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Name (str) - 镜像名称

  • +
  • Remark (str) - 备注

  • +
+

Response

+
    +
  • ImageId (str) - 镜像ID

  • +
+
+ +
+
+modify_phost_info(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyPHostInfo - 更改物理机信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) 物理机资源ID

  • +
  • Name (str) - 物理机名称,默认不更改

  • +
  • Remark (str) - 物理机备注,默认不更改

  • +
  • Tag (str) - 业务组,默认不更改

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+poweroff_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

PoweroffPHost - 断电物理云主机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+reboot_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

RebootPHost - 重启物理机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+reinstall_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

ReinstallPHost - 重装物理机操作系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) PHost资源ID

  • +
  • Password (str) - (Required) 密码

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BootDiskSpace (int) - 裸金属机型参数->系统盘大小。 单位:GB, 范围[20,500], 步长:10

  • +
  • ImageId (str) - 镜像Id,参考镜像列表,默认使用原镜像

  • +
  • Name (str) - 物理机名称,默认不更改

  • +
  • Raid (str) - 不保留数据盘重装,可选Raid

  • +
  • Remark (str) - 物理机备注,默认为不更改。

  • +
  • ReserveDisk (str) - 是否保留数据盘,保留:Yes,不报留:No, 默认:Yes

  • +
  • Tag (str) - 业务组,默认不更改。

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+reset_phost_password(req: Optional[dict] = None, **kwargs) dict[source]
+

ResetPHostPassword - 重置裸金属实例的管理员密码

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) 裸金属实例ID

  • +
  • Password (str) - (Required) PHost新密码(密码格式使用BASE64编码)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostId (str) - 裸金属实例ID

  • +
+
+ +
+
+resize_phost_attached_disk(req: Optional[dict] = None, **kwargs) dict[source]
+

ResizePHostAttachedDisk - 修改裸金属物理云已经挂载的云盘容量大小

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DiskSpace (int) - 裸金属机型参数->磁盘大小,单位GB,必须是10GB的整数倍。系统盘20-500GB,数据盘单块盘20-32000GB。

  • +
  • PHostId (str) - UPHost实例ID。

  • +
  • UDiskId (str) - 磁盘ID。

  • +
+

Response

+
    +
  • UDiskId (str) - 改配成功的磁盘id

  • +
+
+ +
+
+start_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

StartPHost - 启动物理机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+stop_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

StopPHost - 关闭物理机

+

Request

+ +

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+terminate_phost(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminatePHost - 删除物理云主机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PHostId (str) - (Required) PHost资源ID

  • +
  • ReleaseEIP (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。

  • +
  • ReleaseUDisk (bool) - 裸金属机型参数->删除主机时是否同时删除挂载的数据盘。默认为false。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • PHostId (str) - PHost 的资源ID

  • +
+
+ +
+
+terminate_phost_image(req: Optional[dict] = None, **kwargs) dict[source]
+

TerminatePHostImage - 删除裸金属2.0用户自定义镜像

+

Request

+ +

Response

+
    +
  • ImageId (str) - 自制镜像ID

  • +
+
+ +
+ +
+
+

USMS

+
+
+class ucloud.services.usms.client.USMSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_usms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUSMSSignature - 调用接口CreateUSMSSignature申请短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CertificateType (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • Description (str) - (Required) 短信签名申请原因

  • +
  • File (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB

  • +
  • SigContent (str) - (Required) 签名内容

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • International (bool) - 国内/国际短信。true:国际短信,false:国内短信,若不传值则默认该值为false

  • +
  • ProxyFile (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
  • SigId (str) - 短信签名ID(短信签名申请时的工单ID)

  • +
+
+ +
+
+create_usms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUSMSTemplate - 调用接口CreateUSMSTemplate申请短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Purpose (int) - (Required) 短信模板用途类型:1-验证码类短信模板;2-系统通知类短信模板;3-会员推广类短信模板;

  • +
  • Template (str) - (Required) 短信模板内容,说明如下:字数不超过500,每个中文、符号、英文、数组等都计为一个字;模板中的变量填写格式:{N},其中N为大于1的整数,有多个参数时,建议N从1开始顺次,例如:{1}、{2}等;短信模板禁止仅包括变量的情况;

  • +
  • TemplateName (str) - (Required) 短信模板名称,不超过32个字符,每个中文、符号、英文、数字等都计为1个字。

  • +
  • International (bool) - 标记是否为国际短信。true:国际短信,false:国内短信,若不传值则默认该值为false

  • +
  • Remark (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。

  • +
  • UnsubscribeInfo (str) - 当Purpose为3时,也即会员推广类短信模板,该项必填。枚举值:TD退订、回T退订、回N退订、回TD退订、退订回T、退订回D、退订回TD、退订回复T、退订回复D、退订回复N、退订回复TD、拒收回T

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
  • TemplateId (str) - 短信模板ID(短信模板申请时的工单ID)

  • +
+
+ +
+
+delete_usms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUSMSSignature - 调用接口DeleteUSMSSignature删除短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigIds (list) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+delete_usms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUSMSTemplate - 调用接口DeleteUSMSTemplate删除短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TemplateIds (list) - (Required) 模板ID(也即短信模板申请时的工单ID),支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1…TemplateIds.N方式传入

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+get_usms_send_receipt(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUSMSSendReceipt - 调用接口GetUSMSSendReceipt短信发送状态信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SessionNoSet (list) - (Required) 发送短信时返回的SessionNo集合,SessionNoSet.0,SessionNoSet.1….格式,单次调用集合数需控制在100个以内

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Data (list) - 见 ReceiptPerSession 模型定义

  • +
  • Message (str) - 错误描述

  • +
+

Response Model

+

ReceiptPerSession +- ReceiptSet (list) - 见 ReceiptPerPhone 模型定义 +- SessionNo (str) - 发送短信时返回的SessionNo

+

ReceiptPerPhone +- CostCount (int) - 消耗短信条数 +- Phone (str) - 手机号码 +- ReceiptCode (str) - 状态报告编码 +- ReceiptDesc (str) - 回执结果描述 +- ReceiptResult (str) - 回执结果,枚举值:> 发送成功: 代表成功 > Success: 代表成功 > 发送失败: 代表失败 > Fail: 代表失败 > 状态未知: 代表未知 > Unknow: 代表未知 +- ReceiptTime (int) - 回执返回时间 +- UserId (str) - 自定义的业务标识ID,字符串

+
+ +
+
+query_usms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

QueryUSMSSignature - 调用接口QueryUSMSSignature查询短信签名申请状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigContent (str) - 签名内容;签名ID和签名至少需填写1项;

  • +
  • SigId (str) - 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项;

  • +
+

Response

+
    +
  • Data (dict) - 见 OutSignature 模型定义

  • +
  • Message (str) - 发生错误时,表示具体错误描述

  • +
+

Response Model

+

OutSignature +- ErrDesc (str) - 签名审核失败原因 +- SigContent (str) - 签名内容 +- SigId (str) - 签名ID +- Status (int) - 签名状态。0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用

+
+ +
+
+query_usms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

QueryUSMSTemplate - 调用接口QueryUSMSTemplate查询短信模板申请状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TemplateId (str) - (Required) 模板ID

  • +
+

Response

+
    +
  • Data (dict) - 见 OutTemplate 模型定义

  • +
  • Message (str) - 当RetCode不为0时,Message中显示具体错误描述

  • +
+

Response Model

+

OutTemplate +- CreateTime (int) - 创建时间 +- ErrDesc (str) - 审核失败原因 +- Purpose (int) - 模板类型,选项:1-验证码类 2-通知类 3-会员推广类 +- Remark (str) - 模板说明 +- Status (int) - 短信模板状态;状态说明:0-待审核,1-审核中,2-审核通过,3-审核未通过,4-被禁用 +- Template (str) - 短信模板内容 +- TemplateId (str) - 短信模板ID +- TemplateName (str) - 短信模板名称 +- UnsubscribeInfo (str) - 退订信息;一般填写方式“回T退订”,当purpose为3(也即会员推广类)时,为必填项

+
+ +
+
+send_batch_usms_message(req: Optional[dict] = None, **kwargs) dict[source]
+

SendBatchUSMSMessage - 调用SendBatchUSMSMessage接口批量发送短信

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TaskContent (str) - (Required) 批量发送内容,该参数是json数组的base64编码结果。发送内容json数组中,每个“模板+签名”组合作为一个子项,每个子项内支持多个号码,示例:发送内容json数组(base64编码前):[{“TemplateId”: “UTA20212831C85C”, “SigContent”: “UCloud”, “Target”: [{“TemplateParams”: [“123456”], “Phone”: “18500000123”, “ExtendCode”: “123”, “UserId”: “456”} ] } ] 。json数组中各参数的定义:”TemplateId”:模板ID,”SigContent”短信签名内容,”Target”具体到号码粒度的发送内容。”Target”中的具体字段有:”TemplateParams”实际发送的模板参数(若使用的是无参数模板,该参数不能传值),”Phone”手机号码, “ExtendCode”短信扩展码, “UserId”自定义业务标识ID。其中必传参数为”TemplateId”, “SigContent”, “Target”(”Target”中必传参数为”Phone”)。实际调用本接口时TaskContent传值(发送内容base64编码后)为:W3siVGVtcGxhdGVJZCI6ICJVVEEyMDIxMjgzMUM4NUMiLCAiU2lnQ29udGVudCI6ICJVQ2xvdWQiLCAiVGFyZ2V0IjogW3siVGVtcGxhdGVQYXJhbXMiOiBbIjEyMzQ1NiJdLCAiUGhvbmUiOiAiMTg1MDAwMDAxMjMiLCAiRXh0ZW5kQ29kZSI6ICIxMjMiLCAiVXNlcklkIjogIjQ1NiJ9IF0gfSBdIA==

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • FailContent (list) - 见 BatchInfo 模型定义

  • +
  • Message (str) - 发生错误时表示错误描述

  • +
  • ReqUuid (str) - 本次请求Uuid

  • +
  • RetCode (int) - 返回码。0表示成功,非0表示失败。

  • +
  • SessionNo (str) - 本次提交发送任务的唯一ID,可根据该值查询本次发送的短信列表。注:成功提交短信数大于0时,才返回该字段

  • +
  • SuccessCount (int) - 成功提交短信(未拆分)条数

  • +
+

Response Model

+

BatchInfo +- FailureDetails (str) - 未能成功发送的详情。注:模板/签名检验失败时,该字段有效 +- SigContent (str) - 签名 +- Target (list) - 见 FailPhoneDetail 模型定义 +- TemplateId (str) - 模板ID

+

FailPhoneDetail +- ExtendCode (str) - 扩展号码 +- FailureDetails (str) - 发送失败原因。注:若模板/签名校验失败,该字段为空 +- Phone (str) - 手机号 +- TemplateParams (list) - 模板参数 +- UserId (str) - 用户自定义ID

+
+ +
+
+send_usms_message(req: Optional[dict] = None, **kwargs) dict[source]
+

SendUSMSMessage - 调用接口SendUSMSMessage发送短信

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PhoneNumbers (list) - (Required) 电话号码数组,电话号码格式为(60)1xxxxxxxx,()中为国际长途区号(如中国为86或0086,两种格式都支持),后面为电话号码.若不传入国际区号,如1851623xxxx,则默认为国内手机号

  • +
  • SigContent (str) - (Required) 短信签名内容,请到 USMS控制台 的签名管理页面查看;使用的短信签名必须是已申请并且通过审核;

  • +
  • TemplateId (str) - (Required) 模板ID(也即短信模板申请时的工单ID),请到 USMS控制台 的模板管理页面查看;使用的短信模板必须是已申请并通过审核;

  • +
  • ExtendCode (str) - 短信扩展码,格式为阿拉伯数字串,默认不开通,如需开通请联系 UCloud技术支持

  • +
  • TemplateParams (list) - 模板可变参数,以数组的方式填写,举例,TempalteParams.0,TempalteParams.1,… 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送;

  • +
  • UserId (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符

  • +
+

Response

+
    +
  • Message (str) - 发生错误时表示错误描述

  • +
  • SessionNo (str) - 本次提交发送的短信的唯一ID,可根据该值查询本次发送的短信列表

  • +
  • UserId (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。

  • +
+
+ +
+
+update_usms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUSMSSignature - 调用接口UpdateUSMSSignature修改未通过审核的短信签名,并重新提交审核

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigContent (str) - (Required) 新的短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加

  • +
  • SigId (str) - (Required) 签名ID(也即短信签名申请时的工单ID),支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • CertificateType (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • Document (str) - 短信签名的资质证明文件URL,若未更改审核材料,则该处使用已上传审核材料的URL链接,否则使用File参数

  • +
  • File (str) - 短信签名的资质证明文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB。内容格式如下: [file type];[code type],[base64] 如:image/jpeg;base64,5YaF5a65

  • +
  • ProxyDoc (str) - 短信签名授权委托文件URL,若未更改授权委托文件,则该处填写已上传的授权委托文件的URL链接,否则使用ProxyFile参数

  • +
  • ProxyFile (str) - 短信签名授权委托文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;格式和File类似。

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+update_usms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUSMSTemplate - 调用接口UpdateUSMSTemplate修改未通过审核的短信模板,并重新提交审核

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Template (str) - (Required) 新的模板内容。模板名称和模板内容必须提供一个,否则会报错。小于等于600个字

  • +
  • TemplateId (str) - (Required) 短信模板ID

  • +
  • Remark (str) - 短信模板申请原因说明,字数不超过128,每个中文、符号、英文、数字等都计为1个字。

  • +
  • TemplateName (str) - 新的模板名称。小于等于32个字,每个中文、英文、数组、符合都计为一个字

  • +
+

Response

+
    +
  • Message (str) - 发生错误时表示错误描述

  • +
+
+ +
+ +
+
+

VPC

+
+
+class ucloud.services.vpc.client.VPCClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

AddSnatRule - 对于绑定了多个EIP的NAT网关,您可以将一个子网下的某台云主机映射到某个特定的EIP上,规则生效后,则该云主机通过该特定的EIP访问互联网。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • SnatIp (str) - (Required) EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
  • Name (str) - snat规则名称,默认为“出口规则”

  • +
+

Response

+
+ +
+
+add_vpc_network(req: Optional[dict] = None, **kwargs) dict[source]
+

AddVPCNetwork - 添加VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 增加网段

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
+

Response

+
+ +
+
+add_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

AddWhiteListResource - 添加NAT网关白名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ResourceIds (list) - (Required) 可添加白名单的资源Id

  • +
+

Response

+
+ +
+
+allocate_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateSecondaryIp - 分配ip(用于uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Mac (str) - (Required) 节点mac

  • +
  • ObjectId (str) - (Required) 资源Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Ip (str) - 指定Ip分配

  • +
  • SubnetId (str) - 子网Id(若未指定,则根据zone获取默认子网进行创建)

  • +
  • VPCId (str) - vpcId

  • +
+

Response

+
    +
  • IpInfo (dict) - 见 IpInfo 模型定义

  • +
+

Response Model

+

IpInfo +- Gateway (str) - +- Ip (str) - +- Mac (str) - +- Mask (str) - +- SubnetId (str) - +- VPCId (str) -

+
+ +
+
+allocate_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateVIP - 根据提供信息,申请内网VIP(Virtual IP),多用于高可用程序作为漂移IP。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • VPCId (str) - (Required) 指定vip所属的VPC

  • +
  • BusinessId (str) - 业务组

  • +
  • Count (int) - 申请数量,默认: 1

  • +
  • Ip (str) - 指定ip

  • +
  • Name (str) - vip名,默认:VIP

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
    +
  • DataSet (list) - 申请到的VIP地址

  • +
  • VIPSet (list) - 见 VIPSet 模型定义

  • +
+

Response Model

+

VIPSet +- VIP (str) - 虚拟ip +- VIPId (str) - 虚拟ip id +- VPCId (str) - VPC id

+
+ +
+
+associate_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

AssociateRouteTable - 绑定子网的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表资源ID

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+clone_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

CloneRouteTable - 将现有的路由表复制为一张新的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 被克隆的路由表ID

  • +
+

Response

+
    +
  • RouteTableId (str) - 复制后新的路由表资源ID

  • +
+
+ +
+
+create_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNATGW - 创建NAT网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPIds (list) - (Required) NAT网关绑定的EIPId

  • +
  • FirewallId (str) - (Required) NAT网关绑定的防火墙Id

  • +
  • NATGWName (str) - (Required) NAT网关名称

  • +
  • SubnetworkIds (list) - (Required) NAT网关绑定的子网Id

  • +
  • IfOpen (int) - 白名单开关标记。0表示关闭,1表示开启。默认为0

  • +
  • Remark (str) - 备注。默认为空

  • +
  • Tag (str) - 业务组。默认为空

  • +
  • VPCId (str) - NAT网关所属的VPC Id。默认为Default VPC Id

  • +
+

Response

+
    +
  • NATGWId (str) - 申请到的NATGateWay Id

  • +
+
+ +
+
+create_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNATGWPolicy - 添加NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DstIP (str) - (Required) 目标IP。填写对应的目标IP地址

  • +
  • DstPort (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Protocol (str) - (Required) 协议类型。枚举值为:TCP、UDP

  • +
  • SrcEIPId (str) - (Required) 源IP。填写对应的EIP Id

  • +
  • SrcPort (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • PolicyName (str) - 转发策略名称。默认为空

  • +
+

Response

+
    +
  • PolicyId (str) - 创建时分配的策略Id

  • +
+
+ +
+
+create_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAcl - 创建网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclName (str) - (Required) ACL的名称

  • +
  • VpcId (str) - (Required) 将要创建的ACL所属VPC的ID

  • +
  • Description (str) - ACL的描述

  • +
+

Response

+
    +
  • AclId (str) - 创建的ACL的ID

  • +
+
+ +
+
+create_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAclAssociation - 创建ACL的绑定关系

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • SubnetworkId (str) - (Required) 需要绑定的子网ID

  • +
+

Response

+
    +
  • AssociationId (str) - 创建的绑定关系的ID

  • +
  • PrevAssociation (dict) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+create_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAclEntry - 创建ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • CidrBlock (str) - (Required) IPv4段的CIDR表示

  • +
  • Direction (str) - (Required) 出向或者入向(“Ingress”, “Egress”)

  • +
  • EntryAction (str) - (Required) 规则的行为(“Accept”, “Reject”)

  • +
  • IpProtocol (str) - (Required) 协议规则描述

  • +
  • PortRange (str) - (Required) 针对的端口范围

  • +
  • Priority (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复

  • +
  • Description (str) - 描述。长度限制为不超过32字节。

  • +
  • TargetResourceIds (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值。

  • +
  • TargetType (int) - 应用目标类型。0代表“子网内全部资源”,1代表“子网内指定资源”,默认为0

  • +
+

Response

+
    +
  • EntryId (str) - 创建的Entry的ID

  • +
+
+ +
+
+create_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateRouteTable - 创建路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) 所属的VPC资源ID

  • +
  • Name (str) - 路由表名称。默认为RouteTable

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 路由表所属业务组

  • +
+

Response

+
    +
  • RouteTableId (str) - 路由表ID

  • +
+
+ +
+
+create_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateSubnet - 创建子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Subnet (str) - (Required) 子网网络地址,例如192.168.0.0

  • +
  • VPCId (str) - (Required) VPC资源ID

  • +
  • Netmask (int) - 子网网络号位数,默认为24

  • +
  • Remark (str) - 备注

  • +
  • SubnetName (str) - 子网名称,默认为Subnet

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
+

Response

+
    +
  • SubnetId (str) - 子网ID

  • +
+
+ +
+
+create_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPC - 创建VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) VPC名称

  • +
  • Network (list) - (Required) VPC网段

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
    +
  • VPCId (str) - VPC资源Id

  • +
+
+ +
+
+create_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPCIntercom - 新建VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC项目ID。默认与源VPC同项目。

  • +
  • DstRegion (str) - 目的VPC所在地域,默认与源VPC同地域。

  • +
+

Response

+
+ +
+
+delete_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNATGW - 删除NAT网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ReleaseEip (bool) - 是否释放绑定的EIP。true:解绑并释放;false:只解绑不释放。默认为false

  • +
+

Response

+
+ +
+
+delete_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNATGWPolicy - 删除NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • PolicyId (str) - (Required) 端口转发规则Id

  • +
+

Response

+
+ +
+
+delete_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAcl - 删除网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要删除的AclId

  • +
+

Response

+
+ +
+
+delete_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAclAssociation - 删除网络ACL绑定关系

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要删除的AclId

  • +
  • SubnetworkId (str) - (Required) 绑定的子网ID

  • +
+

Response

+
+ +
+
+delete_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAclEntry - 删除ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) Acl的ID

  • +
  • EntryId (str) - (Required) 需要删除的EntryId

  • +
+

Response

+
+ +
+
+delete_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteRouteTable - 删除自定义路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表资源ID

  • +
+

Response

+
+ +
+
+delete_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSecondaryIp - 删除ip(用于uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Ip (str) - (Required) ip

  • +
  • Mac (str) - (Required) mac

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ObjectId (str) - 资源Id

  • +
  • VPCId (str) - VPCId

  • +
+

Response

+
+ +
+
+delete_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSnatRule - 删除指定的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
+

Response

+
+ +
+
+delete_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSubnet - 删除子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+delete_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPC - 删除VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC资源Id

  • +
+

Response

+
+ +
+
+delete_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPCIntercom - 删除VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC所在项目ID,默认为源VPC所在项目ID

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为源VPC所在地域

  • +
+

Response

+
+ +
+
+delete_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteWhiteListResource - 删除NAT网关白名单列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ResourceIds (list) - (Required) 删除白名单的资源Id

  • +
+

Response

+
+ +
+
+describe_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNATGW - 获取NAT网关信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值。默认为20

  • +
  • NATGWIds (list) - NAT网关Id。默认为该项目下所有NAT网关

  • +
  • Offset (int) - 数据偏移量。默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatGatewayDataSet 模型定义

  • +
  • TotalCount (int) - 满足条件的实例的总数

  • +
+

Response Model

+

NatGWIPResInfo +- EIP (str) - 外网IP +- OperatorName (str) - IP的运营商信息

+

NatGatewayIPSet +- Bandwidth (int) - 带宽 +- BandwidthType (str) - EIP带宽类型 +- EIPId (str) - 外网IP的 EIPId +- IPResInfo (list) - 见 NatGWIPResInfo 模型定义 +- Weight (int) - 权重为100的为出口

+

NatGatewaySubnetSet +- Subnet (str) - 子网网段 +- SubnetName (str) - 子网名字 +- SubnetworkId (str) - 子网id

+

NatGatewayDataSet +- CreateTime (int) - natgw创建时间 +- FirewallId (str) - 绑定的防火墙Id +- IPSet (list) - 见 NatGatewayIPSet 模型定义 +- NATGWId (str) - natgw id +- NATGWName (str) - natgw名称 +- PolicyId (list) - 转发策略Id +- Remark (str) - 备注 +- SubnetSet (list) - 见 NatGatewaySubnetSet 模型定义 +- Tag (str) - 业务组 +- VPCId (str) - 所属VPC Id

+
+ +
+
+describe_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNATGWPolicy - 展示NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 返回数据长度,默认为10000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NATGWPolicyDataSet 模型定义

  • +
  • TotalCount (int) - 满足条件的转发策略总数

  • +
+

Response Model

+

NATGWPolicyDataSet +- DstIP (str) - 目的地址 +- DstPort (str) - 目的端口 +- NATGWId (str) - NAT网关Id +- PolicyId (str) - 转发策略Id +- PolicyName (str) - 转发策略名称 +- Protocol (str) - 协议类型 +- SrcEIP (str) - 端口转发前端EIP +- SrcEIPId (str) - 端口转发前端EIP Id +- SrcPort (str) - 源端口

+
+ +
+
+describe_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAcl - 获取网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (str) - 列表获取的个数限制

  • +
  • Offset (int) - 列表偏移量

  • +
  • VpcId (str) - 需要获取的ACL所属的VPC的ID

  • +
+

Response

+
    +
  • AclList (list) - 见 AclInfo 模型定义

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+

AclEntryInfo +- CidrBlock (str) - IP段的CIDR信息 +- CreateTime (int) - 创建的Unix时间戳 +- Direction (str) - 出向或者入向 +- EntryAction (str) - 匹配规则的动作 +- EntryId (str) - Entry的ID +- IpProtocol (str) - 针对的IP协议 +- PortRange (str) - Port的段信息 +- Priority (str) - 优先级 +- TargetResourceCount (int) - 应用目标资源数量。TargetType为0时不返回该值。 +- TargetResourceList (list) - 见 TargetResourceInfo 模型定义 +- TargetType (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 +- UpdateTime (int) - 更改的Unix时间戳

+

AclInfo +- AclId (str) - ACL的ID +- AclName (str) - 名称 +- Associations (list) - 见 AssociationInfo 模型定义 +- CreateTime (int) - 创建的Unix时间戳 +- Description (str) - 描述 +- Entries (list) - 见 AclEntryInfo 模型定义 +- UpdateTime (int) - 更改的Unix时间戳 +- VpcId (str) - ACL所属的VPC ID

+
+ +
+
+describe_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclAssociation - 获取网络ACL的绑定关系列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) Acl的ID

  • +
  • Limit (str) - 列表获取的个数限制

  • +
  • Offset (int) - 列表偏移量

  • +
+

Response

+
    +
  • AssociationList (list) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+describe_network_acl_association_by_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclAssociationBySubnet - 获取子网的ACL绑定信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetworkId (str) - (Required) 子网的ID

  • +
+

Response

+
    +
  • Association (dict) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+describe_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclEntry - 获取ACL的规则信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
+

Response

+
    +
  • EntryList (list) - 见 AclEntryInfo 模型定义

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+

AclEntryInfo +- CidrBlock (str) - IP段的CIDR信息 +- CreateTime (int) - 创建的Unix时间戳 +- Direction (str) - 出向或者入向 +- EntryAction (str) - 匹配规则的动作 +- EntryId (str) - Entry的ID +- IpProtocol (str) - 针对的IP协议 +- PortRange (str) - Port的段信息 +- Priority (str) - 优先级 +- TargetResourceCount (int) - 应用目标资源数量。TargetType为0时不返回该值。 +- TargetResourceList (list) - 见 TargetResourceInfo 模型定义 +- TargetType (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 +- UpdateTime (int) - 更改的Unix时间戳

+
+ +
+
+describe_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeRouteTable - 获取路由表详细信息(包括路由策略)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组ID

  • +
  • Limit (int) - 数据分页值。默认为20

  • +
  • OffSet (int) - 数据偏移量。默认为0

  • +
  • RouteTableId (str) - 路由表资源ID

  • +
  • VPCId (str) - 所属VPC的资源ID

  • +
+

Response

+
    +
  • RouteTables (list) - 见 RouteTableInfo 模型定义

  • +
  • TotalCount (int) - RouteTables字段的数量

  • +
+

Response Model

+

RouteTableInfo +- CreateTime (int) - 创建时间戳 +- Remark (str) - 路由表备注 +- RouteRules (list) - 见 RouteRuleInfo 模型定义 +- RouteTableId (str) - 路由表资源ID +- RouteTableType (int) - 路由表类型。1为默认路由表,0为自定义路由表 +- SubnetCount (int) - 绑定该路由表的子网数量 +- Tag (str) - 路由表所属业务组 +- VPCId (str) - 路由表所属的VPC资源ID +- VPCName (str) - 路由表所属的VPC资源名称

+

RouteRuleInfo +- AccountId (int) - 项目ID信息 +- DstAddr (str) - 目的地址 +- DstPort (int) - 保留字段,暂未使用 +- NexthopId (str) - 路由下一跳资源ID +- NexthopType (str) - 路由表下一跳类型。LOCAL,本VPC内部通信路由;PUBLIC,公共服务路由;CNAT,外网路由;UDPN,跨域高速通道路由;HYBRIDGW,混合云路由;INSTANCE,实例路由;VNET,VPC联通路由;IPSEC VPN,指向VPN网关的路由。 +- OriginAddr (str) - 保留字段,暂未使用 +- Priority (int) - 保留字段,暂未使用 +- Remark (str) - 路由规则备注 +- RouteRuleId (str) - 规则ID +- RouteTableId (str) - 路由表资源ID +- RuleType (int) - 路由规则类型。0,系统路由规则;1,自定义路由规则 +- SrcAddr (str) - 保留字段,暂未使用 +- SrcPort (int) - 保留字段,暂未使用 +- VNetId (str) - 所属的VPC

+
+ +
+
+describe_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSecondaryIp - 查询SecondaryIp(uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • VPCId (str) - (Required) VPCId

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Ip (str) - Ip

  • +
  • Mac (str) - Mac

  • +
+

Response

+
    +
  • DataSet (list) - 见 IpInfo 模型定义

  • +
+

Response Model

+

IpInfo +- Gateway (str) - +- Ip (str) - +- Mac (str) - +- Mask (str) - +- SubnetId (str) - +- VPCId (str) -

+
+ +
+
+describe_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSnatRule - 获取Nat网关的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • Limit (str) - 分页,默认为20

  • +
  • Offset (str) - 偏移,默认为0

  • +
  • SnatIp (str) - EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - 需要出外网的私网IP地址,例如10.9.7.xx

  • +
+

Response

+
    +
  • DataSet (list) - 见 NATGWSnatRule 模型定义

  • +
  • TotalCount (int) - 规则数量

  • +
+

Response Model

+

NATGWSnatRule +- Name (str) - snat规则名称 +- SnatIp (str) - EIP地址,如106.76.xx.xx +- SourceIp (str) - 资源的内网IP地址 +- SubnetworkId (str) - SourceIp所属的子网id

+
+ +
+
+describe_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSubnet - 获取子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 列表长度,默认为20

  • +
  • Offset (int) - 偏移量,默认为0

  • +
  • RouteTableId (str) - 路由表Id

  • +
  • ShowAvailableIPs (bool) - 是否返回子网的可用IP数,true为是,false为否,默认不返回

  • +
  • SubnetId (str) - 子网id,适用于一次查询一个子网信息

  • +
  • SubnetIds (list) - 子网id数组,适用于一次查询多个子网信息

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • VPCId (str) - VPC资源id

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetInfo 模型定义

  • +
  • TotalCount (int) - 子网总数量

  • +
+

Response Model

+

SubnetInfo +- AvailableIPs (int) - 可用IP数量 +- CreateTime (int) - 创建时间 +- Gateway (str) - 子网网关 +- HasNATGW (bool) - 是否有natgw +- IPv6Network (str) - 子网关联的IPv6网段 +- Netmask (str) - 子网掩码 +- Remark (str) - 备注 +- RouteTableId (str) - 路由表Id +- Subnet (str) - 子网网段 +- SubnetId (str) - 子网Id +- SubnetName (str) - 子网名称 +- SubnetType (int) - 子网类型 +- Tag (str) - 业务组 +- VPCId (str) - VPCId +- VPCName (str) - VPC名称 +- Zone (str) - 可用区名称

+
+ +
+
+describe_subnet_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSubnetResource - 展示子网资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • Limit (int) - 单页返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceType (str) - 资源类型,默认为全部资源类型。枚举值为:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetResource 模型定义

  • +
  • TotalCount (int) - 总数

  • +
+

Response Model

+

SubnetResource +- IP (str) - 资源ip +- Name (str) - 名称 +- ResourceId (str) - 资源Id +- ResourceType (str) - 资源类型。对应的资源类型:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,分布式消息系统;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

+
+ +
+
+describe_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVIP - 获取内网VIP详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组

  • +
  • SubnetId (str) - 子网id,不指定则获取VPCId下的所有vip

  • +
  • Tag (str) - 业务组名称, 默认为 Default

  • +
  • VIPId (str) - VIP ID

  • +
  • VPCId (str) - vpc的id,指定SubnetId时必填

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 内网VIP地址列表

  • +
  • TotalCount (int) - vip数量

  • +
  • VIPSet (list) - 见 VIPDetailSet 模型定义

  • +
+

Response Model

+

VIPDetailSet +- CreateTime (int) - 创建时间 +- Name (str) - VIP名称 +- RealIp (str) - 真实主机ip +- Remark (str) - VIP备注 +- SubnetId (str) - 子网id +- Tag (str) - VIP所属业务组 +- VIP (str) - 虚拟ip +- VIPId (str) - 虚拟ip id +- VPCId (str) - VPC id +- Zone (str) - 地域

+
+ +
+
+describe_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPC - 获取VPC信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) -

  • +
  • Offset (int) -

  • +
  • Tag (str) - 业务组名称

  • +
  • VPCIds (list) - VPCId

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCInfo 模型定义

  • +
+

Response Model

+

VPCInfo +- CreateTime (int) - +- IPv6Network (str) - VPC关联的IPv6网段 +- Name (str) - +- Network (list) - +- NetworkInfo (list) - 见 VPCNetworkInfo 模型定义 +- OperatorName (str) - VPC关联的IPv6网段所属运营商 +- SubnetCount (int) - +- Tag (str) - +- UpdateTime (int) - +- VPCId (str) - VPCId

+

VPCNetworkInfo +- Network (str) - vpc地址空间 +- SubnetCount (int) - 地址空间中子网数量

+
+ +
+
+describe_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPCIntercom - 获取VPC互通信息

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC短ID

  • +
  • DstProjectId (str) - 目的项目ID,默认为全部项目

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为全部地域

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCIntercomInfo 模型定义

  • +
+

Response Model

+

VPCIntercomInfo +- AccountId (int) - 项目Id(数字) +- DstRegion (str) - 所属地域 +- Name (str) - VPC名字 +- Network (list) - VPC的地址空间 +- ProjectId (str) - 项目Id +- Tag (str) - 业务组(未分组显示为 Default) +- VPCId (str) - VPCId +- VPCType (int) - vpc类型(1表示托管VPC,0表示公有云VPC)

+
+ +
+
+describe_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeWhiteListResource - 展示NAT网关白名单资源列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWIds (list) - (Required) NAT网关的Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatGWWhitelistDataSet 模型定义

  • +
  • TotalCount (int) - 上述DataSet总数量

  • +
+

Response Model

+

DescribeWhiteListResourceObjectIPInfo +- GwType (str) - natgw字符串 +- PrivateIP (str) - 白名单资源的内网IP +- ResourceId (str) - 白名单资源Id信息 +- ResourceName (str) - 白名单资源名称 +- ResourceType (str) - 白名单资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的实例ID +- SubResourceName (str) - 资源绑定的虚拟网卡的实例名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的类型 +- VPCId (str) - 白名单资源所属VPCId

+

NatGWWhitelistDataSet +- IfOpen (int) - 白名单开关标记 +- NATGWId (str) - NATGateWay Id +- ObjectIPInfo (list) - 见 DescribeWhiteListResourceObjectIPInfo 模型定义

+
+ +
+
+enable_white_list(req: Optional[dict] = None, **kwargs) dict[source]
+

EnableWhiteList - 修改NAT网关白名单开关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • IfOpen (int) - (Required) 白名单开关标记。0:关闭;1:开启。默认为0

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
+

Response

+
+ +
+
+get_available_resource_for_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForPolicy - 获取NAT网关可配置端口转发规则的资源信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 GetAvailableResourceForPolicyDataSet 模型定义

  • +
+

Response Model

+

GetAvailableResourceForPolicyDataSet +- PrivateIP (str) - 资源对应的内网Ip +- ResourceId (str) - 资源的Id +- ResourceType (str) - 资源类型。”uhost”:云主机; “upm”,物理云主机; “hadoophost”:hadoop节点; “fortresshost”:堡垒机: “udockhost”,容器

+
+ +
+
+get_available_resource_for_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForSnatRule - 获取可用于添加snat规则(出口规则)的资源列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • DataSet (list) - 见 GetAvailableResourceForSnatRuleDataSet 模型定义

  • +
  • RetCode (str) - 返回值

  • +
  • TotalCount (int) - 总数

  • +
+

Response Model

+

GetAvailableResourceForSnatRuleDataSet +- PrivateIP (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (str) - 资源类型 +- SubnetworkId (str) - 资源所属VPC的ID +- VPCId (str) - 资源所属子网的ID

+
+ +
+
+get_available_resource_for_white_list(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForWhiteList - 获取NAT网关可添加白名单的资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 GetAvailableResourceForWhiteListDataSet 模型定义

  • +
  • TotalCount (int) - 白名单资源列表的总的个数

  • +
+

Response Model

+

GetAvailableResourceForWhiteListDataSet +- PrivateIP (str) - 资源的内网Ip +- ResourceId (str) - 资源类型Id +- ResourceName (str) - 资源名称 +- ResourceType (str) - 资源类型。”uhost”:云主机; “upm”,物理云主机; “hadoophost”:hadoop节点; “fortresshost”:堡垒机: “udockhost”,容器 +- SubResourceId (str) - 资源绑定的虚拟网卡的实例ID +- SubResourceName (str) - 资源绑定的虚拟网卡的实例名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的实例类型 +- SubnetworkId (str) - 资源所属子网Id +- VPCId (str) - 资源所属VPCId

+
+ +
+
+get_network_acl_target_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNetworkAclTargetResource - 获取ACL规则应用目标列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetworkId (list) - (Required) 子网ID。

  • +
+

Response

+
    +
  • TargetResourceList (list) - 见 TargetResourceInfo 模型定义

  • +
  • TotalCount (int) - ACL规则应用目标资源总数

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+
+ +
+
+list_subnet_for_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

ListSubnetForNATGW - 展示NAT网关可绑定的子网列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - NAT网关所属VPC Id。默认值为Default VPC Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatgwSubnetDataSet 模型定义

  • +
+

Response Model

+

NatgwSubnetDataSet +- HasNATGW (bool) - 是否绑定NATGW +- Netmask (str) - 掩码 +- Subnet (str) - 子网网段 +- SubnetId (str) - 子网id +- SubnetName (str) - 子网名字

+
+ +
+
+modify_route_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyRouteRule - 路由策略增、删、改

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteRule (list) - (Required) 格式: RouteRuleId | 目的网段 | 下一跳类型(支持INSTANCE、VIP) | 下一跳 |优先级(保留字段,填写0即可)| 备注 | 增、删、改标志(add/delete/update) 。”添加”示例: test_id | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| add (添加的RouteRuleId填任意非空字符串) 。”删除”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| delete (RouteRuleId来自DescribeRouteTable中) 。“修改”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-cjksa2 | 0 | Default Route Rule| update (RouteRuleId来自DescribeRouteTable中)

  • +
  • RouteTableId (str) - (Required) 通过DescribeRouteTable拿到

  • +
+

Response

+
+ +
+
+release_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseVIP - 释放VIP资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • VIPId (str) - (Required) 内网VIP的id

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
+ +
+
+set_gw_default_export(req: Optional[dict] = None, **kwargs) dict[source]
+

SetGwDefaultExport - 设置NAT网关的默认出口

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ExportEipId (str) - NAT网关绑定的EIP Id。ExportIp和ExportEipId必填一个

  • +
  • ExportIp (str) - NAT网关绑定的EIP。ExportIp和ExportEipId必填一个

  • +
+

Response

+
+ +
+
+update_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNATGWPolicy - 更新NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DstIP (str) - (Required) 目标IP。填写对饮的目标IP地址

  • +
  • DstPort (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • PolicyId (str) - (Required) 转发策略Id

  • +
  • Protocol (str) - (Required) 协议类型。枚举值为:TCP 、 UDP

  • +
  • SrcEIPId (str) - (Required) 源IP。填写对应的EIP Id

  • +
  • SrcPort (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-6553

  • +
  • PolicyName (str) - 转发策略名称。默认为空

  • +
+

Response

+
+ +
+
+update_natgw_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNATGWSubnet - 更新NAT网关绑定的子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • SubnetworkIds (list) - (Required) NAT网关绑定的子网Id

  • +
+

Response

+
+ +
+
+update_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNetworkAcl - 更改ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要更改的ACL ID

  • +
  • AclName (str) - (Required) Acl的名称

  • +
  • Description (str) - (Required) 描述

  • +
+

Response

+
+ +
+
+update_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNetworkAclEntry - 更新ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • CidrBlock (str) - (Required) IPv4段的CIDR表示

  • +
  • Direction (str) - (Required) 出向或者入向(“Ingress”, “Egress”)

  • +
  • EntryAction (str) - (Required) 规则的行为(“Accept”, “Reject”)

  • +
  • EntryId (str) - (Required) 需要更新的Entry Id

  • +
  • IpProtocol (str) - (Required) 针对的协议规则

  • +
  • PortRange (str) - (Required) 针对的端口范围

  • +
  • Priority (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复

  • +
  • Description (str) - 描述

  • +
  • TargetResourceIds (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值

  • +
  • TargetType (int) - 应用目标类型。0代表“子网内全部资源”, 1代表“子网内指定资源”。默认为0

  • +
+

Response

+
+ +
+
+update_route_table_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateRouteTableAttribute - 更新路由表基本信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表ID

  • +
  • Name (str) - 名称

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
+ +
+
+update_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateSnatRule - 更新指定的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID,

  • +
  • SnatIp (str) - (Required) EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
  • Name (str) - snat名称,即出口规则名称

  • +
+

Response

+
+ +
+
+update_subnet_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateSubnetAttribute - 更新子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
  • Name (str) - 子网名称(如果Name不填写,Tag必须填写)

  • +
  • Tag (str) - 业务组名称(如果Tag不填写,Name必须填写)

  • +
+

Response

+
+ +
+
+update_vip_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVIPAttribute - 更新VIP信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VIPId (str) - (Required) 内网VIP的资源Id

  • +
  • Name (str) - 内网VIP的名称

  • +
  • Remark (str) - 内网VIP的备注

  • +
  • Tag (str) - 内网VIP所属的业务组

  • +
+

Response

+
+ +
+
+update_vpc_network(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVPCNetwork - 更新VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 需要保留的VPC网段。当前仅支持删除VPC网段,添加网段请参考 AddVPCNetwork

  • +
  • VPCId (str) - (Required) VPC的ID

  • +
+

Response

+
+ +
+ +
+
+

Cube

+
+
+class ucloud.services.cube.client.CubeClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_cube_deployment(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateCubeDeployment - 创建Cube的Deployment

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Deployment (str) - (Required) base64编码的Deployment的yaml。大小不超过16KB

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • VPCId (str) - (Required) VPCId

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Postpay, 后付费;默认为后付费

  • +
  • CpuPlatform (str) - Cpu平台(V6:Intel、A2:AMD),默认V6。支持的地域(北京2B、北京2E、上海2A、广东、香港 、东京)目前北京2E仅有A2,其余地域仅有V6

  • +
  • KubeConfig (str) - base64编码的kubeconfig。大小不超过16KB

  • +
  • Name (str) - Deployment名称

  • +
  • Quantity (int) - 购买时长。默认:值 1。 月付时,此参数传0,代表购买至月末。

  • +
  • Tag (str) - 业务组。默认:Default(Default即为未分组)

  • +
+

Response

+
    +
  • Deployment (str) - 经过base64编码的Deployment的yaml

  • +
  • DeploymentId (str) - 控制器ID

  • +
+
+ +
+
+create_cube_pod(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateCubePod - 创建Pod

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Pod (str) - (Required) base64编码的Pod的yaml。大小不超过16KB

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • VPCId (str) - (Required) VPCId

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Postpay, 后付费;默认为后付费

  • +
  • CouponId (str) - 代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看

  • +
  • CpuPlatform (str) - Cpu平台(V6:Intel、A2:AMD、Auto),默认Auto。支持的地域(北京2B、北京2E、上海2A、广东、香港 、东京)目前北京2E仅有A2,其余地域仅有V6

  • +
  • Group (str) - pod所在组

  • +
  • KubeConfig (str) - base64编码的kubeconfig。大小不超过16KB

  • +
  • Name (str) - pod的名字

  • +
  • Quantity (int) - 购买时长。默认:值 1。 月付时,此参数传0,代表购买至月末。

  • +
  • Tag (str) - 业务组。默认:Default(Default即为未分组)

  • +
+

Response

+
    +
  • CubeId (str) - cube的资源Id

  • +
  • Pod (str) - base64编码的yaml

  • +
+
+ +
+
+delete_cube_deployment(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteCubeDeployment - 删除Cube的Deployment

+

Request

+ +

Response

+
+ +
+
+delete_cube_pod(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteCubePod - 删除Pod

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeId (str) - cubeid和uid任意一个(必须)

  • +
  • ReleaseEIP (bool) - 删除cube时是否释放绑定的EIP。默认为false。

  • +
  • Uid (str) - cubeid和uid任意一个(必须)

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+get_cube_deployment(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubeDeployment - 获取Deployment的详细信息

+

Request

+ +

Response

+
    +
  • Deployment (str) - 经过base64编码的Deployment的yaml

  • +
+
+ +
+
+get_cube_exec_token(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubeExecToken - 获取登录容器的token

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ContainerName (str) - (Required) 容器名称

  • +
  • CubeId (str) - CubeId 和 Uid 中必须填写任意一个。CubeId 是所有 Cube 资源的唯一 ID,如非在 UK8S 通过 Virtual Kubelet 插件创建的 Cube, 则必填 CubeId

  • +
  • Uid (str) - CubeId 和 Uid 中必须填写任意一个。Uid 是在 UK8S 中通过 Virtual Kubelet 插件创建出的 Cube 的唯一标识

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • TerminalUrl (str) - terminal的登录连接地址,限单点登录,有效时间5min

  • +
  • Token (str) - 有效时间5min

  • +
+
+ +
+
+get_cube_extend_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubeExtendInfo - 获取Cube的额外信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeIds (str) - (Required) id列表以逗号(,)分割

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • ExtendInfo (list) - 见 CubeExtendInfo 模型定义

  • +
+

Response Model

+

CubeExtendInfo +- CubeId (str) - Cube的Id +- Eip (list) - 见 EIPSet 模型定义 +- Expiration (int) - 资源有效期 +- Name (str) - Cube的名称 +- Tag (str) - 业务组名称

+

EIPSet +- Bandwidth (int) - EIP带宽值 +- BandwidthType (int) - 带宽类型0标准普通带宽,1表示共享带宽 +- CreateTime (int) - EIP创建时间 +- EIPAddr (list) - 见 EIPAddr 模型定义 +- EIPId (str) - EIPId +- PayMode (str) - 付费模式,带宽付费或者流量付费 +- Resource (str) - EIP绑定对象的资源Id +- Status (str) - EIP状态,表示使用中或者空闲 +- Weight (int) - EIP权重

+

EIPAddr +- IP (str) - IP地址 +- OperatorName (str) - 线路名称BGP或者internalation

+
+ +
+
+get_cube_metrics(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubeMetrics - 获取Cube实例(Pod,PodX,Deploy等)监控数据时间序列

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BeginTime (int) - (Required) 开始时间

  • +
  • ContainerName (str) - (Required) Pod内容器名称

  • +
  • EndTime (int) - (Required) 结束时间,必须大于开始时间

  • +
  • MetricName (list) - (Required) 监控指标名称

  • +
  • ResourceId (str) - (Required) Cube实例资源ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSets (list) - 见 MetricDataSet 模型定义

  • +
  • Message (str) - 错误信息

  • +
+

Response Model

+

MetricDataSet +- MetricName (str) - +- Values (list) - 见 ValueSet 模型定义

+

ValueSet +- Timestamp (int) - +- Value (float) -

+
+ +
+
+get_cube_pod(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubePod - 获取Pod的详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeId (str) - CubeId和Uid任意一个

  • +
  • Uid (str) - CubeId和Uid任意一个

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Pod (str) - base64编码的pod的yaml

  • +
+
+ +
+
+get_cube_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubePrice - 获取cube的价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时预付费 > Postpay,按秒后付费,默认为月付

  • +
  • Count (str) - (Required) 购买数量

  • +
  • Cpu (str) - (Required) CPU 配置,单位为毫核,例如如 1 核则须输入 1000

  • +
  • Mem (str) - (Required) 内存配置,单位为 Mi,例如 1Gi 须输入 1024

  • +
  • Quantity (int) - (Required) 购买时长。默认:值 1。按小时购买(Dynamic/Postpay)时无需此参数。 月付时,此参数传0,代表购买至月末。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • OriginalPrice (int) - 列表价格,单位为分

  • +
  • Price (int) - 折扣后价格,单位为分

  • +
+
+ +
+
+get_cube_token(req: Optional[dict] = None, **kwargs) dict[source]
+

GetCubeToken - 获取Cube的token,可用于terminal登录、log获取

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ContainerName (str) - (Required) 容器名称

  • +
  • CubeId (str) - CubeId 和 Uid 中必须填写任意一个。CubeId 是所有 Cube 资源的唯一 ID,如非在 UK8S 通过 Virtual Kubelet 插件创建的 Cube, 则必填 CubeId

  • +
  • Uid (str) - CubeId 和 Uid 中必须填写任意一个。Uid 是在 UK8S 中通过 Virtual Kubelet 插件创建出的 Cube 的唯一标识

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Token (str) - 有效时间5min

  • +
+
+ +
+
+list_cube_deployment(req: Optional[dict] = None, **kwargs) dict[source]
+

ListCubeDeployment - 获取Cube的Deployment列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - (Required) 默认20

  • +
  • Offset (int) - (Required) 默认0

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Deployments (list) - DeploymentInfo

  • +
  • TotalCount (int) -

  • +
+
+ +
+
+list_cube_pod(req: Optional[dict] = None, **kwargs) dict[source]
+

ListCubePod - 获取Pods列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DeploymentId (str) - Deployment的Id

  • +
  • Group (str) - 组名称

  • +
  • Limit (int) - 默认20

  • +
  • Offset (int) - 默认0

  • +
  • SubnetId (str) - 子网Id

  • +
  • VPCId (str) - VPC的Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Pods (list) - Pod列表,每条数据都做了base64编码

  • +
  • TotalCount (int) - Cube的总数

  • +
+
+ +
+
+modify_cube_extend_info(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyCubeExtendInfo - 修改Cube额外信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeId (str) - (Required) cube的id

  • +
  • Name (str) - 修改的名字,规则(^[a-zA-Z0-9-_.一-龥]{1,32})

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+modify_cube_tag(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyCubeTag - 修改业务组名字

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeId (str) - (Required) CubeId

  • +
  • Tag (str) - (Required) 业务组名称

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • CubeId (str) - CubeId

  • +
+
+ +
+
+renew_cube_pod(req: Optional[dict] = None, **kwargs) dict[source]
+

RenewCubePod - 更新Pod

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CubeId (str) - (Required) 容器Id

  • +
  • Pod (str) - (Required) base64编码的Pod的yaml

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Pod (str) - base64编码过的yaml,需要解码获取信息

  • +
+
+ +
+
+update_cube_deployment(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateCubeDeployment - 更新Deployment

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Deployment (str) - (Required) base64编码的Deployment的yaml。大小不超过16KB

  • +
  • DeploymentId (str) - (Required) Deployment的Id

  • +
  • Name (str) - Deployment的name

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Deployment (str) - 经过base64编码的Deployment的yaml

  • +
+
+ +
+ +
+
+

IAM

+
+
+class ucloud.services.iam.client.IAMClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_project(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateProject - 创建项目

+

Request

+
    +
  • ProjectName (str) - (Required) 项目名称,不得与现有项目重名

  • +
+

Response

+
    +
  • ProjectId (str) - 所创建项目的Id

  • +
+
+ +
+
+delete_project(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteProject - 删除项目

+

Request

+
    +
  • ProjectID (str) - (Required) 项目ID

  • +
+

Response

+
    +
  • Message (str) - 错误消息

  • +
+
+ +
+ +
+
+

IPSecVPN

+
+
+class ucloud.services.ipsecvpn.client.IPSecVPNClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_remote_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateRemoteVPNGateway - 创建客户VPN网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RemoteVPNGatewayAddr (str) - (Required) 客户VPN网关地址

  • +
  • RemoteVPNGatewayName (str) - (Required) 客户VPN网关名称

  • +
  • Remark (str) - 备注,默认为空

  • +
  • Tag (str) - 业务组名称,默认为 “Default”

  • +
+

Response

+
    +
  • RemoteVPNGatewayId (str) - 新建客户VPN网关的资源ID

  • +
+
+ +
+
+create_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPNGateway - 创建VPN网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Grade (str) - (Required) 购买的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型

  • +
  • VPCId (str) - (Required) 新建VPN网关所属VPC的资源ID

  • +
  • VPNGatewayName (str) - (Required) 新建VPN网关名称

  • +
  • BusinessId (str) - 业务组ID

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费;Dynamic, 按需付费(需开启权限);Trial, 试用(需开启权限);默认为按月付费

  • +
  • CouponId (str) - 代金券ID, 默认不使用

  • +
  • EIPId (str) - 若要绑定EIP,在此填上EIP的资源ID

  • +
  • Quantity (int) - 购买时长, 默认: 1

  • +
  • Remark (str) - 备注,默认为空

  • +
  • Tag (str) - 业务组名称,默认为 “Default”

  • +
+

Response

+
    +
  • VPNGatewayId (str) - 新建VPN网关的资源ID

  • +
+
+ +
+
+create_vpn_tunnel(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPNTunnel - 创建VPN隧道

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • IKEPreSharedKey (str) - (Required) 预共享密钥

  • +
  • IKEVersion (str) - (Required) ike版本,枚举值: “IKE V1”,”IKE V2”,默认v1

  • +
  • IPSecLocalSubnetIds (list) - (Required) 指定VPN连接的本地子网的资源ID,最多可填写10个。

  • +
  • IPSecRemoteSubnets (list) - (Required) 指定VPN连接的客户网段,最多可填写20个。

  • +
  • RemoteVPNGatewayId (str) - (Required) 客户VPN网关的资源ID

  • +
  • VPCId (str) - (Required) vpcId

  • +
  • VPNGatewayId (str) - (Required) VPN网关的资源ID

  • +
  • VPNTunnelName (str) - (Required) VPN隧道名称

  • +
  • IKEAuthenticationAlgorithm (str) - IKE协商过程中使用的认证算法,”md5”, “sha1”, “sha2-256”。默认值为“sha1”

  • +
  • IKEDhGroup (str) - IKE协商过程中使用的DH组,枚举值,”1”, “2”, “5”, “14”, “15”, “16”。默认为“15”

  • +
  • IKEEncryptionAlgorithm (str) - IKE协商过程中使用的加密算法,枚举值,”aes128”, “aes192”, “aes256”, “aes512”, “3des”。默认值为“aes128”

  • +
  • IKEExchangeMode (str) - IKE协商过程中使用的模式,枚举值,主模式,“main”;野蛮模式,“aggressive”。IKEV1默认为主模式“main”,IKEV2时不使用该参数。

  • +
  • IKELocalId (str) - 本端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为自动识别“auto”。IKEV2必填该参数

  • +
  • IKERemoteId (str) - 客户端标识。枚举值,自动识别,“auto”;IP地址或域名。默认为“自动识别“auto”。IKEV2必填该参数

  • +
  • IKESALifetime (str) - IKE中SA的生存时间,可填写范围为600-604800。默认为86400。

  • +
  • IPSecAuthenticationAlgorithm (str) - IPSec隧道中使用的认证算法,枚举值,”md5”, “sha1”。默认值为“sha1”

  • +
  • IPSecEncryptionAlgorithm (str) - IPSec隧道中使用的加密算法,枚举值,”aes128”, “aes192”, “aes256”, “aes512”, “3des”。默认值为“aes128”

  • +
  • IPSecPFSDhGroup (str) - IPSec的PFS是否开启,枚举值,,不开启,”disable”;数字表示DH组, “1”, “2”, “5”, “14”, “15”, “16”。默认为“disable”。

  • +
  • IPSecProtocol (str) - 使用的安全协议,枚举值,“esp”,“ah”。默认为“esp”

  • +
  • IPSecSALifetime (str) - IPSec中SA的生存时间,可填写范围为1200 - 604800。默认为3600

  • +
  • IPSecSALifetimeBytes (str) - IPSec中SA的生存时间(以字节计)。可选为8000 – 20000000。默认使用SA生存时间,

  • +
  • Remark (str) - 备注,默认为空

  • +
  • Tag (str) - 业务组,默认为“Default”

  • +
+

Response

+
    +
  • VPNTunnelId (str) - VPN隧道的资源ID

  • +
+
+ +
+
+delete_remote_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteRemoteVPNGateway - 删除客户VPN网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RemoteVPNGatewayId (str) - (Required) 客户VPN网关的资源ID

  • +
+

Response

+
+ +
+
+delete_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPNGateway - 删除VPN网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPNGatewayId (str) - (Required) VPN网关的资源ID

  • +
  • ReleaseEip (bool) - 删除VPN时是否一并释放EIP。false,只解绑EIP不删除EIP;true,解绑并释放EIP。默认是false

  • +
+

Response

+
+ +
+
+delete_vpn_tunnel(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPNTunnel - 删除VPN隧道

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPNTunnelId (str) - (Required) VPN隧道的资源ID

  • +
+

Response

+
+ +
+
+describe_remote_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeRemoteVPNGateway - 获取客户VPN网关信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • RemoteVPNGatewayIds (list) - 客户VPN网关的资源ID,例如RemoteVPNGatewayIds.0代表希望获取客户VPN网关1的信息,RemoteVPNGatewayIds.1代表客户VPN网关2,如果为空,则返回当前Region中所有客户VPN网关实例的信息

  • +
  • Tag (str) - 业务组名称,若指定则返回业务组下所有客户VPN网关信息

  • +
+

Response

+
    +
  • DataSet (list) - 见 RemoteVPNGatewayDataSet 模型定义

  • +
  • TotalCount (int) - 符合条件的客户VPN网关总数

  • +
+

Response Model

+

RemoteVPNGatewayDataSet +- CreateTime (int) - 创建时间 +- Remark (str) - 备注 +- RemoteVPNGatewayAddr (str) - 客户网关IP地址 +- RemoteVPNGatewayId (str) - 客户网关ID +- RemoteVPNGatewayName (str) - 客户网关名称 +- Tag (str) - 用户组 +- TunnelCount (int) - 活跃的隧道数量

+
+ +
+
+describe_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPNGateway - 获取VPN网关信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值。默认为20

  • +
  • Offset (int) - 数据偏移量。默认为0

  • +
  • Tag (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息。

  • +
  • VPCId (str) - VPC的资源ID,返回指定的VPC下的所有VPN网关的信息。默认返回当前Region中所有VPN网关实例的信息

  • +
  • VPNGatewayIds (list) - VPN网关的资源ID,例如VPNGatewayIds.0代表希望获取VPN网关1的信息,VPNGatewayIds.1代表VPN网关2,如果为空,则返回当前Region中所有VPN网关的信息

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPNGatewayDataSet 模型定义

  • +
  • TotalCount (int) - 满足条件的VPN网关总数

  • +
+

Response Model

+

VPNGatewayDataSet +- AutoRenew (str) - 是否自动续费 +- ChargeType (str) - 付费类型 +- CreateTime (int) - 创建时间 +- EIP (str) - 绑定EIP的IP地址 +- EIPId (str) - EIPID +- EIPType (str) - EIP类型 +- ExpireTime (int) - 到期时间 +- Grade (str) - 网关类型 +- Remark (str) - 网关备注 +- Tag (str) - 网关业务组 +- VPCId (str) - 所属VPCId +- VPCName (str) - 所属VPC名字 +- VPNGatewayId (str) - 网关Id +- VPNGatewayName (str) - 网关名字

+
+ +
+
+describe_vpn_tunnel(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPNTunnel - 获取VPN隧道信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
  • Tag (str) - 业务组名称,若指定则返回指定的业务组下的所有VPN网关的信息

  • +
  • VPNTunnelIds (list) - VPN隧道的资源ID,例如VPNTunnelIds.0代表希望获取信息的VPN隧道1,VPNTunneIds.1代表VPN隧道2,如果为空,则返回当前Region中所有的VPN隧道实例

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPNTunnelDataSet 模型定义

  • +
  • TotalCount (int) - VPN隧道总数

  • +
+

Response Model

+

VPNTunnelDataSet +- CreateTime (int) - 创建时间 +- IKEData (dict) - 见 IKEData 模型定义 +- IPSecData (dict) - 见 IPSecData 模型定义 +- Remark (str) - 备注 +- RemoteVPNGatewayId (str) - 对端网关Id +- RemoteVPNGatewayName (str) - 对端网关名字 +- Tag (str) - 用户组 +- VPCId (str) - 所属VPCId +- VPCName (str) - 所属VOC名字 +- VPNGatewayId (str) - 所属VPN网关id +- VPNGatewayName (str) - VPN网关名字 +- VPNTunnelId (str) - 隧道id +- VPNTunnelName (str) - 隧道名称

+

IKEData +- IKEAuthenticationAlgorithm (str) - IKE认证算法 +- IKEDhGroup (str) - IKEDH组 +- IKEEncryptionAlgorithm (str) - IKE加密算法 +- IKEExchangeMode (str) - IKEv1协商模式 +- IKELocalId (str) - IKE本地ID标识 +- IKEPreSharedKey (str) - IKE预共享秘钥 +- IKERemoteId (str) - IKE对端ID标识 +- IKESALifetime (str) - IKE秘钥生存时间 +- IKEVersion (str) - IKE版本

+

IPSecData +- IPSecAuthenticationAlgorithm (str) - IPSec通道中使用的认证算法 +- IPSecEncryptionAlgorithm (str) - IPSec通道中使用的加密算法 +- IPSecLocalSubnetIds (list) - 指定VPN连接的本地子网,用逗号分隔 +- IPSecPFSDhGroup (str) - 是否开启PFS功能,Disable表示关闭,数字表示DH组 +- IPSecProtocol (str) - 使用的安全协议,ESP或AH +- IPSecRemoteSubnets (list) - 指定VPN连接的客户网段,用逗号分隔 +- IPSecSALifetime (str) - IPSec中SA的生存时间 +- IPSecSALifetimeBytes (str) - IPSec中SA的生存时间(以字节计)

+
+ +
+
+get_vpn_gateway_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetVPNGatewayPrice - 获取VPN价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Grade (str) - (Required) VPN网关规格。枚举值,包括:标准型:Standard,增强型:Enhanced。

  • +
  • ChargeType (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); 默认为获取三种价格

  • +
  • Quantity (int) - 购买时长, 默认: 1

  • +
+

Response

+
    +
  • PriceSet (list) - 见 VPNGatewayPriceSet 模型定义

  • +
+

Response Model

+

VPNGatewayPriceSet +- ChargeType (str) - VPN网关付费方式 +- Price (float) - VPN网关价格, 单位”元” +- PurchaseValue (int) - 资源有效期, 以Unix Timestamp表示

+
+ +
+
+get_vpn_gateway_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetVPNGatewayUpgradePrice - 获取VPN网关规格改动价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Grade (str) - (Required) 更改的VPN网关规格,枚举值为: Standard, 标准型; Enhanced, 增强型。

  • +
  • VPNGatewayId (str) - (Required) VPN网关的资源ID

  • +
+

Response

+
    +
  • Price (float) - 调整规格后的VPN网关价格, 单位为”元”, 如需退费此处为负值

  • +
+
+ +
+
+update_vpn_gateway(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVPNGateway - 更改VPN网关规格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Grade (str) - (Required) 网关规格。枚举值为: Standard, 标准型; Enhanced, 增强型。

  • +
  • VPNGatewayId (str) - (Required) VPN网关的资源ID

  • +
+

Response

+
+ +
+
+update_vpn_tunnel_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVPNTunnelAttribute - 更新VPN隧道属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPNTunnelId (str) - (Required) VPN隧道的资源ID

  • +
  • IKEAuthenticationAlgorithm (str) - IKE协商过程中使用的认证算法

  • +
  • IKEDhGroup (str) - IKE协商过程中使用的DH组

  • +
  • IKEEncryptionAlgorithm (str) - IKE协商过程中使用的加密算法

  • +
  • IKEExchangeMode (str) - IKE协商过程中使用的模式,可选“主动模式”与“野蛮模式”。IKEV2不使用该参数。

  • +
  • IKELocalId (str) - 本端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。

  • +
  • IKEPreSharedKey (str) - 预共享密钥

  • +
  • IKERemoteId (str) - 客户端标识。不填时默认使用之前的参数,结合IKEversion进行校验,IKEV2时不能为auto。

  • +
  • IKESALifetime (str) - IKE中SA的生存时间

  • +
  • IKEVersion (str) - 枚举值:”IKE V1”,”IKE V2”

  • +
  • IPSecAuthenticationAlgorithm (str) - IPSec隧道中使用的认证算法

  • +
  • IPSecEncryptionAlgorithm (str) - IPSec隧道中使用的加密算法

  • +
  • IPSecLocalSubnetIds (list) - 指定VPN连接的本地子网的id,用逗号分隔

  • +
  • IPSecPFSDhGroup (str) - IPSec中的PFS是否开启

  • +
  • IPSecProtocol (str) - 使用的安全协议,ESP或AH

  • +
  • IPSecRemoteSubnets (list) - 指定VPN连接的客户网段,用逗号分隔

  • +
  • IPSecSALifetime (str) - IPSec中SA的生存时间

  • +
  • IPSecSALifetimeBytes (str) - IPSec中SA的生存时间(以字节计)

  • +
+

Response

+
+ +
+ +
+
+

ISMS

+
+
+class ucloud.services.isms.client.ISMSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_isms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateISMSSignature - 调用接口CreateISMSSignature申请视频短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CertificateType (int) - (Required) 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • Description (str) - (Required) 短信签名申请原因

  • +
  • File (str) - (Required) 短信签名的资质证明文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB

  • +
  • SigContent (str) - (Required) 短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • ProxyFile (str) - 短信签名授权委托文件,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
  • SigId (str) - 短信签名ID

  • +
+
+ +
+
+create_isms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateISMSTemplate - 申请视频短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Content (str) - (Required) 视频短信模板内容。json数组的字符串格式。如:[{name:”0.txt”,type:”txt”,content:”北京是一座美丽的城市,我爱北京!”,index:0},{name:”1.jpg”,type:”jpg”,content:”jpg文件字节的base64编码字符串”,index:1},{name:”2.mp4”,type:”mp4”,content:”mp4文件字节的base64编码字符串”,index:2}]。name: 文件名,name中不能出现中文,必须要带上和type相同的后缀;type:文件类型,不能为空,文本为txt,图片为jpg、gif或png,音频为mp3,视频为mp4;content:文件内容,由文本、图片、音频、视频组成,文本使用txt文件,图片使用 jpg、gif、png 格式,音频使用 mp3 格式,视频使用mp4(视频只允许一个),文本、图片、音频、视频文件合计大小不可超过2M;index: 在视频短信中的位置。从0开始。

  • +
  • MsgSignature (str) - (Required) 视频短信签名

  • +
  • MsgTitle (str) - (Required) 视频短信标题

  • +
  • Remark (str) - (Required) 备注

  • +
  • TemplateName (str) - (Required) 视频短信模板名称

  • +
  • UnsubscribeInfo (str) - (Required) 退订信息,如:“回T退订”

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - API接口调用出错时表示错误信息

  • +
  • ReqUuid (str) - 本次接口调用请求Id,用于问题排查。

  • +
  • TemplateId (str) - 申请的模板Id。

  • +
+
+ +
+
+delete_isms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteISMSSignature - 调用接口DeleteISMSSignature删除视频短信签名

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigIds (list) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+delete_isms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteISMSTemplate - 调用接口DeleteISMSTemplate删除视频短信模板

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TemplateIds (list) - (Required) 模板ID,支持以数组的方式,举例,以TemplateIds.0、TemplateIds.1…TemplateIds.N方式传入

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+
+get_isms_send_receipt(req: Optional[dict] = None, **kwargs) dict[source]
+

GetISMSSendReceipt - 获取视频短信发送记录的状态回执

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TaskIdSet (list) - (Required) 发送记录TaskId集合。调用SendUSMSVideoMessage时返回的TaskId的集合。以TaskIdSet.0、TaskIdSet.1…TaskIdSet.N的形式传入。每次请求最多支持100个

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Data (list) - 见 ReceiptPerTask 模型定义

  • +
  • Message (str) - 错误信息

  • +
  • ReqUuid (str) - 本次请求uuid

  • +
+

Response Model

+

ReceiptPerTask +- ReceiptSet (list) - 见 ReceiptPerPhone 模型定义 +- TaskId (str) - 发送短信时返回的TaskId

+

ReceiptPerPhone +- Phone (str) - 手机号码 +- ReceiptCode (str) - 回执码 +- ReceiptDesc (str) - 回执结果描述 +- ReceiptResult (str) - 回执结果(发送成功、发送失败、状态未知) +- ReceiptTime (int) - 回执返回时间 +- SessionId (str) - SessionId

+
+ +
+
+query_isms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

QueryISMSSignature - 调用接口QueryISMSSignature查询视频短信签名申请状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigId (str) - (Required) 已申请的短信签名ID(短信签名申请时的工单ID);签名ID和签名至少需填写1项;

  • +
  • SigContent (str) - 签名内容;签名ID和签名至少需填写1项;

  • +
+

Response

+
    +
  • Data (dict) - 见 OutSignature 模型定义

  • +
  • Message (str) - 发生错误时,表示具体错误描述

  • +
+

Response Model

+

OutSignature +- ErrDesc (str) - 短信签名未通过审核原因 +- SigContent (str) - 短信签名内容 +- SigId (str) - 短信签名ID +- Status (int) - 签名状态,0-待审核 1-审核中 2-审核通过 3-审核未通过 4-被禁用

+
+ +
+
+query_isms_template(req: Optional[dict] = None, **kwargs) dict[source]
+

QueryISMSTemplate - 查询模板状态信息

+

Request

+ +

Response

+
    +
  • Data (dict) - 见 OutTemplate 模型定义

  • +
  • Message (str) - 错误信息

  • +
  • ReqUuid (str) - 本次请求uuid

  • +
+

Response Model

+

OutTemplate +- CreateTime (int) - 创建时间,时间戳格式1629357838 +- ExpireTime (int) - 截止有效时间,时间戳格式1629357838 +- Purpose (int) - 视频短信类型(3-会员营销) +- Remark (str) - 备注信息 +- StatusDesc (str) - 状态描述。json格式,给出运营商维度的审核状态信息,示例:{“telecom_status”:2,”telecom_desc”:”审核通过”,”unicom_status”:2,”unicom_desc”:”审核通过”,”mobile_status”:2,”mobile_desc”:”审核通过”}。状态枚举值:0-创建模板时未向该运营商报备 1->审核中 2->审核通过 3->审核未通过 4->禁用 7->过期 11->待审核 +- TemplateId (str) - 模板ID +- TemplateName (str) - 模板名称

+
+ +
+
+send_isms_message(req: Optional[dict] = None, **kwargs) dict[source]
+

SendISMSMessage - 发送视频短信

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • PhoneSet (list) - (Required) 手机号码列表。暂时只支持中国大陆号码。若号码中带区号,需要将区号使用小括号包含,放在号码前面。如: (86)1851623xxxx

  • +
  • TemplateId (str) - (Required) 视频短信模板Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 错误信息

  • +
  • ReqUuid (str) - 本次请求uuid

  • +
  • TaskId (str) - 本次调用TaskId,使用该字段查询回执信息

  • +
+
+ +
+
+update_isms_signature(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateISMSSignature - 调用接口UpdateISMSSignature修改未通过审核的视频短信签名,并重新提交审核

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID,不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SigContent (str) - (Required) 新的短信签名内容;长度为2-12个字符, 可包含中文、数字和符号;无需填写【】或[],系统会自动添加

  • +
  • SigId (str) - (Required) 签名ID,支持以数组的方式,举例,以SigIds.0、SigIds.1…SigIds.N方式传入

  • +
  • SigPurpose (int) - (Required) 签名用途,0-自用,1-他用;

  • +
  • SigType (int) - (Required) 签名类型,说明如下:0-公司或企业的全称或简称;1-App应用的全称或简称;2-工信部备案网站的全称或简称;3-公众号或小程序的全称或简称;4-商标名的全称或简称;5-政府/机关事业单位/其他单位的全称或简称;

  • +
  • CertificateType (int) - 签名的资质证明文件类型,需与签名类型保持一致,说明如下:0-三证合一/企业营业执照/组织机构代码证书/社会信用代码证书;1-应用商店后台开发者管理截图;2-备案服务商的备案成功截图(含域名,网站名称,备案号);3-公众号或小程序的管理界面截图;4-商标注册证书;5-组织机构代码证书、社会信用代码证书;

  • +
  • Document (str) - 短信签名的资质证明文件URL,若未更改审核材料,则该处使用已上传审核材料的URL链接,否则使用File参数

  • +
  • File (str) - 短信签名的资质证明文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB。内容格式如下: [file type];[code type],[base64] 如:image/jpeg;base64,5YaF5a65

  • +
  • ProxyDoc (str) - 短信签名授权委托文件URL,若未更改授权委托文件,则该处填写已上传的授权委托文件的URL链接,否则使用ProxyFile参数

  • +
  • ProxyFile (str) - 短信签名授权委托文件内容,需先进行base64编码格式转换,此处填写转换后的字符串。文件大小不超过4 MB;当您是代理并使用第三方的签名时(也即SigPurpose为1-他用),该项为必填项;格式和File类似。

  • +
+

Response

+
    +
  • Message (str) - 返回状态码描述,如果操作成功,默认返回为空

  • +
+
+ +
+ +
+
+

TiDB

+
+
+class ucloud.services.tidb.client.TiDBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_ti_db_service(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateTiDBService - 创建TiDB服务

+

Request

+
    +
  • ProjectId (str) - (Config) 项目 ID

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) 服务名称, 长度不超过64

  • +
  • Password (str) - (Required) 服务root账号的密码, 长度不超过32

  • +
  • SubnetId (str) - (Required) 子网 ID

  • +
  • VPCId (str) - (Required) VPC ID

  • +
  • DTType (str) - 容灾类型:10:同可用区,20:跨可用区,默认是同可用区

  • +
  • Ip (str) - ipv4

  • +
  • Port (str) - 端口

  • +
  • TikvMemoryHardTh (str) - 实例类型: 0: 旗舰版,30: 体验版,60: 轻量版

  • +
+

Response

+
    +
  • Data (dict) - 见 ServiceID 模型定义

  • +
  • Message (str) - 返回信息

  • +
  • ServiceId (str) - 服务ID

  • +
+

Response Model

+

ServiceID +- Id (str) - 服务ID

+
+ +
+
+delete_ti_db_service(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteTiDBService - 删除一个服务

+

Request

+ +

Response

+
    +
  • Message (str) - 返回信息

  • +
  • ServiceId (str) - ServiceId

  • +
+
+ +
+
+set_ti_db_config(req: Optional[dict] = None, **kwargs) dict[source]
+

SetTiDBConfig - 设置TiDB服务实例参数

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Id (str) - (Required) 资源Id

  • +
  • Configs (list) - 见 SetTiDBConfigParamConfigs 模型定义

  • +
+

Response

+
    +
  • ServiceId (str) - ServiceId

  • +
+

Request Model

+

SetTiDBConfigParamConfigs +- Name (str) - 修改的参数名: proxysql_mysql-max_connections:类型:string, 描述: 所有用户总共的最大连接数 。proxysql_max_connections: 类型:string, 描述: 每个用户的最大连接数。tidb_gc: 类型:string, 描述: tikv_gc_life_time。 +- Value (str) - 对应修改的参数值: string

+
+ +
+ +
+
+

UBill

+
+
+class ucloud.services.ubill.client.UBillClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+get_balance(req: Optional[dict] = None, **kwargs) dict[source]
+

GetBalance - 获取账户余额

+

Request

+

Response

+
    +
  • AccountInfo (dict) - 见 AccountInfo 模型定义

  • +
+

Response Model

+

AccountInfo +- Amount (str) - 账户余额 +- AmountAvailable (str) - 账户可用余额 +- AmountCredit (str) - 信用账户余额 +- AmountFree (str) - 赠送账户余额 +- AmountFreeze (str) - 冻结账户金额

+
+ +
+
+get_bill_data_file_url(req: Optional[dict] = None, **kwargs) dict[source]
+

GetBillDataFileUrl - 生成账单数据文件下载的 url

+

Request

+
    +
  • BillType (int) - (Required) 账单类型,传 0 时获取账单总览报表,传 1 获取账单明细报表

  • +
  • BillingCycle (str) - (Required) 账期(字符串格式,YYYY-MM,例如2021-08). 若BillingCycle 和 BillPeriod同时存在,BillingCycle 优先

  • +
  • BillPeriod (int) - 此字段不推荐使用,建议使用BillingCycle. 若BillingCycle 和 BillPeriod同时存在,BillingCycle 优先

  • +
  • PaidType (int) - 获取账单总览报表时,账单的支付状态,传 0 时获取待支付账单,传 1 时获取已支付账单。获取账单明细报表时该参数无效

  • +
  • RequireVersion (str) - 如需求其他语言版本的账单则使用此参数。默认中文。如 RequireVersion = “EN”,则提供英文版本账单。

  • +
  • Version (str) - 文件版本,若为”v1”表示获取带有子用户信息的账单,可以为空

  • +
+

Response

+
    +
  • FileUrl (str) - 交易账单数据下载URL

  • +
  • IsValid (str) - 生成的 URL是否有效,即有对应数据文件

  • +
+
+ +
+
+list_u_bill_detail(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUBillDetail - 获取某个账期内的所有消费。

+

Request

+
    +
  • BillingCycle (str) - (Required) 账期,YYYY-MM,比如2021-08,只支持2018-05之后的查询

  • +
  • ChargeType (str) - 计费方式 (筛选项, 默认全部)

  • +
  • Limit (int) - 每页数量,默认值25,最大值:100。

  • +
  • Offset (int) - 数据偏移量 (默认0)

  • +
  • OrderType (str) - 订单类型 (筛选项, 默认全部)

  • +
  • PaidState (int) - 支付状态 (筛选项, 1:仅显示未支付订单; 2:仅显示已支付订单; 0:两者都显示)

  • +
  • ProjectName (str) - 项目名称 (筛选项, 默认全部)

  • +
  • ResourceIds (list) - 资源ID(筛选项, 默认全部) 支持多筛选,多筛选请在请求参数中添加多个字段例ResourceIds.0: uhost-bzgf1gh5,ResourceIds.1: uhost-gu1xpspa,

  • +
  • ResourceTypes (list) - 产品类型 (筛选项, 默认全部),支持多筛选,多筛选请在请求参数中添加多个字段例ResourceTypes.0: uhost,ResourceTypes.1: udisk,ResourceTypes.2: udb,

  • +
  • ShowZero (int) - 是否显示0元订单 (0 不显示, 1 显示, 默认0)

  • +
  • UserEmail (str) - 用户邮箱,可以根据用户邮箱来进行筛选

  • +
+

Response

+
    +
  • Items (list) - 见 BillDetailItem 模型定义

  • +
  • TotalCount (int) - 账单明细总长度

  • +
+

Response Model

+

ResourceExtendInfo +- KeyId (str) - 资源标识健 +- Value (str) - 资源标识值

+

ItemDetail +- ProductName (str) - 产品小类名称 +- Value (str) - 产品小类规格

+

BillDetailItem +- Admin (int) - 是否为主账号 +- Amount (str) - 订单总金额 +- AmountCoupon (str) - 代金券抵扣 +- AmountFree (str) - 赠送金额抵扣 +- AmountReal (str) - 现金账户支付 +- AzGroupCName (str) - 可用区 +- ChargeType (str) - 计费方式 +- CreateTime (int) - 创建时间(时间戳) +- ItemDetails (list) - 见 ItemDetail 模型定义 +- OrderNo (str) - 订单号 +- OrderType (str) - 订单类型 +- ProjectName (str) - 项目名称 +- ResourceExtendInfo (list) - 见 ResourceExtendInfo 模型定义 +- ResourceId (str) - 资源ID +- ResourceType (str) - 产品类型 +- ResourceTypeCode (int) - 产品类型代码 +- ShowHover (int) - 订单支付状态 +- StartTime (int) - 开始时间(时间戳) +- UserDisplayName (str) - 账户昵称 +- UserEmail (str) - 账户邮箱 +- UserName (str) - 账户名

+
+ +
+
+list_u_bill_overview(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUBillOverview - 账单总览。可按产品/项目/用户纬度获取某个账期内账单总览信息。

+

Request

+
    +
  • BillingCycle (str) - (Required) 账期,YYYY-MM格式,例如2022-02,只支持2018-05之后的查询

  • +
  • Dimension (str) - (Required) 账单维度, product 按产品聚合,project 按项目聚合,user 按子账号聚合

  • +
  • HideUnpaid (int) - 是否显示已入账账单, 1 已入账, 0 待入账 (默认0 )

  • +
+

Response

+
    +
  • Items (list) - 见 BillOverviewItem 模型定义

  • +
  • TotalCount (int) - 账单总览数据总数

  • +
  • TotalPaidAmount (str) - 已入账订单总额(已入账时显示)

  • +
  • TotalPaidAmountReal (str) - 现金账户扣款总额 (已入账时显示)

  • +
  • TotalUnpaidAmount (str) - 待入账订单总额(待入账时显示)

  • +
+

Response Model

+

BillOverviewItem +- Admin (int) - 该账户是否为主账号,1 主账号,0 子账号(账单维度按子账号筛选时显示) +- Amount (str) - 订单总金额 +- AmountCoupon (str) - 代金券抵扣(已入账时显示) +- AmountFree (str) - 赠送金额抵扣(已入账时显示) +- AmountReal (str) - 现金账户支付(已入账时显示) +- Dimension (str) - 账单维度, product 按产品维度聚合,project 按项目维度聚合,user 按子账号维度聚合 +- ProductCategory (str) - 产品分类 (账单维度按产品筛选时显示) +- ProjectName (str) - 项目名称(账单维度按项目筛选时显示) +- ResourceType (str) - 产品类型 (账单维度按产品筛选时显示) +- ResourceTypeCode (int) - 产品类型代码(账单维度按产品筛选时显示) +- UserDisplayName (str) - 账户昵称(账单维度按子账号筛选时显示) +- UserEmail (str) - 账户邮箱(账单维度按子账号筛选时显示) +- UserName (str) - 账户名 (账单维度按子账号筛选时显示)

+
+ +
+ +
+
+

UDDB

+
+
+class ucloud.services.uddb.client.UDDBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+change_uddb_instance_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ChangeUDDBInstanceName - 修改分布式数据库中间件名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NewName (str) - (Required) 名称

  • +
  • UDDBId (str) - (Required) UDDB实例Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+change_uddb_slave_count(req: Optional[dict] = None, **kwargs) dict[source]
+

ChangeUDDBSlaveCount - 改变分布式数据库数据节点的只读实例个数每一个UDDB的数据节点负责处理所有的写入请求。与此同时,每一个数据节点可以配置若干个该节点的只读实例。当主节点的数据写入完毕后,只读实例把这次的写入操作进行更新,从而和数据节点保持一致。只读实例可以使得数据由多份复制,在数据节点和只读实例之间,可以做请求的读写分离, 也就是说, 主节点写入数据之后, 数据的读操作可以由数据只读实例进行分担, 这样减少主节点的压力, 增加性能当改变了数据节点的只读实例个数之后,对于现有的和以后的每一个数据节点都采用这个配置。如果UDDB实例有现有的数据节点, 那么它会根据新配置的参数,自动创建或删除数据节点的只读实例如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成”ChangingSlaveCount”; 如果返回失败, UDDB实例状态保持不变 当UDDB更改数据分区的只读实例个数成功之后, UDDB实例的状态变成”Running”(正常运行中); 如果更改过程中出现异常, 状态变成”Abnormal”(异常运行中)或者”Error”(运行错误)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SlaveCount (str) - (Required) 每个数据节点的只读实例个数, 取值必须>=0

  • +
  • UDDBId (str) - (Required) UDDB资源id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+create_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDDBInstance - 创建创建分布式数据库UDDB实例, 简称UDDB实例。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AdminPassword (str) - (Required) 管理员密码, 密码需要使用base64加密

  • +
  • DBTypeId (str) - (Required) UDDB的数据库版本,支持版本如下:mysql-5.6 mysql-5.7. 如果不填,则默认为mysql-5.6

  • +
  • DataNodeCount (int) - (Required) 初始的数据节点个数 取值必须>0.

  • +
  • DataNodeDiskSpace (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值.

  • +
  • DataNodeMemory (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值.

  • +
  • Name (str) - (Required) 实例名称,至少6位

  • +
  • RouterNodeNum (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数

  • +
  • RouterVersion (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AdminUser (str) - 管理员帐户名,默认root

  • +
  • ChargeType (str) - 付费类型,可选值如下:Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • DataNodeSlaveCount (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0.

  • +
  • InstanceMode (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA

  • +
  • InstanceType (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD

  • +
  • Port (int) - 端口号,mysql默认端口为3306

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
  • SubnetId (str) - 子网ID

  • +
  • VPCId (str) - VPC的ID

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
  • UDDBId (str) - UDDB实例ID

  • +
+
+ +
+
+delete_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUDDBInstance - 删除UDDB实例。如下状态的UDDB实例可以进行这个操作:InitFail: 初始化失败Shutoff: 已关闭当请求返回成功之后,UDDB实例就已经被删除, 列表上看不到对应的UDDB实例

+

Request

+ +

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+describe_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDDBInstance - 获取分布式数据库UDDB的详细信息

+

Request

+ +

Response

+
    +
  • DataSet (list) - 见 DataSetUDDB 模型定义

  • +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+

Response Model

+

SlaveInfo +- DataNodeId (str) - 对应数据节点的ID +- Id (str) - 只读实例ID +- State (str) - 只读实例状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中

+

DataNodeInfo +- CreateTime (str) - 节点的创建时间 +- DiskSpace (str) - 数据节点的磁盘大小配置. 单位: GB +- Id (str) - 数据节点ID +- LastTransTaskId (str) - 最近一次数据迁移任务id +- Memory (str) - 数据节点的内存配置, 单位:MB +- SlaveCount (str) - 数据节点的只读实例个数. +- SlaveInfos (list) - 见 SlaveInfo 模型定义 +- State (str) - 数据分片状态, 状态列表如下: Init: 初始化中 Fail: 安装失败 Starting: 启动中 Running: 系统正常运行中 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 Upgrading: 系统升级中

+

DataSetUDDB +- AdminUser (str) - 管理员帐户名,默认root +- ChargeType (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 +- CreateTime (str) - UDDB实例创建时间,采用UTC计时时间戳 +- DBTypeId (str) - UDDB的数据库版本 +- DataNodeCount (str) - 数据节点个数 +- DataNodeDiskSpace (str) - 数据节点的磁盘大小配置. 单位: GB +- DataNodeList (list) - 见 DataNodeInfo 模型定义 +- DataNodeMemory (str) - 数据节点的内存配置, 单位:MB +- DataNodeSlaveCount (str) - 每个数据节点的只读实例个数. +- ExpiredTime (str) - UDDB实例过期时间,采用UTC计时时间戳 +- InstanceMode (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA +- InstanceType (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD +- Name (str) - UDDB实例名称 +- Port (str) - UDDB实例访问的端口号 +- RefQps (int) - 参考QPS。 免费版: 15000; 畅享版: 30000 - 100000 (根据节点数而定); 专享版: 节点数 * 10w qps +- RouterNodeNum (int) - 各版本下的节点个数。体验版: 固定为2节点; 畅享版:固定为4节点(后续可通过管理API调整);专享版:物理机台数 +- RouterVersion (str) - UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选 +- State (str) - UDDB状态, 状态列表如下: Init: 初始化中 InitFail: 初始化失败 Starting: 启动中 Running: 系统正常运行中 Abnormal: 系统运行中, 有异常, 还能提供服务 Error: 系统运行中, 但不能正常提供服务 Shutdown: 关闭中 Shutoff: 已关闭 Deleted: 已删除 UpgradingUDDB: 升降级UDDB配置中 UpgradingDataNode: 升降级UDDB节点配置中 ChangingSlaveCount: 改变只读实例数量中 ScalingOutUDDB: 水平扩展中 +- UDDBId (str) - UDDB实例ID +- VirtualIP (str) - UDDB实例访问的虚IP +- Zone (str) - UDDB实例对应的可用区

+
+ +
+
+describe_uddb_instance_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDDBInstancePrice - 获取分布式数据库UDDB价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DataNodeCount (int) - (Required) 初始的数据节点个数 取值必须>0.

  • +
  • DataNodeDiskSpace (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值.

  • +
  • DataNodeMemory (str) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值.

  • +
  • RouterNodeNum (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点个数。一台物理机有2个节点

  • +
  • RouterVersion (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 默认值为: Dynamic

  • +
  • DataNodeSlaveCount (int) - 每个数据节点的只读实例个数, 取值必须>=0. 默认取值为0.

  • +
  • InstanceMode (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA

  • +
  • InstanceType (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD

  • +
  • Quantity (int) - 购买时长,默认值1

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
  • PriceInfo (dict) - 见 PriceDetailInfo 模型定义

  • +
+

Response Model

+

PriceDetailInfo +- DataNodePrice (float) - 存储节点费用 +- DataNodeSlavePrice (float) - 只读实例费用 +- MiddlewarePrice (float) - 中间件路由节点费用

+
+ +
+
+describe_uddb_instance_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUDDBInstanceUpgradePrice - 升级UDDB时,获取升级后的价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouterNodeNum (int) - (Required) 其他版本:该参数可不填;专享版:物理机节点的个数。一台物理机有2个节点

  • +
  • RouterVersion (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5WFeelFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w;EnjoyAlone(物理机版):专享物理机,节点数让客户可选

  • +
  • UDDBId (str) - (Required) UDDB实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DataNodeCount (int) - 新的数据节点个数 取值必须>0.

  • +
  • DataNodeDiskSpace (int) - 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值.

  • +
  • DataNodeMemory (int) - 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值.

  • +
  • DataNodeSlaveCount (int) - 每个数据节点的只读实例个数, 取值必须>=0.

  • +
  • InstanceMode (str) - 存储节点的高可用模式, 分为高可用UDB(HA)和普通UDB(Normal),如果不填, 则默认为HA

  • +
  • InstanceType (str) - 存储节点和只读实例的磁盘类型。分为:SSD磁盘(SATA_SSD)或普通磁盘(Normal)。 如果不填,则默认为SATA_SSD

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
  • PriceInfo (dict) - 见 PriceInfo 模型定义

  • +
+

Response Model

+

PriceInfo +- DataNodePrice (float) - 存储节点费用 +- DataNodeSlavePrice (float) - 只读实例费用 +- MiddlewarePrice (float) - 中间件路由节点费用

+
+ +
+
+restart_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartUDDBInstance - 重启UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成”Starting”(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在重启过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成”Running”(正常运行中); 如果启动过程中出现异常, 状态变成”Abnormal”(异常运行中), 或者”Shutoff”(已关闭

+

Request

+ +

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+start_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUDDBInstance - 启动UDDB实例,开始提供服务。如下状态的UDDB实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成”Starting”(启动中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在启动过程中, 当UDDB实例启动成功之后, UDDB实例的状态变成”Running”(正常运行中); 如果启动过程中出现异常, 状态变成”Abnormal”(异常运行中), 或者”Shutoff”(已关闭)

+

Request

+ +

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+stop_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUDDBInstance - 关闭UDDB实例,停止提供服务。如下状态的UDDB实例可以进行这个操作:Running: 正常运行中Abnormal: 异常运行中当请求返回成功之后,UDDB实例的状态变成”Shutdown”(关闭中); 如果返回失败, UDDB实例状态保持不变 UDDB实例在关闭过程中, 当UDDB实例关闭成功之后, UDDB实例的状态变成”Shutoff”(已关闭); 如果关闭过程中出现异常, 根据UDDB实例的情况, 状态变成”Abnormal”(异常运行中), 或者”Running”(正常运行中)

+

Request

+ +

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+upgrade_uddb_data_node(req: Optional[dict] = None, **kwargs) dict[source]
+

UpgradeUDDBDataNode - 升降级分布式数据库数据节点的配置, 提高/降低数据节点的数据容量和内存所有数据节点以及其所挂载的只读实例的配置都受到影响升降级数据节点的配置之后之后, 会按照数据节点新的磁盘和内存大小重新计费如下状态的数据节点实例可以进行这个操作:Shutoff: 已关闭当请求返回成功之后,UDDB实例的状态变成”UpgradingDataNode”,相关数据节点的状态变成”Upgrading”; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级结束之后, UDDB实例的状态变成”Shutoff”

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DataNodeDiskSpace (int) - (Required) 新的数据节点的磁盘大小配置. 单位: GB 具体数值参考UDB的磁盘大小取值.

  • +
  • DataNodeMemory (int) - (Required) 新的数据节点的内存配置, 单位:MB 具体数值参考UDB的内存取值

  • +
  • UDDBId (str) - (Required) UDDB实例ID

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+upgrade_uddb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

UpgradeUDDBInstance - 升降级分布式数据库中间件的配置, 提高/降低请求处理的并发性修改请求处理节点个数之后, 按照所有请求处理节点的总内存容量和CPU核数重新计费如下状态的UDDB实例可以进行这个操作:Running: 系统正常运行中当请求返回成功之后,UDDB实例的状态变成”UpgradingUDDB”; 如果返回失败, UDDB实例状态保持不变 当UDDB实例升级成功之后, UDDB实例的状态变成”Running”; 如果更改过程中出现异常, 状态变成”Abnormal”, 或者”Error”

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouterNodeNum (int) - (Required) 其他版本:该参数可不填;专享版:物理机台数

  • +
  • RouterVersion (str) - (Required) UDDB路由节点的版本。分为三种: Trival(免费版): 2中间件节点; QPS:1.5W FellFree(标准版): 固定为4中间件节点,后续将根据业务请求量自动扩展,最多扩展到12个节点,QPS为3w - 10w; EnjoyAlone(物理机版):专享物理机,节点数让客户可选

  • +
  • UDDBId (str) - (Required) UDDB实例ID

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+ +
+
+

UDTS

+
+
+class ucloud.services.udts.client.UDTSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+check_udts_task(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckUDTSTask - 对UDTS 任务提供预检查功能

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • MaxRetryCount (str) - (Required) 重试次数,最大为 5。 默认为0

  • +
  • Name (str) - (Required) task 名称,长度不能超过 128

  • +
  • Type (str) - (Required) 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。

  • +
  • Query (str) - 废弃

  • +
  • Source (list) - 见 CheckUDTSTaskParamSource 模型定义

  • +
  • Target (dict) - 见 CheckUDTSTaskParamTarget 模型定义

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • Data (dict) - 见 CheckUDTSTaskResult 模型定义

  • +
  • Message (str) - 返回消息

  • +
  • RetCode (str) - 返回码

  • +
+

Request Model

+

CheckUDTSTaskParamSourceMySQLNodeSyncData +- BinlogGTID (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- BinlogName (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- BinlogPos (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- ServerID (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值

+

CheckUDTSTaskParamSourceMySQLNodeQueryData +- DBName (str) - 数据集成时需要迁移的 DB 名 +- NewDBName (str) - 数据集成时迁移后的 DB 名

+

CheckUDTSTaskParamTargetMySQLNode +- DataRegion (str) - 目标数据库地域,比如 cn-bj2 +- Host (str) - 目标数据库地址, 比如 10.9.37.212 +- Password (str) - 目标数据库密码 +- Port (int) - 目标数据库端口,比如 3306 +- SubnetId (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq +- User (str) - 目标数据库用户名,比如 root +- VPCId (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte

+

CheckUDTSTaskParamSourceMySQLNode +- DataRegion (str) - 数据库地域,比如 cn-bj2 +- Database (str) - 需要迁移的 DB 名称 +- Host (str) - 源数据库地址, 比如 10.9.37.200 +- Password (str) - 源 MySQL 密码 +- Port (int) - 源 MySQL 端口,如 3306 +- QueryData (list) - 见 CheckUDTSTaskParamSourceMySQLNodeQueryData 模型定义 +- SubnetId (str) - 子网 ID +- SyncData (dict) - 见 CheckUDTSTaskParamSourceMySQLNodeSyncData 模型定义 +- Table (str) - 需要迁移的 table 名 +- User (str) - 源 MySQL 用户名,如 root +- VPCId (str) - VPC

+

CheckUDTSTaskParamTarget +- DataType (str) - 目标数据库类型,比如 mysql +- MySQLNode (dict) - 见 CheckUDTSTaskParamTargetMySQLNode 模型定义 +- NWType (str) - 目标 db 网络类型,目前进支持 user

+

CheckUDTSTaskParamSource +- DataType (str) - 数据库类型 +- Mode (str) - // 任务类型,值可以是 full, incremental, full+incremental, bidirectional +- MySQLNode (dict) - 见 CheckUDTSTaskParamSourceMySQLNode 模型定义 +- NWType (str) - 源网络类型,可以是 public,user,dedicated_line

+

Response Model

+

CheckResultItem +- ErrMessage (str) - +- State (str) - 状态

+

CheckResult +- Config (dict) - 见 CheckResultItem 模型定义 +- Connection (dict) - 见 CheckResultItem 模型定义 +- Privileges (dict) - 见 CheckResultItem 模型定义

+

CheckUDTSTaskResult +- Source (dict) - 见 CheckResult 模型定义 +- Target (dict) - 见 CheckResult 模型定义

+
+ +
+
+create_udts_task(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUDTSTask - 创建UDTS任务

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Name (str) - (Required) task 名称,长度不能超过 128

  • +
  • Type (str) - (Required) 任务类型,transfer(数据传输) 或 integration(数据集成)

  • +
  • IsUnidirection (str) - 暂时未使用该字段

  • +
  • MaxRetryCount (str) - 重试次数,最大为 5。 默认为0

  • +
  • Query (str) - 暂时未使用该字段

  • +
  • Remark (str) - 备注信息,长度不能大于 255

  • +
  • Source (list) - 见 CreateUDTSTaskParamSource 模型定义

  • +
  • Target (dict) - 见 CreateUDTSTaskParamTarget 模型定义

  • +
+

Response

+
    +
  • Data (dict) -

  • +
  • Message (str) - 返回消息

  • +
+

Request Model

+

CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData +- ExcludeTables (bool) - 暂时未使用该字段 +- TableNames (str) - 暂时未使用该字段

+

CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps +- NewTableName (str) - 数据集成时迁移后的 Table 名 +- TableName (str) - 数据集成时需要迁移的 Table 名

+

CreateUDTSTaskParamSourceMySQLNodeSyncData +- BinlogGTID (str) - 增量时需要指定的 binlog gtid,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- BinlogName (str) - 增量时需要指定的 binlog name,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- BinlogPos (int) - 增量时需要指定的 binlog pos,可以通过 show master status 获取,或者全量+增量任务会自动设置 +- ServerID (int) - 增量时需要指定的 serverID,不能和现有的 slave 重复,预检查时会检查该值

+

CreateUDTSTaskParamSourceMySQLNodeQueryData +- DBName (str) - 数据集成时需要迁移的 DB 名 +- NewDBName (str) - 数据集成时迁移后的 DB 名 +- TableData (dict) - 见 CreateUDTSTaskParamSourceMySQLNodeQueryDataTableData 模型定义 +- TableMaps (list) - 见 CreateUDTSTaskParamSourceMySQLNodeQueryDataTableMaps 模型定义

+

CreateUDTSTaskParamSourceMySQLNode +- DataRegion (str) - 数据库地域,比如 cn-bj2 +- Database (str) - 需要迁移的 DB 名称 +- DupAction (str) - 重复数据处理规则,数据集成时该参数才有效,值为 ignore或者replace +- Host (str) - 源数据库地址 +- KeepExistData (bool) - 是否保留原有数据,只有数据集成时该参数才有效 +- Password (str) - 源数据库密码 +- Port (int) - 源数据库端口 +- QueryData (list) - 见 CreateUDTSTaskParamSourceMySQLNodeQueryData 模型定义 +- SubnetId (str) - 源数据库子网 ID,当网络类型为 user 时需要填写 +- SyncData (dict) - 见 CreateUDTSTaskParamSourceMySQLNodeSyncData 模型定义 +- Table (str) - 需要迁移的 table 名 +- User (str) - 源数据库用户名 +- VPCId (str) - 源数据库 VPC ID,当网络类型为 user 时需要填写

+

CreateUDTSTaskParamTargetMySQLNode +- DataRegion (str) - 目标数据库地域,比如 cn-bj2 +- Host (str) - 目标数据库地址, 比如 10.9.37.212 +- NoBinlog (bool) - 是否在全量过程中,临时禁用目标 MySQL 产生 binlog,在目标磁盘空间不足,或者需要获取更快的迁移速度时可以使用,该参数会破坏目标 MySQL 的高可用 +- Password (str) - 目标数据库密码 +- Port (int) - 目标数据库端口,比如 3306 +- SubnetId (str) - 目标数据库子网 ID ,比如 subnet-zl44fktq +- User (str) - 目标数据库用户名,比如 root +- VPCId (str) - 目标数据库 VPC,比如 uvnet-1wz5rqte

+

CreateUDTSTaskParamSource +- BandwidthLimit (int) - 源端限速值,单位为 MB/s +- DataType (str) - 数据库类型,比如 mysql +- Mode (str) - 任务类型,值可以是 full, incremental, full+incremental, bidirectional +- MySQLNode (dict) - 见 CreateUDTSTaskParamSourceMySQLNode 模型定义 +- NWType (str) - 源网络类型,可以是 public,user,dedicated_line

+

CreateUDTSTaskParamTarget +- BandwidthLimit (str) - 目标端限速,单位为 MB/s +- DataType (str) - 目标数据库类型,比如 mysql +- Mode (str) - +- MySQLNode (dict) - 见 CreateUDTSTaskParamTargetMySQLNode 模型定义 +- NWType (str) - 目标 db 网络类型,目前仅支持 user

+
+ +
+
+get_udts_task_history(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDTSTaskHistory - 获取任务历史状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TaskId (str) - (Required) 任务短 id

  • +
  • Type (str) - 任务类型

  • +
+

Response

+
    +
  • Data (list) - 见 TaskHistoryItem 模型定义

  • +
+

Response Model

+

TaskHistoryItem +- AntID (str) - 任务 ID +- AntState (str) - 任务状态 +- CreateTime (int) - 事件时间,值为 timestamp +- CreateTimeH (str) - 事件时间,为可读的日期时间

+
+ +
+
+get_udts_task_status(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUDTSTaskStatus - 查看服务状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TaskId (str) - (Required) 任务ID

  • +
  • Type (str) - 任务类型,值为 transfer 或 integration, transfer 时任务为 数据迁移,integration 时任务为 数据集成。

  • +
+

Response

+
    +
  • Data (dict) - 见 StatusData 模型定义

  • +
  • Message (str) - 返回信息

  • +
+

Response Model

+

SyncData +- BinlogGTID (str) - GTID +- BinlogName (str) - Binlog 文件名, 长度不超过128字符 +- BinlogPos (int) - Binlog Pos +- ServerId (int) - 分配给UDTS task的server ID, 必须在MySQL集群中唯一

+

Progress +- CurCount (int) - 已迁移条目数 +- CurDuration (int) - 已耗时间(单位秒) +- Percentage (float) - 完成进度 +- TotalCount (int) - 总条目数 +- TotalDuration (int) - 估算总耗时间(单位秒)

+

StatusData +- CurRetryCount (int) - 当前失败重试次数 +- FailedMessage (str) - 当Status为Failed时, 显示失败原因 +- MaxRetryCount (int) - 用户设置的最大失败重试次数 +- Progress (dict) - 见 Progress 模型定义 +- Status (str) - 任务状态, 状态有 Created:已创建,Checking:检查中,Dumping:转储中,Loading:加载中,Syncing:同步中,Synced:已同步,Done:完成,Failed:失败,Stopping:停止中,Stopped:停止,RetryPending:重试等待中,Starting:启动中,FailedUnrecoverable:异常,StoppedUnrecoverable:异常,Success:成功,Started:已启动 +- Sync (dict) - 见 SyncData 模型定义

+
+ +
+
+list_udts_task(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUDTSTask - 获取用户创建的 Task 信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Limit (str) - 请求数量,默认为 20

  • +
  • Offset (str) - 偏移量,默认为 0

  • +
  • Type (str) - 任务类型

  • +
+

Response

+
    +
  • Data (list) - 见 ListDataItem 模型定义

  • +
  • Message (str) - 返回信息

  • +
+

Response Model

+

Progress +- CurCount (int) - 已迁移条目数 +- CurDuration (int) - 已耗时间(单位秒) +- Percentage (float) - 完成进度 +- TotalCount (int) - 总条目数 +- TotalDuration (int) - 估算总耗时间(单位秒)

+

ListDataItem +- CreateTime (int) - 创建时间 +- CurRetryCount (int) - 当前失败重试次数 +- MaxRetryCount (int) - 最大失败重试次数 +- Name (str) - 任务名称 +- Progress (dict) - 见 Progress 模型定义 +- Status (str) - 任务状态 +- TaskId (str) - 任务 ID +- Type (str) - 任务类型, full全量, incremental增量,full+incremental全量+增量。

+
+ +
+
+start_udts_task(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUDTSTask - 启动UDTS服务

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TaskId (str) - (Required) 任务ID

  • +
  • Type (str) - 任务类型

  • +
+

Response

+
    +
  • Message (str) - 返回信息

  • +
+
+ +
+
+stop_udts_task(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUDTSTask - 停止UDTS任务

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • TaskId (str) - (Required) 任务 ID

  • +
  • Type (str) - 任务类型

  • +
+

Response

+
    +
  • Message (str) - 返回信息

  • +
+
+ +
+ +
+
+

UEC

+
+
+class ucloud.services.uec.client.UECClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+bind_u_ec_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

BindUEcFirewall - 绑定防火墙,应用防火墙规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - (Required) 防火墙Id

  • +
  • ResourceId (str) - (Required) 虚拟机资源Id或容器组资源id

  • +
+

Response

+
+ +
+
+create_u_ec_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUEcCustomImage - 从指定虚拟机,生成自定义镜像。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • NodeId (str) - (Required) 虚拟机实例ID

  • +
  • ImageDescription (str) - 镜像描述

  • +
+

Response

+
    +
  • ImageId (str) - 镜像ID

  • +
+
+ +
+
+create_u_ec_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUEcFirewall - 创建外网防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Name (str) - (Required) 防火墙名称

  • +
  • Remark (str) - 描述

  • +
  • Rule (list) - 见 CreateUEcFirewallParamRule 模型定义

  • +
+

Response

+
    +
  • FirewallId (str) - 防火墙Id

  • +
+

Request Model

+

CreateUEcFirewallParamRule +- Action (str) - ACCEPT(接受)和DROP(拒绝) +- Port (str) - 端口,范围用”-“符号分隔,如:1-65535 +- Priority (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) +- ProtocolType (str) - 协议,可选值:TCP,UDP,ICMP +- Remark (str) - 备注 +- SrcIp (str) - 源ip

+
+ +
+
+create_u_ec_holder(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUEcHolder - 创建容器组

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CpuCore (float) - (Required) 容器组Cpu总核数

  • +
  • IdcId (str) - (Required) 机房id

  • +
  • MemSize (int) - (Required) 容器组总内存,单位MB

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
  • Bandwidth (int) - 外网绑定的带宽(单位M,默认0,只有当ElasticIp为yes时,默认1)

  • +
  • ChargeQuantity (int) - 月数或者年数(默认值:1,当为按月计费时,0表示计费到月底,默认值为0)

  • +
  • ChargeType (int) - 付费方式(2按月、3按年。默认2,默认月付)

  • +
  • ElasticIp (str) - 绑定外网ip(yes-绑定,no-不绑定,默认no)

  • +
  • FirewallId (str) - 防火墙ID

  • +
  • Image (list) - 见 CreateUEcHolderParamImage 模型定义

  • +
  • Name (str) - 容器组名称(默认default)

  • +
  • Pack (list) - 见 CreateUEcHolderParamPack 模型定义

  • +
  • ProductType (str) - 机型(normal-经济型,hf-标准型,默认normal)

  • +
  • RestartStrategy (int) - 重启策略(0总是,1失败是,2永不,默认0)

  • +
  • Storage (list) - 见 CreateUEcHolderParamStorage 模型定义

  • +
+

Response

+
    +
  • ResourceId (str) - 容器组资源id

  • +
+

Request Model

+

CreateUEcHolderParamImage +- Message (str) - 镜像用户名和密码(如镜像名:密码) +- StoreAddress (str) - 镜像仓库地址

+

CreateUEcHolderParamPack +- Args (str) - 容器参数(多个用;隔开) +- Cmd (str) - 开启容器的命令 +- ConfigDict (str) - 容器配置字典(多个用;隔开,如:/data1:resId1;/data2:resId2) +- CpuCore (float) - 容器Cpu核数 +- Environment (str) - 容器环境变量(多个用;隔开,如:key1:value1;key2:value2) +- ImageName (str) - 容器镜像名称 +- MemSize (int) - 容器内存,单位MB +- Name (str) - 容器名称 +- WorkDir (str) - 容器工作目录

+

CreateUEcHolderParamStorage +- Path (str) - 存储卷挂载路径 +- ResourceId (str) - 存储卷资源id

+
+ +
+
+create_u_ec_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUEcSubnet - 创建子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CIDR (str) - (Required) 子网cidr

  • +
  • IdcId (str) - (Required) 机房ID

  • +
  • Comment (str) - 备注

  • +
  • SubnetName (str) - 子网名称

  • +
+

Response

+
    +
  • SubnetId (str) - 子网ID

  • +
+
+ +
+
+create_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUEcVHost - 创建虚拟机v2.0

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • CpuCore (int) - (Required) cpu核心数

  • +
  • DiskSize (int) - (Required) 数据盘大小,单位GB

  • +
  • IdcId (str) - (Required) 机房id

  • +
  • ImageId (str) - (Required) 镜像ID

  • +
  • MemSize (int) - (Required) 内存大小,单位GB

  • +
  • NetLimit (int) - (Required) 节点带宽限制,单位Mbs

  • +
  • AccountName (str) - 账户名,默认root

  • +
  • ChargeQuantity (int) - 月数或者年数,0计费到月底, 默认0

  • +
  • ChargeType (int) - 付费方式,1按时,2按月,3按年,默认2

  • +
  • FirewallId (str) - 外网防护墙规则组,默认

  • +
  • Gpu (int) - Gpu卡核心数。仅Gpu机型支持此字段

  • +
  • GpuType (str) - Gpu类型,枚举值[“T4S”],ProductType为G时必填

  • +
  • IsNeedOuterIp (str) - 是否需要外网ip(no-否)

  • +
  • Isp (list) - 运营商(1-电信,2-联通,4移动)

  • +
  • NodeCount (int) - 创建节点数量,默认1

  • +
  • NodeName (str) - 节点名称

  • +
  • PassWord (str) - 密码

  • +
  • ProductType (str) - 产品类型:normal(经济型),hf(标准型),g(Gpu型)

  • +
  • SubnetId (str) - 子网ID

  • +
  • SysDiskSize (int) - 系统盘大小,单位GB, 默认20GB

  • +
+

Response

+
    +
  • NodeList (list) - 见 NodeList 模型定义

  • +
+

Response Model

+

NodeList +- NodeId (str) - 虚拟机资源id

+
+ +
+
+delete_u_ec_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUEcCustomImage - 删除UEDN客户自定义镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageId (str) - (Required) 镜像ID

  • +
  • IdcId (str) - 机房ID,带机房ID表示只删除指定机房镜像

  • +
+

Response

+
    +
  • ImageId (int) - 镜像ID

  • +
+
+ +
+
+delete_u_ec_holder(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUEcHolder - 删除容器组

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • HolderId (list) - (Required) 容器组资源id,n为0,1,2…

  • +
+

Response

+
+ +
+
+delete_u_ec_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUEcSubnet - 删除子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+delete_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUEcVHost - 删除vhost虚拟机 v2.0

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 节点id

  • +
+

Response

+
+ +
+
+describe_u_ec_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcFirewall - 获取防火墙信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - 防火墙ID,默认为返回所有防火墙

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceId (str) - 绑定防火墙组的虚拟机资源ID

  • +
+

Response

+
    +
  • FirewallSet (list) - 见 FirewallInfo 模型定义

  • +
  • TotalCount (int) - 满足条件的节点总数

  • +
+

Response Model

+

FirewallInfo +- CreateTime (int) - 创建时间 +- FirewallId (str) - 防火墙Id +- Name (str) - 防火墙名称 +- Remark (str) - 描述 +- ResourceCount (int) - 防火墙绑定资源数量 +- Rule (list) - 见 RuleInfo 模型定义 +- Type (str) - 防火墙组类型,枚举值为: “user defined”, 用户自定义防火墙; “recommend web”, 默认Web防火墙; “recommend non web”, 默认非Web防火墙

+

RuleInfo +- Action (str) - ACCEPT(接受)和DROP(拒绝) +- Port (str) - 端口,范围用”-“符号分隔,如:1-65535 +- Priority (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) +- ProtocolType (str) - 协议,可选值:TCP,UDP,ICMP +- Remark (str) - 备注 +- SrcIp (str) - 源ip

+
+ +
+
+describe_u_ec_firewall_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcFirewallResource - 防火墙绑定的资源列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - (Required) 防火墙Id

  • +
+

Response

+
    +
  • ResourceSet (list) - 见 ResourceInfo 模型定义

  • +
  • TotalCount (int) - 资源总数

  • +
+

Response Model

+

ResourceInfo +- Name (str) - 节点名称 +- PublicIpList (list) - 节点公网Ip列表 +- Remark (str) - 节点备注 +- ResourceId (str) - 资源Id +- State (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常

+
+ +
+
+describe_u_ec_holder(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcHolder - 获得容器组信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • HolderId (list) - 容器组资源id

  • +
  • Limit (int) - 返回数据长度,默认为20,非负整数

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0。非负整数

  • +
+

Response

+
    +
  • HolderList (list) - 见 HolderList 模型定义

  • +
  • TotalCount (int) - 满足条件的容器组总数

  • +
+

Response Model

+

HolderList +- City (str) - 城市名称 +- CreateTime (int) - 创建时间 +- DockerCount (int) - 容器数量 +- DockerInfo (list) - 见 DockerInfo 模型定义 +- ExpireTime (int) - 过期时间 +- FirewallId (str) - 外网防火墙id +- HolderName (str) - 容器组名称 +- IdcId (str) - 机房id +- ImageList (list) - 见 ImageList 模型定义 +- InnerIp (str) - 容器组内网ip +- IpList (list) - 见 IpList 模型定义 +- NetLimit (int) - 外网绑定的带宽 +- OcName (str) - 机房名称 +- ProductType (str) - 机器类型(normal经济型,hf标准型) +- Province (str) - 省份名称 +- ResourceId (str) - 容器组资源id +- RestartStrategy (int) - 0:总是;1:失败是;2:永不 +- State (int) - 容器组运行状态0:初始化;1:拉取镜像;2:启动中;3:运行中;4:错误;5:正在重启;6:正在删除;7:已经删除;8:容器运行错误;9:启动失败;99:异常 +- StorVolumeCount (int) - 存储卷数量 +- StorVolumeInfo (list) - 见 StorVolumeInfo 模型定义 +- SubnetId (str) - 容器组子网id +- Type (int) - 线路类型(运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通)

+

DockerInfo +- Args (str) - 参数 +- CfgDictList (list) - 见 CfgDictList 模型定义 +- Command (str) - 命令 +- CpuCores (float) - CPU核数(/核)精度0.1核 +- EnvList (list) - 见 EnvList 模型定义 +- ImageName (str) - 镜像名称 +- MemSize (float) - 内存大小(Gi) +- Name (str) - 容器名称 +- State (int) - 容器状态,0:初始化;1:拉取镜像;2:拉取镜像失败;3:启动中;4:运行中;5:正在停止;6:已停止;7:已删除;8:镜像拉取成功;9:启动失败;99:异常 +- WorkDir (str) - 工作目录

+

CfgDictList +- MountPath (str) - 挂载路径 +- Name (str) - 名称 +- ResourceId (str) - 资源id

+

EnvList +- Key (str) - 环境变量key值 +- Value (str) - 环境变量Value值

+

ImageList +- ImageKey (str) - 镜像密钥 +- StoreAddr (str) - 仓库地址 +- UserName (str) - 用户名称

+

IpList +- Ip (str) - 外网ip +- Isp (str) - 运营商

+

StorVolumeInfo +- DiskSize (int) - 容量(单位GB) +- MountPoint (str) - 挂载点 +- Name (str) - 名称 +- ResourceId (str) - 资源id

+
+ +
+
+describe_u_ec_holder_idc(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcHolderIDC - 获取容器组机房信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Cpu (float) - (Required) 容器组Cpu核数

  • +
  • Memory (int) - (Required) 容器组内存大小(单位MB)

  • +
  • IdcId (list) - Idc机房id。默认全部机房

  • +
  • ProductType (str) - 产品类型,normal标准型,hf高性能型

  • +
  • Type (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通

  • +
+

Response

+
    +
  • IdcList (list) - 见 IdcInfo 模型定义

  • +
+

Response Model

+

IdcInfo +- City (str) - 城市 +- IdcId (str) - 机房ID +- Isp (str) - 运营商 +- MaxNodeCnt (int) - 机房可创建节点最大数量 +- Name (str) - 机房名称 +- Province (str) - 省份 +- Type (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通

+
+ +
+
+describe_u_ec_idc(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcIDC - 获取IDC机房列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Cpu (int) - (Required) 节点cpu核数

  • +
  • Memory (int) - (Required) 节点内存大小, 单位GB

  • +
  • Gpu (int) - Gpu卡核心数

  • +
  • IdcId (list) - Idc机房id。默认全部机房

  • +
  • ProductType (str) - 产品类型:normal(经济型),hf(标准型),g(GPU型)

  • +
  • Type (int) - 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • IdcList (list) - 见 IdcInfo 模型定义

  • +
  • RetCode (int) - 返回码

  • +
+

Response Model

+

IdcInfo +- City (str) - 城市 +- IdcId (str) - 机房ID +- Isp (str) - 运营商 +- MaxNodeCnt (int) - 机房可创建节点最大数量 +- Name (str) - 机房名称 +- Province (str) - 省份 +- Type (int) - 运营商类型:0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通

+
+ +
+
+describe_u_ec_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcSubnet - 获取子网列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • IdcId (str) - 机房ID

  • +
  • SubnetId (str) - 子网ID

  • +
+

Response

+
    +
  • SubnetList (list) - 见 SubnetInfo 模型定义

  • +
+

Response Model

+

SubnetInfo +- AvailableIPCnt (int) - 可用ip数 +- CIDR (str) - 子网cidr +- Comment (str) - 备注 +- CreateTime (int) - 创建时间 +- IdcId (str) - 机房ID +- SubnetId (str) - 子网ID +- SubnetName (str) - 子网名称 +- TotalIpCnt (int) - 总ip数

+
+ +
+
+describe_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcVHost - 获取虚拟机列表 2.0

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • IdcId (list) - Idc机房id。默认全部机房

  • +
  • Limit (int) - 返回数据长度, 默认20,非负整数

  • +
  • NodeId (list) - 节点id,创建节点时生成的id。默认全部节点

  • +
  • Offset (int) - 数据偏移量,默认0,非负整数

  • +
+

Response

+
    +
  • NodeList (list) - 见 NodeInfo 模型定义

  • +
  • TotalCount (int) - 满足条件的节点总数

  • +
+

Response Model

+

NodeInfo +- ChargeType (int) - 付费类型:1按时, 2按月,3按年 +- City (str) - 城市 +- CoreNum (int) - Cpu核数 +- CreateTime (int) - 创建时间 +- DiskSize (int) - 数据盘大小, 单位GB +- ExpiredTime (int) - 过期时间 +- FirewallId (str) - 防火墙Id +- IdcId (str) - 机房ID +- ImageName (str) - 镜像名称 +- InnerIps (list) - 内网ip列表 +- MemSize (int) - 节点内存大小,单位GB +- NetLimit (int) - 节点带宽限制, 单位Mbs +- NodeId (str) - 节点ID +- NodeIpList (list) - 见 NodeIpList 模型定义 +- NodeName (str) - 节点名称 +- OcName (str) - 机房名称 +- ProductType (str) - 机器类型(normal-经济型,hf-标准型,g-GPU型) +- Province (str) - 省份 +- State (int) - 节点状态,1部署中,2待启动,3启动中,4运行中,5正在停止,6已停止,7正在更新,8正在重启,9正在删除, 10已经删除,11异常 +- SysDiskSize (int) - 系统盘大小, 单位GB +- Type (int) - 运营商类型: 0-其它, 1-一线城市单线,2-二线城市单线, 3-全国教育网, 4-全国三通

+

NodeIpList +- Ip (str) - 外网ip +- Isp (str) - 运营商 +- IspName (str) - 运营商名称

+
+ +
+
+describe_u_ec_v_host_isp(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUEcVHostISP - 获取虚拟机运营商信息

+

Request

+
    +
  • City (str) - 城市

  • +
  • IspName (str) - 运营商名称

  • +
  • Province (str) - 省份

  • +
+

Response

+
    +
  • NodeIspList (list) - 见 NodeIspList 模型定义

  • +
+

Response Model

+

NodeIspList +- City (str) - 城市 +- IdcName (str) - 机房名称 +- IspName (str) - 机房运营商名称 +- LineType (str) - 线路类型 +- Province (str) - 省份

+
+ +
+
+get_u_ec_holder_log(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcHolderLog - 获取单个容器日志

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • PackName (str) - (Required) 容器名称

  • +
  • ResourceId (str) - (Required) 容器组资源id

  • +
+

Response

+
    +
  • Data (str) - 返回的日志数据

  • +
+
+ +
+
+get_u_ec_holder_metrics(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcHolderMetrics - 获取容器(CPU利用率,带宽,内存)数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • PackName (str) - (Required) 容器名称

  • +
  • ResourceId (str) - (Required) 容器组资源id

  • +
  • Type (list) - (Required) n为0 CPU利用率, 1内存使用率, 2网卡出带宽, 3网卡入带宽, 4网卡出包数, 5网卡入包数

  • +
  • EndTime (int) - 结束时间

  • +
  • StartTime (int) - 开始时间

  • +
+

Response

+
    +
  • DataSets (dict) - 见 MetricisDataSet 模型定义

  • +
+

Response Model

+

MetricisDataSet +- CPUUtilization (list) - 见 MonitorInfo 模型定义 +- MemUtilization (list) - 见 MonitorInfo 模型定义 +- NICIn (list) - 见 MonitorInfo 模型定义 +- NICOut (list) - 见 MonitorInfo 模型定义 +- NetPacketIn (list) - 见 MonitorInfo 模型定义 +- NetPacketOut (list) - 见 MonitorInfo 模型定义

+

MonitorInfo +- TimeStamp (int) - 时间戳 +- Value (int) - 值

+
+ +
+
+get_u_ec_idc_cut_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcIDCCutInfo - 获取机房割接信息

+

Request

+

Response

+
    +
  • IDCCutInfo (list) - 见 IDCCutInfo 模型定义

  • +
  • TotalCount (int) - 满足条件的机房总数

  • +
+

Response Model

+

IDCCutInfo +- City (str) - 城市 +- CutType (str) - 割接类型(中断、抖动、断电) +- EndTime (int) - 割接结束时间 +- IDCName (str) - 机房名称 +- Province (str) - 省份 +- ResourceSet (list) - 见 ResourceSet 模型定义 +- StartTime (int) - 割接开始时间

+

ResourceSet +- NodeId (str) - 节点id +- OuterIps (list) - 机器外网ip集合

+
+ +
+
+get_u_ec_idcv_host_data(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcIDCVHostData - 获取机房虚拟机监控数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 节点资源id;n为0,1,2…

  • +
  • Type (list) - (Required) 监控数据类型;n为0,1,2,3,4…,9

  • +
  • BeginTime (int) - 开始时间戳

  • +
  • EndTime (int) - 结束时间戳

  • +
+

Response

+
    +
  • DataSets (dict) - 见 DataSet 模型定义

  • +
+

Response Model

+

DataSet +- CPUUtilization (list) - 见 MonitorInfo 模型定义 +- DiskReadOps (list) - 见 MonitorInfo 模型定义 +- DiskWriteOps (list) - 见 MonitorInfo 模型定义 +- IORead (list) - 见 MonitorInfo 模型定义 +- IOWrite (list) - 见 MonitorInfo 模型定义 +- MemUtilization (list) - 见 MonitorInfo 模型定义 +- NICIn (list) - 见 MonitorInfo 模型定义 +- NICOut (list) - 见 MonitorInfo 模型定义 +- NetPacketIn (list) - 见 MonitorInfo 模型定义 +- NetPacketOut (list) - 见 MonitorInfo 模型定义

+

MonitorInfo +- TimeStamp (int) - 时间戳 +- Value (int) - 值

+
+ +
+
+get_u_ec_image(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcImage - uec2.0

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageType (str) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像

  • +
  • Limit (int) - 返回数据长度, 默认20,非负整数

  • +
  • Offset (int) - 数据偏移量,默认0,非负整数

  • +
+

Response

+
    +
  • ImageList (list) - 见 ImageInfo 模型定义

  • +
  • TotalCount (int) - 镜像总数

  • +
+

Response Model

+

ImageInfo +- CreateTime (int) - 镜像创建时间戳 +- DeployInfoList (list) - 见 DeployImageInfo 模型定义 +- Gpu (int) - 是否支持Gpu(1-支持,0-不支持) +- ImageDesc (str) - 镜像描述 +- ImageId (str) - 镜像ID +- ImageName (str) - 镜像名称 +- ImageSize (int) - 镜像大小,单位GB +- ImageType (int) - 镜像类型:1标准镜像,2行业镜像,3自定义镜像 +- OcType (str) - 系统类型:unix, windows +- State (int) - 镜像状态:镜像状态 1可用,2不可用,3制作中

+

DeployImageInfo +- IdcId (str) - 机房ID +- State (int) - 镜像状态 1-可用, 2-不可用, 3-获取中, 4-转换中, 5-部署中

+
+ +
+
+get_u_ec_pod_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcPodPrice - 获得容器组价格

+

Request

+
    +
  • IdcId (str) - (Required) 机房id

  • +
  • Bandwidth (int) - 绑定的带宽,默认0,当绑定外网IP时默认1(单位M)

  • +
  • ChargeQuantity (int) - 月数或年数(默认值:1,当支付类型为按月时,默认值为0)

  • +
  • ChargeType (int) - 支付类型(2按月,3按年,默认2)

  • +
  • CpuCore (float) - 容器组总Cpu核心数

  • +
  • ElasticIp (str) - 是否绑定外网IP(yes:是,no:否,默认:no)

  • +
  • MemSize (int) - 容器组总内存大小(单位M)

  • +
  • ProductType (str) - 产品类型(normal:标准型,hf:高性能型,默认:normal)

  • +
+

Response

+
    +
  • HolderPrice (float) - 容器组价格

  • +
  • IpPrice (float) - IP和带宽价格

  • +
+
+ +
+
+get_u_ec_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcUpgradePrice - 获取虚拟机调整差价

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (str) - (Required) 虚拟机资源ID

  • +
  • CpuCore (int) - cpu核心数

  • +
  • DiskSize (int) - 数据盘大小,单位GB

  • +
  • MemSize (int) - 内存大小,单位GB

  • +
  • NetLimit (int) - 节点带宽限制,单位Mbs

  • +
  • SysDiskSize (int) - 系统盘大小,单位GB

  • +
+

Response

+
    +
  • Price (int) - 规格调整差价

  • +
+
+ +
+
+get_u_ec_v_host_data(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcVHostData - 获取虚拟机监控数据

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (str) - (Required) 节点id

  • +
  • Type (list) - (Required) 0CPU使用率, 1内存使用率, 2 网卡出流量, 3网卡入流量, 4网卡出包量, 5网卡入包量, 6磁盘读流量, 7磁盘写流量, 8磁盘读次数, 9磁盘写次数

  • +
  • BeginTime (int) - 查询起始时间

  • +
  • EndTime (int) - 查询结束时间

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • DataSets (dict) - 见 DataSet 模型定义

  • +
  • RetCode (int) - 返回码

  • +
+

Response Model

+

DataSet +- CPUUtilization (list) - 见 MonitorInfo 模型定义 +- DiskReadOps (list) - 见 MonitorInfo 模型定义 +- DiskWriteOps (list) - 见 MonitorInfo 模型定义 +- IORead (list) - 见 MonitorInfo 模型定义 +- IOWrite (list) - 见 MonitorInfo 模型定义 +- MemUtilization (list) - 见 MonitorInfo 模型定义 +- NICIn (list) - 见 MonitorInfo 模型定义 +- NICOut (list) - 见 MonitorInfo 模型定义 +- NetPacketIn (list) - 见 MonitorInfo 模型定义 +- NetPacketOut (list) - 见 MonitorInfo 模型定义

+

MonitorInfo +- TimeStamp (int) - 时间戳 +- Value (int) - 值

+
+ +
+
+get_u_ec_v_host_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUEcVHostPrice - 获取虚拟机价格

+

Request

+
    +
  • IdcId (str) - (Required) 机房Id

  • +
  • ChargeQuantity (int) - 月数或者年数,0计费到月底, 默认0

  • +
  • ChargeType (int) - 付费方式,1按时,2按月,3按年,默认2

  • +
  • CpuCore (int) - CPU核数

  • +
  • DiskSize (int) - 数据盘大小,单位GB

  • +
  • Gpu (int) - Gpu卡核心数。仅Gpu机型支持此字段

  • +
  • GpuType (str) - Gpu类型,枚举值[“T4”],ProductType为g时必填

  • +
  • IpCount (int) - 外网IP的数量,默认1

  • +
  • MemSize (int) - 内存大小,单位GB

  • +
  • NetLimit (int) - 网络带宽限速,单位Mbs

  • +
  • NodeCount (int) - 节点数量,默认1

  • +
  • ProductType (str) - 产品类型:normal(经济型),hf(标准型),g(Gpu型),默认normal

  • +
  • SysDiskSize (int) - 系统盘大小,单位GB

  • +
+

Response

+
    +
  • IpPrice (float) - Ip和带宽价格

  • +
  • NodePrice (float) - 节点价格

  • +
+
+ +
+
+import_u_ec_custom_image(req: Optional[dict] = None, **kwargs) dict[source]
+

ImportUEcCustomImage - 导入自定义镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Format (str) - 镜像格式,可选RAW、qcow2, 不带镜像ID时必填

  • +
  • IdcId (list) - 镜像需要导入机房,默认分发到所有机房

  • +
  • ImageDesc (str) - 镜像描述

  • +
  • ImageId (str) - 镜像Id,不传参表示新导入镜像,传参表示已有镜像分发到指定机房

  • +
  • ImageName (str) - 镜像名称,不带镜像ID时必填

  • +
  • OsType (str) - 操作系统平台,linux、windows(当前版本暂不支持windows),不带镜像ID时必填

  • +
  • UFileUrl (str) - UFile镜像文件下载地址,不带镜像ID时必填

  • +
+

Response

+
    +
  • ImageId (str) - 镜像Id

  • +
+
+ +
+
+login_u_ec_docker(req: Optional[dict] = None, **kwargs) dict[source]
+

LoginUEcDocker - 登录容器

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Name (str) - (Required) 容器名称

  • +
  • ResourceId (str) - (Required) 容器组资源id

  • +
+

Response

+
    +
  • Link (str) - 登录地址

  • +
  • LinkPort (int) - 登录端口

  • +
  • SessionId (str) - 返回的token

  • +
+
+ +
+
+modify_u_ec_bandwidth(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUEcBandwidth - 修改节点带宽限制

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NetLimit (str) - (Required) 节点带宽限制,单位Mbs

  • +
  • NodeId (str) - (Required) 节点Id

  • +
+

Response

+
+ +
+
+modify_u_ec_holder_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUEcHolderName - 修改容器组名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Name (str) - (Required) 容器组名称

  • +
  • ResourceId (str) - (Required) 容器组资源id

  • +
+

Response

+
+ +
+
+modify_u_ec_image_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUEcImageName - 修改镜像名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageId (str) - (Required) 镜像ID

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • ImageDesc (str) - 镜像描述

  • +
+

Response

+
+ +
+
+poweroff_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

PoweroffUEcVHost - 虚拟机断电

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 虚拟机资源ID

  • +
+

Response

+
+ +
+
+reinstall_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

ReinstallUEcVHost - 虚拟机重装系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageId (str) - (Required) 镜像ID

  • +
  • NodeId (str) - (Required) 虚拟机资源ID

  • +
  • KeepData (int) - 是否保留数据盘数据, 0-不保留,1-保留,默认为1

  • +
  • Password (str) - 节点密码

  • +
  • SysDiskSize (int) - 系统盘大小,单位GB

  • +
+

Response

+
+ +
+
+restart_u_ec_holder(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartUEcHolder - 重启容器组

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ResourceId (list) - (Required) 容器组资源id,n为0,1,2…

  • +
+

Response

+
+ +
+
+restart_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

RestartUEcVHost - 重启虚拟机v2.0

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 节点id

  • +
+

Response

+
+ +
+
+start_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUEcVHost - 启动UEC虚拟机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 虚拟机资源ID

  • +
+

Response

+
+ +
+
+stop_u_ec_v_host(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUEcVHost - 停止UEC虚拟机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • NodeId (list) - (Required) 虚拟机资源ID

  • +
+

Response

+
+ +
+
+un_bind_u_ec_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

UnBindUEcFirewall - 解绑防火墙

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - (Required) 防火墙Id

  • +
  • ResourceId (str) - (Required) 节点Id或容器组资源id

  • +
+

Response

+
+ +
+
+update_u_ec_firewall(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUEcFirewall - 更新防火墙信息,新增和删除规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - (Required) 防火墙Id

  • +
  • Rule (list) - 见 UpdateUEcFirewallParamRule 模型定义

  • +
+

Response

+

Request Model

+

UpdateUEcFirewallParamRule +- Action (str) - ACCEPT(接受)和DROP(拒绝) +- Port (str) - 端口,范围用”-“符号分隔,如:1-65535 +- Priority (str) - 优先级:HIGH(高),MEDIUM(中),LOW(低) +- ProtocolType (str) - 协议,可选值:TCP,UDP,ICMP +- Remark (str) - 备注 +- SrcIp (str) - 源ip

+
+ +
+
+update_u_ec_firewall_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUEcFirewallAttribute - 更新防火墙名称及描述

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • FirewallId (str) - (Required) 防火墙Id

  • +
  • Name (str) - 防火墙名称

  • +
  • Remark (str) - 描述

  • +
+

Response

+
+ +
+
+update_u_ec_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUEcSubnet - 更新子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
  • Comment (str) - 备注

  • +
  • SubnetName (str) - 子网名称

  • +
+

Response

+
+ +
+ +
+
+

UFS

+
+
+class ucloud.services.ufs.client.UFSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_ufs_volume(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUFSVolume - 创建文件系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ProtocolType (str) - (Required) 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议

  • +
  • Size (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB

  • +
  • StorageType (str) - (Required) 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型

  • +
  • ChargeType (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限) 默认为Dynamic

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Quantity (int) - 购买时长 默认: 1

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 文件系统所属业务组

  • +
  • VolumeName (str) - 文件系统名称

  • +
+

Response

+
    +
  • VolumeId (str) - 文件系统ID

  • +
  • VolumeName (str) - 文件系统名称

  • +
  • VolumeStatus (str) - 文件系统挂载点状态

  • +
+
+ +
+
+describe_ufs_volume_2(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUFSVolume2 - 获取文件系统列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 文件列表长度

  • +
  • Offset (int) - 文件列表起始

  • +
  • VolumeId (str) - 文件系统ID

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFSVolumeInfo2 模型定义

  • +
  • TotalCount (int) - 文件系统总数

  • +
+

Response Model

+

UFSVolumeInfo2 +- CreateTime (int) - 文件系统创建时间(unix时间戳) +- ExpiredTime (int) - 文件系统过期时间(unix时间戳) +- IsExpired (str) - 是否过期 +- MaxMountPointNum (int) - 文件系统允许创建的最大挂载点数目 +- ProtocolType (str) - 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 +- Remark (str) - 文件系统备注信息 +- Size (int) - 文件系统大小,单位GB +- StorageType (str) - 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 +- Tag (str) - 文件系统所属业务组 +- TotalMountPointNum (int) - 当前文件系统已创建的挂载点数目 +- UsedSize (int) - 文件系统当前使用容量,单位GB +- VolumeId (str) - 文件系统ID +- VolumeName (str) - 文件系统名称

+
+ +
+
+extend_ufs_volume(req: Optional[dict] = None, **kwargs) dict[source]
+

ExtendUFSVolume - 文件系统扩容

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Size (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB

  • +
  • VolumeId (str) - (Required) 文件系统ID

  • +
+

Response

+
+ +
+
+remove_ufs_volume(req: Optional[dict] = None, **kwargs) dict[source]
+

RemoveUFSVolume - 删除UFS文件系统

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VolumeId (str) - (Required) 文件系统ID

  • +
+

Response

+
+ +
+ +
+
+

UFile

+
+
+class ucloud.services.ufile.client.UFileClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_bucket(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateBucket - 创建Bucket

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BucketName (str) - (Required) 待创建Bucket的名称,具有全局唯一性

  • +
  • Type (str) - Bucket访问类型,public或private; 默认为private

  • +
+

Response

+
    +
  • BucketId (str) - 已创建Bucket的ID

  • +
  • BucketName (str) - 已创建Bucket的名称

  • +
+
+ +
+
+create_ufile_token(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUFileToken - 创建US3令牌

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TokenName (str) - (Required) 令牌名称

  • +
  • AllowedBuckets (list) - 令牌允许操作的bucket,默认*表示全部

  • +
  • AllowedOps (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ]。默认TOKEN_ALLOW_NONE

  • +
  • AllowedPrefixes (list) - 令牌允许操作的key前缀,默认*表示全部

  • +
  • ExpireTime (int) - Unix 时间戳,精确到秒,为令牌过期时间点。默认过期时间为一天(即当前Unix时间戳+86400);注意:过期时间不能超过 4102416000

  • +
+

Response

+
    +
  • TokenId (str) - 创建令牌的token_id

  • +
+
+ +
+
+delete_bucket(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteBucket - 删除Bucket

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BucketName (str) - (Required) 待删除Bucket的名称

  • +
+

Response

+
    +
  • BucketId (str) - Bucket的ID

  • +
  • BucketName (str) - Bucket的名称

  • +
+
+ +
+
+delete_ufile_token(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUFileToken - 删除令牌

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TokenId (str) - (Required) 令牌ID

  • +
+

Response

+
+ +
+
+describe_bucket(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeBucket - 获取Bucket的描述信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 如果提供此参数,则获取相应地域下所有空间的空间名称(只返回空间名称信息)

  • +
  • BucketName (str) - 待获取Bucket的名称,若不提供,则获取所有Bucket

  • +
  • Limit (int) - 获取所有Bucket列表的限制数目,默认为20

  • +
  • Offset (int) - 获取所有Bucket列表的偏移数目,默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFileBucketSet 模型定义

  • +
+

Response Model

+

UFileBucketSet +- Biz (str) - Bucket所属业务, general或vod或udb general: 普通业务; vod: 视频云业务; udb: 云数据库业务 +- BucketId (str) - Bucket的ID +- BucketName (str) - Bucket名称 +- CdnDomainId (list) - 与Bucket关联的CND加速域名的ID列表 +- CreateTime (int) - Bucket的创建时间 +- Domain (dict) - 见 UFileDomainSet 模型定义 +- HasUserDomain (int) - 是否存在自定义域名。0不存在,1存在,2错误 +- ModifyTime (int) - Bucket的修改时间 +- Region (str) - Bucket所属地域 +- Tag (str) - 所属业务组 +- Type (str) - Bucket访问类型

+

UFileDomainSet +- Cdn (list) - UCDN加速域名 +- CustomCdn (list) - 用户自定义CDN加速域名 +- CustomSrc (list) - 用户自定义源站域名 +- Src (list) - 源站域名

+
+ +
+
+describe_ufile_token(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUFileToken - 获取令牌信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Display (int) - 0表示显示部分token信息;不传递和其他情况表示显示全部token信息

  • +
  • TokenId (str) - 令牌ID,只返回指定ID信息,否则拉取所有令牌

  • +
  • TokenName (str) - 令牌名称,只返回指定令牌名称信息,否则拉取所有令牌

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFileTokenSet 模型定义

  • +
+

Response Model

+

UFileTokenSet +- AllowedBuckets (list) - 令牌允许操作的bucket +- AllowedOps (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ] +- AllowedPrefixes (list) - 令牌允许操作的key前缀 +- CreateTime (int) - 创建时间 +- ExpireTime (int) - 令牌的超时时间点 +- ModifyTime (int) - 修改时间 +- PrivateKey (str) - 令牌私钥 +- PublicKey (str) - 令牌公钥 +- Region (str) - 所属地区 +- TokenId (str) - 令牌ID +- TokenName (str) - 令牌名称

+
+ +
+
+get_ufile_daily_report(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUFileDailyReport - 查看日消费报表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EndTime (int) - (Required) 查询结束时间;unix时间戳,单位s

  • +
  • StartTime (int) - (Required) 查询开始时间;unix时间戳,单位s

  • +
  • BucketName (str) - 空间名称。此字段不为空,返回此Bucket日使用量;否则,返回这个项目的日使用量

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFileReportItem 模型定义

  • +
+

Response Model

+

UFileDailyReportItem +- AcRestore (float) - 冷存激活量,即归档数据取回量;单位byte +- AcStorage (float) - 冷存(归档)存储量;单位byte +- ApiTimes (float) - API请求次数(次) +- BusyFlow (float) - 忙时流量;单位byte;海外无此字段 +- CdnFlow (float) - cdn回源流量;单位byte +- Date (int) - 配额消费时间,unix时间戳(单位s),精确到日期 +- Flow (float) - 下载流量:单位byte;国内无此字段 +- IaGetSize (float) - 低频数据取回量;单位byte +- IaStorage (float) - 低频存储量;单位byte +- IdleFlow (float) - 闲时流量;单位byte;海外无此字段 +- Storage (float) - 标准存储量;单位byte

+

UFileTotalReportItem +- ApiTimes (float) - API请求次数(次) +- BusyFlow (float) - 忙时流量;单位byte;海外无此字段 +- CdnFlow (float) - cdn回源流量;单位byte +- Flow (float) - 下载流量:单位byte;国内无此字段 +- IdleFlow (float) - 闲时流量;单位byte;海外无此字段

+

UFileReportItem +- Daily (list) - 见 UFileDailyReportItem 模型定义 +- Total (list) - 见 UFileTotalReportItem 模型定义

+
+ +
+
+get_ufile_quota(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUFileQuota - 查看配额状态

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • QuotaType (str) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count

  • +
+

Response

+
    +
  • LeftQuota (float) - 剩余的配额数值

  • +
+
+ +
+
+get_ufile_quota_info(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUFileQuotaInfo - 获取配额信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • QuotaType (list) - (Required) 配额类型,取值为storage-volume, download-traffic或request-count

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFileQuotaDataSetItem 模型定义

  • +
+

Response Model

+

UFileQuotaDataSetItem +- DownloadFlow (dict) - 见 UFileQuotaLeft 模型定义 +- Owe (int) - 是否欠费:1表示欠费;0表示未欠费 +- Region (str) - 可用地域 +- RequestCnt (dict) - 见 UFileQuotaLeft 模型定义 +- Storage (dict) - 见 UFileQuotaLeft 模型定义

+

UFileQuotaLeft +- Left (float) - 配额剩余量

+
+ +
+
+get_ufile_quota_price(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUFileQuotaPrice - 根据US3的购买配额,查询需要支付的价格。

+

Request

+
    +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DownloadTraffic (int) - 下载流量,单位: GB,范围: [0, 60 000],步长:1GB

  • +
  • RequestCount (int) - 请求次数,单位:万次,范围:[0, 1 000 000],步长:1万次

  • +
  • StorageVolume (int) - 存储容量,单位: GB*天,范围: [0, 30 000 000],步长:100GB*天

  • +
+

Response

+
    +
  • Price (float) - 待支付价格,单位:分

  • +
+
+ +
+
+get_ufile_report(req: Optional[dict] = None, **kwargs) dict[source]
+

GetUFileReport - 查看配额使用报表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EndTime (int) - (Required) 查询结束时间

  • +
  • StartTime (int) - (Required) 查询开始时间

  • +
+

Response

+
    +
  • DataSet (list) - 见 UFileReportSet 模型定义

  • +
+

Response Model

+

UFileReportSet +- DownloadTraffic (float) - 配额消费当日使用的下载流量,单位:GB +- RequestCount (float) - 配额消费当日使用的请求次数,单位:万次 +- StorageVolume (float) - 配额消费当日使用的存储容量,单位:GB*天 +- Time (int) - 配额消费时间,unix时间戳,精确到日期

+
+ +
+
+set_ufile_referer(req: Optional[dict] = None, **kwargs) dict[source]
+

SetUFileReferer - 设置对象存储防盗链

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BucketName (str) - (Required) 存储空间名称

  • +
  • RefererStatus (str) - (Required) 开启关闭referer防盗链;关闭防盗链会清空防盗链参数设置,开启防盗链必须指定 RefererType、Referers;开启:on, 关闭:off;

  • +
  • RefererAllowNull (bool) - RefererType为白名单时,RefererAllowNull为false代表不允许空referer访问,为true代表允许空referer访问;此参数默认为 true;

  • +
  • RefererType (int) - 防盗链Referer类型,支持两种类型,黑名单和白名单; 1黑名单,2白名单;RefererStatus为”on”时此参数必填;

  • +
  • Referers (list) - 防盗链Referer规则,支持正则表达式(不支持符号’;’)

  • +
+

Response

+
+ +
+
+update_bucket(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateBucket - 更改Bucket的属性

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • BucketName (str) - (Required) 待修改Bucket的名称

  • +
  • Type (str) - (Required) Bucket访问类型;public或private

  • +
+

Response

+
    +
  • BucketId (str) - Bucket的ID

  • +
  • BucketName (str) - Bucket的名称

  • +
+
+ +
+
+update_ufile_token(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateUFileToken - 更新令牌的操作权限,可操作key的前缀,可操作bucket和令牌超时时间点

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • TokenId (str) - (Required) 令牌ID

  • +
  • AllowedBuckets (list) - 令牌允许操作的bucket

  • +
  • AllowedOps (list) - 令牌允许执行的操作,[ TOKEN_ALLOW_NONE , TOKEN_ALLOW_READ , TOKEN_ALLOW_WRITE , TOKEN_ALLOW_DELETE , TOKEN_ALLOW_LIST, TOKEN_ALLOW_IOP , TOKEN_ALLOW_DP ]

  • +
  • AllowedPrefixes (list) - 令牌允许操作的key前缀

  • +
  • ExpireTime (int) - 令牌的超时时间点(时间戳);注意:过期时间不能超过 4102416000

  • +
  • TokenName (str) - 令牌名称

  • +
+

Response

+
+ +
+ +
+
+

UHub

+
+
+class ucloud.services.uhub.client.UHubClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+create_repo(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateRepo - 创建镜像仓库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • RepoName (str) - (Required) 仓库名称,不可修改

  • +
  • Description (str) - 仓库备注

  • +
  • IsShared (bool) - 镜像仓库是否公开,公开为true、不公开为false;默认为false

  • +
+

Response

+
    +
  • Message (str) - 有错误时返回内容

  • +
+
+ +
+
+delete_repo(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteRepo - 删除镜像仓库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • RepoName (str) - (Required) 镜像仓库名称

  • +
+

Response

+
+ +
+
+delete_repo_image(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteRepoImage - 删除镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • RepoName (str) - (Required) 镜像仓库名称

  • +
  • TagName (str) - 不指定tag则删除全部tag

  • +
+

Response

+
+ +
+
+get_image_tag(req: Optional[dict] = None, **kwargs) dict[source]
+

GetImageTag - 获取镜像tag

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • ImageName (str) - (Required) 镜像名称

  • +
  • RepoName (str) - (Required) 镜像仓库名称

  • +
  • Limit (int) - 每次获取数量,默认为20

  • +
  • Offset (int) - 偏移量,默认0

  • +
  • TagName (str) - 默认不写,如果填写,代表查询该tag,否则查全部tag

  • +
+

Response

+
    +
  • TagSet (list) - 见 TagSet 模型定义

  • +
  • TotalCount (int) - tag总数

  • +
+

Response Model

+

TagSet +- Digest (str) - 镜像digest值 +- TagName (str) - Tag名称 +- UpdateTime (str) - 镜像更新时间

+
+ +
+
+get_repo(req: Optional[dict] = None, **kwargs) dict[source]
+

GetRepo - 获取镜像仓库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Limit (int) - 数量,默认20

  • +
  • Offset (int) - 偏移量,默认0

  • +
  • Type (str) - private私有仓库,public公共仓库,默认public

  • +
+

Response

+
    +
  • RepoSet (list) - 见 RepoSet 模型定义

  • +
  • TotalCount (int) - 总的仓库数量

  • +
+

Response Model

+

RepoSet +- CreateTime (str) - 仓库创建时间 +- Description (str) - 镜像仓库描述 +- IsOutSide (str) - 镜像仓库是否外网可以访问,可以为ture,不可以为false +- IsShared (str) - 镜像仓库类型,false为私有;true为公有 +- RepoName (str) - 镜像仓库名称 +- UpdateTime (str) - 仓库更新时间

+
+ +
+
+get_repo_image(req: Optional[dict] = None, **kwargs) dict[source]
+

GetRepoImage - 获取镜像仓库下的镜像

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • RepoName (str) - (Required) 镜像仓库名称

  • +
  • Limit (int) - 显示数量,默认为20

  • +
  • Offset (int) - 偏移量,默认0

  • +
+

Response

+
    +
  • ImageSet (list) - 见 ImageSet 模型定义

  • +
  • TotalCount (int) -

  • +
+

Response Model

+

ImageSet +- CreateTime (str) - 创建时间 +- ImageName (str) - 镜像名称 +- LatestTag (str) - 最新push的Tag +- PullCount (int) - 镜像被下载次数 +- RepoName (str) - 镜像仓库名称 +- UpdateTime (str) - 修改时间

+
+ +
+
+update_repo(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateRepo - 更新镜像仓库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • RepoName (str) - (Required) 镜像仓库名称,不可修改

  • +
  • Description (str) - 备注

  • +
  • IsShared (str) - false设置为私有;true设置为公有。默认false

  • +
+

Response

+
    +
  • Message (str) - 错误的时候返回

  • +
+
+ +
+ +
+
+

UK8S

+
+
+class ucloud.services.uk8s.client.UK8SClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_uk8s_existing_uhost(req: Optional[dict] = None, **kwargs) dict[source]
+

AddUK8SExistingUHost - 将预先创建好的云主机加入到UK8S集群,需要注意的是,该云主机依然会执行重装系统的操作。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。

  • +
  • Password (str) - (Required) Node节点密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64

  • +
  • UHostId (str) - (Required) 云主机Id,为了保证节点正常运行,该主机配置不得低于2C4G。

  • +
  • DisableSchedule (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 “true” 表示禁用,传入其它或不传表示不禁用

  • +
  • ImageId (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。

  • +
  • InitScript (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。

  • +
  • Labels (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game

  • +
  • MaxPods (int) - 默认110,生产环境建议小于等于110。

  • +
  • SubnetId (str) - 该云主机所属子网Id。

  • +
  • UserData (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。

  • +
+
+ +
+
+add_uk8s_node_group(req: Optional[dict] = None, **kwargs) dict[source]
+

AddUK8SNodeGroup - 添加UK8S节点池

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) 集群ID

  • +
  • NodeGroupName (str) - (Required) 节点池名字

  • +
  • BootDiskType (str) - 磁盘类型

  • +
  • CPU (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关)

  • +
  • ChargeType (str) - 计费模式

  • +
  • DataDiskSize (int) - 数据磁盘大小

  • +
  • DataDiskType (str) - 磁盘类型

  • +
  • GPU (int) - GPU卡核心数

  • +
  • GpuType (str) - GPU类型

  • +
  • ImageId (str) - 镜像ID

  • +
  • MachineType (str) - 云主机机型。枚举值[“N”, “C”, “G”, “O”, “OS”]。参考 云主机机型说明

  • +
  • Mem (int) - 内存大小。单位:MB

  • +
  • MinimalCpuPlatform (str) - 最低cpu平台,枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”;”Intel/CascadelakeR”; “Amd/Epyc2”,”Amd/Auto”],默认值是”Intel/Auto”

  • +
  • Tag (str) - 业务组

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。

  • +
  • NodeGroupId (str) - 节点池ID

  • +
+
+ +
+
+add_uk8s_phost_node(req: Optional[dict] = None, **kwargs) dict[source]
+

AddUK8SPHostNode - 为UK8S集群添加一台或多台物理云主机类型的节点。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ChargeType (str) - (Required) 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;默认为月付

  • +
  • ClusterId (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。

  • +
  • Count (int) - (Required) 最大创建Node节点数量,取值范围是[1,10]。

  • +
  • Password (str) - (Required) Node节点密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DisableSchedule (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 “true” 表示禁用,传入其它或不传表示不禁用

  • +
  • ImageId (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。

  • +
  • InitScript (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行。

  • +
  • Labels (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game

  • +
  • MaxPods (int) - 默认110,生产环境建议小于等于110。

  • +
  • NIC (str) - 网络环境,可选千兆:1G ,万兆:10G, 默认1G。

  • +
  • Quantity (int) - 购买时长。默认: 1。月付时,此参数传0,代表了购买至月末。

  • +
  • Raid (str) - Raid配置,默认Raid10 支持:Raid0、Raid1、Raid5、Raid10,NoRaid

  • +
  • SubnetId (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。

  • +
  • Type (str) - 物理机类型,默认为:db-2(基础型-SAS-V3)

  • +
+

Response

+
    +
  • Message (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。

  • +
+
+ +
+
+add_uk8s_uhost_node(req: Optional[dict] = None, **kwargs) dict[source]
+

AddUK8SUHostNode - 为UK8S集群添加一台Node节点,机型类型为云主机

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CPU (int) - (Required) 虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。

  • +
  • ChargeType (str) - (Required) 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Dynamic,按小时预付费 > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) 默认为月付

  • +
  • ClusterId (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。

  • +
  • Count (int) - (Required) 创建Node节点数量,取值范围是[1,50]。

  • +
  • Mem (int) - (Required) 内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192

  • +
  • Password (str) - (Required) Node节点密码。请遵照 字段规范 设定密码。密码需使用base64进行编码,如下:# echo -n Password1 | base64

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • BootDiskType (str) - 磁盘类型。请参考 磁盘类型 。默认为SSD云盘

  • +
  • DataDiskSize (int) - 数据磁盘大小,单位GB。默认0。范围 :[20, 1000]

  • +
  • DataDiskType (str) - 磁盘类型。请参考 磁盘类型 。默认为SSD云盘

  • +
  • DisableSchedule (bool) - 用于标示添加完节点后是否将节点临时禁用. 传入 “true” 表示禁用,传入其它或不传表示不禁用

  • +
  • GPU (int) - GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关)

  • +
  • GpuType (str) - GPU类型,枚举值[“K80”, “P40”, “V100”,],MachineType为G时必填

  • +
  • ImageId (str) - 镜像 Id,不填时后台程序会自动选用一个可用的镜像 Id,支持用户自定义镜像,自定义镜像必须基于基础镜像制作。

  • +
  • InitScript (str) - 用户自定义Shell脚本。与UserData的区别在于InitScript在节点初始化完毕后才执行,UserData则是云主机初始化时执行。

  • +
  • IsolationGroup (str) - 硬件隔离组id。可通过DescribeIsolationGroup获取。

  • +
  • Labels (str) - Node节点标签。key=value形式,多组用”,“隔开,最多5组。 如env=pro,type=game

  • +
  • MachineType (str) - 云主机机型。枚举值[“N”, “C”, “G”, “O”, “OS”]。参考 云主机机型说明

  • +
  • MaxPods (int) - 默认110,生产环境建议小于等于110。

  • +
  • MinmalCpuPlatform (str) - 最低cpu平台,枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”;”Intel/CascadelakeR”; “Amd/Epyc2”,”Amd/Auto”],默认值是”Intel/Auto”

  • +
  • Quantity (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。

  • +
  • SubnetId (str) - 子网 ID。默认为集群创建时填写的子网ID,也可以填写集群同VPC内的子网ID。

  • +
  • UserData (str) - 用户自定义数据。当镜像支持Cloud-init Feature时可填写此字段。注意:1、总数据量大小不超过 16K;2、使用base64编码。

  • +
+

Response

+
    +
  • NodeIds (list) - Node实例Id集合

  • +
+
+ +
+
+create_uk8s_cluster_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUK8SClusterV2 - 创建UK8S集群

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterName (str) - (Required) 集群名称

  • +
  • MasterCPU (int) - (Required) Master节点的虚拟CPU核数。可选参数:2-64(具体机型与CPU的对应关系参照控制台)。

  • +
  • MasterMachineType (str) - (Required) Master节点的云主机机型(V2.0),如[“N”, “C”, “O”, “OS”],具体请参照云主机机型。

  • +
  • MasterMem (int) - (Required) Master节点的内存大小。单位:MB。范围 :[4096, 262144],取值为1024的倍数(可选范围参考控制台)。

  • +
  • Password (str) - (Required) 集群节点密码,包括Master和Node。密码需包含最少一个大写字母,请使用base64进行编码,举例如下:# echo -n Password1 | base64

  • +
  • ServiceCIDR (str) - (Required) Service 网段,用于分配ClusterIP,如172.17.0.0/16。该网段不能与集群所属VPC网段重叠。

  • +
  • SubnetId (str) - (Required) 集群Node及Pod所属子网

  • +
  • VPCId (str) - (Required) 集群Node及Pod所属VPC

  • +
  • ChargeType (str) - 集群所有节点的付费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限),默认按月。

  • +
  • ExternalApiServer (str) - 是否允许外网访问apiserver,开启:Yes 不开启:No。默认为No。

  • +
  • ImageId (str) - Master节点和Node节点的镜像 ID,不填则随机选择可用的基础镜像。支持用户自定义镜像。

  • +
  • InitScript (str) - 用户自定义脚本,与UserData不同,自定义脚本将在集群安装完毕后执行。注意:1、总数据量大小不超多16K;2、使用base64编码。

  • +
  • K8sVersion (str) - k8s集群的版本,版本信息请参考UK8S集群创建页,不指定的话默认为当前支持的最高版本。

  • +
  • KubeProxy (dict) - 见 CreateUK8SClusterV2ParamKubeProxy 模型定义

  • +
  • Master (list) - 见 CreateUK8SClusterV2ParamMaster 模型定义

  • +
  • MasterBootDiskType (str) - Master节点系统盘类型。请参考 磁盘类型 。默认为SSD云盘

  • +
  • MasterDataDiskSize (int) - Master节点的数据盘大小,单位GB,默认为0。范围 :[20, 1000]

  • +
  • MasterDataDiskType (str) - Master节点数据盘类型。请参考 磁盘类型 。默认为SSD云盘

  • +
  • MasterIsolationGroup (str) - 【无效,已删除】当前将自动为Master节点创建隔离组,确保Master节点归属于不同物理机。

  • +
  • MasterMinmalCpuPlatform (str) - Master节点的最低cpu平台,不选则随机。枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”。

  • +
  • Nodes (list) - 见 CreateUK8SClusterV2ParamNodes 模型定义

  • +
  • Quantity (int) - 购买时长。默认为1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。

  • +
  • UserData (str) - 用户自定义数据。注意:1、总数据量大小不超多16K;2、使用base64编码。

  • +
+

Response

+
    +
  • ClusterId (str) - 集群ID

  • +
+

Request Model

+

CreateUK8SClusterV2ParamKubeProxy +- Mode (str) - 集群kube-proxy模式。支持iptables和ipvs,默认为iptables。

+

CreateUK8SClusterV2ParamMaster +- Zone (str) - Master节点所属可用区,需要设置 Master.0.Zone、 Master.1.Zone、Master.2.Zone 三个 Master 节点的可用区。 三个节点可部署在不同可用区。参见 可用区列表

+

CreateUK8SClusterV2ParamNodes +- BootDiskType (str) - 一组Node节点的系统盘类型,请参考 磁盘类型 。默认为SSD云盘 +- CPU (int) - 一组Node节点的虚拟CPU核数。单位:核,范围:[2, 64],可选范围参考控制台。 +- Count (int) - 一组Node节点的数量,范围:[1,10]。 +- DataDiskSize (int) - 数据磁盘大小,单位GB。默认0。范围 :[20, 1000] +- DataDiskType (str) - 一组Node节点的数据盘类型,请参考 磁盘类型 。默认为SSD云盘 +- GPU (int) - 一组Node节点的GPU卡核心数,仅GPU机型支持此字段。 +- GpuType (str) - 一组Node节点的GPU类型,枚举值[“K80”, “P40”, “V100”],最新值参考Console。 +- IsolationGroup (str) - 一组Node节点的隔离组Id,归属于同一隔离组的虚拟机节点将落在不同的物理机上,单个隔离组最多只能容纳8个节点。参见DescribeIsolationGroup。 +- Labels (str) - Node节点标签,形式为key=value,多组Labels用”,“隔开,最多支持五组。 +- MachineType (str) - 一组Nodes节点云主机机型,如[“N”, “C”, “O”, “OS”],具体请参照云主机机型。 +- MaxPods (int) - Node节点上可运行最大节点数,默认为110。 +- Mem (int) - 一组Node节点的内存大小。单位:MB,范围 :[4096, 262144],取值为1024的倍数,可选范围参考控制台。 +- MinmalCpuPlatform (str) - Node节点的最低cpu平台,不选则随机。枚举值[“Intel/Auto”, “Intel/IvyBridge”, “Intel/Haswell”, “Intel/Broadwell”, “Intel/Skylake”, “Intel/Cascadelake”。 +- Zone (str) - 一组Nodes节点所属可用区,可创建多组Nodes节点,如一组是CPU Nodes节点,另一组是GPU Nodes节点。参见 可用区列表

+
+ +
+
+del_uk8s_cluster(req: Optional[dict] = None, **kwargs) dict[source]
+

DelUK8SCluster - 删除UK8S集群

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) 集群id

  • +
  • ReleaseUDisk (bool) - 是否删除节点挂载的数据盘。枚举值[true:删除,false: 不删除],默认不删除

  • +
+

Response

+
+ +
+
+del_uk8s_cluster_node_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

DelUK8SClusterNodeV2 - 删除集群中的Node节点,删除前务必先将其中的Pod驱逐。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) UK8S集群ID。 可从UK8S控制台获取。

  • +
  • NodeId (str) - (Required) Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda。非云主机或物理云主机资源Id

  • +
  • ReleaseDataUDisk (bool) - 删除节点时是否释放数据盘。 枚举值[true:释放,false: 不释放],默认为true。

  • +
+

Response

+
    +
  • Message (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。

  • +
+
+ +
+
+describe_uk8s_cluster(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUK8SCluster - 获取集群信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 所属区域

  • +
  • ClusterId (str) - (Required) k8s集群ID

  • +
+

Response

+
    +
  • ApiServer (str) - 集群apiserver地址

  • +
  • CACert (str) - 集群CA根证书

  • +
  • ClusterDomain (str) - 自定义或者默认的clusterdomain

  • +
  • ClusterId (str) - 集群ID

  • +
  • ClusterName (str) - 资源名字

  • +
  • CreateTime (int) - 创建时间

  • +
  • EtcdCert (str) - 集群etcd服务证书

  • +
  • EtcdKey (str) - 集群etcd服务密钥

  • +
  • ExternalApiServer (str) - 集群外部apiserver地址

  • +
  • KubeProxy (dict) - kube-proxy配置

  • +
  • MasterCount (int) - Master 节点数量

  • +
  • MasterList (list) - 见 UhostInfo 模型定义

  • +
  • NodeCount (int) - Node节点数量

  • +
  • NodeList (list) - 见 UhostInfo 模型定义

  • +
  • PodCIDR (str) - Pod网段

  • +
  • ServiceCIDR (str) - 服务网段

  • +
  • Status (str) - 状态

  • +
  • SubnetId (str) - 所属子网

  • +
  • VPCId (str) - 所属VPC

  • +
  • Version (str) - K8S版本

  • +
+

Response Model

+

UhostInfo +- CPU (int) - Cpu数量 +- CreateTime (int) - 创建时间 +- DiskSet (list) - 见 DiskSet 模型定义 +- ExpireTime (int) - 到期时间 +- IPSet (list) - 见 IPSet 模型定义 +- Memory (int) - 内存 +- Name (str) - 主机名称 +- NodeId (str) - 主机ID +- NodeType (str) - 节点类型:uhost表示云主机;uphost表示物理云主机 +- OsName (str) - 镜像信息 +- State (str) - 主机状态 +- Zone (str) - 所在机房

+

DiskSet +- BackupType (str) - 备份方案,枚举类型:BASIC_SNAPSHOT,普通快照;DATAARK,方舟。无快照则不返回该字段。 +- DiskId (str) - 磁盘长ID +- DiskType (str) - LOCAL_NOMAL| CLOUD_NORMAL| LOCAL_SSD| CLOUD_SSD|EXCLUSIVE_LOCAL_DISK +- Drive (str) - 磁盘盘符 +- Encrypted (str) - Yes: 加密 No: 非加密 +- IOPS (int) - 当前主机的IOPS值 +- IsBoot (str) - True| False +- Name (str) - UDisk名字(仅当磁盘是UDisk时返回) +- Size (int) - 磁盘大小,单位: GB +- Type (str) - 磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk

+

IPSet +- Bandwidth (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) +- Default (str) - 是否默认的弹性网卡的信息。true: 是默认弹性网卡;其他值:不是。 +- IP (str) - IP地址 +- IPId (str) - IP资源ID (内网IP无对应的资源ID) +- Type (str) - 国际: Internation,BGP: Bgp,内网: Private

+
+ +
+
+describe_uk8s_image(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUK8SImage - 获取UK8S支持的Node节点操作系统,可基于该操作系统制定自定义镜像

+

Request

+ +

Response

+
    +
  • ImageSet (list) - 见 ImageInfo 模型定义

  • +
  • Message (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息。

  • +
  • PHostImageSet (list) - 见 ImageInfo 模型定义

  • +
+

Response Model

+

ImageInfo +- ImageId (str) - 镜像 Id +- ImageName (str) - 镜像名称 +- NotSupportGPU (bool) - 该镜像是否支持GPU机型,枚举值[true:不支持,false:支持]。 +- ZoneId (int) - 可用区 Id

+
+ +
+
+describe_uk8s_node(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUK8SNode - 用于获取 UK8S 节点详情

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) UK8S 集群 Id

  • +
  • Name (str) - (Required) K8S 节点IP或者节点ID

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • AllocatedPodCount (int) - 已分配到当前节点的 Pod 数量

  • +
  • Annotations (list) - 字符串数组,每一项是类似 “node.alpha.kubernetes.io/ttl=0” 的注解

  • +
  • CPUCapacity (str) - 节点 CPU 总量

  • +
  • CPULimits (str) - 节点上已分配 Pod 的 CPU 限制值

  • +
  • CPULimitsFraction (str) - 节点上已分配 Pod 的 CPU 限制值占 CPU 总量的比例

  • +
  • CPURequests (str) - 节点上已分配 Pod 的 CPU 请求量

  • +
  • CPURequestsFraction (str) - 节点上已分配 Pod 的 CPU 请求量占 CPU 总量的比例

  • +
  • Conditions (list) - 见 K8SNodeCondition 模型定义

  • +
  • ContainerImages (list) - 节点上镜像名称数组

  • +
  • ContainerRuntimeVersion (str) - 容器运行时版本,如:”docker://18.9.9”

  • +
  • CreationTimestamp (int) - 时间戳,单位是 秒

  • +
  • Hostname (str) - 主机名

  • +
  • InternalIP (str) - 内部 IP 地址

  • +
  • KernelVersion (str) - 内核版本,如:”4.19.0-6.el7.ucloud.x86_64”

  • +
  • KubeProxyVersion (str) - kubeproxy 版本

  • +
  • KubeletVersion (str) - kubelet 版本

  • +
  • Labels (list) - 字符串数组,每一项是类似 “kubernetes.io/arch=amd64” 的标签

  • +
  • MemoryCapacity (str) - 节点内存总量

  • +
  • MemoryLimits (str) - 节点上已分配 Pod 的内存限制量

  • +
  • MemoryLimitsFraction (str) - 节点上已分配 Pod 的内存限制量占内存总量的比例,如返回值为 “18”,则意味着限制量占总量的 18%

  • +
  • MemoryRequests (str) - 节点上已分配 Pod 的内存请求量

  • +
  • MemoryRequestsFraction (str) - 节点上已分配 Pod 的内存请求量占内存总量的比例,如返回值为 “4.5”,则意味着请求量占总量的 4.5%

  • +
  • Message (str) - 操作出错时的提示信息

  • +
  • Name (str) - 节点名称

  • +
  • OSImage (str) - 操作系统类型,如:”CentOS Linux 7 (Core)”

  • +
  • PodCapacity (int) - 节点允许的可分配 Pod 最大数量

  • +
  • ProviderID (str) - 字符串,如:”UCloud://cn-sh2-02//uk8s-vsc0vgob-n-mpzxc”

  • +
  • RetCode (int) - 返回码

  • +
  • Taints (list) - 字符串数组,每一项是类似 “node-role.kubernetes.io/master:NoSchedule” 的污点

  • +
  • Unschedulable (bool) - 是否禁止调度

  • +
+

Response Model

+

K8SNodeCondition +- LastProbeTime (str) - 最后一次上报状态的时间 +- LastTransitionTime (str) - 最后一次状态转变时间 +- Message (str) - 状态变化的描述信息 +- Reason (str) - 状态变化的原因 +- Status (str) - 状态,False、True +- Type (str) - Condition 类型,如 MemoryPressure、DiskPressure、PIDPressure、Ready

+
+ +
+
+list_uk8s_cluster_node_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUK8SClusterNodeV2 - 获取UK8S集群节点信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) UK8S集群ID

  • +
+

Response

+
    +
  • NodeSet (list) - 见 NodeInfoV2 模型定义

  • +
  • TotalCount (int) - 满足条件的节点数量,包括Master。

  • +
+

Response Model

+

NodeInfoV2 +- AsgId (str) - 节点所属伸缩组ID,非伸缩组创建出来的节点,伸缩组ID为Default。 +- CPU (int) - Node节点CPU核数,单位: 个。 +- CreateTime (int) - 节点创建时间 +- ExpireTime (int) - 节点计费到期时间 +- GPU (int) - 节点的GPU颗数。 +- IPSet (list) - 见 UHostIPSet 模型定义 +- InstanceId (str) - 资源ID,如uhost-xxxx,或uphost-xxxxx。 +- InstanceName (str) - 资源名称,初始值等于NodeId,用户可在UHost或UPHost处修改。 +- InstanceType (str) - Node节点的资源类型,枚举值为UHost或UPHost。 +- KubeProxy (dict) - 见 KubeProxy 模型定义 +- MachineType (str) - 机型类别,分别对应Uhost的MachineType或PHost的PHostType。 +- Memory (int) - 内存大小,单位: MB。 +- NodeId (str) - NodeId,Node在UK8S处的唯一标示,如uk8s-reewqe5-sdasadsda +- NodeLogInfo (str) - 加节点时判断是否没有资源,如果返回NORESOURCE则代表没有资源了 +- NodeRole (str) - node角色,枚举值为master、node +- NodeStatus (str) - Node的状态:枚举值:初始化:”Initializing”;启动中:”Starting”;运行:”Running”;停止中:”Stopping”;停止:”Stopped”;待删除:”ToBeDeleted”;删除中:”Deleting”;异常:”Error”;安装失败:”Install Fail”; +- OsName (str) - Node节点的镜像名称。 +- OsType (str) - Node节点的操作系统类别,如Linux或Windows。 +- Unschedulable (bool) - 是否允许Pod调度到该节点,枚举值为true或false。 +- Zone (str) - Node所在可用区

+

UHostIPSet +- Bandwidth (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) +- IP (str) - IP地址 +- IPId (str) - IP资源ID (内网IP无对应的资源ID) +- Mac (str) - Mac地址 +- SubnetId (str) - IP地址对应的子网 ID +- Type (str) - 国际: Internation,BGP: Bgp,内网: Private +- VPCId (str) - IP地址对应的VPC ID

+

KubeProxy +- Mode (str) - KubeProxy模式,枚举值为[ipvs,iptables]

+
+ +
+
+list_uk8s_cluster_v2(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUK8SClusterV2 - 获取UK8S集群列表信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - UK8S集群ID

  • +
  • Limit (int) - 返回数据长度,默认为20。

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0。

  • +
+

Response

+
    +
  • ClusterCount (int) - 满足条件的集群数量

  • +
  • ClusterSet (list) - 见 ClusterSet 模型定义

  • +
+

Response Model

+

ClusterSet +- ApiServer (str) - 集群apiserver地址 +- ClusterId (str) - 集群ID +- ClusterLogInfo (str) - 创建集群时判断如果为NORESOURCE则为没资源,否则为空 +- ClusterName (str) - 资源名字 +- CreateTime (int) - 创建时间 +- ExternalApiServer (str) - 集群外部apiserver地址 +- K8sVersion (str) - 集群版本 +- MasterCount (int) - Master 节点数量 +- NodeCount (int) - Node节点数量 +- PodCIDR (str) - Pod网段 +- ServiceCIDR (str) - 服务网段 +- Status (str) - 集群状态,枚举值:初始化:”INITIALIZING”;启动中:”STARTING”;创建失败:”CREATEFAILED”;正常运行:”RUNNING”;添加节点:”ADDNODE”;删除节点:”DELNODE”;删除中:”DELETING”;删除失败:”DELETEFAILED”;错误:”ERROR”;升级插件:”UPDATE_PLUGIN”;更新插件信息:”UPDATE_PLUGIN_INFO”;异常:”ABNORMAL”;升级集群中:”UPGRADING”;容器运行时切换:”CONVERTING” +- SubnetId (str) - 所属子网 +- VPCId (str) - 所属VPC

+
+ +
+
+list_uk8s_node_group(req: Optional[dict] = None, **kwargs) dict[source]
+

ListUK8SNodeGroup - 列出UK8S节点池

+

Request

+ +

Response

+
    +
  • NodeGroupList (list) - 见 NodeGroupSet 模型定义

  • +
+

Response Model

+

NodeGroupSet +- BootDiskType (str) - 系统盘类型 +- CPU (int) - 虚拟CPU核数 +- ChargeType (str) - 付费方式 +- DataDiskSize (int) - 数据盘大小 +- DataDiskType (str) - 数据盘类型 +- GPU (int) - GPU卡核心数 +- GpuType (str) - GPU类型 +- ImageId (str) - 镜像ID +- MachineType (str) - 机型 +- Mem (int) - 内存大小 +- MinimalCpuPlatform (str) - cpu平台 +- NodeGroupId (str) - 节点池ID +- NodeGroupName (str) - 节点池名字 +- NodeList (list) - 节点id列表 +- Tag (str) - 业务组

+
+ +
+
+remove_uk8s_node_group(req: Optional[dict] = None, **kwargs) dict[source]
+

RemoveUK8SNodeGroup - 删除UK8S节点池

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • ClusterId (str) - (Required) 集群id

  • +
  • NodeGroupId (str) - (Required) 节点池Id

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+ +
+
+

UNVS

+
+
+class ucloud.services.unvs.client.UNVSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+get_mobile(req: Optional[dict] = None, **kwargs) dict[source]
+

GetMobile - 一键登录

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - (Required) 业务ID

  • +
  • Token (str) - (Required) token

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Data (dict) - 见 PhoneInfo 模型定义

  • +
  • Message (str) - 发生错误时表示错误字符串

  • +
  • ReqUuid (str) - 本次请求Uuid

  • +
+

Response Model

+

PhoneInfo +- Phone (str) - 返回的电话号码

+
+ +
+
+verify_mobile(req: Optional[dict] = None, **kwargs) dict[source]
+

VerifyMobile - 号码检测

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - (Required) 业务ID

  • +
  • Phone (str) - (Required) 需要检测的手机号

  • +
  • Token (str) - (Required) token

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Data (dict) - 见 VerifyInfo 模型定义

  • +
  • Message (str) - 发生错误时表示错误字符串

  • +
  • ReqUuid (str) - 本次请求Uuid

  • +
+

Response Model

+

VerifyInfo +- VerifyResult (str) - 检测结果:PASS:一致,REJECT:不一致

+
+ +
+ +
+
+

UTSDB

+
+
+class ucloud.services.utsdb.client.UTSDBClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+check_uinfluxdb_allowance(req: Optional[dict] = None, **kwargs) dict[source]
+

CheckUInfluxdbAllowance - 检查UInfluxdb剩余资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Count (int) - (Required) 创建实例的数量,[1-10]

  • +
  • CpuLimit (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • MemoryLimit (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Count (int) - 可创建的数量

  • +
+
+ +
+
+create_uinfluxdb_database(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUInfluxdbDatabase - 创建Influxdb数据库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) Influxdb创建的数据库的名称

  • +
  • UInfluxdbId (str) - (Required) 实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • AccoutName (str) - Influxdb数据库账号

  • +
  • Description (str) - Influxdb数据库的描述

  • +
  • RetentionPolicy (str) - 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf)

  • +
+

Response

+
+ +
+
+create_uinfluxdb_database_rp(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUInfluxdbDatabaseRP - 给指定的database创建一个保留策略,最多可以创建10个RP

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) 要创建RP的数据库

  • +
  • RetentionPolicy (str) - (Required) 数据保留策略,以天为单位,比如(1d,2d,3d等,inf为永久保留策略,默认为inf)

  • +
  • RetentionPolicyName (str) - (Required) 保留策略名

  • +
  • UInfluxdbId (str) - (Required) 实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+create_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateUInfluxdbInstance - 创建UInfluxdb实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AccountName (str) - (Required) 默认账户

  • +
  • ChargeType (str) - (Required) 付费类型,后付费阶段固定为:后付费(PostPaid)

  • +
  • CpuLimit (int) - (Required) 核数 单位:个,范围[2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • DatabaseName (str) - (Required) 数据库名称

  • +
  • MemoryLimit (int) - (Required) 内存限制 单位:G 范围 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • Name (str) - (Required) 实例名称,长度(6<=size<=63)

  • +
  • Password (str) - (Required) 默认账户的密码,需要 base64 编码

  • +
  • Quantity (int) - (Required) 购买时长,默认值1

  • +
  • SubnetId (str) - (Required) 子网 id

  • +
  • VPCId (str) - (Required) VPC id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • CouponId (str) - 使用的代金券id

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
    +
  • UInfluxdbId (str) - 返回的实例id

  • +
+
+ +
+
+delete_uinfluxdb_database(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUInfluxdbDatabase - 删除Influxdb实例的数据库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) 数据库名称

  • +
  • UInfluxdbId (str) - (Required) 实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+delete_uinfluxdb_database_rp(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUInfluxdbDatabaseRP - 删除指定数据库下面的一个数据保留策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) 要删除的RP所在数据库

  • +
  • RetentionPolicyName (str) - (Required) 要删除的保留策略

  • +
  • UInfluxdbId (str) - (Required) 实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+
+ +
+
+delete_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteUInfluxdbInstance - 删除UInfluxdb实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb 实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+describe_uinfluxdb_database(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUInfluxdbDatabase - 描述UInfluxdb数据库

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UInfluxdbId (str) - (Required)

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • DatabaseName (str) -

  • +
  • Limit (int) -

  • +
  • Offset (int) -

  • +
+

Response

+
    +
  • DatabaseInfo (list) - 见 DatabaseInfo 模型定义

  • +
+

Response Model

+

AccountInfo +- Account (str) - 账户名 +- Password (str) - 密码 +- Privilege (str) - 权限

+

DatabaseInfo +- AccountInfo (list) - 见 AccountInfo 模型定义 +- DatabaseName (str) - 数据库名 +- Description (str) - 数据库描述 +- RetentionPolicy (str) - 保留策略 +- State (str) - 数据库状态

+
+ +
+
+describe_uinfluxdb_database_rp(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUInfluxdbDatabaseRP - 获取指定数据库下面的所有保留策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) 数据库名称

  • +
  • UInfluxdbId (str) - (Required) 实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 见 RpData 模型定义

  • +
  • Message (str) - 如果执行失败, 失败的错误消息

  • +
+

Response Model

+

RpData +- Policy (str) - 保留策略 +- RetentionPolicyName (str) - 保留策略名

+
+ +
+
+describe_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUInfluxdbInstance - 拉取UInfluxdb实例列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Limit (int) - 分页显示数量,列表操作则指定

  • +
  • Offset (int) - 分页显示起始偏移位置,列表操作则指定

  • +
  • UInfluxdbId (str) - 指定id的话,会拉取该实例信息,否则拉取该帐号所有信息

  • +
+

Response

+
    +
  • DataSet (list) - 见 UInfluxdbDataSet 模型定义

  • +
+

Response Model

+

UInfluxdbDataSet +- AccountName (str) - 账户名 +- CPULimit (int) - 实例核数 +- ChargeType (str) - 付费类型,可选值如下: Year: 按年付费 Month: 按月付费 Dynamic: 按需付费(单位: 小时) Trial: 免费试用 +- CreateTime (int) - 创建时间 +- ExpiredTime (int) - 修改时间 +- MemoryLimit (int) - 实例内存 +- Name (str) - 实例名称 +- Port (int) - 实例端口 +- State (str) - 实例状态 +- SubnetId (str) - 子网ID +- Tag (str) - 业务组信息 +- UInfluxdbId (str) - 实例id +- UsedSize (int) - 硬盘使用量 +- VPCId (str) - VPC的ID +- VirtualIP (str) - 实例ip +- Zone (str) - UInfluxdb实例所在可用区

+
+ +
+
+describe_uinfluxdb_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUInfluxdbPrice - 获取UInfluxdb价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CpuLimit (int) - (Required) 核数 单位:个,规格[2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ChargeType (str) - 付费类型,后付费。填:PostPaid (后付费)

  • +
  • MemoryLimit (int) - 内存限制 单位:G 规格 [2C8G, 4C16G, 8C32G, 16C64G, 32C128G]

  • +
  • Quantity (int) - 付费周期数量

  • +
+

Response

+
    +
  • OriginalPrice (float) - 原价

  • +
  • Price (float) - 价格

  • +
+
+ +
+
+describe_uinfluxdb_upgrade_price(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeUInfluxdbUpgradePrice - 获取UIfluxdb升降级价格

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CpuLimit (int) - (Required) 核数

  • +
  • MemoryLimit (int) - (Required) 容量,单位GB

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb 实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • OriginalPrice (float) - 原价

  • +
  • TotalPrice (float) - 升降级价格

  • +
+
+ +
+
+modify_uinfluxdb_database_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyUInfluxdbDatabasePolicy - 更改UInfluxdb实例数据库数据保留策略

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DatabaseName (str) - (Required) 数据库名

  • +
  • RetentionPolicy (str) - (Required) 数据库数据保留策略。自定义格式如:10d(即10天),2w(即两周),

  • +
  • UInfluxdbId (str) - (Required) Influxdb实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+reboot_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

RebootUInfluxdbInstance - 重启UInfluxdb实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+reset_uinfluxdb_instance_name(req: Optional[dict] = None, **kwargs) dict[source]
+

ResetUInfluxdbInstanceName - 更改UIfluxdb实例名称

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NewName (str) - (Required) 实例的新名字, 长度要求为6~63位

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+start_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StartUInfluxdbInstance - 启动UInfluxdb实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+stop_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

StopUInfluxdbInstance - 关闭UInfluxdb实例

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • UInfluxdbId (str) - (Required) UInfluxdb实例id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+
+upgrade_uinfluxdb_instance(req: Optional[dict] = None, **kwargs) dict[source]
+

UpgradeUInfluxdbInstance - UInfluxdb实例配置升降级

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CpuLimit (int) - (Required) UInfluxdb 实例 新的核数,单位个

  • +
  • MemoryLimit (int) - (Required) UInfluxdb 实例 新的内存

  • +
  • UInfluxdbId (str) - (Required) 实例ID

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
+

Response

+
+ +
+ +
+
+

UVMS

+
+
+class ucloud.services.uvms.client.UVMSClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+send_uvms_message(req: Optional[dict] = None, **kwargs) dict[source]
+

SendUVMSMessage - 向指定号码拨打电话

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • CalledNumber (str) - (Required) 被叫号码,采用 E.164 标准,格式为+[国家代码][用户号码]。例如:+8613512345678, 其中前面有一个+号 ,86为国家码,13512345678为手机号

  • +
  • TemplateId (str) - (Required) 模板 ID,在控制台审核通过的模板 ID。

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • FromNumber (str) - 主叫号码,号码随机时不填。专属号码时传入已购买的号码,仅支持一个号码,在控制台查看已购买的号码。

  • +
  • TemplateParams (list) - 模板可变参数,以数组的方式填写,举例,TemplateParams.0,TemplateParams.1,… 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送;

  • +
  • UserId (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符

  • +
+

Response

+
    +
  • Message (str) - 状态码的描述

  • +
  • ReqUuid (str) - 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 ReqUuid。

  • +
  • SessionNo (str) - 本次提交发送语音的唯一ID,可根据该值查询本次发送详情

  • +
  • UserId (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。

  • +
+
+ +
+ +
+
+

VPC

+
+
+class ucloud.services.vpc.client.VPCClient(config: dict, transport=None, middleware=None, logger=None)[source]
+
+
+add_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

AddSnatRule - 对于绑定了多个EIP的NAT网关,您可以将一个子网下的某台云主机映射到某个特定的EIP上,规则生效后,则该云主机通过该特定的EIP访问互联网。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • SnatIp (str) - (Required) EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
  • Name (str) - snat规则名称,默认为“出口规则”

  • +
+

Response

+
+ +
+
+add_vpc_network(req: Optional[dict] = None, **kwargs) dict[source]
+

AddVPCNetwork - 添加VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 增加网段

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
+

Response

+
+ +
+
+add_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

AddWhiteListResource - 添加NAT网关白名单

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ResourceIds (list) - (Required) 可添加白名单的资源Id

  • +
+

Response

+
+ +
+
+allocate_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateSecondaryIp - 分配ip(用于uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Mac (str) - (Required) 节点mac

  • +
  • ObjectId (str) - (Required) 资源Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Ip (str) - 指定Ip分配

  • +
  • SubnetId (str) - 子网Id(若未指定,则根据zone获取默认子网进行创建)

  • +
  • VPCId (str) - vpcId

  • +
+

Response

+
    +
  • IpInfo (dict) - 见 IpInfo 模型定义

  • +
+

Response Model

+

IpInfo +- Gateway (str) - +- Ip (str) - +- Mac (str) - +- Mask (str) - +- SubnetId (str) - +- VPCId (str) -

+
+ +
+
+allocate_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

AllocateVIP - 根据提供信息,申请内网VIP(Virtual IP),多用于高可用程序作为漂移IP。

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • VPCId (str) - (Required) 指定vip所属的VPC

  • +
  • BusinessId (str) - 业务组

  • +
  • Count (int) - 申请数量,默认: 1

  • +
  • Ip (str) - 指定ip

  • +
  • Name (str) - vip名,默认:VIP

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
    +
  • DataSet (list) - 申请到的VIP地址

  • +
  • VIPSet (list) - 见 VIPSet 模型定义

  • +
+

Response Model

+

VIPSet +- VIP (str) - 虚拟ip +- VIPId (str) - 虚拟ip id +- VPCId (str) - VPC id

+
+ +
+
+associate_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

AssociateRouteTable - 绑定子网的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表资源ID

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+clone_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

CloneRouteTable - 将现有的路由表复制为一张新的路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 被克隆的路由表ID

  • +
+

Response

+
    +
  • RouteTableId (str) - 复制后新的路由表资源ID

  • +
+
+ +
+
+create_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNATGW - 创建NAT网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • EIPIds (list) - (Required) NAT网关绑定的EIPId

  • +
  • FirewallId (str) - (Required) NAT网关绑定的防火墙Id

  • +
  • NATGWName (str) - (Required) NAT网关名称

  • +
  • SubnetworkIds (list) - (Required) NAT网关绑定的子网Id

  • +
  • IfOpen (int) - 白名单开关标记。0表示关闭,1表示开启。默认为0

  • +
  • Remark (str) - 备注。默认为空

  • +
  • Tag (str) - 业务组。默认为空

  • +
  • VPCId (str) - NAT网关所属的VPC Id。默认为Default VPC Id

  • +
+

Response

+
    +
  • NATGWId (str) - 申请到的NATGateWay Id

  • +
+
+ +
+
+create_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNATGWPolicy - 添加NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DstIP (str) - (Required) 目标IP。填写对应的目标IP地址

  • +
  • DstPort (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Protocol (str) - (Required) 协议类型。枚举值为:TCP、UDP

  • +
  • SrcEIPId (str) - (Required) 源IP。填写对应的EIP Id

  • +
  • SrcPort (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • PolicyName (str) - 转发策略名称。默认为空

  • +
+

Response

+
    +
  • PolicyId (str) - 创建时分配的策略Id

  • +
+
+ +
+
+create_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAcl - 创建网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclName (str) - (Required) ACL的名称

  • +
  • VpcId (str) - (Required) 将要创建的ACL所属VPC的ID

  • +
  • Description (str) - ACL的描述

  • +
+

Response

+
    +
  • AclId (str) - 创建的ACL的ID

  • +
+
+ +
+
+create_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAclAssociation - 创建ACL的绑定关系

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • SubnetworkId (str) - (Required) 需要绑定的子网ID

  • +
+

Response

+
    +
  • AssociationId (str) - 创建的绑定关系的ID

  • +
  • PrevAssociation (dict) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+create_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateNetworkAclEntry - 创建ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • CidrBlock (str) - (Required) IPv4段的CIDR表示

  • +
  • Direction (str) - (Required) 出向或者入向(“Ingress”, “Egress”)

  • +
  • EntryAction (str) - (Required) 规则的行为(“Accept”, “Reject”)

  • +
  • IpProtocol (str) - (Required) 协议规则描述

  • +
  • PortRange (str) - (Required) 针对的端口范围

  • +
  • Priority (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复

  • +
  • Description (str) - 描述。长度限制为不超过32字节。

  • +
  • TargetResourceIds (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值。

  • +
  • TargetType (int) - 应用目标类型。0代表“子网内全部资源”,1代表“子网内指定资源”,默认为0

  • +
+

Response

+
    +
  • EntryId (str) - 创建的Entry的ID

  • +
+
+ +
+
+create_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateRouteTable - 创建路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) 所属的VPC资源ID

  • +
  • Name (str) - 路由表名称。默认为RouteTable

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 路由表所属业务组

  • +
+

Response

+
    +
  • RouteTableId (str) - 路由表ID

  • +
+
+ +
+
+create_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateSubnet - 创建子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Subnet (str) - (Required) 子网网络地址,例如192.168.0.0

  • +
  • VPCId (str) - (Required) VPC资源ID

  • +
  • Netmask (int) - 子网网络号位数,默认为24

  • +
  • Remark (str) - 备注

  • +
  • SubnetName (str) - 子网名称,默认为Subnet

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
+

Response

+
    +
  • SubnetId (str) - 子网ID

  • +
+
+ +
+
+create_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPC - 创建VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Name (str) - (Required) VPC名称

  • +
  • Network (list) - (Required) VPC网段

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
    +
  • VPCId (str) - VPC资源Id

  • +
+
+ +
+
+create_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

CreateVPCIntercom - 新建VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC项目ID。默认与源VPC同项目。

  • +
  • DstRegion (str) - 目的VPC所在地域,默认与源VPC同地域。

  • +
+

Response

+
+ +
+
+delete_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNATGW - 删除NAT网关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ReleaseEip (bool) - 是否释放绑定的EIP。true:解绑并释放;false:只解绑不释放。默认为false

  • +
+

Response

+
+ +
+
+delete_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNATGWPolicy - 删除NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • PolicyId (str) - (Required) 端口转发规则Id

  • +
+

Response

+
+ +
+
+delete_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAcl - 删除网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要删除的AclId

  • +
+

Response

+
+ +
+
+delete_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAclAssociation - 删除网络ACL绑定关系

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要删除的AclId

  • +
  • SubnetworkId (str) - (Required) 绑定的子网ID

  • +
+

Response

+
+ +
+
+delete_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteNetworkAclEntry - 删除ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) Acl的ID

  • +
  • EntryId (str) - (Required) 需要删除的EntryId

  • +
+

Response

+
+ +
+
+delete_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteRouteTable - 删除自定义路由表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表资源ID

  • +
+

Response

+
+ +
+
+delete_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSecondaryIp - 删除ip(用于uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Ip (str) - (Required) ip

  • +
  • Mac (str) - (Required) mac

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • ObjectId (str) - 资源Id

  • +
  • VPCId (str) - VPCId

  • +
+

Response

+
+ +
+
+delete_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSnatRule - 删除指定的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
+

Response

+
+ +
+
+delete_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteSubnet - 删除子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
+

Response

+
+ +
+
+delete_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPC - 删除VPC

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC资源Id

  • +
+

Response

+
+ +
+
+delete_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteVPCIntercom - 删除VPC互通关系

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • DstVPCId (str) - (Required) 目的VPC短ID

  • +
  • VPCId (str) - (Required) 源VPC短ID

  • +
  • DstProjectId (str) - 目的VPC所在项目ID,默认为源VPC所在项目ID

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为源VPC所在地域

  • +
+

Response

+
+ +
+
+delete_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DeleteWhiteListResource - 删除NAT网关白名单列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ResourceIds (list) - (Required) 删除白名单的资源Id

  • +
+

Response

+
+ +
+
+describe_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNATGW - 获取NAT网关信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 数据分页值。默认为20

  • +
  • NATGWIds (list) - NAT网关Id。默认为该项目下所有NAT网关

  • +
  • Offset (int) - 数据偏移量。默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatGatewayDataSet 模型定义

  • +
  • TotalCount (int) - 满足条件的实例的总数

  • +
+

Response Model

+

NatGWIPResInfo +- EIP (str) - 外网IP +- OperatorName (str) - IP的运营商信息

+

NatGatewayIPSet +- Bandwidth (int) - 带宽 +- BandwidthType (str) - EIP带宽类型 +- EIPId (str) - 外网IP的 EIPId +- IPResInfo (list) - 见 NatGWIPResInfo 模型定义 +- Weight (int) - 权重为100的为出口

+

NatGatewaySubnetSet +- Subnet (str) - 子网网段 +- SubnetName (str) - 子网名字 +- SubnetworkId (str) - 子网id

+

NatGatewayDataSet +- CreateTime (int) - natgw创建时间 +- FirewallId (str) - 绑定的防火墙Id +- IPSet (list) - 见 NatGatewayIPSet 模型定义 +- NATGWId (str) - natgw id +- NATGWName (str) - natgw名称 +- PolicyId (list) - 转发策略Id +- Remark (str) - 备注 +- SubnetSet (list) - 见 NatGatewaySubnetSet 模型定义 +- Tag (str) - 业务组 +- VPCId (str) - 所属VPC Id

+
+ +
+
+describe_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNATGWPolicy - 展示NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 返回数据长度,默认为10000

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NATGWPolicyDataSet 模型定义

  • +
  • TotalCount (int) - 满足条件的转发策略总数

  • +
+

Response Model

+

NATGWPolicyDataSet +- DstIP (str) - 目的地址 +- DstPort (str) - 目的端口 +- NATGWId (str) - NAT网关Id +- PolicyId (str) - 转发策略Id +- PolicyName (str) - 转发策略名称 +- Protocol (str) - 协议类型 +- SrcEIP (str) - 端口转发前端EIP +- SrcEIPId (str) - 端口转发前端EIP Id +- SrcPort (str) - 源端口

+
+ +
+
+describe_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAcl - 获取网络ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (str) - 列表获取的个数限制

  • +
  • Offset (int) - 列表偏移量

  • +
  • VpcId (str) - 需要获取的ACL所属的VPC的ID

  • +
+

Response

+
    +
  • AclList (list) - 见 AclInfo 模型定义

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+

AclEntryInfo +- CidrBlock (str) - IP段的CIDR信息 +- CreateTime (int) - 创建的Unix时间戳 +- Direction (str) - 出向或者入向 +- EntryAction (str) - 匹配规则的动作 +- EntryId (str) - Entry的ID +- IpProtocol (str) - 针对的IP协议 +- PortRange (str) - Port的段信息 +- Priority (str) - 优先级 +- TargetResourceCount (int) - 应用目标资源数量。TargetType为0时不返回该值。 +- TargetResourceList (list) - 见 TargetResourceInfo 模型定义 +- TargetType (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 +- UpdateTime (int) - 更改的Unix时间戳

+

AclInfo +- AclId (str) - ACL的ID +- AclName (str) - 名称 +- Associations (list) - 见 AssociationInfo 模型定义 +- CreateTime (int) - 创建的Unix时间戳 +- Description (str) - 描述 +- Entries (list) - 见 AclEntryInfo 模型定义 +- UpdateTime (int) - 更改的Unix时间戳 +- VpcId (str) - ACL所属的VPC ID

+
+ +
+
+describe_network_acl_association(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclAssociation - 获取网络ACL的绑定关系列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) Acl的ID

  • +
  • Limit (str) - 列表获取的个数限制

  • +
  • Offset (int) - 列表偏移量

  • +
+

Response

+
    +
  • AssociationList (list) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+describe_network_acl_association_by_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclAssociationBySubnet - 获取子网的ACL绑定信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetworkId (str) - (Required) 子网的ID

  • +
+

Response

+
    +
  • Association (dict) - 见 AssociationInfo 模型定义

  • +
+

Response Model

+

AssociationInfo +- AclId (str) - ACL的ID +- AssociationId (str) - 绑定ID +- CreateTime (int) - 创建的Unix时间戳 +- SubnetworkId (str) - 绑定的子网ID

+
+ +
+
+describe_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeNetworkAclEntry - 获取ACL的规则信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
+

Response

+
    +
  • EntryList (list) - 见 AclEntryInfo 模型定义

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+

AclEntryInfo +- CidrBlock (str) - IP段的CIDR信息 +- CreateTime (int) - 创建的Unix时间戳 +- Direction (str) - 出向或者入向 +- EntryAction (str) - 匹配规则的动作 +- EntryId (str) - Entry的ID +- IpProtocol (str) - 针对的IP协议 +- PortRange (str) - Port的段信息 +- Priority (str) - 优先级 +- TargetResourceCount (int) - 应用目标资源数量。TargetType为0时不返回该值。 +- TargetResourceList (list) - 见 TargetResourceInfo 模型定义 +- TargetType (int) - 应用目标类型。 0代表“子网内全部资源” ,1代表“子网内指定资源” 。 +- UpdateTime (int) - 更改的Unix时间戳

+
+ +
+
+describe_route_table(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeRouteTable - 获取路由表详细信息(包括路由策略)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组ID

  • +
  • Limit (int) - 数据分页值。默认为20

  • +
  • OffSet (int) - 数据偏移量。默认为0

  • +
  • RouteTableId (str) - 路由表资源ID

  • +
  • VPCId (str) - 所属VPC的资源ID

  • +
+

Response

+
    +
  • RouteTables (list) - 见 RouteTableInfo 模型定义

  • +
  • TotalCount (int) - RouteTables字段的数量

  • +
+

Response Model

+

RouteTableInfo +- CreateTime (int) - 创建时间戳 +- Remark (str) - 路由表备注 +- RouteRules (list) - 见 RouteRuleInfo 模型定义 +- RouteTableId (str) - 路由表资源ID +- RouteTableType (int) - 路由表类型。1为默认路由表,0为自定义路由表 +- SubnetCount (int) - 绑定该路由表的子网数量 +- Tag (str) - 路由表所属业务组 +- VPCId (str) - 路由表所属的VPC资源ID +- VPCName (str) - 路由表所属的VPC资源名称

+

RouteRuleInfo +- AccountId (int) - 项目ID信息 +- DstAddr (str) - 目的地址 +- DstPort (int) - 保留字段,暂未使用 +- NexthopId (str) - 路由下一跳资源ID +- NexthopType (str) - 路由表下一跳类型。LOCAL,本VPC内部通信路由;PUBLIC,公共服务路由;CNAT,外网路由;UDPN,跨域高速通道路由;HYBRIDGW,混合云路由;INSTANCE,实例路由;VNET,VPC联通路由;IPSEC VPN,指向VPN网关的路由。 +- OriginAddr (str) - 保留字段,暂未使用 +- Priority (int) - 保留字段,暂未使用 +- Remark (str) - 路由规则备注 +- RouteRuleId (str) - 规则ID +- RouteTableId (str) - 路由表资源ID +- RuleType (int) - 路由规则类型。0,系统路由规则;1,自定义路由规则 +- SrcAddr (str) - 保留字段,暂未使用 +- SrcPort (int) - 保留字段,暂未使用 +- VNetId (str) - 所属的VPC

+
+ +
+
+describe_secondary_ip(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSecondaryIp - 查询SecondaryIp(uk8s使用)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网Id

  • +
  • VPCId (str) - (Required) VPCId

  • +
  • Zone (str) - (Required) 可用区。参见 可用区列表

  • +
  • Ip (str) - Ip

  • +
  • Mac (str) - Mac

  • +
+

Response

+
    +
  • DataSet (list) - 见 IpInfo 模型定义

  • +
+

Response Model

+

IpInfo +- Gateway (str) - +- Ip (str) - +- Mac (str) - +- Mask (str) - +- SubnetId (str) - +- VPCId (str) -

+
+ +
+
+describe_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSnatRule - 获取Nat网关的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID

  • +
  • Limit (str) - 分页,默认为20

  • +
  • Offset (str) - 偏移,默认为0

  • +
  • SnatIp (str) - EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - 需要出外网的私网IP地址,例如10.9.7.xx

  • +
+

Response

+
    +
  • DataSet (list) - 见 NATGWSnatRule 模型定义

  • +
  • TotalCount (int) - 规则数量

  • +
+

Response Model

+

NATGWSnatRule +- Name (str) - snat规则名称 +- SnatIp (str) - EIP地址,如106.76.xx.xx +- SourceIp (str) - 资源的内网IP地址 +- SubnetworkId (str) - SourceIp所属的子网id

+
+ +
+
+describe_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSubnet - 获取子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) - 列表长度,默认为20

  • +
  • Offset (int) - 偏移量,默认为0

  • +
  • RouteTableId (str) - 路由表Id

  • +
  • ShowAvailableIPs (bool) - 是否返回子网的可用IP数,true为是,false为否,默认不返回

  • +
  • SubnetId (str) - 子网id,适用于一次查询一个子网信息

  • +
  • SubnetIds (list) - 子网id数组,适用于一次查询多个子网信息

  • +
  • Tag (str) - 业务组名称,默认为Default

  • +
  • VPCId (str) - VPC资源id

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetInfo 模型定义

  • +
  • TotalCount (int) - 子网总数量

  • +
+

Response Model

+

SubnetInfo +- AvailableIPs (int) - 可用IP数量 +- CreateTime (int) - 创建时间 +- Gateway (str) - 子网网关 +- HasNATGW (bool) - 是否有natgw +- IPv6Network (str) - 子网关联的IPv6网段 +- Netmask (str) - 子网掩码 +- Remark (str) - 备注 +- RouteTableId (str) - 路由表Id +- Subnet (str) - 子网网段 +- SubnetId (str) - 子网Id +- SubnetName (str) - 子网名称 +- SubnetType (int) - 子网类型 +- Tag (str) - 业务组 +- VPCId (str) - VPCId +- VPCName (str) - VPC名称 +- Zone (str) - 可用区名称

+
+ +
+
+describe_subnet_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeSubnetResource - 展示子网资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网id

  • +
  • Limit (int) - 单页返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
  • ResourceType (str) - 资源类型,默认为全部资源类型。枚举值为:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,Kafka消息队列;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

  • +
+

Response

+
    +
  • DataSet (list) - 见 SubnetResource 模型定义

  • +
  • TotalCount (int) - 总数

  • +
+

Response Model

+

SubnetResource +- IP (str) - 资源ip +- Name (str) - 名称 +- ResourceId (str) - 资源Id +- ResourceType (str) - 资源类型。对应的资源类型:UHOST,云主机;PHOST,物理云主机;ULB,负载均衡;UHADOOP_HOST,hadoop节点;UFORTRESS_HOST,堡垒机;UNATGW,NAT网关;UKAFKA,分布式消息系统;UMEM,内存存储;DOCKER,容器集群;UDB,数据库;UDW,数据仓库;VIP,内网VIP.

+
+ +
+
+describe_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVIP - 获取内网VIP详细信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • BusinessId (str) - 业务组

  • +
  • SubnetId (str) - 子网id,不指定则获取VPCId下的所有vip

  • +
  • Tag (str) - 业务组名称, 默认为 Default

  • +
  • VIPId (str) - VIP ID

  • +
  • VPCId (str) - vpc的id,指定SubnetId时必填

  • +
  • Zone (str) - 可用区。参见 可用区列表

  • +
+

Response

+
    +
  • DataSet (list) - 内网VIP地址列表

  • +
  • TotalCount (int) - vip数量

  • +
  • VIPSet (list) - 见 VIPDetailSet 模型定义

  • +
+

Response Model

+

VIPDetailSet +- CreateTime (int) - 创建时间 +- Name (str) - VIP名称 +- RealIp (str) - 真实主机ip +- Remark (str) - VIP备注 +- SubnetId (str) - 子网id +- Tag (str) - VIP所属业务组 +- VIP (str) - 虚拟ip +- VIPId (str) - 虚拟ip id +- VPCId (str) - VPC id +- Zone (str) - 地域

+
+ +
+
+describe_vpc(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPC - 获取VPC信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Limit (int) -

  • +
  • Offset (int) -

  • +
  • Tag (str) - 业务组名称

  • +
  • VPCIds (list) - VPCId

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCInfo 模型定义

  • +
+

Response Model

+

VPCInfo +- CreateTime (int) - +- IPv6Network (str) - VPC关联的IPv6网段 +- Name (str) - +- Network (list) - +- NetworkInfo (list) - 见 VPCNetworkInfo 模型定义 +- OperatorName (str) - VPC关联的IPv6网段所属运营商 +- SubnetCount (int) - +- Tag (str) - +- UpdateTime (int) - +- VPCId (str) - VPCId

+

VPCNetworkInfo +- Network (str) - vpc地址空间 +- SubnetCount (int) - 地址空间中子网数量

+
+ +
+
+describe_vpc_intercom(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeVPCIntercom - 获取VPC互通信息

+

Request

+
    +
  • ProjectId (str) - (Config) 源VPC所在项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 源VPC所在地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - (Required) VPC短ID

  • +
  • DstProjectId (str) - 目的项目ID,默认为全部项目

  • +
  • DstRegion (str) - 目的VPC所在地域,默认为全部地域

  • +
+

Response

+
    +
  • DataSet (list) - 见 VPCIntercomInfo 模型定义

  • +
+

Response Model

+

VPCIntercomInfo +- AccountId (int) - 项目Id(数字) +- DstRegion (str) - 所属地域 +- Name (str) - VPC名字 +- Network (list) - VPC的地址空间 +- ProjectId (str) - 项目Id +- Tag (str) - 业务组(未分组显示为 Default) +- VPCId (str) - VPCId +- VPCType (int) - vpc类型(1表示托管VPC,0表示公有云VPC)

+
+ +
+
+describe_white_list_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

DescribeWhiteListResource - 展示NAT网关白名单资源列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目id

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWIds (list) - (Required) NAT网关的Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatGWWhitelistDataSet 模型定义

  • +
  • TotalCount (int) - 上述DataSet总数量

  • +
+

Response Model

+

DescribeWhiteListResourceObjectIPInfo +- GwType (str) - natgw字符串 +- PrivateIP (str) - 白名单资源的内网IP +- ResourceId (str) - 白名单资源Id信息 +- ResourceName (str) - 白名单资源名称 +- ResourceType (str) - 白名单资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的实例ID +- SubResourceName (str) - 资源绑定的虚拟网卡的实例名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的类型 +- VPCId (str) - 白名单资源所属VPCId

+

NatGWWhitelistDataSet +- IfOpen (int) - 白名单开关标记 +- NATGWId (str) - NATGateWay Id +- ObjectIPInfo (list) - 见 DescribeWhiteListResourceObjectIPInfo 模型定义

+
+ +
+
+enable_white_list(req: Optional[dict] = None, **kwargs) dict[source]
+

EnableWhiteList - 修改NAT网关白名单开关

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • IfOpen (int) - (Required) 白名单开关标记。0:关闭;1:开启。默认为0

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
+

Response

+
+ +
+
+get_available_resource_for_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForPolicy - 获取NAT网关可配置端口转发规则的资源信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 返回数据长度,默认为20

  • +
  • Offset (int) - 列表起始位置偏移量,默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 GetAvailableResourceForPolicyDataSet 模型定义

  • +
+

Response Model

+

GetAvailableResourceForPolicyDataSet +- PrivateIP (str) - 资源对应的内网Ip +- ResourceId (str) - 资源的Id +- ResourceType (str) - 资源类型。”uhost”:云主机; “upm”,物理云主机; “hadoophost”:hadoop节点; “fortresshost”:堡垒机: “udockhost”,容器

+
+ +
+
+get_available_resource_for_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForSnatRule - 获取可用于添加snat规则(出口规则)的资源列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • Action (str) - 操作名称

  • +
  • DataSet (list) - 见 GetAvailableResourceForSnatRuleDataSet 模型定义

  • +
  • RetCode (str) - 返回值

  • +
  • TotalCount (int) - 总数

  • +
+

Response Model

+

GetAvailableResourceForSnatRuleDataSet +- PrivateIP (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (str) - 资源类型 +- SubnetworkId (str) - 资源所属VPC的ID +- VPCId (str) - 资源所属子网的ID

+
+ +
+
+get_available_resource_for_white_list(req: Optional[dict] = None, **kwargs) dict[source]
+

GetAvailableResourceForWhiteList - 获取NAT网关可添加白名单的资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • Limit (int) - 数据分页值, 默认为20

  • +
  • Offset (int) - 数据偏移量, 默认为0

  • +
+

Response

+
    +
  • DataSet (list) - 见 GetAvailableResourceForWhiteListDataSet 模型定义

  • +
  • TotalCount (int) - 白名单资源列表的总的个数

  • +
+

Response Model

+

GetAvailableResourceForWhiteListDataSet +- PrivateIP (str) - 资源的内网Ip +- ResourceId (str) - 资源类型Id +- ResourceName (str) - 资源名称 +- ResourceType (str) - 资源类型。”uhost”:云主机; “upm”,物理云主机; “hadoophost”:hadoop节点; “fortresshost”:堡垒机: “udockhost”,容器 +- SubResourceId (str) - 资源绑定的虚拟网卡的实例ID +- SubResourceName (str) - 资源绑定的虚拟网卡的实例名称 +- SubResourceType (str) - 资源绑定的虚拟网卡的实例类型 +- SubnetworkId (str) - 资源所属子网Id +- VPCId (str) - 资源所属VPCId

+
+ +
+
+get_network_acl_target_resource(req: Optional[dict] = None, **kwargs) dict[source]
+

GetNetworkAclTargetResource - 获取ACL规则应用目标列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetworkId (list) - (Required) 子网ID。

  • +
+

Response

+
    +
  • TargetResourceList (list) - 见 TargetResourceInfo 模型定义

  • +
  • TotalCount (int) - ACL规则应用目标资源总数

  • +
+

Response Model

+

TargetResourceInfo +- PrivateIp (str) - 资源内网IP +- ResourceId (str) - 资源ID +- ResourceName (str) - 资源名称 +- ResourceType (int) - 资源类型 +- SubResourceId (str) - 资源绑定的虚拟网卡的ID +- SubResourceName (str) - 资源绑定的虚拟网卡的名称 +- SubResourceType (int) - 资源绑定虚拟网卡的类型 +- SubnetworkId (str) - 子网ID

+
+ +
+
+list_subnet_for_natgw(req: Optional[dict] = None, **kwargs) dict[source]
+

ListSubnetForNATGW - 展示NAT网关可绑定的子网列表

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VPCId (str) - NAT网关所属VPC Id。默认值为Default VPC Id

  • +
+

Response

+
    +
  • DataSet (list) - 见 NatgwSubnetDataSet 模型定义

  • +
+

Response Model

+

NatgwSubnetDataSet +- HasNATGW (bool) - 是否绑定NATGW +- Netmask (str) - 掩码 +- Subnet (str) - 子网网段 +- SubnetId (str) - 子网id +- SubnetName (str) - 子网名字

+
+ +
+
+modify_route_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

ModifyRouteRule - 路由策略增、删、改

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteRule (list) - (Required) 格式: RouteRuleId | 目的网段 | 下一跳类型(支持INSTANCE、VIP) | 下一跳 |优先级(保留字段,填写0即可)| 备注 | 增、删、改标志(add/delete/update) 。”添加”示例: test_id | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| add (添加的RouteRuleId填任意非空字符串) 。”删除”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-xd8ja | 0 | Default Route Rule| delete (RouteRuleId来自DescribeRouteTable中) 。“修改”示例: routerule-xk3jxa | 10.8.0.0/16 | instance | uhost-cjksa2 | 0 | Default Route Rule| update (RouteRuleId来自DescribeRouteTable中)

  • +
  • RouteTableId (str) - (Required) 通过DescribeRouteTable拿到

  • +
+

Response

+
+ +
+
+release_vip(req: Optional[dict] = None, **kwargs) dict[source]
+

ReleaseVIP - 释放VIP资源

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写

  • +
  • Region (str) - (Config) 地域

  • +
  • VIPId (str) - (Required) 内网VIP的id

  • +
  • Zone (str) - 可用区

  • +
+

Response

+
+ +
+
+set_gw_default_export(req: Optional[dict] = None, **kwargs) dict[source]
+

SetGwDefaultExport - 设置NAT网关的默认出口

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • ExportEipId (str) - NAT网关绑定的EIP Id。ExportIp和ExportEipId必填一个

  • +
  • ExportIp (str) - NAT网关绑定的EIP。ExportIp和ExportEipId必填一个

  • +
+

Response

+
+ +
+
+update_natgw_policy(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNATGWPolicy - 更新NAT网关端口转发规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • DstIP (str) - (Required) 目标IP。填写对饮的目标IP地址

  • +
  • DstPort (str) - (Required) 目标端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-65535

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • PolicyId (str) - (Required) 转发策略Id

  • +
  • Protocol (str) - (Required) 协议类型。枚举值为:TCP 、 UDP

  • +
  • SrcEIPId (str) - (Required) 源IP。填写对应的EIP Id

  • +
  • SrcPort (str) - (Required) 源端口。可填写固定端口,也可填写端口范围。支持的端口范围为1-6553

  • +
  • PolicyName (str) - 转发策略名称。默认为空

  • +
+

Response

+
+ +
+
+update_natgw_subnet(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNATGWSubnet - 更新NAT网关绑定的子网

+

Request

+
    +
  • ProjectId (str) - (Config) 项目Id。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关Id

  • +
  • SubnetworkIds (list) - (Required) NAT网关绑定的子网Id

  • +
+

Response

+
+ +
+
+update_network_acl(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNetworkAcl - 更改ACL

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) 需要更改的ACL ID

  • +
  • AclName (str) - (Required) Acl的名称

  • +
  • Description (str) - (Required) 描述

  • +
+

Response

+
+ +
+
+update_network_acl_entry(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateNetworkAclEntry - 更新ACL的规则

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • AclId (str) - (Required) ACL的ID

  • +
  • CidrBlock (str) - (Required) IPv4段的CIDR表示

  • +
  • Direction (str) - (Required) 出向或者入向(“Ingress”, “Egress”)

  • +
  • EntryAction (str) - (Required) 规则的行为(“Accept”, “Reject”)

  • +
  • EntryId (str) - (Required) 需要更新的Entry Id

  • +
  • IpProtocol (str) - (Required) 针对的协议规则

  • +
  • PortRange (str) - (Required) 针对的端口范围

  • +
  • Priority (int) - (Required) Entry的优先级,对于同样的Direction来说,不能重复

  • +
  • Description (str) - 描述

  • +
  • TargetResourceIds (list) - 应用目标资源列表。默认为全部资源生效。TargetType为0时不用填写该值

  • +
  • TargetType (int) - 应用目标类型。0代表“子网内全部资源”, 1代表“子网内指定资源”。默认为0

  • +
+

Response

+
+ +
+
+update_route_table_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateRouteTableAttribute - 更新路由表基本信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • RouteTableId (str) - (Required) 路由表ID

  • +
  • Name (str) - 名称

  • +
  • Remark (str) - 备注

  • +
  • Tag (str) - 业务组名称

  • +
+

Response

+
+ +
+
+update_snat_rule(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateSnatRule - 更新指定的出口规则(SNAT规则)

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • NATGWId (str) - (Required) NAT网关的ID,

  • +
  • SnatIp (str) - (Required) EIP的ip地址,例如106.75.xx.xx

  • +
  • SourceIp (str) - (Required) 需要出外网的私网IP地址,例如10.9.7.xx

  • +
  • Name (str) - snat名称,即出口规则名称

  • +
+

Response

+
+ +
+
+update_subnet_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateSubnetAttribute - 更新子网信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • SubnetId (str) - (Required) 子网ID

  • +
  • Name (str) - 子网名称(如果Name不填写,Tag必须填写)

  • +
  • Tag (str) - 业务组名称(如果Tag不填写,Name必须填写)

  • +
+

Response

+
+ +
+
+update_vip_attribute(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVIPAttribute - 更新VIP信息

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • VIPId (str) - (Required) 内网VIP的资源Id

  • +
  • Name (str) - 内网VIP的名称

  • +
  • Remark (str) - 内网VIP的备注

  • +
  • Tag (str) - 内网VIP所属的业务组

  • +
+

Response

+
+ +
+
+update_vpc_network(req: Optional[dict] = None, **kwargs) dict[source]
+

UpdateVPCNetwork - 更新VPC网段

+

Request

+
    +
  • ProjectId (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 GetProjectList接口

  • +
  • Region (str) - (Config) 地域。 参见 地域和可用区列表

  • +
  • Network (list) - (Required) 需要保留的VPC网段。当前仅支持删除VPC网段,添加网段请参考 AddVPCNetwork

  • +
  • VPCId (str) - (Required) VPC的ID

  • +
+

Response

+
+ +
+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index ba27f976..00000000 --- a/setup.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -from setuptools import setup, find_packages - -import importlib -import io -import logging -import os -import sys - -logger = logging.getLogger(__name__) - -PY3 = sys.version_info[0] == 3 and sys.version_info[1] >= 5 - -if not PY3: - raise NotImplementedError( - ("ucloud-sdk-python3 should be used in 3.5 " "and above of python interpreter") - ) - - -def load_version(): - return importlib.import_module( - "ucloud.version", os.path.join("ucloud", "version.py") - ).version - - -def load_long_description(): - try: - with io.open("README.md", encoding="utf-8") as f: - return f.read() - except FileNotFoundError: - return "" - - -def load_requirements(requirements_file): - try: - with io.open(requirements_file, encoding="utf-8") as f: - return list(f.readlines()) - except FileNotFoundError: - return [] - - -dependencies = load_requirements("requirements.txt") - -dependencies_test = dependencies + ["flake8>=3.6.0", "pytest>=4.6", "pytest-cov", "requests_mock"] - -dependencies_doc = dependencies + ["sphinx"] - -dependencies_ci = list(set(dependencies_test + dependencies_doc)) - -dependencies_dev = list(set(dependencies_ci + ["black"])) - - -def do_setup(): - setup( - name="ucloud-sdk-python3", - description="UCloud Service Development Kit - Python", - long_description=load_long_description(), - long_description_content_type="text/markdown", - license="Apache License 2.0", - version=load_version(), - packages=find_packages(exclude=["tests*"]), - package_data={"": []}, - include_package_data=True, - zip_safe=False, - install_requires=dependencies, - extras_require={ - "test": dependencies_test, - "doc": dependencies_doc, - "dev": dependencies_dev, - "ci": dependencies_ci, - }, - dependencies_test=dependencies_test, - classifiers=[ - "Development Status :: 3 - Alpha", - "Environment :: Console", - "Environment :: Web Environment", - "Intended Audience :: Developers", - "Intended Audience :: System Administrators", - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Topic :: Software Development", - ], - author="ucloud", - author_email="esl_ipdd@ucloud.cn", - url="https://github.com/ucloud/ucloud-sdk-python3", - python_requires=">=3.5", - ) - - -if __name__ == "__main__": - do_setup() diff --git a/tests/test_acceptance/conftest.py b/tests/test_acceptance/conftest.py deleted file mode 100644 index 2e31979b..00000000 --- a/tests/test_acceptance/conftest.py +++ /dev/null @@ -1,52 +0,0 @@ -import json -import os -import pytest - -from ucloud.testing.driver import spec -from ucloud.client import Client - - -@pytest.fixture(scope="session", autouse=True) -def ustack_client() -> Client: - return Client( - { - "base_url": "http://console.pre.ucloudstack.com/api", - "region": "cn", - "public_key": os.getenv("UCLOUDSTACK_PUBLIC_KEY"), - "private_key": os.getenv("UCLOUDSTACK_PRIVATE_KEY"), - "max_retries": 10, - "timeout": 60, - } - ) - - -@pytest.fixture(scope="session", autouse=True) -def client() -> Client: - return Client( - { - "region": "cn-bj2", - "project_id": os.getenv("UCLOUD_PROJECT_ID"), - "public_key": os.getenv("UCLOUD_PUBLIC_KEY"), - "private_key": os.getenv("UCLOUD_PRIVATE_KEY"), - "max_retries": 10, - "timeout": 60, - } - ) - - -@pytest.fixture(scope="module", autouse=True, name="variables") -def variables_factory() -> dict: - return { - "Region": "cn-bj2", - "Zone": "cn-bj2-05", - "ProjectId": os.getenv("UCLOUD_PROJECT_ID"), - } - - -@pytest.fixture(scope="session", autouse=True) -def save_report(request): - def save_report_handler(): - with open("./report.json", "w") as f: - json.dump(spec.json(), f) - - request.addfinalizer(save_report_handler) diff --git a/tests/test_acceptance/test_scenario_5183.py b/tests/test_acceptance/test_scenario_5183.py deleted file mode 100644 index 8b60a1f7..00000000 --- a/tests/test_acceptance/test_scenario_5183.py +++ /dev/null @@ -1,1022 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest - -from ucloud.core import exc -from ucloud.testing import funcs, op, env, utest -from ucloud.testing.driver import spec - - -scenario = spec.scenario(5183, "UCloudStack_02", owners=["lisa.wang@ucloud.cn"]) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_scenario_5183(ustack_client, variables): - scenario.store.update(variables) - - scenario.store["Region"] = "cn" - scenario.store["Zone"] = "zone-01" - scenario.store["BeginTime"] = ( - funcs.get_timestamp( - 10, - ) - - 3600 - ) - scenario.store["EndTime"] = funcs.get_timestamp( - 10, - ) - - # 查询VPC信息 - describe_vpc_00(ustack_client) - - # 查询安全组信息 - describe_security_group_01(ustack_client) - - # 查询存储类型 - describe_storage_type_02(ustack_client) - - # 查询主机机型 - describe_vm_type_03(ustack_client) - - # 获取镜像信息,包括默认镜像和自制镜像。 - describe_image_04(ustack_client) - - # 获取镜像信息,包括默认镜像和自制镜像。 - describe_image_05(ustack_client) - - # 创建虚拟机 - create_vm_instance_06(ustack_client) - - # 查询虚拟机 - describe_vm_instance_07(ustack_client) - - # 申请外网IP - allocate_eip_08(ustack_client) - - # 创建负载均衡 - create_lb_09(ustack_client) - - # 获取负载均衡信息 - describe_lb_10(ustack_client) - - # 创建负载均衡VServer - create_vs_11(ustack_client) - - # 修改负载均衡VServer - update_vs_12(ustack_client) - - # 添加服务节点 - create_rs_13(ustack_client) - - # 修改服务节点 - update_rs_14(ustack_client) - - # 获取服务节点信息 - describe_rs_15(ustack_client) - - # 禁用服务节点 - disable_rs_16(ustack_client) - - # 获取服务节点信息 - describe_rs_17(ustack_client) - - # 启用服务节点 - enable_rs_18(ustack_client) - - # 获取服务节点信息 - describe_rs_19(ustack_client) - - # 创建内容转发规则 - create_vs_policy_20(ustack_client) - - # 获取内容转发规则信息 - describe_vs_policy_21(ustack_client) - - # 更新内容转发规则 - update_vs_policy_22(ustack_client) - - # 删除内容转发规则 - delete_vs_policy_23(ustack_client) - - # 移除服务节点 - delete_rs_24(ustack_client) - - # 断电虚拟机 - poweroff_vm_instance_25(ustack_client) - - # 删除虚拟机 - delete_vm_instance_26(ustack_client) - - # 删除负载均衡 - delete_lb_27(ustack_client) - - -@scenario.api( - title="查询VPC信息", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVPCResponse"), - ], - action="DescribeVPC", -) -def describe_vpc_00(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vpc(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VPCID"] = utest.value_at_path(resp, "Infos.0.VPCID") - variables["SubnetID"] = utest.value_at_path( - resp, "Infos.0.SubnetInfos.0.SubnetID" - ) - return resp - - -@scenario.api( - title="查询安全组信息", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSecurityGroupResponse"), - ], - action="DescribeSecurityGroup", -) -def describe_security_group_01(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_security_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SGID"] = utest.value_at_path(resp, "Infos.0.SGID") - return resp - - -@scenario.api( - title="查询存储类型", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeStorageTypeResponse"), - ], - action="DescribeStorageType", -) -def describe_storage_type_02(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_storage_type(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["StorageType"] = utest.value_at_path(resp, "Infos.0.StorageType") - return resp - - -@scenario.api( - title="查询主机机型", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVMTypeResponse"), - ], - action="DescribeVMType", -) -def describe_vm_type_03(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vm_type(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VMType"] = "ComputeSetBBBB" - return resp - - -@scenario.api( - title="获取镜像信息,包括默认镜像和自制镜像。", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_04(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Infos"] = utest.value_at_path(resp, "Infos") - return resp - - -@scenario.api( - title="获取镜像信息,包括默认镜像和自制镜像。", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_05(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "ImageIDs": [ - funcs.search_value( - variables.get("Infos"), - "OSName", - "CentOS 6.5 x86_64", - "ImageID", - ), - ], - } - - try: - resp = client.ucloudstack().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageID"] = utest.value_at_path(resp, "Infos.0.ImageID") - return resp - - -@scenario.api( - title="创建虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVMInstanceResponse"), - ], - action="CreateVMInstance", -) -def create_vm_instance_06(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "WANSGID": variables.get("SGID"), - "VPCID": variables.get("VPCID"), - "VMType": variables.get("VMType"), - "SubnetID": variables.get("SubnetID"), - "Region": variables.get("Region"), - "Quantity": 1, - "Password": "Zhongshang_2018", - "Name": "host_test", - "Memory": 2048, - "ImageID": variables.get("ImageID"), - "DataDiskSpace": 10, - "DataDiskSetType": "StorageSetBBBB", - "ChargeType": "Month", - "CPU": 1, - "BootDiskSetType": "StorageSetBBBB", - } - - try: - resp = client.ucloudstack().create_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VMID"] = utest.value_at_path(resp, "VMID") - return resp - - -@scenario.api( - title="查询虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=90, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVMInstanceResponse"), - ("str_eq", "Infos.0.State", "Running"), - ], - action="DescribeVMInstance", -) -def describe_vm_instance_07(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMIDs": [ - variables.get("VMID"), - ], - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["InterfaceID"] = utest.value_at_path( - resp, "Infos.0.IPInfos.0.InterfaceID" - ) - variables["DiskID"] = utest.value_at_path( - resp, "Infos.0.DiskInfos.0.DiskID" - ) - return resp - - -@scenario.api( - title="申请外网IP", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "AllocateEIPResponse"), - ], - action="AllocateEIP", -) -def allocate_eip_08(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OperatorName": "Bgp", - "Name": "test_eip", - "ChargeType": "Month", - "Bandwidth": 2, - } - - try: - resp = client.ucloudstack().allocate_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["EIPID"] = utest.value_at_path(resp, "EIPID") - return resp - - -@scenario.api( - title="创建负载均衡", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateLBResponse"), - ], - action="CreateLB", -) -def create_lb_09(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VPCID": variables.get("VPCID"), - "VMType": variables.get("VMType"), - "SubnetID": variables.get("SubnetID"), - "SGID": variables.get("SGID"), - "Region": variables.get("Region"), - "Name": "lb_test1", - "LBType": "WAN", - "EIPID": variables.get("EIPID"), - "ChargeType": "Month", - } - - try: - resp = client.ucloudstack().create_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["LBID"] = utest.value_at_path(resp, "LBID") - return resp - - -@scenario.api( - title="获取负载均衡信息", - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeLBResponse"), - ("str_eq", "Infos.0.LBStatus", "Running"), - ], - action="DescribeLB", -) -def describe_lb_10(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "LBIDs": [ - variables.get("LBID"), - ], - } - - try: - resp = client.ucloudstack().describe_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="创建负载均衡VServer", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVSResponse"), - ], - action="CreateVS", -) -def create_vs_11(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Scheduler": "wrr", - "Region": variables.get("Region"), - "Protocol": "HTTP", - "Port": 123, - "LBID": variables.get("LBID"), - "HealthcheckType": "Port", - } - - try: - resp = client.ucloudstack().create_vs(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VSID"] = utest.value_at_path(resp, "VSID") - return resp - - -@scenario.api( - title="修改负载均衡VServer", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateVSResponse"), - ], - action="UpdateVS", -) -def update_vs_12(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Scheduler": "ip_hash", - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().update_vs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="添加服务节点", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateRSResponse"), - ], - action="CreateRS", -) -def create_rs_13(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Weight": 1, - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "Port": 112, - "LBID": variables.get("LBID"), - "BindResourceID": variables.get("VMID"), - } - - try: - resp = client.ucloudstack().create_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["RSID"] = utest.value_at_path(resp, "RSID") - return resp - - -@scenario.api( - title="修改服务节点", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateRSResponse"), - ], - action="UpdateRS", -) -def update_rs_14(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Weight": 55, - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSID": variables.get("RSID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().update_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="获取服务节点信息", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeRSResponse"), - ], - action="DescribeRS", -) -def describe_rs_15(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().describe_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["RSID_1"] = utest.value_at_path(resp, "Infos.0.RSID") - return resp - - -@scenario.api( - title="禁用服务节点", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DisableRSResponse"), - ], - action="DisableRS", -) -def disable_rs_16(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSID": variables.get("RSID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().disable_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="获取服务节点信息", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeRSResponse"), - ("str_eq", "Infos.0.RSMode", "Disable"), - ], - action="DescribeRS", -) -def describe_rs_17(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSIDs": [ - variables.get("RSID"), - ], - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().describe_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="启用服务节点", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "EnableRSResponse"), - ], - action="EnableRS", -) -def enable_rs_18(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSID": variables.get("RSID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().enable_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="获取服务节点信息", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeRSResponse"), - ("str_eq", "Infos.0.RSMode", "Enable"), - ], - action="DescribeRS", -) -def describe_rs_19(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSIDs": [ - variables.get("RSID"), - ], - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().describe_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="创建内容转发规则", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVSPolicyResponse"), - ], - action="CreateVSPolicy", -) -def create_vs_policy_20(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSIDs": [ - variables.get("RSID"), - ], - "Path": "/test12321", - "LBID": variables.get("LBID"), - "Domain": "test.com11", - } - - try: - resp = client.ucloudstack().create_vs_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["PolicyID"] = utest.value_at_path(resp, "PolicyID") - return resp - - -@scenario.api( - title="获取内容转发规则信息", - max_retries=3, - retry_interval=1, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVSPolicyResponse"), - ], - action="DescribeVSPolicy", -) -def describe_vs_policy_21(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "PolicyIDs": [ - variables.get("PolicyID"), - ], - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().describe_vs_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="更新内容转发规则", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateVSPolicyResponse"), - ], - action="UpdateVSPolicy", -) -def update_vs_policy_22(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "PolicyID": variables.get("PolicyID"), - "Path": "/testnew", - "LBID": variables.get("LBID"), - "Domain": "test.comnew", - } - - try: - resp = client.ucloudstack().update_vs_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除内容转发规则", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteVSPolicyResponse"), - ], - action="DeleteVSPolicy", -) -def delete_vs_policy_23(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "PolicyID": variables.get("PolicyID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_vs_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="移除服务节点", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteRSResponse"), - ], - action="DeleteRS", -) -def delete_rs_24(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSID": variables.get("RSID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="断电虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "PoweroffVMInstanceResponse"), - ], - action="PoweroffVMInstance", -) -def poweroff_vm_instance_25(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().poweroff_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteVMInstanceResponse"), - ], - action="DeleteVMInstance", -) -def delete_vm_instance_26(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().delete_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除负载均衡", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteLBResponse"), - ], - action="DeleteLB", -) -def delete_lb_27(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_acceptance/test_scenario_5292.py b/tests/test_acceptance/test_scenario_5292.py deleted file mode 100644 index beed1d85..00000000 --- a/tests/test_acceptance/test_scenario_5292.py +++ /dev/null @@ -1,1040 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest - -from ucloud.core import exc -from ucloud.testing import funcs, op, env, utest -from ucloud.testing.driver import spec - - -scenario = spec.scenario(5292, "UCloudStack_05", owners=["lisa.wang@ucloud.cn"]) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_scenario_5292(ustack_client, variables): - scenario.store.update(variables) - - scenario.store["Region"] = "cn" - scenario.store["Zone"] = "zone-01" - scenario.store["BeginTime"] = ( - funcs.get_timestamp( - 10, - ) - - 3600 - ) - scenario.store["EndTime"] = funcs.get_timestamp( - 10, - ) - - # 查询VPC信息 - describe_vpc_00(ustack_client) - - # 查询安全组信息 - describe_security_group_01(ustack_client) - - # 查询主机机型 - describe_vm_type_02(ustack_client) - - # 查询存储类型 - describe_storage_type_03(ustack_client) - - # 获取镜像信息,包括默认镜像和自制镜像。 - describe_image_04(ustack_client) - - # 创建虚拟机 - create_vm_instance_05(ustack_client) - - # 创建虚拟机 - create_vm_instance_06(ustack_client) - - # 查询虚拟机 - describe_vm_instance_07(ustack_client) - - # 查询虚拟机 - describe_vm_instance_08(ustack_client) - - # 创建证书 - create_certificate_09(ustack_client) - - # 创建证书 - create_certificate_10(ustack_client) - - # 查询证书 - describe_certificate_11(ustack_client) - - # 查询证书 - describe_certificate_12(ustack_client) - - # 创建负载均衡 - create_lb_13(ustack_client) - - # 获取负载均衡信息 - describe_lb_14(ustack_client) - - # 创建负载均衡VServer - create_vs_15(ustack_client) - - # 添加服务节点 - create_rs_16(ustack_client) - - # 获取服务节点信息 - describe_rs_17(ustack_client) - - # 修改负载均衡VServer - update_vs_18(ustack_client) - - # 移除服务节点 - delete_rs_19(ustack_client) - - # 删除VServer - delete_vs_20(ustack_client) - - # 查询操作日志 - describe_op_logs_21(ustack_client) - - # 删除负载均衡 - delete_lb_22(ustack_client) - - # 删除证书 - delete_certificate_23(ustack_client) - - # 删除证书 - delete_certificate_24(ustack_client) - - # 断电虚拟机 - poweroff_vm_instance_25(ustack_client) - - # 断电虚拟机 - poweroff_vm_instance_26(ustack_client) - - # 删除虚拟机 - delete_vm_instance_27(ustack_client) - - # 删除虚拟机 - delete_vm_instance_28(ustack_client) - - -@scenario.api( - title="查询VPC信息", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVPCResponse"), - ], - action="DescribeVPC", -) -def describe_vpc_00(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vpc(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VPCID"] = utest.value_at_path(resp, "Infos.0.VPCID") - variables["SubnetID"] = utest.value_at_path( - resp, "Infos.0.SubnetInfos.0.SubnetID" - ) - return resp - - -@scenario.api( - title="查询安全组信息", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSecurityGroupResponse"), - ], - action="DescribeSecurityGroup", -) -def describe_security_group_01(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_security_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SGID"] = utest.value_at_path(resp, "Infos.0.SGID") - return resp - - -@scenario.api( - title="查询主机机型", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVMTypeResponse"), - ], - action="DescribeVMType", -) -def describe_vm_type_02(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vm_type(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VMType"] = utest.value_at_path(resp, "Infos.0.VMType") - return resp - - -@scenario.api( - title="查询存储类型", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeStorageTypeResponse"), - ], - action="DescribeStorageType", -) -def describe_storage_type_03(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_storage_type(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["StorageType"] = utest.value_at_path(resp, "Infos.0.StorageType") - return resp - - -@scenario.api( - title="获取镜像信息,包括默认镜像和自制镜像。", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_04(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_id"] = utest.value_at_path(resp, "Infos.0.ImageID") - return resp - - -@scenario.api( - title="创建虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVMInstanceResponse"), - ], - action="CreateVMInstance", -) -def create_vm_instance_05(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "WANSGID": variables.get("SGID"), - "VPCID": variables.get("VPCID"), - "VMType": "ComputeSetBBBB", - "SubnetID": variables.get("SubnetID"), - "Region": variables.get("Region"), - "Password": "Zhongshang_2018", - "Name": "host_test", - "Memory": 2048, - "ImageID": "cn-image-centos-65", - "DataDiskSetType": "StorageSetBBBB", - "ChargeType": "Month", - "CPU": 1, - "BootDiskSetType": "StorageSetBBBB", - } - - try: - resp = client.ucloudstack().create_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VMID"] = utest.value_at_path(resp, "VMID") - return resp - - -@scenario.api( - title="创建虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVMInstanceResponse"), - ], - action="CreateVMInstance", -) -def create_vm_instance_06(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "WANSGID": variables.get("SGID"), - "VPCID": variables.get("VPCID"), - "VMType": "ComputeSetBBBB", - "SubnetID": variables.get("SubnetID"), - "Region": variables.get("Region"), - "Password": "Zhongshang_2018", - "Name": "host_test", - "Memory": 2048, - "ImageID": "cn-image-centos-65", - "DataDiskSetType": "StorageSetBBBB", - "ChargeType": "Month", - "CPU": 1, - "BootDiskSetType": "StorageSetBBBB", - } - - try: - resp = client.ucloudstack().create_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["EIPID"] = utest.value_at_path(resp, "EIPID") - variables["DiskID"] = utest.value_at_path(resp, "DiskID") - variables["VMID_1"] = utest.value_at_path(resp, "VMID") - return resp - - -@scenario.api( - title="查询虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=90, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVMInstanceResponse"), - ("str_eq", "Infos.0.State", "Running"), - ], - action="DescribeVMInstance", -) -def describe_vm_instance_07(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMIDs": [ - variables.get("VMID"), - ], - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="查询虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVMInstanceResponse"), - ("str_eq", "Infos.0.State", "Running"), - ], - action="DescribeVMInstance", -) -def describe_vm_instance_08(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMIDs": [ - variables.get("VMID_1"), - ], - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="创建证书", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateCertificateResponse"), - ], - action="CreateCertificate", -) -def create_certificate_09(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA8QbLsBnQmXRFLONEkHL1LfvYZZi04HH5Kv4fX9UFT8S6vzwv\njrBu+oToMujfH+5O8eV4LTyovTuMnRZfFYmIRF0Y2EHFK05t5bu7PVE9gCFJitHS\nPj2YBVOYA8IfH0C6C9uE9pT35A/U54Apw2p36N8W8f3vYbCZH+4SlosfM68bWGAl\nE7feqU6UHlo6+4IJdmwxH02siTTPoucaBgT4kBXcT5ylgozZl4tncLNHdsIYtXrk\nVoCOcCF44uVin1H+hL8xtFM8+ovL7Eixr/KS+wtALlCODKzzQ3rBXgNixGHJUJKR\nxBOPQZKULwqJAlvXfP6+QElK8vu0qySJ3FOhcQIDAQABAoIBAAPvZnfzk/JNcauv\n8jihh9s+V2QhQCLB+Z14FK8N3U5WGe5xXx1nSAiTDu912d69l1BfvLyQVvjv9fXC\nnb7ORglHs9YkDMIOP8EWdZIkt2pWIMtBbbtSah78JGk7TCLIfcEfzmXwPLPehk1Z\nTFVCcb69lbRRvwzLQ1TAIFGQ5+uCEkW02KAl6kx+JnVpsE8/BjqZKG1Ne+sM6dOC\nGRd44hgiNHKUT3Xtbw6jttiUFDLKYMYtb7PpRAkZFM8tgnBV6dWWJ3xTYW9kOjPh\nXnScNARfphUZVibRhA04og5p1q/MUz9Sz9g2DURuSlo/MP3WZMbVRvZiUN1xhz5v\n2WhsddkCgYEA+gWPFo0TbVbZXUrx9J/ptI9NXNx5zjyUrv87MDt1pnmMDgWrsCEI\nRqQR4Lp2G11GA7IudiA/ipcZqgcRIIFvb+gu1kObox3BGGs59x+DqFeAPXt6dFG2\nW10f9k96/tcbdursurqwd3Zv3cqQqRTKgaP4xHFmexlcwGCF5YwewWMCgYEA9sos\n2acNINXwcNRUPnpg82DOrG9Zjr1aiNo9PDJmwGEdC9QMOUWM85dq0M9g388ttiLU\nWr/U4r5yDuqWJPcKtff2BaxSsZpcQ4Id9eddD9L+sxaBGyD23RtOC+IOlkG6WS4g\niUYulQvW69tBHWiwxQu7YMSIE2B3EuySPOQYlBsCgYEAxNwvqB/4lfT2PUDPdj+b\ncnILBf0LY1nL8GZCol2O6z91CW1pm8rGi2iQMxRd/nnYsPxRHO2TWnpS2M+rqp5/\nsettRYQCPdMlwSZcg7oqnhgXf1GEP6Y/IX0Xt4cpXxLcKywarYRlggqdVlMyyA74\nzE7hhzuK5442u7rEctN7O+UCgYAoM78ipafp1XAZsT0YAG+Stg504J7CNe5tpL+c\n8sjyRd+pcZ2cJsxTUjNAWMf7LZDQvtPBBMb1OPjznRtgYi4IfqBBRFUkQXUOOkAP\nMuViEokTO3NErBYK5svL+8NMjuCAbpc2RYyJEyiru0fcNpW1Q7f+h4VzQp+jIY6h\nBLdMSQKBgGauU7OQksZCEY2MVAcD5dShYYvWLxOkj4dVVwISN1M6ImCAHwXZ6Nak\n6YlzCGT+NbRJbB2cPfsrKXtAJVX15I3iDCKAoGkb+9kiHnPj7Q71KVuWQE6BQx7E\nvE88TSsshwtX1s+qU9UWUrMPodK32q5nO3p8N033NvS9wLNfbcdc\n-----END RSA PRIVATE KEY-----", - "Name": "server", - "CertificateType": "ServerCrt", - "Certificate": "-----BEGIN CERTIFICATE-----\nMIIFzTCCBLWgAwIBAgIQQ8IswmAhEIKfNhrKqb0F3DANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs\nIEluYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsT\nFERvbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NM\nIENBIC0gRzUwHhcNMTYxMjA2MDAwMDAwWhcNMTcxMjA2MjM1OTU5WjAgMR4wHAYD\nVQQDDBVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDxBsuwGdCZdEUs40SQcvUt+9hlmLTgcfkq/h9f1QVPxLq/PC+O\nsG76hOgy6N8f7k7x5XgtPKi9O4ydFl8ViYhEXRjYQcUrTm3lu7s9UT2AIUmK0dI+\nPZgFU5gDwh8fQLoL24T2lPfkD9TngCnDanfo3xbx/e9hsJkf7hKWix8zrxtYYCUT\nt96pTpQeWjr7ggl2bDEfTayJNM+i5xoGBPiQFdxPnKWCjNmXi2dws0d2whi1euRW\ngI5wIXji5WKfUf6EvzG0Uzz6i8vsSLGv8pL7C0AuUI4MrPNDesFeA2LEYclQkpHE\nE49BkpQvCokCW9d8/r5ASUry+7SrJIncU6FxAgMBAAGjggKJMIIChTAgBgNVHREE\nGTAXghVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wCQYDVR0TBAIwADBhBgNVHSAEWjBY\nMFYGBmeBDAECATBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2Nw\nczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSME\nGDAWgBRtWMd/GufhPy6mjJc1Qrv00zisPzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l\nBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGbBggrBgEFBQcBAQSBjjCBizA8Bggr\nBgEFBQcwAYYwaHR0cDovL3RydXN0YXNpYTItb2NzcC5kaWdpdGFsY2VydHZhbGlk\nYXRpb24uY29tMEsGCCsGAQUFBzAChj9odHRwOi8vdHJ1c3Rhc2lhMi1haWEuZGln\naXRhbGNlcnR2YWxpZGF0aW9uLmNvbS90cnVzdGFzaWFnNS5jcnQwggEDBgorBgEE\nAdZ5AgQCBIH0BIHxAO8AdQDd6x0reg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+\nzAAAAVjT7zdSAAAEAwBGMEQCIDCzWufc1q7hjmrrCetGyoA8EsEqpRSIhmZXStX5\n8b7zAiA6x5aAaDK+yMyeAgw71yi3tRVrWayHN+W0+4BxC8u5UQB2AO5Lvbd1zmC6\n4UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNPvN4kAAAQDAEcwRQIgZ/LNgg7n\n7AE4O2yZkrXNcqAOmJ3NU2nT6zcnBxPFTTsCIQCjyPbMfWMZTD3kxgxPQ1COw5zJ\nsM0dfNmSr3MiU7EhqDANBgkqhkiG9w0BAQsFAAOCAQEAeyfgUhg9ZWVCaz0f+BQU\n6fMMfmQ1BDzvVFu+ORoAqyJQogxwIdfjrlz/63YFee5qpUsW/aaz4ma3bb4dpE1K\nGsgYe5N3o0xybYlOj+KB61sufYkzQS3HgDevCwjfUlGEbNl4dpO2xh5s5AANXlnz\ns/X0+AJ33/bm+fWIjAbIjluaEoM6GETHTXi4Tlxy0j3nsXsB9tIIUibAdTtButef\nJJRnikGRN+eHjrsLYe0RUmdKOQz1ik6teHt0MQX0aCe8OlXeyGDd9m8u7+y0nAnH\nTVaNuT7vXMWyyXLVUcV898wkBo3Bo3hUiaw0QR0ttgDrf5ZwqPfqpytRW2K5GMZT\nuw==\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFZTCCBE2gAwIBAgIQOhAOfxCeGsWcxf/2QNXkQjANBgkqhkiG9w0BAQsFADCB\nyjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\nExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\nU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\nZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\naG9yaXR5IC0gRzUwHhcNMTYwODExMDAwMDAwWhcNMjYwODEwMjM1OTU5WjCBlzEL\nMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIElu\nYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsTFERv\nbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NMIENB\nIC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39aSJZG/97x3a\n6Qmuc9+MubagegRAVUmFYHTYTs8IKB2pM7wXN7W8mekdZaEgUjDFxvRBK/DhTb7U\n8ONLsKKdT86aOhzbz2noCTn9wPWnGwkg+/4YKg/dPQQdV9tMsSu0cwqInWHxSAkm\nAI1hYFC9D7Sf7Hp/5cRcD+dK454YMRzNOGLQnCVI8JEqrz6o9SOvQNTqTcfqt6DC\n0UlXG+MPD1eNPjlzf1Vwaab+VSTgySoC+Ikbq2VsdykeOiGXW/OIiASH7+2LcR05\nPmQ7GEOlM8yzoVojFpM8sHz+WxI05ZOPri5+vX3HhHHjWr5432G0dVmgohnZvlVZ\noy8XrlbpAgMBAAGjggF2MIIBcjASBgNVHRMBAf8ECDAGAQH/AgEAMC8GA1UdHwQo\nMCYwJKAioCCGHmh0dHA6Ly9zLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8B\nAf8EBAMCAQYwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5z\neW1jZC5jb20wYQYDVR0gBFowWDBWBgZngQwBAgEwTDAjBggrBgEFBQcCARYXaHR0\ncHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5\nbWNiLmNvbS9ycGEwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCkGA1Ud\nEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTYwMTAdBgNVHQ4EFgQU\nbVjHfxrn4T8upoyXNUK79NM4rD8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6\nAq8zMTMwDQYJKoZIhvcNAQELBQADggEBABUphhBbeG7scE3EveIN0dOjXPgwgQi8\nI2ZAKYm6DawoGz1lEJVdvFmkyMbP973X80b7mKmn0nNbe1kjA4M0O0hHaMM1ZaEv\n7e9vHEAoGyysMO6HzPWYMkyNxcCV7Nos2Uv4RvLDpQHh7P4Kt6fUU13ipcynrtQD\n1lFUM0yoTzwwFsPu3Pk+94hL58ErqwqJQwxoHMgLIQeMVHeNKcWFy1bddSbIbCWU\nZs6cMxhrra062ZCpDCbxyEaFNGAtYQMqNz55Z/14XgSUONZ/cJTns6QKhpcgTOwB\nfnNzRnk+aWreP7osKhXlz4zs+llP7goBDKFOMMtoEXx3YjJCKgpqmBU=\n-----END CERTIFICATE-----", - } - - try: - resp = client.ucloudstack().create_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["CertificateID_server"] = utest.value_at_path( - resp, "CertificateID" - ) - return resp - - -@scenario.api( - title="创建证书", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateCertificateResponse"), - ], - action="CreateCertificate", -) -def create_certificate_10(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Name": "ssl_client", - "CertificateType": "CACrt", - "Certificate": "-----BEGIN CERTIFICATE-----\nMIIFzTCCBLWgAwIBAgIQQ8IswmAhEIKfNhrKqb0F3DANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs\nIEluYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsT\nFERvbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NM\nIENBIC0gRzUwHhcNMTYxMjA2MDAwMDAwWhcNMTcxMjA2MjM1OTU5WjAgMR4wHAYD\nVQQDDBVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDxBsuwGdCZdEUs40SQcvUt+9hlmLTgcfkq/h9f1QVPxLq/PC+O\nsG76hOgy6N8f7k7x5XgtPKi9O4ydFl8ViYhEXRjYQcUrTm3lu7s9UT2AIUmK0dI+\nPZgFU5gDwh8fQLoL24T2lPfkD9TngCnDanfo3xbx/e9hsJkf7hKWix8zrxtYYCUT\nt96pTpQeWjr7ggl2bDEfTayJNM+i5xoGBPiQFdxPnKWCjNmXi2dws0d2whi1euRW\ngI5wIXji5WKfUf6EvzG0Uzz6i8vsSLGv8pL7C0AuUI4MrPNDesFeA2LEYclQkpHE\nE49BkpQvCokCW9d8/r5ASUry+7SrJIncU6FxAgMBAAGjggKJMIIChTAgBgNVHREE\nGTAXghVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wCQYDVR0TBAIwADBhBgNVHSAEWjBY\nMFYGBmeBDAECATBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2Nw\nczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSME\nGDAWgBRtWMd/GufhPy6mjJc1Qrv00zisPzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l\nBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGbBggrBgEFBQcBAQSBjjCBizA8Bggr\nBgEFBQcwAYYwaHR0cDovL3RydXN0YXNpYTItb2NzcC5kaWdpdGFsY2VydHZhbGlk\nYXRpb24uY29tMEsGCCsGAQUFBzAChj9odHRwOi8vdHJ1c3Rhc2lhMi1haWEuZGln\naXRhbGNlcnR2YWxpZGF0aW9uLmNvbS90cnVzdGFzaWFnNS5jcnQwggEDBgorBgEE\nAdZ5AgQCBIH0BIHxAO8AdQDd6x0reg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+\nzAAAAVjT7zdSAAAEAwBGMEQCIDCzWufc1q7hjmrrCetGyoA8EsEqpRSIhmZXStX5\n8b7zAiA6x5aAaDK+yMyeAgw71yi3tRVrWayHN+W0+4BxC8u5UQB2AO5Lvbd1zmC6\n4UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNPvN4kAAAQDAEcwRQIgZ/LNgg7n\n7AE4O2yZkrXNcqAOmJ3NU2nT6zcnBxPFTTsCIQCjyPbMfWMZTD3kxgxPQ1COw5zJ\nsM0dfNmSr3MiU7EhqDANBgkqhkiG9w0BAQsFAAOCAQEAeyfgUhg9ZWVCaz0f+BQU\n6fMMfmQ1BDzvVFu+ORoAqyJQogxwIdfjrlz/63YFee5qpUsW/aaz4ma3bb4dpE1K\nGsgYe5N3o0xybYlOj+KB61sufYkzQS3HgDevCwjfUlGEbNl4dpO2xh5s5AANXlnz\ns/X0+AJ33/bm+fWIjAbIjluaEoM6GETHTXi4Tlxy0j3nsXsB9tIIUibAdTtButef\nJJRnikGRN+eHjrsLYe0RUmdKOQz1ik6teHt0MQX0aCe8OlXeyGDd9m8u7+y0nAnH\nTVaNuT7vXMWyyXLVUcV898wkBo3Bo3hUiaw0QR0ttgDrf5ZwqPfqpytRW2K5GMZT\nuw==\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFZTCCBE2gAwIBAgIQOhAOfxCeGsWcxf/2QNXkQjANBgkqhkiG9w0BAQsFADCB\nyjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\nExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\nU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\nZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\naG9yaXR5IC0gRzUwHhcNMTYwODExMDAwMDAwWhcNMjYwODEwMjM1OTU5WjCBlzEL\nMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIElu\nYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsTFERv\nbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NMIENB\nIC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39aSJZG/97x3a\n6Qmuc9+MubagegRAVUmFYHTYTs8IKB2pM7wXN7W8mekdZaEgUjDFxvRBK/DhTb7U\n8ONLsKKdT86aOhzbz2noCTn9wPWnGwkg+/4YKg/dPQQdV9tMsSu0cwqInWHxSAkm\nAI1hYFC9D7Sf7Hp/5cRcD+dK454YMRzNOGLQnCVI8JEqrz6o9SOvQNTqTcfqt6DC\n0UlXG+MPD1eNPjlzf1Vwaab+VSTgySoC+Ikbq2VsdykeOiGXW/OIiASH7+2LcR05\nPmQ7GEOlM8yzoVojFpM8sHz+WxI05ZOPri5+vX3HhHHjWr5432G0dVmgohnZvlVZ\noy8XrlbpAgMBAAGjggF2MIIBcjASBgNVHRMBAf8ECDAGAQH/AgEAMC8GA1UdHwQo\nMCYwJKAioCCGHmh0dHA6Ly9zLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8B\nAf8EBAMCAQYwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5z\neW1jZC5jb20wYQYDVR0gBFowWDBWBgZngQwBAgEwTDAjBggrBgEFBQcCARYXaHR0\ncHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5\nbWNiLmNvbS9ycGEwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCkGA1Ud\nEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTYwMTAdBgNVHQ4EFgQU\nbVjHfxrn4T8upoyXNUK79NM4rD8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6\nAq8zMTMwDQYJKoZIhvcNAQELBQADggEBABUphhBbeG7scE3EveIN0dOjXPgwgQi8\nI2ZAKYm6DawoGz1lEJVdvFmkyMbP973X80b7mKmn0nNbe1kjA4M0O0hHaMM1ZaEv\n7e9vHEAoGyysMO6HzPWYMkyNxcCV7Nos2Uv4RvLDpQHh7P4Kt6fUU13ipcynrtQD\n1lFUM0yoTzwwFsPu3Pk+94hL58ErqwqJQwxoHMgLIQeMVHeNKcWFy1bddSbIbCWU\nZs6cMxhrra062ZCpDCbxyEaFNGAtYQMqNz55Z/14XgSUONZ/cJTns6QKhpcgTOwB\nfnNzRnk+aWreP7osKhXlz4zs+llP7goBDKFOMMtoEXx3YjJCKgpqmBU=\n-----END CERTIFICATE-----", - } - - try: - resp = client.ucloudstack().create_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["CertificateID_client"] = utest.value_at_path( - resp, "CertificateID" - ) - return resp - - -@scenario.api( - title="查询证书", - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeCertificateResponse"), - ], - action="DescribeCertificate", -) -def describe_certificate_11(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "CertificateType": "ServerCrt", - "CertificateIDs": [ - variables.get("CertificateID_server"), - ], - } - - try: - resp = client.ucloudstack().describe_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ssl_ser"] = utest.value_at_path(resp, "Infos.0.CertificateID") - return resp - - -@scenario.api( - title="查询证书", - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeCertificateResponse"), - ], - action="DescribeCertificate", -) -def describe_certificate_12(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "CertificateType": "CACrt", - "CertificateIDs": [ - variables.get("CertificateID_client"), - ], - } - - try: - resp = client.ucloudstack().describe_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ssl_cl"] = utest.value_at_path(resp, "Infos.0.CertificateID") - return resp - - -@scenario.api( - title="创建负载均衡", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateLBResponse"), - ], - action="CreateLB", -) -def create_lb_13(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VPCID": variables.get("VPCID"), - "VMType": "ComputeSetBBBB", - "SubnetID": variables.get("SubnetID"), - "Region": variables.get("Region"), - "Name": "lb_test1", - "LBType": "LAN", - "ChargeType": "Month", - } - - try: - resp = client.ucloudstack().create_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["LBID"] = utest.value_at_path(resp, "LBID") - return resp - - -@scenario.api( - title="获取负载均衡信息", - max_retries=3, - retry_interval=1, - startup_delay=90, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeLBResponse"), - ("str_eq", "Infos.0.LBStatus", "Running"), - ], - action="DescribeLB", -) -def describe_lb_14(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().describe_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="创建负载均衡VServer", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateVSResponse"), - ], - action="CreateVS", -) -def create_vs_15(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "ServerCertificateID": variables.get("ssl_ser"), - "Scheduler": "wrr", - "SSLMode": "duplex", - "Region": variables.get("Region"), - "Protocol": "HTTPS", - "Port": 443, - "LBID": variables.get("LBID"), - "HealthcheckType": "Port", - "CACertificateID": variables.get("ssl_cl"), - } - - try: - resp = client.ucloudstack().create_vs(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VSID"] = utest.value_at_path(resp, "VSID") - return resp - - -@scenario.api( - title="添加服务节点", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateRSResponse"), - ], - action="CreateRS", -) -def create_rs_16(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Weight": 1, - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "Port": 189, - "LBID": variables.get("LBID"), - "BindResourceID": variables.get("VMID"), - } - - try: - resp = client.ucloudstack().create_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["RSID"] = utest.value_at_path(resp, "RSID") - return resp - - -@scenario.api( - title="获取服务节点信息", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeRSResponse"), - ], - action="DescribeRS", -) -def describe_rs_17(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().describe_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="修改负载均衡VServer", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateVSResponse"), - ], - action="UpdateVS", -) -def update_vs_18(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Scheduler": "ip_hash", - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().update_vs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="移除服务节点", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteRSResponse"), - ], - action="DeleteRS", -) -def delete_rs_19(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "RSID": variables.get("RSID"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_rs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除VServer", - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteVSResponse"), - ], - action="DeleteVS", -) -def delete_vs_20(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VSID": variables.get("VSID"), - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_vs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="查询操作日志", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeOPLogsResponse"), - ], - action="DescribeOPLogs", -) -def describe_op_logs_21(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "ResourceType": "lb", - "ResourceID": variables.get("LBID"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "IsSuccess": 1, - "EndTime": variables.get("EndTime"), - "BeginTime": variables.get("BeginTime"), - } - - try: - resp = client.ucloudstack().describe_op_logs(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除负载均衡", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteLBResponse"), - ], - action="DeleteLB", -) -def delete_lb_22(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "LBID": variables.get("LBID"), - } - - try: - resp = client.ucloudstack().delete_lb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除证书", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteCertificateResponse"), - ], - action="DeleteCertificate", -) -def delete_certificate_23(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "CertificateID": variables.get("CertificateID_server"), - } - - try: - resp = client.ucloudstack().delete_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除证书", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteCertificateResponse"), - ], - action="DeleteCertificate", -) -def delete_certificate_24(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "CertificateID": variables.get("CertificateID_client"), - } - - try: - resp = client.ucloudstack().delete_certificate(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="断电虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "PoweroffVMInstanceResponse"), - ], - action="PoweroffVMInstance", -) -def poweroff_vm_instance_25(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().poweroff_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="断电虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "PoweroffVMInstanceResponse"), - ], - action="PoweroffVMInstance", -) -def poweroff_vm_instance_26(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID_1"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().poweroff_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteVMInstanceResponse"), - ], - action="DeleteVMInstance", -) -def delete_vm_instance_27(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().delete_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.api( - title="删除虚拟机", - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteVMInstanceResponse"), - ], - action="DeleteVMInstance", -) -def delete_vm_instance_28(step, client): - variables = step.store - - d = { - "Zone": variables.get("Zone"), - "VMID": variables.get("VMID_1"), - "Region": variables.get("Region"), - } - - try: - resp = client.ucloudstack().delete_vm_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/conftest.py b/tests/test_services/conftest.py deleted file mode 100644 index 2afd45a9..00000000 --- a/tests/test_services/conftest.py +++ /dev/null @@ -1,27 +0,0 @@ -import os -import pytest - -from ucloud.client import Client - - -@pytest.fixture(scope="session", autouse=True, name="client") -def client_factory() -> Client: - return Client( - { - "region": "cn-bj2", - "project_id": os.getenv("UCLOUD_PROJECT_ID"), - "public_key": os.getenv("UCLOUD_PUBLIC_KEY"), - "private_key": os.getenv("UCLOUD_PRIVATE_KEY"), - "max_retries": 10, - "timeout": 60, - } - ) - - -@pytest.fixture(scope="module", autouse=True, name="variables") -def variables_factory() -> dict: - return { - "Region": "cn-bj2", - "Zone": "cn-bj2-05", - "ProjectId": os.getenv("UCLOUD_PROJECT_ID"), - } diff --git a/tests/test_services/test_set_113.py b/tests/test_services/test_set_113.py deleted file mode 100644 index 860bb8fa..00000000 --- a/tests/test_services/test_set_113.py +++ /dev/null @@ -1,225 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(113) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_113(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUFSVolume", -) -def create_ufs_volume_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1024, - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("CreateUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Volume_Id"] = utest.value_at_path(resp, "VolumeId") - variables["Volume_Name"] = utest.value_at_path(resp, "VolumeName") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUFSVolume", -) -def describe_ufs_volume_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VolumeId": variables.get("Volume_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUHostLite", -) -def describe_uhost_lite_02(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.invoke("DescribeUHostLite", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUFSVolume", -) -def describe_ufs_volume_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VolumeId": "Volume_Id", - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ClearUFSVolumeWhiteList", -) -def clear_ufs_volume_white_list_04(client: utest.Client, variables: dict): - d = { - "VolumeId": variables.get("Volume_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("ClearUFSVolumeWhiteList", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUFSVolume", -) -def describe_ufs_volume_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VolumeId": "Volume_Id", - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ExtendUFSVolume", -) -def extend_ufs_volume_06(client: utest.Client, variables: dict): - d = { - "VolumeId": variables.get("Volume_Id"), - "Size": 2048, - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("ExtendUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUFSVolume", -) -def describe_ufs_volume_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VolumeId": "Volume_Id", - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RemoveUFSVolume", -) -def remove_ufs_volume_08(client: utest.Client, variables: dict): - d = { - "VolumeId": variables.get("Volume_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("RemoveUFSVolume", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_1201.py b/tests/test_services/test_set_1201.py deleted file mode 100644 index a5ef8e68..00000000 --- a/tests/test_services/test_set_1201.py +++ /dev/null @@ -1,335 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(1201) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_1201(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["ConfigId"] = "03f58ca9-b64d-4bdd-abc7-c6b9a46fd801" - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWE=" - scenario.variables["HighAvailability"] = "disable" - scenario.variables["Version"] = 3.2 - scenario.variables["Protocol"] = "redis" - scenario.variables["ResourceType"] = "single" - scenario.variables["Name"] = "single_redis" - - scenario.run(client) - - -@scenario.step( - max_retries=60, - retry_interval=100, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateURedisGroup", -) -def create_uredis_group_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Version": variables.get("Version"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": variables.get("Protocol"), - "Name": variables.get("Name"), - "HighAvailability": variables.get("HighAvailability"), - "ConfigId": variables.get("ConfigId"), - "ChargeType": "Month", - "BackupTime": 3, - "AutoBackup": "enable", - } - - try: - resp = client.umem().create_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["group_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ModifyURedisGroupNameResponse"), - ], - action="ModifyURedisGroupName", -) -def modify_uredis_group_name_02(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Name": "Redis_Change", - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().modify_uredis_group_name(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeURedisGroup", -) -def resize_uredis_group_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().resize_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=60, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyURedisGroupPassword", -) -def modify_uredis_group_password_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": variables.get("ResourceType"), - "Region": variables.get("Region"), - "Password": variables.get("Password"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.invoke("ModifyURedisGroupPassword", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckURedisAllowanceResponse"), - ], - action="CheckURedisAllowance", -) -def check_uredis_allowance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SlaveZone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Count": 1, - } - - try: - resp = client.invoke("CheckURedisAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=15, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteURedisGroupResponse"), - ], - action="DeleteURedisGroup", -) -def delete_uredis_group_09(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().delete_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeURedisGroupResponse"), - ("object_not_contains", "DataSet", variables.get("group_id")), - ], - action="DescribeURedisGroup", -) -def describe_uredis_group_10(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().describe_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_1202.py b/tests/test_services/test_set_1202.py deleted file mode 100644 index 575905ba..00000000 --- a/tests/test_services/test_set_1202.py +++ /dev/null @@ -1,184 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(1202) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_1202(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Protocol"] = "memcache" - scenario.variables["ResourceType"] = "distributed" - scenario.variables["Name"] = "distributed_memcache" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUMemSpace", -) -def create_umem_space_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 8, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": variables.get("Protocol"), - "Name": variables.get("Name"), - "ChargeType": "Month", - } - - try: - resp = client.umem().create_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Space_Id"] = utest.value_at_path(resp, "SpaceId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_01(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUMemSpace", -) -def resize_umem_space_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Size": 14, - "Region": variables.get("Region"), - } - - try: - resp = client.umem().resize_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_03(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUMem", -) -def delete_umem_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DeleteUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUMemSpaceResponse"), - ("object_not_contains", "DataSet", variables.get("Space_Id")), - ], - action="DescribeUMemSpace", -) -def describe_umem_space_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.umem().describe_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_1203.py b/tests/test_services/test_set_1203.py deleted file mode 100644 index 52e4486d..00000000 --- a/tests/test_services/test_set_1203.py +++ /dev/null @@ -1,295 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(1203) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_1203(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Protocol"] = "redis" - scenario.variables["Type"] = "double" - scenario.variables["Name"] = "distributed_redis" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUMemSpaceAllowanceResponse"), - ], - action="CheckUMemSpaceAllowance", -) -def check_umem_space_allowance_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 16, - "Region": variables.get("Region"), - "Count": 1, - } - - try: - resp = client.invoke("CheckUMemSpaceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUMemSpace", -) -def create_umem_space_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Type": variables.get("Type"), - "Size": 16, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": variables.get("Protocol"), - "Name": variables.get("Name"), - "ChargeType": "Month", - } - - try: - resp = client.umem().create_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Space_Id"] = utest.value_at_path(resp, "SpaceId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_02(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ModifyUMemSpaceNameResponse"), - ], - action="ModifyUMemSpaceName", -) -def modify_umem_space_name_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Name": "Rename_FBS", - } - - try: - resp = client.umem().modify_umem_space_name(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_04(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUMemSpaceStateResponse"), - ], - action="GetUMemSpaceState", -) -def get_umem_space_state_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.umem().get_umem_space_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUMemSpace", -) -def resize_umem_space_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Size": 17, - "Region": variables.get("Region"), - } - - try: - resp = client.umem().resize_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=40, - retry_interval=10, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_07(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUMemSpaceResponse"), - ], - action="DeleteUMemSpace", -) -def delete_umem_space_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.umem().delete_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUMemResponse"), - ("object_not_contains", "DataSet", variables.get("Space_Id")), - ], - action="DescribeUMem", -) -def describe_umem_09(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_179.py b/tests/test_services/test_set_179.py deleted file mode 100644 index 3cf26cf8..00000000 --- a/tests/test_services/test_set_179.py +++ /dev/null @@ -1,441 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(179) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_179(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "mongodb-3.2" - scenario.variables["InstanceMode"] = "Normal" - scenario.variables["InstanceType"] = "Normal" - scenario.variables["Port"] = 27017 - scenario.variables["MemoryLimit"] = 600 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "AUTO-" - scenario.variables["UseSSD"] = False - scenario.variables["GroupName"] = "mongodb3.2默认WiredTiger-configsvr配置" - scenario.variables["GroupNameMongos"] = "mongodb3.2默认mongos配置" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBParamGroupResponse"), - ], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 1, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "GroupName", - variables.get("GroupName"), - "GroupId", - ), - "Name": "auto-config3.2", - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": "Normal", - "InstanceMode": "Configsvr", - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminUser": "root", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["configid"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=500, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("configid"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUDBRouteInstanceResponse"), - ], - action="CreateUDBRouteInstance", -) -def create_udb_route_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "GroupName", - variables.get("GroupNameMongos"), - "GroupId", - ), - "Name": "mongos-auto", - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ConfigsvrId": [variables.get("configid")], - } - - try: - resp = client.udb().create_udb_route_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyUDBInstanceName", -) -def modify_udb_instance_name_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Name": "Rename-auto-data3.0", - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().modify_udb_instance_name(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=180, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RestartUDBInstance", -) -def restart_udb_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().restart_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="BackupUDBInstanceErrorLog", -) -def backup_udb_instance_error_log_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "BackupName": "errorlog-test", - } - - try: - resp = client.udb().backup_udb_instance_error_log(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBLogPackage", -) -def describe_udb_log_package_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Type": 4, - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_log_package(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["backupidlog"] = utest.value_at_path(resp, "DataSet.0.BackupId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - action="DescribeUDBBinlogBackupURL", -) -def describe_udb_binlog_backup_url_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "BackupId": variables.get("backupidlog"), - } - - try: - resp = client.udb().describe_udb_binlog_backup_url(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBLogPackage", -) -def delete_udb_log_package_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "BackupId": variables.get("backupidlog"), - } - - try: - resp = client.udb().delete_udb_log_package(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ClearUDBLog", -) -def clear_udb_log_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "LogType": 30, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().clear_udb_log(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("configid"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=90, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=90, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("configid"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_181.py b/tests/test_services/test_set_181.py deleted file mode 100644 index ee4535fb..00000000 --- a/tests/test_services/test_set_181.py +++ /dev/null @@ -1,269 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(181) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_181(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "mongodb-3.0" - scenario.variables["InstanceMode"] = "Normal" - scenario.variables["InstanceType"] = "Normal" - scenario.variables["Port"] = 27017 - scenario.variables["MemoryLimit"] = 600 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "AUTO" - scenario.variables["UseSSD"] = False - scenario.variables["GroupName"] = "mongodb3.0默认MMAPv1-shardsvr配置" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBParamGroupResponse"), - ], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": True, - "Region": variables.get("Region"), - "MemoryLimit": 6000, - "DiskSpace": 200, - "Count": 1, - "ClassType": "sql", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 1, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "GroupName", - variables.get("GroupName"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminUser": "root", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBReplicationInstance", -) -def create_udb_replication_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SrcId": variables.get("DBId"), - "Region": variables.get("Region"), - "Port": variables.get("Port"), - "Name": "second-auto", - } - - try: - resp = client.udb().create_udb_replication_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["secondid"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("secondid"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("secondid"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_207.py b/tests/test_services/test_set_207.py deleted file mode 100644 index d3d9620a..00000000 --- a/tests/test_services/test_set_207.py +++ /dev/null @@ -1,614 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(207) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_207(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "percona-5.7" - scenario.variables["InstanceMode"] = "Normal" - scenario.variables["InstanceType"] = "Normal" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_ptbz_" - scenario.variables["UseSSD"] = False - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VirtualIP"] = utest.value_at_path(resp, "DataSet.0.VirtualIP") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstanceUpgradePrice", -) -def describe_udb_instance_upgrade_price_08( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ResizeUDBInstanceResponse"), - ], - action="ResizeUDBInstance", -) -def resize_udb_instance_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "StartAfterUpgrade": True, - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().resize_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Running"), - ("str_eq", "DataSet.0.MemoryLimit", variables.get("MemoryLimit") + 1), - ("str_eq", "DataSet.0.DiskSpace", variables.get("DiskSpace") + 10), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUDBInstanceToHAAllowanceResponse"), - ("str_eq", "Allowance", "Yes"), - ], - action="CheckUDBInstanceToHAAllowance", -) -def check_udb_instance_to_ha_allowance_12( - client: utest.Client, variables: dict -): - d = {"Region": variables.get("Region"), "DBId": variables.get("DBId")} - - try: - resp = client.udb().check_udb_instance_to_ha_allowance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribePromoteToHAPriceResponse"), - ], - action="DescribePromoteToHAPrice", -) -def describe_promote_to_ha_price_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.invoke("DescribePromoteToHAPrice", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "PromoteUDBInstanceToHAResponse"), - ], - action="PromoteUDBInstanceToHA", -) -def promote_udb_instance_to_ha_14(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "DBId": variables.get("DBId")} - - try: - resp = client.udb().promote_udb_instance_to_ha(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceStateResponse"), - ("str_eq", "State", "WaitForSwitch"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "SwitchUDBInstanceToHAResponse"), - ], - action="SwitchUDBInstanceToHA", -) -def switch_udb_instance_to_ha_16(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "DBId": variables.get("DBId")} - - try: - resp = client.udb().switch_udb_instance_to_ha(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["HADBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.VirtualIP", variables.get("VirtualIP")), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("HADBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HADBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=6, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("HADBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUDBInstanceResponse"), - ], - action="DeleteUDBInstance", -) -def delete_udb_instance_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HADBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_2117.py b/tests/test_services/test_set_2117.py deleted file mode 100644 index b8412686..00000000 --- a/tests/test_services/test_set_2117.py +++ /dev/null @@ -1,296 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(2117) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_2117(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["ResourceType"] = "single" - scenario.variables["ConfigId"] = "9a891891-c245-4b66-bce8-67e59430d67c" - scenario.variables["Name"] = "single_memcache" - scenario.variables["Protocol"] = "memcache" - scenario.variables["Count"] = 1 - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUMemcacheGroupResponse"), - ], - action="CreateUMemcacheGroup", -) -def create_umem_cache_group_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "Name": variables.get("Name"), - "ConfigId": variables.get("ConfigId"), - "ChargeType": "Month", - } - - try: - resp = client.umem().create_umem_cache_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["group_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUMemcacheAllowanceResponse"), - ], - action="CheckUMemcacheAllowance", -) -def check_umem_cache_allowance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Count": variables.get("Count"), - } - - try: - resp = client.invoke("CheckUMemcacheAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_02(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=100, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUMemcacheGroupResponse"), - ], - action="DescribeUMemcacheGroup", -) -def describe_umem_cache_group_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().describe_umem_cache_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUMemcacheGroup", -) -def resize_umem_cache_group_04(client: utest.Client, variables: dict): - d = { - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.invoke("ResizeUMemcacheGroup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_05(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RestartUMemcacheGroup", -) -def restart_umem_cache_group_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().restart_umem_cache_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_07(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUMemcacheGroupResponse"), - ], - action="DeleteUMemcacheGroup", -) -def delete_umem_cache_group_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().delete_umem_cache_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUMemResponse"), - ("object_not_contains", "DataSet", variables.get("group_id")), - ], - action="DescribeUMem", -) -def describe_umem_09(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_2174.py b/tests/test_services/test_set_2174.py deleted file mode 100644 index 5a8f67cb..00000000 --- a/tests/test_services/test_set_2174.py +++ /dev/null @@ -1,328 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(2174) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_2174(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["ConfigId"] = "03f58ca9-b64d-4bdd-abc7-c6b9a46fd801" - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWE=" - scenario.variables["HighAvailability"] = "disable" - scenario.variables["Version"] = 3.2 - scenario.variables["Protocol"] = "redis" - scenario.variables["ResourceType"] = "single" - scenario.variables["Name"] = "single_redis" - - scenario.run(client) - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateURedisGroup", -) -def create_uredis_group_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Version": variables.get("Version"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": variables.get("Protocol"), - "Name": variables.get("Name"), - "HighAvailability": variables.get("HighAvailability"), - "ConfigId": variables.get("ConfigId"), - "ChargeType": "Month", - "BackupTime": 3, - "AutoBackup": "enable", - } - - try: - resp = client.umem().create_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["group_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_01(client: utest.Client, variables: dict): - d = { - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckURedisAllowanceResponse"), - ], - action="CheckURedisAllowance", -) -def check_uredis_allowance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SlaveZone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Count": 1, - } - - try: - resp = client.invoke("CheckURedisAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateURedisBackupResponse"), - ], - action="CreateURedisBackup", -) -def create_uredis_backup_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - "BackupName": "backup_Redis", - } - - try: - resp = client.invoke("CreateURedisBackup", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["backup_id"] = utest.value_at_path(resp, "BackupId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_04(client: utest.Client, variables: dict): - d = { - "ResourceType": variables.get("ResourceType"), - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": variables.get("Protocol"), - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeURedisBackupStateResponse"), - ], - action="DescribeURedisBackupState", -) -def describe_uredis_backup_state_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - "BackupId": variables.get("backup_id"), - } - - try: - resp = client.invoke("DescribeURedisBackupState", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeURedisBackupResponse"), - ], - action="DescribeURedisBackup", -) -def describe_uredis_backup_06(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region")} - - try: - resp = client.umem().describe_uredis_backup(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeURedisBackupURLResponse"), - ], - action="DescribeURedisBackupURL", -) -def describe_uredis_backup_url_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "BackupId": variables.get("backup_id"), - } - - try: - resp = client.umem().describe_uredis_backup_url(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteURedisBackupResponse"), - ], - action="DeleteURedisBackup", -) -def delete_uredis_backup_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "BackupId": variables.get("backup_id"), - } - - try: - resp = client.invoke("DeleteURedisBackup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=15, - retry_interval=5, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteURedisGroupResponse"), - ], - action="DeleteURedisGroup", -) -def delete_uredis_group_09(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().delete_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeURedisGroupResponse"), - ("object_not_contains", "DataSet", variables.get("group_id")), - ], - action="DescribeURedisGroup", -) -def describe_uredis_group_10(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().describe_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_227.py b/tests/test_services/test_set_227.py deleted file mode 100644 index bbfa9304..00000000 --- a/tests/test_services/test_set_227.py +++ /dev/null @@ -1,218 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(227) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_227(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.run(client) - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateULB", -) -def create_ulb_00(client: utest.Client, variables: dict): - d = { - "ULBName": "测试", - "Tag": "Default", - "Region": variables.get("Region"), - "OuterMode": "Yes", - "InnerMode": "No", - } - - try: - resp = client.ulb().create_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ULBId_outer"] = utest.value_at_path(resp, "ULBId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 4107)], - action="CreateVServer", -) -def create_vserver_01(client: utest.Client, variables: dict): - d = { - "VServerName": "vserver-http", - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - "Protocol": "HTTP", - "PersistenceType": "ServerInsert", - "Method": "Roundrobin", - "ListenType": "RequestProxy", - "FrontendPort": 80, - } - - try: - resp = client.ulb().create_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeVServer", -) -def describe_vserver_02(client: utest.Client, variables: dict): - d = { - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().describe_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 4107)], - action="CreateVServer", -) -def create_vserver_03(client: utest.Client, variables: dict): - d = { - "VServerName": "vserver-https", - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - "Protocol": "HTTPS", - "PersistenceType": "UserDefined", - "PersistenceInfo": "huangchao", - "Method": "Source", - "ListenType": "RequestProxy", - "FrontendPort": 443, - "ClientTimeout": 60, - } - - try: - resp = client.ulb().create_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeVServer", -) -def describe_vserver_04(client: utest.Client, variables: dict): - d = { - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().describe_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 4107)], - action="CreateVServer", -) -def create_vserver_05(client: utest.Client, variables: dict): - d = { - "VServerName": "vserver-https", - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - "Protocol": "TCP", - "PersistenceType": "None", - "Method": "Source", - "ListenType": "RequestProxy", - "FrontendPort": 1024, - } - - try: - resp = client.ulb().create_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeVServer", -) -def describe_vserver_06(client: utest.Client, variables: dict): - d = { - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().describe_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=10, - fast_fail=False, - action="DeleteULB", -) -def delete_ulb_07(client: utest.Client, variables: dict): - d = { - "ULBId": variables.get("ULBId_outer"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().delete_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_230.py b/tests/test_services/test_set_230.py deleted file mode 100644 index da04a88c..00000000 --- a/tests/test_services/test_set_230.py +++ /dev/null @@ -1,356 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(230) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_230(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["sbw_name"] = "sbw_api_auto" - scenario.variables["sbw_chargetype"] = "Month" - scenario.variables["sbw_bw"] = 20 - scenario.variables["resize_bw"] = 22 - scenario.variables["Region"] = "cn-bj2" - scenario.variables["eip_operatorname"] = "Bgp" - scenario.variables["eip_bw"] = 2 - - scenario.run(client) - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AllocateShareBandwidth", -) -def allocate_share_bandwidth_00(client: utest.Client, variables: dict): - d = { - "ShareBandwidth": variables.get("sbw_bw"), - "Region": variables.get("Region"), - "Name": variables.get("sbw_name"), - "ChargeType": variables.get("sbw_chargetype"), - } - - try: - resp = client.unet().allocate_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["sbw_id"] = utest.value_at_path(resp, "ShareBandwidthId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AllocateEIP", -) -def allocate_eip_01(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "PayMode": "Traffic", - "OperatorName": variables.get("eip_operatorname"), - "Name": "eip_auto", - "ChargeType": "Month", - "Bandwidth": variables.get("eip_bw"), - } - - try: - resp = client.unet().allocate_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["eip_id"] = utest.value_at_path(resp, "EIPSet.0.EIPId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AssociateEIPWithShareBandwidth", -) -def associate_eip_with_share_bandwidth_02( - client: utest.Client, variables: dict -): - d = { - "ShareBandwidthId": variables.get("sbw_id"), - "Region": variables.get("Region"), - "EIPIds": [variables.get("eip_id")], - } - - try: - resp = client.unet().associate_eip_with_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("gt", "TotalPrice", 0), - ], - action="DescribeShareBandwidthPrice", -) -def describe_share_bandwidth_price_03(client: utest.Client, variables: dict): - d = { - "ShareBandwidth": variables.get("sbw_bw"), - "Region": variables.get("Region"), - "Quantity": 1, - "ChargeType": variables.get("sbw_chargetype"), - } - - try: - resp = client.invoke("DescribeShareBandwidthPrice", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.ShareBandwidthId", variables.get("sbw_id")), - ("str_eq", "DataSet.0.ShareBandwidth", variables.get("sbw_bw")), - ("str_eq", "DataSet.0.ChargeType", variables.get("sbw_chargetype")), - ("str_eq", "DataSet.0.Name", variables.get("sbw_name")), - ("str_eq", "TotalCount", 1), - ("str_eq", "DataSet.0.EIPSet.0.EIPId", variables.get("eip_id")), - ], - action="DescribeShareBandwidth", -) -def describe_share_bandwidth_04(client: utest.Client, variables: dict): - d = { - "ShareBandwidthIds": [variables.get("sbw_id")], - "Region": variables.get("Region"), - } - - try: - resp = client.unet().describe_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeShareBandwidth", -) -def resize_share_bandwidth_05(client: utest.Client, variables: dict): - d = { - "ShareBandwidthId": variables.get("sbw_id"), - "ShareBandwidth": variables.get("resize_bw"), - "Region": variables.get("Region"), - } - - try: - resp = client.unet().resize_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.ShareBandwidth", variables.get("resize_bw")), - ], - action="DescribeShareBandwidth", -) -def describe_share_bandwidth_06(client: utest.Client, variables: dict): - d = { - "ShareBandwidthIds": [variables.get("sbw_id")], - "Region": variables.get("Region"), - } - - try: - resp = client.unet().describe_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "EIPSet.0.BandwidthType", 1), - ("str_eq", "EIPSet.0.PayMode", "ShareBandwidth"), - ], - action="DescribeEIP", -) -def describe_eip_07(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "EIPIds": [variables.get("eip_id")], - } - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DisassociateEIPWithShareBandwidth", -) -def disassociate_eip_with_share_bandwidth_08( - client: utest.Client, variables: dict -): - d = { - "ShareBandwidthId": variables.get("sbw_id"), - "Region": variables.get("Region"), - "EIPIds": [variables.get("eip_id")], - "Bandwidth": variables.get("eip_bw"), - } - - try: - resp = client.unet().disassociate_eip_with_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "EIPSet.0.BandwidthType", 0), - ("str_eq", "EIPSet.0.PayMode", "Bandwidth"), - ], - action="DescribeEIP", -) -def describe_eip_09(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "EIPIds": [variables.get("eip_id")], - } - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("gt", "Info.BwOutSum", 0), - ("gt", "Info.BwOutShareSum", 0), - ("gt", "Info.BwOutAll", 0), - ], - action="GetBandwidthSum", -) -def get_bandwidth_sum_10(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region")} - - try: - resp = client.invoke("GetBandwidthSum", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - action="ReleaseEIP", -) -def release_eip_11(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "EIPId": variables.get("eip_id")} - - try: - resp = client.unet().release_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ReleaseShareBandwidth", -) -def release_share_bandwidth_12(client: utest.Client, variables: dict): - d = { - "ShareBandwidthId": variables.get("sbw_id"), - "Region": variables.get("Region"), - "EIPBandwidth": 2, - } - - try: - resp = client.unet().release_share_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_242.py b/tests/test_services/test_set_242.py deleted file mode 100644 index d9e2b01d..00000000 --- a/tests/test_services/test_set_242.py +++ /dev/null @@ -1,318 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(242) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_242(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeURedisPrice", -) -def describe_uredis_price_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.umem().describe_uredis_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["GetPrice"] = utest.value_at_path(resp, "DataSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateURedisGroup", -) -def create_uredis_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": "redis", - "Name": "Redis_zb", - "HighAvailability": "disable", - "ChargeType": "Month", - } - - try: - resp = client.umem().create_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["group_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUMem", -) -def describe_umem_02(client: utest.Client, variables: dict): - d = { - "ResourceType": "single", - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": "redis", - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["CreateTime"] = utest.value_at_path(resp, "DataSet.0.CreateTime") - return resp - - -@scenario.step( - max_retries=5, - retry_interval=1, - startup_delay=100, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("float_eq", "OrderInfos.0.Amount", variables.get("GetPrice") / 100), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_03(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_BUY"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeURedisUpgradePrice", -) -def describe_uredis_upgrade_price_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().describe_uredis_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UpgradePrice"] = utest.value_at_path(resp, "Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeURedisGroup", -) -def resize_uredis_group_05(client: utest.Client, variables: dict): - d = { - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().resize_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=1, - startup_delay=100, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "lt", - "OrderInfos.0.Amount", - variables.get("UpgradePrice") / 100 + 0.1, - ), - ( - "gt", - "OrderInfos.0.Amount", - variables.get("UpgradePrice") / 100 - 0.1, - ), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_06(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_UPGRADE"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GetResourceRenewPrice", -) -def get_resource_renew_price_07(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("GetResourceRenewPrice", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ReNewPrice"] = utest.value_at_path(resp, "RenewPriceSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateRenew", -) -def create_renew_08(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("CreateRenew", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "OrderInfos.0.Amount", variables.get("ReNewPrice")) - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_09(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_RENEW"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - action="DeleteURedisGroup", -) -def delete_uredis_group_10(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().delete_uredis_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_245.py b/tests/test_services/test_set_245.py deleted file mode 100644 index 7753d1d2..00000000 --- a/tests/test_services/test_set_245.py +++ /dev/null @@ -1,321 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(245) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_245(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUMemSpace", -) -def create_umem_space_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Type": "double", - "Size": 16, - "Region": variables.get("Region"), - "Quantity": 1, - "Protocol": "redis", - "Name": "Redis_fbs", - "ChargeType": "Month", - } - - try: - resp = client.umem().create_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Space_Id"] = utest.value_at_path(resp, "SpaceId") - return resp - - -@scenario.step( - max_retries=20, - retry_interval=10, - startup_delay=50, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMem", -) -def describe_umem_01(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - "Protocol": "redis", - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["CreateTime"] = utest.value_at_path(resp, "DataSet.0.CreateTime") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMemPrice", -) -def describe_umem_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Type": "double", - "Size": 16, - "Region": variables.get("Region"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.umem().describe_umem_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["GetPrice"] = utest.value_at_path(resp, "DataSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("le", "OrderInfos.0.Amount", variables.get("GetPrice") / 100 + 0.6), - ("gt", "OrderInfos.0.Amount", variables.get("GetPrice") / 100 - 0.6), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_03(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("Space_Id")], - "QueryAll": True, - "OrderTypes": ["OT_BUY"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMemUpgradePrice", -) -def describe_umem_upgrade_price_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Type": "double", - "SpaceId": variables.get("Space_Id"), - "Size": 18, - "Region": variables.get("Region"), - } - - try: - resp = client.umem().describe_umem_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UpgradePrice"] = utest.value_at_path(resp, "Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUMemSpace", -) -def resize_umem_space_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Size": 18, - "Region": variables.get("Region"), - } - - try: - resp = client.umem().resize_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "lt", - "OrderInfos.0.Amount", - variables.get("UpgradePrice") / 100 + 0.1, - ), - ( - "gt", - "OrderInfos.0.Amount", - variables.get("UpgradePrice") / 100 - 0.1, - ), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_06(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("Space_Id")], - "QueryAll": True, - "OrderTypes": ["OT_UPGRADE"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GetResourceRenewPrice", -) -def get_resource_renew_price_07(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("Space_Id")], - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("GetResourceRenewPrice", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ReNewPrice"] = utest.value_at_path(resp, "RenewPriceSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateRenew", -) -def create_renew_08(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("Space_Id"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("CreateRenew", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "OrderInfos.0.Amount", variables.get("ReNewPrice")), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_09(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("Space_Id")], - "QueryAll": True, - "OrderTypes": ["OT_RENEW"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - action="DeleteUMemSpace", -) -def delete_umem_space_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SpaceId": variables.get("Space_Id"), - "Region": variables.get("Region"), - } - - try: - resp = client.umem().delete_umem_space(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_2457.py b/tests/test_services/test_set_2457.py deleted file mode 100644 index 172e2d03..00000000 --- a/tests/test_services/test_set_2457.py +++ /dev/null @@ -1,422 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(2457) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_2457(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateVPC", -) -def create_vpc_00(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "Network": ["192.168.0.0/16"], - "Name": "ulb-ssl-vpc", - } - - try: - resp = client.vpc().create_vpc(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["vpc_id"] = utest.value_at_path(resp, "VPCId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateSubnet", -) -def create_subnet_01(client: utest.Client, variables: dict): - d = { - "VPCId": variables.get("vpc_id"), - "SubnetName": "ulb-ssl-subnet", - "Subnet": "192.168.111.0", - "Region": variables.get("Region"), - } - - try: - resp = client.vpc().create_subnet(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["subnet_id"] = utest.value_at_path(resp, "SubnetId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateULB", -) -def create_ulb_02(client: utest.Client, variables: dict): - d = { - "VPCId": variables.get("vpc_id"), - "ULBName": "ulb-ssl-test", - "Tag": "Default", - "SubnetId": variables.get("subnet_id"), - "Region": variables.get("Region"), - "InnerMode": "No", - "ChargeType": "Dynamic", - } - - try: - resp = client.ulb().create_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ULBId"] = utest.value_at_path(resp, "ULBId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateVServer", -) -def create_vserver_03(client: utest.Client, variables: dict): - d = { - "VServerName": "vserver-test", - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - "Protocol": "HTTPS", - "PersistenceType": "UserDefined", - "PersistenceInfo": "huangchao", - "Method": "Roundrobin", - "ListenType": "RequestProxy", - "FrontendPort": 443, - "ClientTimeout": 60, - } - - try: - resp = client.ulb().create_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VServerId"] = utest.value_at_path(resp, "VServerId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateSSL", -) -def create_ssl_04(client: utest.Client, variables: dict): - d = { - "UserCert": "-----BEGIN CERTIFICATE-----\nMIIFzTCCBLWgAwIBAgIQQ8IswmAhEIKfNhrKqb0F3DANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs\nIEluYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsT\nFERvbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NM\nIENBIC0gRzUwHhcNMTYxMjA2MDAwMDAwWhcNMTcxMjA2MjM1OTU5WjAgMR4wHAYD\nVQQDDBVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDxBsuwGdCZdEUs40SQcvUt+9hlmLTgcfkq/h9f1QVPxLq/PC+O\nsG76hOgy6N8f7k7x5XgtPKi9O4ydFl8ViYhEXRjYQcUrTm3lu7s9UT2AIUmK0dI+\nPZgFU5gDwh8fQLoL24T2lPfkD9TngCnDanfo3xbx/e9hsJkf7hKWix8zrxtYYCUT\nt96pTpQeWjr7ggl2bDEfTayJNM+i5xoGBPiQFdxPnKWCjNmXi2dws0d2whi1euRW\ngI5wIXji5WKfUf6EvzG0Uzz6i8vsSLGv8pL7C0AuUI4MrPNDesFeA2LEYclQkpHE\nE49BkpQvCokCW9d8/r5ASUry+7SrJIncU6FxAgMBAAGjggKJMIIChTAgBgNVHREE\nGTAXghVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wCQYDVR0TBAIwADBhBgNVHSAEWjBY\nMFYGBmeBDAECATBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2Nw\nczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSME\nGDAWgBRtWMd/GufhPy6mjJc1Qrv00zisPzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l\nBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGbBggrBgEFBQcBAQSBjjCBizA8Bggr\nBgEFBQcwAYYwaHR0cDovL3RydXN0YXNpYTItb2NzcC5kaWdpdGFsY2VydHZhbGlk\nYXRpb24uY29tMEsGCCsGAQUFBzAChj9odHRwOi8vdHJ1c3Rhc2lhMi1haWEuZGln\naXRhbGNlcnR2YWxpZGF0aW9uLmNvbS90cnVzdGFzaWFnNS5jcnQwggEDBgorBgEE\nAdZ5AgQCBIH0BIHxAO8AdQDd6x0reg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+\nzAAAAVjT7zdSAAAEAwBGMEQCIDCzWufc1q7hjmrrCetGyoA8EsEqpRSIhmZXStX5\n8b7zAiA6x5aAaDK+yMyeAgw71yi3tRVrWayHN+W0+4BxC8u5UQB2AO5Lvbd1zmC6\n4UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNPvN4kAAAQDAEcwRQIgZ/LNgg7n\n7AE4O2yZkrXNcqAOmJ3NU2nT6zcnBxPFTTsCIQCjyPbMfWMZTD3kxgxPQ1COw5zJ\nsM0dfNmSr3MiU7EhqDANBgkqhkiG9w0BAQsFAAOCAQEAeyfgUhg9ZWVCaz0f+BQU\n6fMMfmQ1BDzvVFu+ORoAqyJQogxwIdfjrlz/63YFee5qpUsW/aaz4ma3bb4dpE1K\nGsgYe5N3o0xybYlOj+KB61sufYkzQS3HgDevCwjfUlGEbNl4dpO2xh5s5AANXlnz\ns/X0+AJ33/bm+fWIjAbIjluaEoM6GETHTXi4Tlxy0j3nsXsB9tIIUibAdTtButef\nJJRnikGRN+eHjrsLYe0RUmdKOQz1ik6teHt0MQX0aCe8OlXeyGDd9m8u7+y0nAnH\nTVaNuT7vXMWyyXLVUcV898wkBo3Bo3hUiaw0QR0ttgDrf5ZwqPfqpytRW2K5GMZT\nuw==\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFZTCCBE2gAwIBAgIQOhAOfxCeGsWcxf/2QNXkQjANBgkqhkiG9w0BAQsFADCB\nyjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\nExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\nU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\nZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\naG9yaXR5IC0gRzUwHhcNMTYwODExMDAwMDAwWhcNMjYwODEwMjM1OTU5WjCBlzEL\nMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIElu\nYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsTFERv\nbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NMIENB\nIC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39aSJZG/97x3a\n6Qmuc9+MubagegRAVUmFYHTYTs8IKB2pM7wXN7W8mekdZaEgUjDFxvRBK/DhTb7U\n8ONLsKKdT86aOhzbz2noCTn9wPWnGwkg+/4YKg/dPQQdV9tMsSu0cwqInWHxSAkm\nAI1hYFC9D7Sf7Hp/5cRcD+dK454YMRzNOGLQnCVI8JEqrz6o9SOvQNTqTcfqt6DC\n0UlXG+MPD1eNPjlzf1Vwaab+VSTgySoC+Ikbq2VsdykeOiGXW/OIiASH7+2LcR05\nPmQ7GEOlM8yzoVojFpM8sHz+WxI05ZOPri5+vX3HhHHjWr5432G0dVmgohnZvlVZ\noy8XrlbpAgMBAAGjggF2MIIBcjASBgNVHRMBAf8ECDAGAQH/AgEAMC8GA1UdHwQo\nMCYwJKAioCCGHmh0dHA6Ly9zLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8B\nAf8EBAMCAQYwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5z\neW1jZC5jb20wYQYDVR0gBFowWDBWBgZngQwBAgEwTDAjBggrBgEFBQcCARYXaHR0\ncHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5\nbWNiLmNvbS9ycGEwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCkGA1Ud\nEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTYwMTAdBgNVHQ4EFgQU\nbVjHfxrn4T8upoyXNUK79NM4rD8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6\nAq8zMTMwDQYJKoZIhvcNAQELBQADggEBABUphhBbeG7scE3EveIN0dOjXPgwgQi8\nI2ZAKYm6DawoGz1lEJVdvFmkyMbP973X80b7mKmn0nNbe1kjA4M0O0hHaMM1ZaEv\n7e9vHEAoGyysMO6HzPWYMkyNxcCV7Nos2Uv4RvLDpQHh7P4Kt6fUU13ipcynrtQD\n1lFUM0yoTzwwFsPu3Pk+94hL58ErqwqJQwxoHMgLIQeMVHeNKcWFy1bddSbIbCWU\nZs6cMxhrra062ZCpDCbxyEaFNGAtYQMqNz55Z/14XgSUONZ/cJTns6QKhpcgTOwB\nfnNzRnk+aWreP7osKhXlz4zs+llP7goBDKFOMMtoEXx3YjJCKgpqmBU=\n-----END CERTIFICATE-----", - "SSLName": "证书-1", - "Region": variables.get("Region"), - "PrivateKey": "abc", - "CaCert": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA8QbLsBnQmXRFLONEkHL1LfvYZZi04HH5Kv4fX9UFT8S6vzwv\njrBu+oToMujfH+5O8eV4LTyovTuMnRZfFYmIRF0Y2EHFK05t5bu7PVE9gCFJitHS\nPj2YBVOYA8IfH0C6C9uE9pT35A/U54Apw2p36N8W8f3vYbCZH+4SlosfM68bWGAl\nE7feqU6UHlo6+4IJdmwxH02siTTPoucaBgT4kBXcT5ylgozZl4tncLNHdsIYtXrk\nVoCOcCF44uVin1H+hL8xtFM8+ovL7Eixr/KS+wtALlCODKzzQ3rBXgNixGHJUJKR\nxBOPQZKULwqJAlvXfP6+QElK8vu0qySJ3FOhcQIDAQABAoIBAAPvZnfzk/JNcauv\n8jihh9s+V2QhQCLB+Z14FK8N3U5WGe5xXx1nSAiTDu912d69l1BfvLyQVvjv9fXC\nnb7ORglHs9YkDMIOP8EWdZIkt2pWIMtBbbtSah78JGk7TCLIfcEfzmXwPLPehk1Z\nTFVCcb69lbRRvwzLQ1TAIFGQ5+uCEkW02KAl6kx+JnVpsE8/BjqZKG1Ne+sM6dOC\nGRd44hgiNHKUT3Xtbw6jttiUFDLKYMYtb7PpRAkZFM8tgnBV6dWWJ3xTYW9kOjPh\nXnScNARfphUZVibRhA04og5p1q/MUz9Sz9g2DURuSlo/MP3WZMbVRvZiUN1xhz5v\n2WhsddkCgYEA+gWPFo0TbVbZXUrx9J/ptI9NXNx5zjyUrv87MDt1pnmMDgWrsCEI\nRqQR4Lp2G11GA7IudiA/ipcZqgcRIIFvb+gu1kObox3BGGs59x+DqFeAPXt6dFG2\nW10f9k96/tcbdursurqwd3Zv3cqQqRTKgaP4xHFmexlcwGCF5YwewWMCgYEA9sos\n2acNINXwcNRUPnpg82DOrG9Zjr1aiNo9PDJmwGEdC9QMOUWM85dq0M9g388ttiLU\nWr/U4r5yDuqWJPcKtff2BaxSsZpcQ4Id9eddD9L+sxaBGyD23RtOC+IOlkG6WS4g\niUYulQvW69tBHWiwxQu7YMSIE2B3EuySPOQYlBsCgYEAxNwvqB/4lfT2PUDPdj+b\ncnILBf0LY1nL8GZCol2O6z91CW1pm8rGi2iQMxRd/nnYsPxRHO2TWnpS2M+rqp5/\nsettRYQCPdMlwSZcg7oqnhgXf1GEP6Y/IX0Xt4cpXxLcKywarYRlggqdVlMyyA74\nzE7hhzuK5442u7rEctN7O+UCgYAoM78ipafp1XAZsT0YAG+Stg504J7CNe5tpL+c\n8sjyRd+pcZ2cJsxTUjNAWMf7LZDQvtPBBMb1OPjznRtgYi4IfqBBRFUkQXUOOkAP\nMuViEokTO3NErBYK5svL+8NMjuCAbpc2RYyJEyiru0fcNpW1Q7f+h4VzQp+jIY6h\nBLdMSQKBgGauU7OQksZCEY2MVAcD5dShYYvWLxOkj4dVVwISN1M6ImCAHwXZ6Nak\n6YlzCGT+NbRJbB2cPfsrKXtAJVX15I3iDCKAoGkb+9kiHnPj7Q71KVuWQE6BQx7E\nvE88TSsshwtX1s+qU9UWUrMPodK32q5nO3p8N033NvS9wLNfbcdc\n-----END RSA PRIVATE KEY-----", - } - - try: - resp = client.ulb().create_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SSLId_01"] = utest.value_at_path(resp, "SSLId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateSSL", -) -def create_ssl_05(client: utest.Client, variables: dict): - d = { - "UserCert": "-----BEGIN CERTIFICATE-----\nMIIFzTCCBLWgAwIBAgIQQ8IswmAhEIKfNhrKqb0F3DANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs\nIEluYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsT\nFERvbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NM\nIENBIC0gRzUwHhcNMTYxMjA2MDAwMDAwWhcNMTcxMjA2MjM1OTU5WjAgMR4wHAYD\nVQQDDBVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDxBsuwGdCZdEUs40SQcvUt+9hlmLTgcfkq/h9f1QVPxLq/PC+O\nsG76hOgy6N8f7k7x5XgtPKi9O4ydFl8ViYhEXRjYQcUrTm3lu7s9UT2AIUmK0dI+\nPZgFU5gDwh8fQLoL24T2lPfkD9TngCnDanfo3xbx/e9hsJkf7hKWix8zrxtYYCUT\nt96pTpQeWjr7ggl2bDEfTayJNM+i5xoGBPiQFdxPnKWCjNmXi2dws0d2whi1euRW\ngI5wIXji5WKfUf6EvzG0Uzz6i8vsSLGv8pL7C0AuUI4MrPNDesFeA2LEYclQkpHE\nE49BkpQvCokCW9d8/r5ASUry+7SrJIncU6FxAgMBAAGjggKJMIIChTAgBgNVHREE\nGTAXghVtLmVjb2xvZ3ktZW1vYmlsZS5jb20wCQYDVR0TBAIwADBhBgNVHSAEWjBY\nMFYGBmeBDAECATBMMCMGCCsGAQUFBwIBFhdodHRwczovL2Quc3ltY2IuY29tL2Nw\nczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3ltY2IuY29tL3JwYTAfBgNVHSME\nGDAWgBRtWMd/GufhPy6mjJc1Qrv00zisPzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l\nBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMIGbBggrBgEFBQcBAQSBjjCBizA8Bggr\nBgEFBQcwAYYwaHR0cDovL3RydXN0YXNpYTItb2NzcC5kaWdpdGFsY2VydHZhbGlk\nYXRpb24uY29tMEsGCCsGAQUFBzAChj9odHRwOi8vdHJ1c3Rhc2lhMi1haWEuZGln\naXRhbGNlcnR2YWxpZGF0aW9uLmNvbS90cnVzdGFzaWFnNS5jcnQwggEDBgorBgEE\nAdZ5AgQCBIH0BIHxAO8AdQDd6x0reg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+\nzAAAAVjT7zdSAAAEAwBGMEQCIDCzWufc1q7hjmrrCetGyoA8EsEqpRSIhmZXStX5\n8b7zAiA6x5aAaDK+yMyeAgw71yi3tRVrWayHN+W0+4BxC8u5UQB2AO5Lvbd1zmC6\n4UJpH6vhnmajD35fsHLYgwDEe4l6qP3LAAABWNPvN4kAAAQDAEcwRQIgZ/LNgg7n\n7AE4O2yZkrXNcqAOmJ3NU2nT6zcnBxPFTTsCIQCjyPbMfWMZTD3kxgxPQ1COw5zJ\nsM0dfNmSr3MiU7EhqDANBgkqhkiG9w0BAQsFAAOCAQEAeyfgUhg9ZWVCaz0f+BQU\n6fMMfmQ1BDzvVFu+ORoAqyJQogxwIdfjrlz/63YFee5qpUsW/aaz4ma3bb4dpE1K\nGsgYe5N3o0xybYlOj+KB61sufYkzQS3HgDevCwjfUlGEbNl4dpO2xh5s5AANXlnz\ns/X0+AJ33/bm+fWIjAbIjluaEoM6GETHTXi4Tlxy0j3nsXsB9tIIUibAdTtButef\nJJRnikGRN+eHjrsLYe0RUmdKOQz1ik6teHt0MQX0aCe8OlXeyGDd9m8u7+y0nAnH\nTVaNuT7vXMWyyXLVUcV898wkBo3Bo3hUiaw0QR0ttgDrf5ZwqPfqpytRW2K5GMZT\nuw==\n-----END CERTIFICATE-----\n\n\n-----BEGIN CERTIFICATE-----\nMIIFZTCCBE2gAwIBAgIQOhAOfxCeGsWcxf/2QNXkQjANBgkqhkiG9w0BAQsFADCB\nyjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\nExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\nU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\nZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\naG9yaXR5IC0gRzUwHhcNMTYwODExMDAwMDAwWhcNMjYwODEwMjM1OTU5WjCBlzEL\nMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIElu\nYy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsTFERv\nbWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NMIENB\nIC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39aSJZG/97x3a\n6Qmuc9+MubagegRAVUmFYHTYTs8IKB2pM7wXN7W8mekdZaEgUjDFxvRBK/DhTb7U\n8ONLsKKdT86aOhzbz2noCTn9wPWnGwkg+/4YKg/dPQQdV9tMsSu0cwqInWHxSAkm\nAI1hYFC9D7Sf7Hp/5cRcD+dK454YMRzNOGLQnCVI8JEqrz6o9SOvQNTqTcfqt6DC\n0UlXG+MPD1eNPjlzf1Vwaab+VSTgySoC+Ikbq2VsdykeOiGXW/OIiASH7+2LcR05\nPmQ7GEOlM8yzoVojFpM8sHz+WxI05ZOPri5+vX3HhHHjWr5432G0dVmgohnZvlVZ\noy8XrlbpAgMBAAGjggF2MIIBcjASBgNVHRMBAf8ECDAGAQH/AgEAMC8GA1UdHwQo\nMCYwJKAioCCGHmh0dHA6Ly9zLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8B\nAf8EBAMCAQYwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5z\neW1jZC5jb20wYQYDVR0gBFowWDBWBgZngQwBAgEwTDAjBggrBgEFBQcCARYXaHR0\ncHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5\nbWNiLmNvbS9ycGEwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCkGA1Ud\nEQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTYwMTAdBgNVHQ4EFgQU\nbVjHfxrn4T8upoyXNUK79NM4rD8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6\nAq8zMTMwDQYJKoZIhvcNAQELBQADggEBABUphhBbeG7scE3EveIN0dOjXPgwgQi8\nI2ZAKYm6DawoGz1lEJVdvFmkyMbP973X80b7mKmn0nNbe1kjA4M0O0hHaMM1ZaEv\n7e9vHEAoGyysMO6HzPWYMkyNxcCV7Nos2Uv4RvLDpQHh7P4Kt6fUU13ipcynrtQD\n1lFUM0yoTzwwFsPu3Pk+94hL58ErqwqJQwxoHMgLIQeMVHeNKcWFy1bddSbIbCWU\nZs6cMxhrra062ZCpDCbxyEaFNGAtYQMqNz55Z/14XgSUONZ/cJTns6QKhpcgTOwB\nfnNzRnk+aWreP7osKhXlz4zs+llP7goBDKFOMMtoEXx3YjJCKgpqmBU=\n-----END CERTIFICATE-----", - "SSLName": "证书-2", - "Region": variables.get("Region"), - "PrivateKey": "abc", - "CaCert": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA8QbLsBnQmXRFLONEkHL1LfvYZZi04HH5Kv4fX9UFT8S6vzwv\njrBu+oToMujfH+5O8eV4LTyovTuMnRZfFYmIRF0Y2EHFK05t5bu7PVE9gCFJitHS\nPj2YBVOYA8IfH0C6C9uE9pT35A/U54Apw2p36N8W8f3vYbCZH+4SlosfM68bWGAl\nE7feqU6UHlo6+4IJdmwxH02siTTPoucaBgT4kBXcT5ylgozZl4tncLNHdsIYtXrk\nVoCOcCF44uVin1H+hL8xtFM8+ovL7Eixr/KS+wtALlCODKzzQ3rBXgNixGHJUJKR\nxBOPQZKULwqJAlvXfP6+QElK8vu0qySJ3FOhcQIDAQABAoIBAAPvZnfzk/JNcauv\n8jihh9s+V2QhQCLB+Z14FK8N3U5WGe5xXx1nSAiTDu912d69l1BfvLyQVvjv9fXC\nnb7ORglHs9YkDMIOP8EWdZIkt2pWIMtBbbtSah78JGk7TCLIfcEfzmXwPLPehk1Z\nTFVCcb69lbRRvwzLQ1TAIFGQ5+uCEkW02KAl6kx+JnVpsE8/BjqZKG1Ne+sM6dOC\nGRd44hgiNHKUT3Xtbw6jttiUFDLKYMYtb7PpRAkZFM8tgnBV6dWWJ3xTYW9kOjPh\nXnScNARfphUZVibRhA04og5p1q/MUz9Sz9g2DURuSlo/MP3WZMbVRvZiUN1xhz5v\n2WhsddkCgYEA+gWPFo0TbVbZXUrx9J/ptI9NXNx5zjyUrv87MDt1pnmMDgWrsCEI\nRqQR4Lp2G11GA7IudiA/ipcZqgcRIIFvb+gu1kObox3BGGs59x+DqFeAPXt6dFG2\nW10f9k96/tcbdursurqwd3Zv3cqQqRTKgaP4xHFmexlcwGCF5YwewWMCgYEA9sos\n2acNINXwcNRUPnpg82DOrG9Zjr1aiNo9PDJmwGEdC9QMOUWM85dq0M9g388ttiLU\nWr/U4r5yDuqWJPcKtff2BaxSsZpcQ4Id9eddD9L+sxaBGyD23RtOC+IOlkG6WS4g\niUYulQvW69tBHWiwxQu7YMSIE2B3EuySPOQYlBsCgYEAxNwvqB/4lfT2PUDPdj+b\ncnILBf0LY1nL8GZCol2O6z91CW1pm8rGi2iQMxRd/nnYsPxRHO2TWnpS2M+rqp5/\nsettRYQCPdMlwSZcg7oqnhgXf1GEP6Y/IX0Xt4cpXxLcKywarYRlggqdVlMyyA74\nzE7hhzuK5442u7rEctN7O+UCgYAoM78ipafp1XAZsT0YAG+Stg504J7CNe5tpL+c\n8sjyRd+pcZ2cJsxTUjNAWMf7LZDQvtPBBMb1OPjznRtgYi4IfqBBRFUkQXUOOkAP\nMuViEokTO3NErBYK5svL+8NMjuCAbpc2RYyJEyiru0fcNpW1Q7f+h4VzQp+jIY6h\nBLdMSQKBgGauU7OQksZCEY2MVAcD5dShYYvWLxOkj4dVVwISN1M6ImCAHwXZ6Nak\n6YlzCGT+NbRJbB2cPfsrKXtAJVX15I3iDCKAoGkb+9kiHnPj7Q71KVuWQE6BQx7E\nvE88TSsshwtX1s+qU9UWUrMPodK32q5nO3p8N033NvS9wLNfbcdc\n-----END RSA PRIVATE KEY-----", - } - - try: - resp = client.ulb().create_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SSLId_02"] = utest.value_at_path(resp, "SSLId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.SSLId", variables.get("SSLId_01")), - ], - action="DescribeSSL", -) -def describe_ssl_06(client: utest.Client, variables: dict): - d = {"SSLId": variables.get("SSLId_01"), "Region": variables.get("Region")} - - try: - resp = client.ulb().describe_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.SSLId", variables.get("SSLId_02")), - ], - action="DescribeSSL", -) -def describe_ssl_07(client: utest.Client, variables: dict): - d = {"SSLId": variables.get("SSLId_02"), "Region": variables.get("Region")} - - try: - resp = client.ulb().describe_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="BindSSL", -) -def bind_ssl_08(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "SSLId": variables.get("SSLId_01"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().bind_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateSSLBinding", -) -def update_ssl_binding_09(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - "OldSSLId": variables.get("SSLId_01"), - "NewSSLId": variables.get("SSLId_02"), - } - - try: - resp = client.invoke("UpdateSSLBinding", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UnbindSSL", -) -def unbind_ssl_10(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "SSLId": variables.get("SSLId_02"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().unbind_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteSSL", -) -def delete_ssl_11(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "SSLId": variables.get("SSLId_01"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().delete_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteSSL", -) -def delete_ssl_12(client: utest.Client, variables: dict): - d = {"SSLId": variables.get("SSLId_02"), "Region": variables.get("Region")} - - try: - resp = client.ulb().delete_ssl(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteVServer", -) -def delete_vserver_13(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().delete_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteULB", -) -def delete_ulb_14(client: utest.Client, variables: dict): - d = {"ULBId": variables.get("ULBId"), "Region": variables.get("Region")} - - try: - resp = client.ulb().delete_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteSubnet", -) -def delete_subnet_15(client: utest.Client, variables: dict): - d = { - "SubnetId": variables.get("subnet_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.vpc().delete_subnet(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteVPC", -) -def delete_vpc_16(client: utest.Client, variables: dict): - d = {"VPCId": variables.get("vpc_id"), "Region": variables.get("Region")} - - try: - resp = client.vpc().delete_vpc(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_268.py b/tests/test_services/test_set_268.py deleted file mode 100644 index bf1ab74b..00000000 --- a/tests/test_services/test_set_268.py +++ /dev/null @@ -1,371 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(268) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_268(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["eip_bw"] = 2 - scenario.variables["bwp1_bw"] = 3 - scenario.variables["eip_operatorname"] = "Bgp" - scenario.variables["bwp2_bw"] = 4 - scenario.variables["Image_Id"] = "#{u_get_image_resource($Region,$Zone)}" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_Id"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AllocateEIP", -) -def allocate_eip_01(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "PayMode": "Bandwidth", - "OperatorName": variables.get("eip_operatorname"), - "Name": "eip_auto", - "ChargeType": "Month", - "Bandwidth": variables.get("eip_bw"), - } - - try: - resp = client.unet().allocate_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["eip_id"] = utest.value_at_path(resp, "EIPSet.0.EIPId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_ge", "UHostIds", 0), - ], - action="CreateUHostInstance", -) -def create_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "Region": variables.get("Region"), - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "Name": "packet-s1-bgp", - "Memory": 1024, - "LoginMode": "Password", - "ImageId": variables.get("Image_Id"), - "HotplugFeature": False, - "DiskSpace": 0, - "CPU": 1, - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UHostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=180, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="BindEIP", -) -def bind_eip_03(client: utest.Client, variables: dict): - d = { - "ResourceType": "uhost", - "ResourceId": variables.get("UHostId"), - "Region": variables.get("Region"), - "EIPId": variables.get("eip_id"), - } - - try: - resp = client.unet().bind_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateBandwidthPackage", -) -def create_bandwidth_package_04(client: utest.Client, variables: dict): - d = { - "TimeRange": 2, - "Region": variables.get("Region"), - "EnableTime": 30 + funcs.get_timestamp(10), - "EIPId": variables.get("eip_id"), - "Bandwidth": variables.get("bwp1_bw"), - } - - try: - resp = client.unet().create_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["bwp_id1"] = utest.value_at_path(resp, "BandwidthPackageId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSets.0.EIPId", variables.get("eip_id")), - ("str_eq", "DataSets.0.Bandwidth", variables.get("bwp1_bw")), - ("str_eq", "DataSets.0.BandwidthPackageId", variables.get("bwp_id1")), - ], - action="DescribeBandwidthPackage", -) -def describe_bandwidth_package_05(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "Offset": 0, "Limit": 1} - - try: - resp = client.unet().describe_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteBandwidthPackage", -) -def delete_bandwidth_package_06(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "BandwidthPackageId": variables.get("bwp_id1"), - } - - try: - resp = client.unet().delete_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateBandwidthPackage", -) -def create_bandwidth_package_07(client: utest.Client, variables: dict): - d = { - "TimeRange": 1, - "Region": variables.get("Region"), - "EIPId": variables.get("eip_id"), - "Bandwidth": variables.get("bwp2_bw"), - } - - try: - resp = client.unet().create_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["bwp_id2"] = utest.value_at_path(resp, "BandwidthPackageId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSets.0.EIPId", variables.get("eip_id")), - ("str_eq", "DataSets.0.Bandwidth", variables.get("bwp2_bw")), - ("str_eq", "DataSets.0.BandwidthPackageId", variables.get("bwp_id2")), - ], - action="DescribeBandwidthPackage", -) -def describe_bandwidth_package_08(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "Offset": 0, "Limit": 1} - - try: - resp = client.unet().describe_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteBandwidthPackage", -) -def delete_bandwidth_package_09(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "BandwidthPackageId": variables.get("bwp_id2"), - } - - try: - resp = client.unet().delete_bandwidth_package(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UnBindEIP", -) -def un_bind_eip_10(client: utest.Client, variables: dict): - d = { - "ResourceType": "uhost", - "ResourceId": variables.get("UHostId"), - "Region": variables.get("Region"), - "EIPId": variables.get("eip_id"), - } - - try: - resp = client.unet().un_bind_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ReleaseEIP", -) -def release_eip_11(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "EIPId": variables.get("eip_id")} - - try: - resp = client.unet().release_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_279.py b/tests/test_services/test_set_279.py deleted file mode 100644 index 82a72665..00000000 --- a/tests/test_services/test_set_279.py +++ /dev/null @@ -1,494 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(279) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_279(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Image_Id"] = "#{u_get_image_resource($Region,$Zone)}" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_Id"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_ge", "UHostIds", 0), - ], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "Region": variables.get("Region"), - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "Name": "eip-s1-bgp", - "Memory": 1024, - "LoginMode": "Password", - "ImageId": variables.get("Image_Id"), - "HotplugFeature": False, - "DiskSpace": 0, - "CPU": 1, - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UHostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AllocateEIP", -) -def allocate_eip_02(client: utest.Client, variables: dict): - d = { - "Tag": "Default", - "Remark": "test", - "Region": variables.get("Region"), - "Quantity": 1, - "PayMode": "Bandwidth", - "OperatorName": "Bgp", - "Name": "eip-bgp-01", - "ChargeType": "Dynamic", - "Bandwidth": 2, - } - - try: - resp = client.unet().allocate_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["EIPId_01"] = utest.value_at_path(resp, "EIPSet.0.EIPId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "EIPSet.0.EIPId", variables.get("EIPId_01")), - ], - action="DescribeEIP", -) -def describe_eip_03(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "EIPIds": [variables.get("EIPId_01")], - } - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateEIPAttribute", -) -def update_eip_attribute_04(client: utest.Client, variables: dict): - d = { - "Tag": "huangchao", - "Remark": "test-gai", - "Region": variables.get("Region"), - "Name": "eip-auto-gai", - "EIPId": variables.get("EIPId_01"), - } - - try: - resp = client.unet().update_eip_attribute(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GetEIPPrice", -) -def get_eip_price_05(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "OperatorName": "Bgp", - "Bandwidth": 2, - } - - try: - resp = client.unet().get_eip_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="BindEIP", -) -def bind_eip_06(client: utest.Client, variables: dict): - d = { - "ResourceType": "uhost", - "ResourceId": variables.get("UHostId"), - "Region": variables.get("Region"), - "EIPId": variables.get("EIPId_01"), - } - - try: - resp = client.unet().bind_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "EIPSet.0.Resource.ResourceID", variables.get("UHostId")), - ], - action="DescribeEIP", -) -def describe_eip_07(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "EIPIds": [variables.get("EIPId_01")], - } - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyEIPBandwidth", -) -def modify_eip_bandwidth_08(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "EIPId": variables.get("EIPId_01"), - "Bandwidth": 3, - } - - try: - resp = client.unet().modify_eip_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="SetEIPPayMode", -) -def set_eip_pay_mode_09(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "PayMode": "Traffic", - "EIPId": variables.get("EIPId_01"), - "Bandwidth": 2, - } - - try: - resp = client.unet().set_eip_pay_mode(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyEIPWeight", -) -def modify_eip_weight_10(client: utest.Client, variables: dict): - d = { - "Weight": 100, - "Region": variables.get("Region"), - "EIPId": variables.get("EIPId_01"), - } - - try: - resp = client.unet().modify_eip_weight(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UnBindEIPResponse"), - ], - action="UnBindEIP", -) -def un_bind_eip_11(client: utest.Client, variables: dict): - d = { - "ResourceType": "uhost", - "ResourceId": variables.get("UHostId"), - "Region": variables.get("Region"), - "EIPId": variables.get("EIPId_01"), - } - - try: - resp = client.unet().un_bind_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AllocateEIP", -) -def allocate_eip_12(client: utest.Client, variables: dict): - d = { - "Tag": "Default", - "Remark": "test", - "Region": variables.get("Region"), - "Quantity": 1, - "PayMode": "Bandwidth", - "OperatorName": "Bgp", - "Name": "eip-bgp-01", - "ChargeType": "Dynamic", - "Bandwidth": 2, - } - - try: - resp = client.unet().allocate_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["EIPId_02"] = utest.value_at_path(resp, "EIPSet.0.EIPId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("gt", "TotalCount", 1), - ("len_eq", "EIPSet", 1), - ], - action="DescribeEIP", -) -def describe_eip_13(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "Limit": 1} - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 8039)], - action="ReleaseEIP", -) -def release_eip_14(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "EIPId": variables.get("EIPId_01")} - - try: - resp = client.unet().release_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "TotalCount", 0), - ], - action="DescribeEIP", -) -def describe_eip_15(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "EIPIds": [variables.get("EIPId_01")], - } - - try: - resp = client.unet().describe_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ReleaseEIP", -) -def release_eip_16(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "EIPId": variables.get("EIPId_02")} - - try: - resp = client.unet().release_eip(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_283.py b/tests/test_services/test_set_283.py deleted file mode 100644 index 472fddd7..00000000 --- a/tests/test_services/test_set_283.py +++ /dev/null @@ -1,668 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(283) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_283(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["HostName"] = "auto_host_test1" - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["ChargeType"] = "Month" - scenario.variables["CreateCPU"] = 1 - scenario.variables["CreateMem"] = 1024 - scenario.variables["ImageId"] = "#{u_get_image_resource($Region,$Zone)}" - scenario.variables["BootSize"] = 20 - scenario.variables["BootType"] = "CLOUD_SSD" - scenario.variables["BootBackup"] = "NONE" - scenario.variables["DiskSize"] = 20 - scenario.variables["DiskType"] = "CLOUD_NORMAL" - scenario.variables["DiskBackup"] = "NONE" - scenario.variables["UHostType"] = "N2" - scenario.variables["UDiskType"] = "DataDisk" - scenario.variables["UDiskName"] = "auto_udisk_noArk" - scenario.variables["UDataArkMode"] = "No" - scenario.variables["Size"] = 1 - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageId"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDiskPrice", -) -def describe_udisk_price_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 1, - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().describe_udisk_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDiskAllowance", -) -def check_udisk_allowance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Count": 1, - } - - try: - resp = client.invoke("CheckUDiskAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDisk", -) -def create_udisk_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": variables.get("UDiskName"), - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().create_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["udisk_noArk_id"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskResponse"), - ("str_eq", "DataSet.0.Status", "Available"), - ("str_eq", "DataSet.0.Tag", "Default"), - ], - action="DescribeUDisk", -) -def describe_udisk_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RenameUDisk", -) -def rename_udisk_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskName": funcs.concat("re_", variables.get("UDiskName")), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().rename_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat("re_", variables.get("UDiskName")), - ), - ], - action="DescribeUDisk", -) -def describe_udisk_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskUpgradePriceResponse"), - ], - action="DescribeUDiskUpgradePrice", -) -def describe_udisk_upgrade_price_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SourceId": variables.get("udisk_noArk_id"), - "Size": variables.get("Size") + 1, - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ResizeUDiskResponse"), - ], - action="ResizeUDisk", -) -def resize_udisk_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Size": variables.get("Size") + 1, - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().resize_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskResponse"), - ("str_eq", "DataSet.0.Size", variables.get("Size") + 1), - ], - action="DescribeUDisk", -) -def describe_udisk_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageId"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUHostInstanceResponse"), - ], - action="CreateUHostInstance", -) -def create_uhost_instance_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostType": variables.get("UHostType"), - "TimemachineFeature": "No", - "Tag": "Default", - "Region": variables.get("Region"), - "Quantity": 1, - "Password": "VGVzdDEyMzRUZXN0MTIzNA==", - "NetCapability": "Normal", - "Name": variables.get("HostName"), - "Memory": variables.get("CreateMem"), - "LoginMode": "Password", - "ImageId": variables.get("ImageId"), - "HotplugFeature": False, - "GPU": False, - "Disks": [ - { - "BackupType": variables.get("BootBackup"), - "IsBoot": True, - "Size": variables.get("BootSize"), - "Type": variables.get("BootType"), - } - ], - "ChargeType": variables.get("ChargeType"), - "CPU": variables.get("CreateCPU"), - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["uhost_id"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.UHostId", variables.get("uhost_id")), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("uhost_id")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=120, - retry_interval=5, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Running"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("uhost_id")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("ne", "TotalCount", 0), - ], - action="DescribeUHostLite", -) -def describe_uhost_lite_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 60, - } - - try: - resp = client.invoke("DescribeUHostLite", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="AttachUDisk", -) -def attach_udisk_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().attach_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=200, - retry_interval=3, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "InUse"), - ], - action="DescribeUDisk", -) -def describe_udisk_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UDiskId", variables.get("udisk_noArk_id")), - ("str_eq", "UHostId", variables.get("uhost_id")), - ], - action="DetachUDisk", -) -def detach_udisk_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().detach_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=60, - retry_interval=5, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDisk", -) -def delete_udisk_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_21(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("uhost_id")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="TerminateUHostInstance", -) -def terminate_uhost_instance_22(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_286.py b/tests/test_services/test_set_286.py deleted file mode 100644 index 144a8565..00000000 --- a/tests/test_services/test_set_286.py +++ /dev/null @@ -1,362 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(286) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_286(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["UDiskType"] = "DataDisk" - scenario.variables["Size"] = 1 - scenario.variables["UDataArkMode"] = "No" - scenario.variables["UDiskName"] = "auto_udisk_noArk" - scenario.variables["UDiskCloneName"] = "auto_udisk_noArk_Clone" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDiskPrice", -) -def describe_udisk_price_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 1, - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().describe_udisk_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUDiskAllowanceResponse"), - ], - action="CheckUDiskAllowance", -) -def check_udisk_allowance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 10, - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("CheckUDiskAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDisk", -) -def create_udisk_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Tag": "test", - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": variables.get("UDiskName"), - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().create_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["udisk_noArk_id"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ("str_eq", "DataSet.0.Tag", "test"), - ], - action="DescribeUDisk", -) -def describe_udisk_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CloneUDiskResponse"), - ], - action="CloneUDisk", -) -def clone_udisk_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SourceId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": variables.get("UDiskCloneName"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().clone_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["udisk_noArk_id_clone"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDiskUpgradePrice", -) -def describe_udisk_upgrade_price_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "SourceId": variables.get("udisk_noArk_id"), - "Size": variables.get("Size") + 1, - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=80, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUDisk", -) -def resize_udisk_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Size": variables.get("Size") + 1, - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().resize_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Size", variables.get("Size") + 1), - ], - action="DescribeUDisk", -) -def describe_udisk_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=40, - retry_interval=3, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskResponse"), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id_clone"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDisk", -) -def delete_udisk_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDisk", -) -def describe_udisk_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUDiskResponse"), - ], - action="DeleteUDisk", -) -def delete_udisk_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id_clone"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDisk", -) -def describe_udisk_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id_clone"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_293.py b/tests/test_services/test_set_293.py deleted file mode 100644 index 0d10132e..00000000 --- a/tests/test_services/test_set_293.py +++ /dev/null @@ -1,666 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(293) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_293(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["HostName"] = "auto_host_test4" - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["ChargeType"] = "Month" - scenario.variables["CreateCPU"] = 1 - scenario.variables["CreateMem"] = 1024 - scenario.variables["ImageId"] = "#{u_get_image_resource($Region,$Zone)}" - scenario.variables["BootSize"] = 20 - scenario.variables["BootType"] = "CLOUD_SSD" - scenario.variables["BootBackup"] = "NONE" - scenario.variables["DiskSize"] = 20 - scenario.variables["DiskType"] = "CLOUD_NORMAL" - scenario.variables["DiskBackup"] = "NONE" - scenario.variables["UHostType"] = "N2" - scenario.variables["UDiskType"] = "DataDisk" - scenario.variables["UDiskName"] = "auto_udisk_noArk4" - scenario.variables["UDataArkMode"] = "No" - scenario.variables["Size"] = 1 - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDiskPrice", -) -def describe_udisk_price_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 1, - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().describe_udisk_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUDiskAllowanceResponse"), - ], - action="CheckUDiskAllowance", -) -def check_udisk_allowance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 100, - "Region": variables.get("Region"), - "Count": 1, - } - - try: - resp = client.invoke("CheckUDiskAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUDiskResponse"), - ], - action="CreateUDisk", -) -def create_udisk_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": variables.get("UDataArkMode"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": variables.get("UDiskName"), - "DiskType": variables.get("UDiskType"), - "ChargeType": "Month", - } - - try: - resp = client.udisk().create_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["udisk_noArk_id"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=5, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "SetUDiskUDataArkModeResponse"), - ], - action="SetUDiskUDataArkMode", -) -def set_udisk__udataark_mode_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "UDataArkMode": "Yes", - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().set_udisk__udataark_mode(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=5, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.UDataArkMode", "Yes"), - ], - action="DescribeUDisk", -) -def describe_udisk_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=300, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUDiskSnapshotResponse"), - ], - action="CreateUDiskSnapshot", -) -def create_udisk_snapshot_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - "Name": "snapshot_01_Ark", - "Comment": "comment_01_Ark", - } - - try: - resp = client.udisk().create_udisk_snapshot(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["snapshot_id"] = utest.value_at_path(resp, "SnapshotId.0") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=3, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.SnapshotLimit", 3), - ("str_eq", "DataSet.0.Status", "Available"), - ("str_eq", "DataSet.0.SnapshotCount", 1), - ], - action="DescribeUDisk", -) -def describe_udisk_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskSnapshotResponse"), - ("str_eq", "DataSet.0.UDiskId", variables.get("udisk_noArk_id")), - ("str_eq", "DataSet.0.Status", "Normal"), - ], - action="DescribeUDiskSnapshot", -) -def describe_udisk_snapshot_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotId": variables.get("snapshot_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk_snapshot(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CloneUDiskSnapshotResponse"), - ], - action="CloneUDiskSnapshot", -) -def clone_udisk_snapshot_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": "Yes", - "SourceId": variables.get("snapshot_id"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": "snap1_clone_Ark", - "ChargeType": "Month", - } - - try: - resp = client.udisk().clone_udisk_snapshot(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["snapClone1_udisk_id"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=60, - retry_interval=5, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ("str_eq", "DataSet.0.Name", "snap1_clone_Ark"), - ], - action="DescribeUDisk", -) -def describe_udisk_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone1_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CloneUDiskSnapshot", -) -def clone_udisk_snapshot_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDataArkMode": "No", - "SourceId": variables.get("snapshot_id"), - "Size": variables.get("Size"), - "Region": variables.get("Region"), - "Quantity": 0, - "Name": "snap1_clone_noArk", - "ChargeType": "Month", - } - - try: - resp = client.udisk().clone_udisk_snapshot(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["snapClone2_udisk_id"] = utest.value_at_path(resp, "UDiskId.0") - return resp - - -@scenario.step( - max_retries=60, - retry_interval=5, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ("str_eq", "DataSet.0.Name", "snap1_clone_noArk"), - ], - action="DescribeUDisk", -) -def describe_udisk_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone2_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "RestoreUDiskResponse"), - ], - action="RestoreUDisk", -) -def restore_udisk_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "SnapshotId": variables.get("snapshot_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().restore_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=1, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskResponse"), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteSnapshotResponse"), - ("str_eq", "SnapshotId", variables.get("snapshot_id")), - ], - action="DeleteSnapshot", -) -def delete_snapshot_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotId": variables.get("snapshot_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DeleteSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDiskSnapshotResponse"), - ("str_eq", "TotalCount", 0), - ], - action="DescribeUDiskSnapshot", -) -def describe_udisk_snapshot_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotId": variables.get("snapshot_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk_snapshot(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=2, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUDiskResponse"), - ], - action="DeleteUDisk", -) -def delete_udisk_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("udisk_noArk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone1_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUDiskResponse"), - ], - action="DeleteUDisk", -) -def delete_udisk_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone1_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.Status", "Available"), - ], - action="DescribeUDisk", -) -def describe_udisk_21(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone2_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().describe_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=2, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUDiskResponse"), - ], - action="DeleteUDisk", -) -def delete_udisk_22(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UDiskId": variables.get("snapClone2_udisk_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.udisk().delete_udisk(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_2935.py b/tests/test_services/test_set_2935.py deleted file mode 100644 index 1f65d5c7..00000000 --- a/tests/test_services/test_set_2935.py +++ /dev/null @@ -1,169 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(2935) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_2935(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Image_Id_ucloud"] = ( - "#{u_get_image_resource($Region,$Zone)}" - ) - scenario.variables["saopaulo_image"] = "uimage-1bkjka" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_Id_ucloud"] = utest.value_at_path( - resp, "ImageSet.0.ImageId" - ) - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateULB", -) -def create_ulb_01(client: utest.Client, variables: dict): - d = { - "ULBName": "测试", - "Tag": "Default", - "Region": variables.get("Region"), - "InnerMode": "No", - } - - try: - resp = client.ulb().create_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ULBId"] = utest.value_at_path(resp, "ULBId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_ge", "DataSet", 1), - ], - action="DescribeULBSimple", -) -def describe_ulb_simple_02(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region")} - - try: - resp = client.invoke("DescribeULBSimple", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_eq", "DataSet", 1), - ], - action="DescribeULBSimple", -) -def describe_ulb_simple_03(client: utest.Client, variables: dict): - d = {"ULBId": variables.get("ULBId"), "Region": variables.get("Region")} - - try: - resp = client.invoke("DescribeULBSimple", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.ULBId", variables.get("ULBId")), - ], - action="DescribeULB", -) -def describe_ulb_04(client: utest.Client, variables: dict): - d = { - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 60, - } - - try: - resp = client.ulb().describe_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteULB", -) -def delete_ulb_05(client: utest.Client, variables: dict): - d = {"ULBId": variables.get("ULBId"), "Region": variables.get("Region")} - - try: - resp = client.ulb().delete_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_302.py b/tests/test_services/test_set_302.py deleted file mode 100644 index 34f79a26..00000000 --- a/tests/test_services/test_set_302.py +++ /dev/null @@ -1,517 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(302) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_302(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["tag"] = "tag_api_test" - scenario.variables["remark"] = "remark_api_test" - scenario.variables["fw_name_1"] = funcs.concat( - "fw_A_", funcs.get_timestamp(13), "_" - ) - scenario.variables["fw_rule_1_protocol"] = "TCP" - scenario.variables["fw_rule_1_port"] = 1111 - scenario.variables["fw_rule_1_srcip"] = "0.0.0.0/0" - scenario.variables["fw_rule_1_action"] = "ACCEPT" - scenario.variables["fw_rule_1_priority"] = "HIGH" - scenario.variables["uhost_name_1"] = "firewall_api_test" - scenario.variables["fw_rule_2_protocol"] = "UDP" - scenario.variables["fw_rule_2_port"] = 2222 - scenario.variables["fw_rule_2_srcip"] = "10.0.0.0/8" - scenario.variables["fw_rule_2_action"] = "DROP" - scenario.variables["fw_rule_2_priority"] = "LOW" - scenario.variables["fw_name_2"] = funcs.concat( - "fw_B_", funcs.get_timestamp(13), "_" - ) - scenario.variables["tag_2"] = "tag_api_test_3" - scenario.variables["remark_2"] = "remark_api_test_3" - scenario.variables["Image_Id"] = "#{u_get_image_resource($Region,$Zone)}" - scenario.variables["recommend_web"] = "recommend web" - scenario.variables["fw_rule_1"] = "TCP|1111|0.0.0.0/0|ACCEPT|HIGH" - scenario.variables["fw_rule_2"] = "UDP|2222|10.0.0.0/8|DROP|LOW" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_Id"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeFirewall", -) -def describe_firewall_01(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region")} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Tag": variables.get("tag"), - "Region": variables.get("Region"), - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "Name": variables.get("uhost_name_1"), - "Memory": 1024, - "LoginMode": "Password", - "ImageId": variables.get("Image_Id"), - "DiskSpace": 0, - "CPU": 1, - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["uhost_id1"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=180, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateFirewall", -) -def create_firewall_03(client: utest.Client, variables: dict): - d = { - "Tag": variables.get("tag"), - "Rule": [variables.get("fw_rule_1")], - "Remark": variables.get("remark"), - "Region": variables.get("Region"), - "Name": funcs.concat(variables.get("fw_name_1"), variables.get("Zone")), - } - - try: - resp = client.unet().create_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["fw_id1"] = utest.value_at_path(resp, "FWId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.FWId", variables.get("fw_id1")), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("fw_name_1"), variables.get("Zone")), - ), - ("str_eq", "DataSet.0.Tag", variables.get("tag")), - ("str_eq", "DataSet.0.Remark", variables.get("remark")), - ("str_eq", "DataSet.0.ResourceCount", 0), - ("str_eq", "DataSet.0.Type", "user defined"), - ( - "str_eq", - "DataSet.0.Rule.0.ProtocolType", - variables.get("fw_rule_1_protocol"), - ), - ("str_eq", "DataSet.0.Rule.0.DstPort", variables.get("fw_rule_1_port")), - ("str_eq", "DataSet.0.Rule.0.SrcIP", variables.get("fw_rule_1_srcip")), - ( - "str_eq", - "DataSet.0.Rule.0.RuleAction", - variables.get("fw_rule_1_action"), - ), - ( - "str_eq", - "DataSet.0.Rule.0.Priority", - variables.get("fw_rule_1_priority"), - ), - ], - action="DescribeFirewall", -) -def describe_firewall_04(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "FWId": variables.get("fw_id1")} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeFirewall", -) -def describe_firewall_05(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region")} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GrantFirewall", -) -def grant_firewall_06(client: utest.Client, variables: dict): - d = { - "ResourceType": "UHost", - "ResourceId": variables.get("uhost_id1"), - "Region": variables.get("Region"), - "FWId": variables.get("fw_id1"), - } - - try: - resp = client.unet().grant_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "ResourceSet.0.Name", variables.get("uhost_name_1")), - ("str_eq", "ResourceSet.0.ResourceType", "uhost"), - ("str_eq", "ResourceSet.0.ResourceID", variables.get("uhost_id1")), - ("str_eq", "TotalCount", 1), - ("str_eq", "ResourceSet.0.Tag", variables.get("tag")), - ], - action="DescribeFirewallResource", -) -def describe_firewall_resource_07(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "FWId": variables.get("fw_id1")} - - try: - resp = client.unet().describe_firewall_resource(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateFirewall", -) -def update_firewall_08(client: utest.Client, variables: dict): - d = { - "Rule": [variables.get("fw_rule_2")], - "Region": variables.get("Region"), - "FWId": variables.get("fw_id1"), - } - - try: - resp = client.unet().update_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateFirewallAttribute", -) -def update_firewall_attribute_09(client: utest.Client, variables: dict): - d = { - "Tag": variables.get("tag_2"), - "Remark": variables.get("remark_2"), - "Region": variables.get("Region"), - "Name": funcs.concat(variables.get("fw_name_2"), variables.get("Zone")), - "FWId": variables.get("fw_id1"), - } - - try: - resp = client.unet().update_firewall_attribute(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.FWId", variables.get("fw_id1")), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("fw_name_2"), variables.get("Zone")), - ), - ("str_eq", "DataSet.0.Tag", variables.get("tag_2")), - ("str_eq", "DataSet.0.Remark", variables.get("remark_2")), - ("str_eq", "DataSet.0.ResourceCount", 1), - ("str_eq", "DataSet.0.Type", "user defined"), - ( - "str_eq", - "DataSet.0.Rule.0.ProtocolType", - variables.get("fw_rule_2_protocol"), - ), - ("str_eq", "DataSet.0.Rule.0.DstPort", variables.get("fw_rule_2_port")), - ("str_eq", "DataSet.0.Rule.0.SrcIP", variables.get("fw_rule_2_srcip")), - ( - "str_eq", - "DataSet.0.Rule.0.RuleAction", - variables.get("fw_rule_2_action"), - ), - ( - "str_eq", - "DataSet.0.Rule.0.Priority", - variables.get("fw_rule_2_priority"), - ), - ], - action="DescribeFirewall", -) -def describe_firewall_10(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "FWId": variables.get("fw_id1")} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - action="DescribeFirewall", -) -def describe_firewall_11(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "Offset": 0, "Limit": 20} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["fw_dataset"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GrantFirewall", -) -def grant_firewall_12(client: utest.Client, variables: dict): - d = { - "ResourceType": "UHost", - "ResourceId": variables.get("uhost_id1"), - "Region": variables.get("Region"), - "FWId": funcs.search_value( - variables.get("fw_dataset"), - "Type", - variables.get("recommend_web"), - "FWId", - ), - } - - try: - resp = client.unet().grant_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=60, - startup_delay=30, - fast_fail=False, - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id1"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=90, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("uhost_id1"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.ResourceCount", 0), - ], - action="DescribeFirewall", -) -def describe_firewall_15(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "FWId": variables.get("fw_id1")} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=1, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteFirewall", -) -def delete_firewall_16(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "FWId": variables.get("fw_id1")} - - try: - resp = client.unet().delete_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("object_not_contains", "DataSet", variables.get("fw_id1")), - ], - action="DescribeFirewall", -) -def describe_firewall_17(client: utest.Client, variables: dict): - d = {"Region": variables.get("Region"), "Offset": 0, "Limit": 10} - - try: - resp = client.unet().describe_firewall(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_3278.py b/tests/test_services/test_set_3278.py deleted file mode 100644 index e7bcc2a9..00000000 --- a/tests/test_services/test_set_3278.py +++ /dev/null @@ -1,361 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(3278) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_3278(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Image_Id_cloud"] = ( - "#{u_get_image_resource($Region,$Zone)}" - ) - scenario.variables["saopaulo_image"] = "uimage-1bkjka" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["Image_Id_cloud"] = utest.value_at_path( - resp, "ImageSet.0.ImageId" - ) - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "Region": variables.get("Region"), - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "Name": "ulb-host", - "Memory": 1024, - "LoginMode": "Password", - "ImageId": variables.get("Image_Id_cloud"), - "HotplugFeature": False, - "DiskSpace": 0, - "CPU": 1, - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UHostId_01"] = utest.value_at_path(resp, "UHostIds.0") - variables["IP_01"] = utest.value_at_path(resp, "IPs.0") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=180, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateULB", -) -def create_ulb_02(client: utest.Client, variables: dict): - d = { - "ULBName": "测试", - "Tag": "Default", - "Region": variables.get("Region"), - "InnerMode": "No", - } - - try: - resp = client.ulb().create_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ULBId"] = utest.value_at_path(resp, "ULBId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 4107)], - action="CreateVServer", -) -def create_vserver_03(client: utest.Client, variables: dict): - d = { - "VServerName": "vserver-test", - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - "Protocol": "HTTP", - "PersistenceType": "UserDefined", - "PersistenceInfo": "huangchao", - "Method": "Roundrobin", - "ListenType": "RequestProxy", - "FrontendPort": 80, - "ClientTimeout": 60, - } - - try: - resp = client.ulb().create_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_eq", "DataSet", 1), - ], - action="DescribeVServer", -) -def describe_vserver_04(client: utest.Client, variables: dict): - d = {"ULBId": variables.get("ULBId"), "Region": variables.get("Region")} - - try: - resp = client.ulb().describe_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VServerId"] = utest.value_at_path(resp, "DataSet.0.VServerId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 63016)], - action="AllocateBackend", -) -def allocate_backend_05(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "ResourceType": "UHost", - "ResourceId": variables.get("UHostId_01"), - "Region": variables.get("Region"), - "Port": 80, - "Enabled": 1, - } - - try: - resp = client.ulb().allocate_backend(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("len_eq", "DataSet.0.BackendSet", 1), - ], - action="DescribeVServer", -) -def describe_vserver_06(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "Region": variables.get("Region"), - } - - try: - resp = client.ulb().describe_vserver(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["BackendId"] = utest.value_at_path( - resp, "DataSet.0.BackendSet.0.BackendId" - ) - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreatePolicy", -) -def create_policy_07(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "Type": "Domain", - "Region": variables.get("Region"), - "Match": "www.test.com", - "BackendId": [variables.get("BackendId")], - } - - try: - resp = client.ulb().create_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["PolicyId"] = utest.value_at_path(resp, "PolicyId") - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdatePolicy", -) -def update_policy_08(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "ULBId": variables.get("ULBId"), - "Type": "Domain", - "Region": variables.get("Region"), - "PolicyId": variables.get("PolicyId"), - "Match": "www.testgai.com", - "BackendId": [variables.get("BackendId")], - } - - try: - resp = client.ulb().update_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeletePolicy", -) -def delete_policy_09(client: utest.Client, variables: dict): - d = { - "VServerId": variables.get("VServerId"), - "Region": variables.get("Region"), - "PolicyId": variables.get("PolicyId"), - } - - try: - resp = client.ulb().delete_policy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=30, - fast_fail=False, - action="DeleteULB", -) -def delete_ulb_10(client: utest.Client, variables: dict): - d = {"ULBId": variables.get("ULBId"), "Region": variables.get("Region")} - - try: - resp = client.ulb().delete_ulb(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=30, - startup_delay=5, - fast_fail=False, - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId_01"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("UHostId_01"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_330.py b/tests/test_services/test_set_330.py deleted file mode 100644 index 8fc803cc..00000000 --- a/tests/test_services/test_set_330.py +++ /dev/null @@ -1,308 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(330) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_330(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUMemcacheGroup", -) -def create_umem_cache_group_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "Name": "umem_charge", - "ChargeType": "Month", - } - - try: - resp = client.umem().create_umem_cache_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["group_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMem", -) -def describe_umem_01(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - "Protocol": "memcache", - "Offset": 0, - "Limit": 1000, - } - - try: - resp = client.invoke("DescribeUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["CreateTime"] = utest.value_at_path(resp, "DataSet.0.CreateTime") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMemcachePrice", -) -def describe_umem_cache_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Size": 1, - "Region": variables.get("Region"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.umem().describe_umem_cache_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["GetPrice"] = utest.value_at_path(resp, "DataSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("float_eq", "OrderInfos.0.Amount", variables.get("GetPrice") / 100), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_03(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_BUY"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUMemcacheUpgradePrice", -) -def describe_umem_cache_upgrade_price_04(client: utest.Client, variables: dict): - d = { - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.umem().describe_umem_cache_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["UpgradePrice"] = utest.value_at_path(resp, "Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUMemcacheGroup", -) -def resize_umem_cache_group_05(client: utest.Client, variables: dict): - d = { - "Size": 2, - "Region": variables.get("Region"), - "GroupId": variables.get("group_id"), - } - - try: - resp = client.invoke("ResizeUMemcacheGroup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("float_eq", "OrderInfos.0.Amount", variables.get("GetPrice") / 100), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_06(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_BUY"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="GetResourceRenewPrice", -) -def get_resource_renew_price_07(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("GetResourceRenewPrice", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ReNewPrice"] = utest.value_at_path(resp, "RenewPriceSet.0.Price") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateRenew", -) -def create_renew_08(client: utest.Client, variables: dict): - d = { - "ResourceId": variables.get("group_id"), - "Quantity": 1, - "ChargeType": "Month", - } - - try: - resp = client.invoke("CreateRenew", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "OrderInfos.0.Amount", variables.get("ReNewPrice")), - ], - action="DescribeOrderDetailInfo", -) -def describe_order_detail_info_09(client: utest.Client, variables: dict): - d = { - "ResourceIds": [variables.get("group_id")], - "QueryAll": True, - "OrderTypes": ["OT_RENEW"], - "OrderStates": ["OS_FINISHED"], - "EndTime": funcs.get_timestamp(10), - "ChargeTypes": ["Month"], - "BeginTime": funcs.get_timestamp(10) - 1200, - } - - try: - resp = client.invoke("DescribeOrderDetailInfo", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - action="DeleteUMem", -) -def delete_umem_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "ResourceType": "single", - "ResourceId": variables.get("group_id"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DeleteUMem", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_4079.py b/tests/test_services/test_set_4079.py deleted file mode 100644 index aaadc2b3..00000000 --- a/tests/test_services/test_set_4079.py +++ /dev/null @@ -1,288 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(4079) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_4079(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["file"] = ( - "data:image/jpeg;base64,/9j/4SRFRXhpZgAASUkqAAgAAAALAA4BAgAgAAAAkgAAAA8BAgAQAAAAsgAAABABAgAJAAAAygAAABIBAwABAAAAAQAAABoBBQABAAAA2AAAABsBBQABAAAA4AAAACgBAwABAAAAAgAAADEBAgAIAAAA6AAAADIBAgAUAAAACAEAABMCAwABAAAAAgAAAGmHBAABAAAAHAEAABgDAABNSU5PTFRBIERJR0lUQUwgQ0FNRVJBICAgICAgICAgAE1JTk9MVEEgQ08uLExURAAAAAAAAAAAAERpTUFHRSBYAAAAAAAASAAAAAEAAABIAAAAAQAAAFYxMDAtMDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwMjowODoxMiAxNjowNjo1OAAYAJqCBQABAAAAQgIAAJ2CBQABAAAASgIAACKIAwABAAAAAgAAACeIAwABAAAAZAAAAACQBwAEAAAAMDIxMAOQAgAUAAAAUgIAAASQAgAUAAAAZgIAAAGRBwAEAAAAAQIDAAKRBQABAAAAegIAAASSCgABAAAAggIAAAWSBQABAAAAigIAAAeSAwABAAAABQAAAAiSAwABAAAAAAAAAAmSAwABAAAAAAAAAAqSBQABAAAAkgIAAHySBwB4AgAAlAMAAIaSBwB9AAAAmgIAAACgBwAEAAAAMDEwMAGgAwABAAAAAQAAAAOgBAABAAAAAAUAAAKgBAABAAAAwAMAAAWgBAABAAAAdgMAAACjBwABAAAAAwAAAAGjBwABAAAAAQAAAAAAAAAKAAAApRsAABwAAAAKAAAAMjAwMjowODoxMiAxNjowNjo1OAAyMDAyOjA4OjEyIDE2OjA2OjU4AAQAAAABAAAAAAAAAAoAAAAeAAAACgAAADwAAAAKAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAABgCGkgMAAQAAAAYAAACGkgUAAQAAAGYDAACGkgUAAQAAAG4DAACGkgMAAQAAAAIAAACGkgQAAQAAAPQPAACGkgQAAQAAABAPAAAAAAAASAAAAAEAAABIAAAAAQAAAAIAAQACAAQAAABSOTgAAgAHAAQAAAAwMTAwAAAAABoAAAAHAAQAAABNTFQwAAIEAAMAAADSBAAAAQIDAAEAAAADAAAAAgIDAAEAAAAAAAAAAwIDAAEAAAAAAAAABAIFAAEAAADeBAAADgIDAAEAAAAAAAAADwIDAAEAAAAAAAAAEAIDAAEAAAAAAAAAEQIDAAEAAAAAAAAAEgIDAAEAAAAAAAAAEwIDAAEAAAAAAAAAFAIDAAEAAAAAAAAAFQIDAAEAAAAAAAAAFgIDAAEAAAAAAAAAFwIDAAEAAAAAAAAAGAIDAAEAAAAAAAAAGQIDAAEAAAAAAAAAGgIDAAEAAAAAAAAAGwIDAAEAAAAAAAAAHAIDAAEAAAAAAAAAHQIDAAEAAAAAAAAAHgIDAAEAAAAAAAAAHwIDAAEAAAAAAAAAAA4HACgAAADmBAAAAA8HAP4AAAAOBQAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAUHJpbnRJTQAwMTAwAAAEAAEAFgAWAAIAAQAAAAABAQAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAFli4AAAAAAAVnAAAsngAABWcAACyeAAAAAAEAAAAL+gAdAdQBBAAAAAAAAAAAAAAAxREAAAAsLhYEAAAAAAAAAAAAAAAAGRwAADsADkIAAAAAAAAAAAAAAAAAAAAAAAAFhf/wdQAAAAAAAMUQNgAAAACZmZmZGWESMXV4iYoOExgUEhAWEgAAAIUADAAGAQCAUwABA4QAAAAPatX+aw5RAGIOgSNXAGQA0gwXDQb/////AQIQQAACAP8AQABAAAAAEAAAAAARERERAAJhAgBDAAAaHRseAAAAAAAAFDIPYQAAHyIbHh4hHyOHZUMh///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Y/9sAxQALBwgKCAcLCgkKDAwLDRAbEhAPDxAhGBkUGycjKSknIyYlLDE/NSwuOy8lJjZKNztBQ0ZHRio0TVJMRFI/RUZDAQwMDBAOECASEiBDLSYtQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MCDAwMEA4QIBISIEMtJi1DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ//EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx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nkbYk+tayKjquYXB2j5x3repfl0M4bjZbVeSpwSOpFUHJjkKHqKmnO+hU421Ogvir6fIsjFVwMkDOOaZa2s1xbQSQTDYq7fmGCeTWjM0+qLSWt7HyJcj2c1pWryrAFm5fPXOaixTloP3U5MYJNMlCsueaYwAoQMglmjjIDsB9aYZ4uvmLj61diRRdRICwkXgetVpL23lBV5FAbr81RNaFQ3KT3kbOXaVQo4Ve5rCuARLJkDdjk5zWdOMru5rUasiW1aSHR1lE4hI3FQQPm68c0ZuLzTzKboNgZeMADGP/wBVQ+XmvYa5lGyKcrEQKT2NXkuHeJf3jYxwBxXQ4prUxUmtiIqD8xOX9TyaquzbyWJJ9TTUUhttnS6j82nyAd8D9RUdtNeQ26JDv8tRxhMik9hRtrclGpXaL8wB+q1o6bdPdW5eQAENjip1KdrFoHNOz0qiR+7ionbmhCZj61/rEPsapLJhVG1Tx3rZLQm9iE3kTLhkQEjpUUcIYhktt49geaG7K7Ba6CNaTTsMWCoo7swGazoXimkwYcKBljuPFRGpGTaRUoNLUnttWhWIwPah448lc8/zqVb+OSNo7a1EQkGGbgcVhKk+bfQ1jNJbalW9wYiMdKktDmBa2Mh7N85FV5upNCBnQWd5a3EO2SeIAjn5wK0IbizhhCLcxbR0zIKgeo9b616faYf++xThf2uP+PmH/v4KB2HDULX/AJ+Yf+/gpRf2v/PzD/38FArMkW/tM/8AHzB/38FMkvrXd/x8w/8AfwU1uKV7GVq91bO8eLiI9ejis77TAVCmaMjBB+YVtFohp2I47mASLmWPGf7wrVbWrORMPceSfVWBrKtHmtY1pO25Vu5YLi1222pJuBzv8wAnrwa5n7TGtqyIw3E/Mc1nRsrq1iqt3Ybash3DenI7kVbSVIvmEseB23CtXYz1B7iKSBsumSf71SWk8SwjMiZ/3hSCzHPPFvz5if8AfQqKSeIc+YmD15FO4WZ//9n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bAEMAAQEBAQEBAQEBAQICAQEBAgICAgIDBAUDAgMDBAYFBAQEBQUFBAYHBQUGBwgHBgkGBAUICAgICQoJBgcKCAgICP/bAEMBAQEBAgICBAICBAgFBAUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICP/AABEIBQADwAMBEgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APx90DwTH+6Pk4+YDPr/APqr6X0bw6qeWWjB3EYx29a7nRaV3qj5H+0E0pT01OG0jwkkSqWiBUEAcfrXvFpoihEwvcde9dVKhe0UcFXFxqSk2rRPNrXw2m7aVBG7djFe02ukqCGQnzCefQ12KgnBR6nD7fmk5NWj0PPbTw9GNo8vIkGcAdDXsNtp6/u2Cj53Ix6e9FGgm/e3R0Sxj5k11OOstBT5BsGVAH0r02008A7v755z6CppYBOPKu5hPNZOdpK7Odh0QIAVAywA6da9BhtFDKWTPpThBxla17HQ6jlG17X6HM2ujrsC4yCSQSO9d7BbBlUlBkEjBodJNpWOeviZKm+fY5uDSEUqFAGSeT2rtoYOflXAUZIHr3rpp0eaSb3MIYlaKOkTAh00AYbg5yuBXXx2zbUDLgEjIH+RTdON1Y0o4lQqOLej6nOx6aSMjIXIBBHX1NdjFanBfPcgConJ8qSQ/YJXmndI59NNLKdpGFIBHqfWusityq9eSep71pZpaLU41NSbnKVkjB/s8cL9QB6j3rplt/unkY4B9aVGldXmdLrPktTfc51LAKq/LnJIBPpXVCEKDlQTtJNcyknNN6mtGcnBVN7/AKHNCw2jIUEEj8K32hGzPIXBzitqdNXsjnr4icffm/uMMWY2qu37hJB9a2Qi5bgkg8j+VUqPK9Re0jWTUdLfiYBtl2qNv3m/LFaskXy8EZyDgetdboRlK6drnK24RTnqc4YIyWHXIAye2K0dm5d7cEMTgd66nTbsjPCyjHRmObVTtAwecZPathISXxkjcFGRUuCi2dFG0ocz279jE+wHI9CcmuhEII9lIBI9xWc6UnJNdTCc4uk+phrpibAw6gkEV1llArhEI/iJGazqwadrnThqihTinr+hhw6SZCowDyAMjrXb29vJv4wCFJxWElKEUrasccQ5vW/KvxMSz0rjI/Eeldxb2O4K5wGUg/Wsp2aV+p3Yfm5bM5v+zwFTcpIzwfSuxFsoj2HHOSAaz5OWSizGWJ0aijhTaBnGMZAJOO9dV9jGccjOCCe/rXc5qC5I7M86VGVRc7VmuvUwY7BAy/KChbg11SQLt2gYGCc+lTJJw5VsdEKk4tXf3nPC2RTgDAwQDXQmNcdCcEYHrUUIqDt1N6s+ZXa0MGO0Ge+Mk89613iJB5IyCOO1b1LSaSOWzpyc/smb5CjGOvp61o+WeA5G5uQaKlFRkm+hMaiqJ8uxnmyjxGNuQzdK0goG0nI28kGtqN3eUjLERnzx5UYzWQwSvAIIJ+tdAyK6bQevU/WsotS96K1NFGck0mcxHYBc/wCyAFP0rpGgVdpzjKnJ9PrW3tOZcsNkZ4XDODd3d9TmJbP+AnIyM/7Oa3pIwUDA4JAOR3q6aSd0jmr3kk0/kYK2i4PHIP51tCMjA28ZGSe1TPmasi/bU4xUYpuRiLa8qdp7iug8kddxKt1I7+4rSSbsurNIyXs3dWjfU55bMkLuB7jBre8kAjA5DDkn/wDXVSpOLVtTjjNwmm3ZPT5GMtmEbb1Bzkn9K3BGqld3zZOKiU5Tg7oqXvP2alor2MoWoVclRhzgj1xWoYuVHUZH4Y71osPzR5lsClKPKluzKFttzxx6itUJ8uck/Nggd896zlVaVkjrp10naTsv1MhrcAAEnbkEqP1rXeAYC44A5FEZpSTbuNxcJJvqYogVskZODyDWkYOrD7zcnHQUoXSv3Kr1YSmoSRTWAfJlSSpzWrGrLn5csMcHvWVOq3JytdHTLCqnDV9SFYVUgkfKwHPqcdKtghwCFxhhn2qY0NUr2OfE4+alGaV12KRhAaMEcBhjHatpYxlcYPzAk+taRp2u3uzWeIUmklayK0Vv83XOOmaspkYUgnHIJ7+1YSwyaSWw54qSjGO19g8lO4GRkj69quKAVVMH5sZNSoJK7NcNTcYv2mpWhtwVHUFufoa0lVBhQcHuB2rWELu8dmcdWqpQvcz/ALLyrADAIBB7VpADknt83FYSb3ktGTh5p/Fv5dTFltgzdMAkBvwracDC8DIySKuMnZcqNauHT669jm0svmB46Z57nPSt8RKVDYwGIJPp6Vr7JT0ehjPmpxhFPTsYgtBj5Mkg4IPat7ygy4RjnIz71cp8qSjsb+wlJ80na2yMFrZd4TqTyM+3Wtp0AUA8lSD9KmnTaWr1HUcoO8ktTG+zpwQuQGHXuK0ciMkMOueB2oqTfyJ5PapNys1qvQyJbAtnaAFK4Oe5raDfKdxBwvJI9qqi22lbqVWqxk1Kb8vU46az4wR1xn39a3p4t2SQcg4B9K66jUkpNHE+Wm7uV/I5j7MCMbeM85rdNtt2ICOoHPfmpnTh8a3MKFSVSSi1ZP8AAwja/Jkc4IBFdBHAXxztG7BHrVyircz0RvKspSVNvQ5o6fhQSDyQa6aaMfJgZI4BrCUW48y1OjDSSrci3Ry7WnHTB3D8a3hD5ZGTktkDNXTsnsKVNtuUmYX2P5JCBgg4+nFb4h3EgnCZAANWpKLUkjzeWbl7Nvd/8MYK2qqqADBGc4HWuh8kqwXJwOTnvQoptzSPSlCejbV1oZCWp+Xqec59K6AWykAknBJAIPY1FS89XuRKjGVWy2iYjWoO0kEFs5AFbZAwADk8YI7e1Th7q6Zz4qMUoyi9bmB9lUEs/B7D1rYMLuyk8MhJyO+BXVTppxXM9TCMFJ3h03ZirbK3LYPJAHpWybdjsIyCyghcd6mK2t1O2NCooqUtjHezB3Er9wDFbQRTjGeT09PeiKbV2rag6jjPbmMB7NFyFxnHT04roPsy7cMD3OPWh07Xk3qjlrRdSXPBtLsjm2tcFV4JJwD6V08drnYcjOSCaVOaSbW56NOgl7u6fR/ic6bJdoVlJx1AroDAdyDJ6kj2rnULPm8zGWKkpRcY6fmcybNEIRSM5GDW80Q3Nle5OfStnt7q0NJqUpOadl2MQWxClQucqAfathYW3HKALxg9/cVHLKOr2M6eLhOCpJWZgvbqBySV65Ht2rWlhUMoBIDMePXFEKanqjonVUounTXkc21uXcAcHHHt9a3TCAVOMZ5Oa6Ye4rHmYeTqVbT7WRhCzLYPB2nIxW0I1jQrnIHJ980o3StAmtzc6m1rsYP2SMAdckng/WtrZuXvkNgH1xUSm4/EdFXnnacVZmD9kDEDGM8kelbjRZGOS3Qmly3d49R0Kc4pyk9GYBtPuAAE5IAxW6sQI4ztjxgt1AqJtRdjB4V1JqcJadTCS0OFHcMenet+OAcdMZ61pNu6cVqd8klBzbsjOjtduzkHkkVtCIJ82c9APenFNqz2OdUXGTqQV7mJIgkVjtxzgA960NnyZPfJUe9ROCdRW2QRxSq0+aKMhIirZxkY6jtV7ymBUr905zntVypu10YYLG04zcGveY2OJDz0bZ8pq3HyQhXBA4J7Vz1FJJq2h20+apUvsu48Wy/M/UjBwO9T/wAKnPGcEjtjpWKpNtW3Mqs5p8y2uVhGqrg4JJxz3pZBu2/MfvjcfatfqqdorczeYz0d9NbmdKoPyNkqCcH09qmkQ5JXg4/P1rV0m7WWhdHEUqrfM7NGJPD5wcbQV4x7+orT8kbV/wBtsjFHs2npuOddJWjG6MYWhdSWIOwjJ9fatjbjGzjoCT3qKcJyulsYTXK1CTu3t5GC9qxUsVwyEnHoK3fILkZbPQZPcZp+xUbX/rzNqsW2oy2XXz7HPm03qTgfMQcH0NdG9srgdQQ2K6bxa02MKPuwtUje77nOSWikLwOxwBXR+SpAXGSASDWFJuN0ka4tKclNO/kYJs0KYHG5iDj3rZ8lgECt8xIyDTUXB8qOWCVakpN9enkYn2IjGBkkYIPbit5YTxznJBAHf0pSgmrI2pzkqVt7MwGs0yhA525Ird8rl3JIGRnFXB6Jip3abitUzCazAB+Xhyce1bixg57bc80V6DUlKRp7ScqcnBHOtZg5Jx8wwQR0NbrQghs5B3EDHbPpURp6JPRDipS0ttbXucy1nxuAJbIJx2roGtycLt5Vs896uFJOdk9Eb1681BQmtDlxYp90jqQCD2rpvswGGHKnqPSlUotyepzUtFaK0OYbTgOSMAMBg+9dG9ttGRkBc5z3rGUHKV4nXDEKnGXtNf0OXa0QH5R91jnPv0roPJTI4wGJIzWsIOmrmLpxnaT0ic49moAGMbWPA710f2dedxHGACO3vWFWPs1fcKVONSXub+e3qc39gXzAxwDxwO4roVtx1bk5xmtFCUY8i2KlOMaqdXVdzm/sKtjCdjmulEIPI4LHGT6mk3G3LFC+qTlLnhK9jlTZrkJ5ZHm4GDXTG1+YHn5W5NdSslewTquMY667WObNlGm1dpGCAf8ACt822Y2I55yQf4q5fq8U7N6g8ZeDil7v6nKSWXKnrhua6P7OzfNjAAxg9hXTRtB2ZzYjmk48qsk0cs1jHxgAlzgk10hiCqccYHT1oneUrRVzehSlUjKnN2VvvOQk01cBRypIBz2rqFtwynkg5yCKumpRszzlRqRiot6J7HIHTwijaufmAOO30rrDangg4wTj396K83KdrHZhowqQbWj2OOeyXIfuQQcDrXUeT0YJ8obqewrh+rtptPW50YbEtyVKS0X6HLw6btbnknp9BXWwxryScEEjJq60GrJmlPEQk7PTszIXT43CoGAwTnPatWXaCOSRgnIrFK1o9TPE432TbjG67nLzWcXPAB6ZArae338t25+taxoJPnbMVipuCjF+rOUSDCFc5wxBFdA1tknpycsAOvFaujBu70ZdKDhBRir3vqYb2a7cBQCQSR6VtLAQG5AwAAfSuF00rFuc1T5ZrXuc7/Zm9c9ecjGOfSul8oRqQVG7JxjtV1KXO0tio41Rio9U9zk5NOXeoK4QkAAit+UAiMHJPsP0roVCbg7E18z5q13o2vkcbNppUlHUbeTn1rp57cOSScNgEZ7VjTgpvXcfJKnUU6cnrueez6QhwFXgKeRXcC3X0AUg4I70KHLJu+h1xm5Sjd6Pc87OkIgLHIbcNufauyu4ACVIzk5IFb/V/eTWx5rxipuVl179DgpdKjBAKlWZiOO4966ua3Y7dxz1II9f8+9E8PbRvU6aOOgoxcY6N7nm91paFwFQYBycdq7KeEKeFGEHJPv1rgcZKLlY7amKTmlB30/Mi0/TfKjX2kJBr0xNBdVDgZUvyK82nWjN8rWh1122oyhumc3b2mFUBcr1J9K76DRyTGm3A6EnoBW0uRPlXTUydGcqiu99H5HNWtquCNvAPU9+K7L+zgjLtOQBjPqauM1ONo7FVkoTUUr+ZhwW6LtG3JdgfpXRraKm3bjGD07cVToqas2cNDFKnUaqdCjBbqMY/iYZrZt7cg52g56E9iRXRVwajo3cjBZrao+VXY63t+SQvTOCPatVF4C9iSePauWFH2j5lodtbEP4lq7pjYocL82B8xJ9q0ERdxQ5O7AwBxT9lrzrYWKklG0tHuxiW4LKTkAnH1NX0ichTnAU9qc6basmZuTsml0EiiJYKOSCpJPpntV6Irnrz1B7iqlF3sGGUZ++3rqhmxlYMBhFByf51KcjKEghiSPcVc4puzRz0ar5pQXQFGMD+6ygH1zVkAgKSAckjJ74qJwaXKjbCxfK7rQUBVO0e4IPcUhYM5zwefwoVFy0b9SZVG4OkltsG0vnORljgjsPenRuFDM2SGI49KipDkaS+RWDpuNNtP1Q51LIB1IzjFI7KVwMgDJwKys2ufqa1qd4K2zKu7CHccnPJP8AOomJ24XDMuSM9z6Gu2VBOSuzhnW5HGHLt+oyQbmLMQQcAk9qsAFgBgZHOTTqxbj7z0Ro6kHJcivJfgZbxlUIGMkgAetXmjyzAty2cVtSs2pPr+BhBShKU3v1KsMfG1xg9cjvxV+JTyrDALEA+vpVTrc1m1uZYPFttxl3IEtMlTyAuSQa3IYSRFj5tuSfas41NGmexGUEk47kUFuPlwSGB4ArfhiDKSB6fhXJKsqk1FI5IqUG/abFaKJgwHRcnJ9fatqKIsFy3KHJB71TXNq+h3TinFJOyuSW6ZVAF4zkg9hVmNwnzdOSM1hLlUuVoPZr2fNCV1/luTvATHnoSuMj+dPe4VxznGTU0ocrdtjz8bim1GLWtzJcb8Kc54Az7dRVpmiYpye5Ax1rWLjG6S1OmFKU5ptldVG0AnAwQPzp7IQp2DJDce3tWqpp6t3OadSU53URkiLjjkEYI9asxpycAD5QcDtSpScm21dGlVQVNJadylHB95mGQpIOPQdMVqKij23EfhW8pqTSURQpS3U/MxpoguT0Y4OPWtqaBXKtj5txI96uhO8bGc6/M3F+hzrKc8gYyACe3FXHiZZGYYywAwaJQ5UmjjlzKDhFvmRVJI2rzknkip/KPIZcEEYz61olGKT6m8MXOMoxl5jTuCjHJOSR6+1PP3QoHIYEZHWs0pRlaOzNIVIyg49SsE2hc5BJ5x3HpVpVLEMATyQK2q+8+Zs5sE0+advh2IAu8BhxtOOe9WgjIu08jOcjtUy96SSN600k2tJaWK7QfIMHh24I7VZdAIxjJUN0+tOF9n0OWdJ1E5t7lQxcqMAnYckds96txcscE7MADj86UZNJ8251/VISipbqNiiInVw2MqTgZ7Voso3kDIAGD6VpSmnGz1OV4XlehnqeHZgfvAGrBUOq9QeTjsRWXs7S10RVPETcHCDvIgGwKwK4HGDU5hyAMEnoPc04TUpJt6IVbDNRc7aq3/BKrnIwASVOOe9WhGMKozuBycdqLRUro0hiZKnaKu108jPCsQOSMgjPpVx0IG4kgNwCOo9639mk0kYe0couo1a5WZdhB67hj6VcMY2rhidq4I7/AFNZx5HG6QpSlKXNUevYijUkk87eMqegrSRQxC+mOfWueLvZPY6I1pSk4x2GRqoUIc5DE5NWPLx97rkge1CUlK63LnXnC1O25TRSc5BA3nB+lT7CCoyRuIJx39cVrdSXNsOhKNnzNkkS7sNgg4wRU0Y2ncRyxyRn8qwlCUveTKrYlVIxgnZrr3ARNwSMuAeT3FWd23DLkFAACO1VTuldA5KbtezI/KYkHnnpVsFiAoOAcj60qc3a8lexVSmkm2/IrhMFS7AHA4HepFwGG4kjk5JolyxS5jGHLFuTREYAxKkgDJIB7VIAZFDKQAG5J7+tTJ25UnY6E3KLlbQWJDtUMTtLDJHUU9n8tDyRkgZHbNbVNbKOxdCkoJSlvvYqyIMEk5weMUx2yq7CRk4FaRSU7NnmVMRNyTte/wCBnuu7Cs2N3cd6sFGz0AX+EiqXux5UdMv3lRtK1l95CI9qA8Y3FceuKnjDYZTyQQSfWuetzKaSIlOTppyVmVvLJDAr1JGa0oIgxXAJDuOvpWkoNq7Kp01GSbd7LYxViw4DZJXJB9a67+zAib353HjPcVbr3Sine4/q0pv2my2sctCqozqepzz6cV0T2qQ7gFACEED1z2rCvok4BSpxVRyqLRWOamiLEAZxtJGe9dC1oGGQQARgiqpVHFcr6sSoWXtKfqcubZm2MASFPJH0rs4LMY2f3cDHpXTTrRi7RRq8LVcHJ21OOa1IIJJIZSCDXWtYFiNozs5I71zPFJScZIiGEc0qnVHKLEFxgjqDgdq6M6eFfpwRnPpW07cvMxRc3JOJjrFjAAPAJz6ZrUMIXoQBk5HrUU4yteJxurKTUai3MRYFRsk4CMCua2jFnGBle+O1W5yat0HPDyTWluxjNAoXttIIIHatLyAW9T0AAppKEdXdG1StKUOdq3T1M9ox+7YsQF4+tWHjwSQMKMjB7+9OMlB6bMxoVqk17OS1XUpiIYOMZ3DAP61Z2EmNxkAtgY6fSrV5vmWluhvRqScfYPr1GIilfLyQxwA31qdF7qflUgGlTxTckkjz6lFxSu9ixFBHt28546fzq1G22MNxxkcdTWSak9D1qFnG3V7+RUeFNuB64NNkl4PlZ2juep9qr2bcdXd3ObDUVGrzRWi2Mt4wCSmdwPANXDyy8Z5zVxXJF3HUqPEVLz3ZllGx87EnOCavSRsyDgAqcZHf2pRa5/eVjkqTbuoO6WxkuijYAT8q4APapZFK4G7IGdw9KdfDtu67j+txnD2bVmkZ+wt8o5JyMHtU7DGW/wBoiqUnytyNsPUSato9tSo6sQDzhjzVkr2HA5GR3qqCSaSZM2lNN/CyntxgA8+YcZ7ZxV2MfKvf58g+lZJNOz1uXTjNRavazKhR920rn5uuetXQqhwWyVY8HuKc6UnHm6i+tS5lTi9CiIsHYOMYGa0kUDb8oyRyB6ZqVFOKUdzoo41xi6dRW6feUlgJIG0Z3A4HfAq98wYnA+XIGe1RFK9lucyjKS9mnZR1M94S2zHG3rVz/Z4A3YGPStISlq2ied8loPUoeUvGeAzYGO1XXGCoIPXnP8qurNtXiVShFpRjuZ7xYbjk8Dj3qfhXCbTgsSPxrRzkocyK9nFSTv1sVDDtG0jG5gATVoqygYJyORnvWcYqW5vXj7ODknuyr5ZOTuO1SMe1WVwcYU5dsE+tE6UlYwo4iMpfvCm6JkAr/FwRVp1y5B5yDThFr3kykoczpw33+8ovH07YI6d6vOAo5wWyevbFZKE1qtieZOSTWplrEwJwx4JIz39avrHyoxncOtXVi4tKTL5pVE7dChtI2dnVs5H8qv8AlgKAT8zE4966IaOy2M50Zypqct9kU44ASWJAGQAPT1q+UMZJUAKD+VZyknK0S/aOkuaor2X3lCRCoVucdBnvV5k+QByDtyDj69KygpbLYzp4iClzKOrX3FArt2grgY4Pr7VohN2NzEgHv+tJT5k0+hnOm20l8TZlgBSh2n52HNaRjLZU5PzE/SpgnJtvqd8MPTi01v2MsR7iXwQSeAK1ViClcnjecD1zWlSTaUTmpU2neT1uZABYhMkZJz7mtfylAABA+b061XxK2xVKuoVOaqrmQEXnIPHP1+tavlqMqMk4Az9amSS0TOWunFyjDZmaF9RnLAZFXxFsBUDJ3E81o4Wak3odGG5qVLkev/BMox7gXbOQxAz2q8QCxVgcMxIA7UVKXLyysa060Yp0+u9+5n7BtUAEBlbJ9Kuuo2ggEEYwfSuf3nK6InGnKmpQVn1M6VNzbQScDFXJI9u4oecnr3Pb/OKKTinZbmNOPuty26eZmiPOd2NoxzVooyBgATyTz2rqq0XPYidOyvUWnQpmMMoQthl5yKtFTuAUYAABP+FZQ3TvrsaSmnDkSvddHaxnNFnaAM8Dg9jWiIxyechuCe9OnL3rNXY44eU1GMXZL5lE2+9gWOeACTVsZCknPLYGP60czSskY0aU3ValsikyFFPI+Y4NTkj7uchTggVMqcrOUzenXp1JJJWd/wAjPYM5Y5znIGe9XimWA2noCoH0rNKElZKwe3lFONtGZwg+6Rkc8g9vpWgUHBIyzcjPUU9HHlep10oTVmun4mSYhu3AkEcgjrWh5O85KghSCc9vpWsKijFOJnTpe0leTt/wTJeIHG1SCMkk9qvYYfw53MSSP61vGo+W3U568XCTpyld3uZkqEkKoAbg5HSrzRKv3TtUEE+xrhVeN+e3kVytwbqaJa+pjOrAgb8jOSB2zVoqCN2CGLEZHtXVCyd2t+hyVOWMU4vT/MqeW23nByM49cVcClQqrkqMDmsZ1E3dLRHRFRqJN6Mo7SdpPG7IIParxjDEA47EH1rRK6t0KnGU6Sa08jJkRwNuQTgZxWgY1yckgg4xjrUKKTTSNqLapKMnoZBgOxQcjbkkVoGI4BA5ZQWB7VTpNtzb6mTxEIQcILQyGRvMU/wbScjt7fjV7gj0PHJpeyje0mEMTz0nKO62M4qcYA5+8c9s1adAwBGQeenfNVGLTu0YUopRUL3d9fIzmRD3xkk8dqs7Tg/UDHvQ+em1G2h2/W1NNRWxlPGSAC3ylvlB6irbL3OTg4Ge1OnGKldGLc3bmehmPg7SRhlYYx39RU8iZGAx+VietONN8yTWjPSliYOn7trfkZPkkcscgkc1pldygNn7xAxXO4tXSWh5dZuNTkkvRnOva5IBySCcA9vWtiSI8EDOMAn1FXTqpq8VqTOm4QUI6a6nOzWiAbcYU5OB3JFakqBuBydwOB2qWm7TR288X7z3en3HsdvZgttK5yTjPeulgg3jfn/ZBr5KK93lifQV6k1NTb21MdbHdt+XAAJB9a6+3tgVwc810Sq63Zytuu1zaHIHTNyE4yQcAiu2W2C5JbC5JGPaqq105qUdCI0Wlywevc86k09o2U7T26egr0xtOjlAeRSFVSQB2rqjjIyj8zgqUZ88Z9Uefw6e0pyARyD9a7GSOGwUvMwCNnB9Pam6rTSjsbRoSinJJNs5c2ToOFPB5Fadxr2kBF33CDrnPf3rONdKNzXCvkk3Fq35Gan8QKglT0PasS98V6JAXLXKknBznrir9vGceaJjJe0m1JpHRowUAHJ7AfWvItT+J+i2LKrXakoxJOR0x9a3jSk+hyRxFNScoSV+x7GjIo+9gEj8B3r5+f43+Hh1vYw5IxkjkVboVWk2gpZlRorncb7/AHn0DvwwywK5XFfPg+Nnhv5T9vUgMADkc89q6I4Z2vbU46maxq1It6RPogORjJOAxAB718/t8bvDo5+2oXPIAPQ1yqnUT1idn9p0opxbvvY+gGmQkDAHYYr58Hxr8OlAVvE3Bjklq19jNLla2ORZnGMeeL3PoDzCGKr0Y8k9vpXhcfxn8PdRfIQy4HI+Xn+tZ04TaU3HVGzx0Iz5W1yuzaPdN5wuGI2nnNeLJ8XNAl24vYxv5JLdKcVNPWJpUxNKUf3cr9j2yMYOGbJ6ZPavHE+LGhPtBvEwHyeevsK6JU5TtoYLNYRnyyXvHtSleFZiWz0PevKIvihoLlWF8gDcnLdfauSWHkldHfQzOi5JR7P5nqg2xlQeeMA+vNecL8R9AmZP9LUEHAyRxUzg5N30HGulbkXunpsaBiMrk7yea4ay8f6E8wX7WpJ64I/xpVaUlFTOqMoyqKnzb/genW0eMEnjOB7Y7VWsrqO6iE6MTGwBBFZKo2lJmtJShJprU6GKMYVd5HXivJNX+KGj+Hrxra8uVVvMGQT1xRKlOT50tDjr5pCCUJ/Fc9ojZY8DjbzkCvmu8+PnhxN6rdqNhyeRxW0MNUn7yWljmrZnGnpF6vofRZk/eBsn5Tkj/Cvk65/aL0GDZ/paYYkE5+761u4TlCyWhzYXMZtKH4H1nJOm5uTjAbn+VfEmoftP6KSWiulPzEYB6ipjgalvxJWPpxk5tXW3zPtSKXqpbPzfnXy78NvjlZeMdV+xQv0IOB2HvWeJw84e9PY6MLVdRtxi7H1xE4IUPk8gHb35qKziDRrMCfmCkH3qFThKziz0OaSbjPRdzUW225OM5PX0rRtwuCMk7iKmTto9iUlHmhomrGa0Sg7W5wQCD61rNbFwCHGQSTgdq0p1OXRCoNOpczFyd+SchcAjtVl4JQ3qFAJA71dKoqiszGrGKmopPUxp4QeQxOUHJ9auzxsRhsgDkE+prSLlN8i0NatSCp2nG7/yMUhhl89hgHt61YKPkg529vce9dKio2vseeqqjTta1ysiFiCFB5IOfSrqjLDdkYAP1rGrNN3OyjSjypKWnoQAYK4PIIyP6VYCbunR8HI7Y6U6jSd57nJ7JU4pJadCuAG5zzvIzUgU7SRkcsCPT3q3HXRD9u7OEnvqMwp2puxluMdvY0vyqwH+1ge9KtGNuZorCOUY8kvkIFO4EEbR0UdqRBs2nJJ5x7ZouopReqJpwbbdrD2UsmFOAOCD2zT1O4Iu4liSDSk9b9h18O1TtB/F+BCqZIXacI6kj1FW0wSeh+QkA9yKwxLv70kdFDDXoKUXqVwCDvySwXAB7c1NIQucHAIwD/SiLd+W2jOWFWcFaXYqMFzuHrjBpX+cBgTwdw9/au6nG7SZcaba916sZw0gJ7HK+wpyZALMMMB0Papm9FFAuSMlBLRfqPCjd3yQM1NuX5WAJ4B4rnpSlZ9jrxijCEVT1/Ow5CuBtJI6HNKqnBDdeTk1aqRbszm/s2TknF+dh6kdAOnGT29qQbhHhSTgkgHvS0lJJMzrXp3c02xyhWU7VJKk/j60qH5ehzuCgCiVK2hCquLk2tLaDQuSoB+VcADsMU4KcnGfmGMGrqtq12YVKMU4zkrtrREhXLJ1PQ06NgqliSc8ADtUzbTsjujNPl5law9STwG44x70L1jbOFOBk0+XljzRWptWkuZKK+fmSNtJBIHy4BI7HuKCCScnGeSB3qL9eppS9pzuMlp/WpCDsc46kAA9h9KOpyO3T61VKLa5ZamFfCyTSpvUb8rO7HJyQMHtinFMojhsEsMn8ehrWhUUrxZyYylGU4Tle7K7HGefvHr71dEZCltud2DzUKo9j0akFShzJ6L8TO2HKN1BPI9KuRJt+Xkjdx7D9ah1LbK9zCGH51FX1v8AmRhegXvk5Fa8ECyrnaeMkCsY1ZN2R1UcLGLvLuS2NopUMR3JINbVkmETOMLtP19cUVq0mkmhSw/JP2kduxXlzH5RXvkH2q5NE7NGMArnkn9BVUasVFqSLr0pVKcZ0Vqtzn5W4d2wAeRjtil8TK9lpdxPGSfLiZsj2p4et7Saitjz61OVm2tXoVkubY5DSD7pI96+EdY+NOsaZqlzaIp8tJiFJ7/Q/wA66cVh3BJKRlCnVUnUit/0PviK4i3R/OMZAB9+1fBUX7QGogEyZycbQe+K5o1HGdubc6qVarGnzOGp+gpeJefMX5+TivgKf9ojUYgx2A56kZ5z7VhUg5NRTudbqTTsk1+p92TTQqA3m5A4H41+e17+0XqTR+XGhDNngng812Q91OLaueVCNdyVoOPmfd7yRO52SjBwQB+uK+UPhN8VdR8Xa8LScEBVAKnv71z1MUoJ3ZvQy+Va8oprufWKFgeCccHFbMNqGjVz0wCT6104StGULyZccG1ddvuMcNhAxPVjyK0Li22FY8Z5zmphV5ne2hp8UOVtJmM+47AvIDBifWrs0Rz14VSB7V1Q5W+aWxwpctJ832X95nspHl5wCmRke5qR1dflLEk4A96yh7yUejLhiaVTVK3L+IyOIuAz5BOQQO1WEwM7T6YJ71tTinG8GHJGTdNrV7kgjChOpboPenYy0ZPLDqfTpWD5nJyfQ0jBRioR/wCGKcqbWBUA7j2qxKWZFC4yHPFae21UXoQ6EYp3V7P+vvK0aKrKCcqewqcRH5EGcqKKjV2vsszVJOXLFW6kj2ytHvKgnOTnv6VpRxgRkkkBlzjsK5ZYlRaS2N/qklDnktWcnd2+GOBndkAHtita/RGAH8YbGaqniJ8yS0NquBdSHNpa1jlZEwcdBkcDvV9ossNuCBg4NdntktkeFGhz1ouWtuhQVDhBtPUkn+96VcRcBmORnGTXPKq09VuezToKpNxbtoVI4w55BCo4APrWhsHGeAQck9q2jWsr2OSlRVKs1N81ikq4zuBPA2j0x1q8yYw2TgcHHehyU3ddC+aKSpRe5UPAXJwVI5PepGA24xliSQR2rNKKlp94/Z8sEm767FcodpfGWBOFHerBQ7VyeRgEmqg3fmb0KxkYqMG1pfoVmDDG3J7gCrBjIyeMAEEntVqtBPXVsnC0/dunbexVKqeGJ4wPp9KtFRtLNwOABVYdxvyIxxVOUaXPLUzdoBAyQRk4/nV4xBSncng/0pe0SV1sKvFRguZXe6KWzO1cZO3Jb19BVxImZQMdzxSpV1F6bM7UnKKqRRT8vaoCknJPI7Vcxs3Ngj5gQD3+lN1E5ps4UoOTctEigyhFLkDlsknv61daMBcbSVJBx6VEfedmzrxScUpPdmeyqWCngkAjNXPLBO/qecj0pU+aMWmzrVOFVqUe1jPQcq2ScnnIq3LgKrAEjOQAOtTTmpPl3POr1XQbhLVPS5UGflbgjcRnv74qw0WY9irw4AI9KtVGlZbGkOVqLa0Gbdx6nawzg96trGZF3HlMDr2qaMlDRanR9W5m6ie2pWBUgFeQTz71a8s5U9FDYOBSou92jDEVqk4xjPcolBjaD8xyDir5jVnZwME4yPXHSs6VeUlytGmGoqD1ldJlAqdmF3Fsg4PU1px2oJid8ENgkHv7GnGqotdWTPlqK7Vr3/AoxxlgUbpzgjvWr5XAx97IwfSqniJNaKzRvOL0f2TIkiZSFGN7EAAetabQEEvzncBj1o5re6+pKqpOyWu1zHERI2tk5OfpWgyZyzg5XgY75rXmTkpJHNSg0nGWvYzQhYNnIDDJBq8qYYqAcuoIqZPqOMZU5KMmm2UTGsZ3tjGRg1ceIEkMvQjg0oVNLXN604yk01ZmWycq2DyTkGp3Rgp25yCFx61opJaW3Ii41G/eKjKqE7c/N0H92p2iCghs4LLyf4vWq1T3MaNOSdpbGZIoK5ySQcHPbB61ckU72DAhHBxgU4uSjzI7MQ1JKm/hKQiz8wOckjnvVgR4IAzgAHNOEG4ucXa55mGnFVXTSK4y+cHGCOvf2qTAAXHJwGye3sK525NWjo0ZxtFxTd79CqyDaAWOEZjgUAru44GSB9a6aUWkm+ptVrRlNKCsl+JWG07gMbiQxPrU5UcNgfKR17e9aVmpL3uhdKpzfu4+voRiN9oUZJyckHpVrbjYuQcEkg1zKMYtqA4tykoydo3Kb5GOpPAGO/tVyTlUbjkAk+9NpKHNazNYwm6nItl1Mwo23jJJIUn2q27MdgB6hsg1alzrmlsc9p0rwh8T/pGesePmzwuAPenn5gMAAMx5HaplBNciViYVFGabV2VnXcRg5VScj1qULuIQHDhl69/rThTildLQ1rcsZKmt2yjiM/Moyc/lmpgmwPjIIJIwOn0p+w5bK97maoUqkk1vErhADwcgMCAO1Trg/McFmz07CoqYeLgpN6mVPF89aVOitCq8YQoSCQPTvU+dyKOcc49sUqMn8LWh00aUptScr7oqYXaDg5bI5qUq4yWyVBAJ79a1hTT0Zw4mrJwUI9HqV3i4IzgggHHbipRwhQgDLEn2FXOfLaKR24SlGELMz9gwTgsAeFHVvatB0XO4LgLg59fesqM1KOiFiMK4zU5bdjLkjOwDcRhiSB2q4wDcEknJGP7tVJq95HZRgnBOO2r+4xljyoJ4ZieB2rTZFwGwRzwBTrVG2oNHmxk3Tc46O+5iiPgLtO5jgHHStJ1YIeDnaQMdq55QjGat3O6lJVabpyd33MSSEDA4HIJPrWi6khMEZTOce4FdHs27pvVnCoOEVU+yna3Uy2iBYZB7gfXvWmkRRBzuduQMVFNcicG7s6oQc2qrWvQxZIuRkAlsDj1rRaPIX5D0C4PcjvRBJe63cp1E4r2qs1qYTxfL6AsRx7VpyRoF3YI+Y9fXvWcaP7y72E3BRi4/Ez6AtrTAGRgLjn1rr201EAYMcYGAPpXxFStdpSZ9NjKalSfKutvkZsNvuGBkMSVFbMUDLnDDkjJ9K6KVZ6OWxwUoOElyLVfkZy2gWFF2glRgmt0QJ5eAP4jmrjUUql1sy3ZJ3fyOeRWV2RwB6E+lbUlqPLGWOAQMVqmlotGc8cEnFSi3bqfPvxb1OWw0xjE7KwViCO1c18c5PJs3RnO4kADsK9XAyUU5S3POq0nWrRSWjdj451PxT4heRwl44UMxAGf8TVYp5kshbDZcYNeJjczqKd49T7qPDlCKV1ojm7jVtfuMCfUpCGJBJramhRSCP4yQM9hXK8yqJJ2JocPUXB2Wp5B4ksNYvss17LtG4gAn9a9Y+wxXO4IMAjp612rPK8koxNMPw7Rou7V27HyXeaLrsTBWup3AOVJJ+X2FfVc3heF2jbYOAQcVvT4kqJa7mb4bipcsErddD5GOm66QjeZK0WcbQTzz9a+pW8OW0DIrx4y2AMdK0jxFVb0N6mQYZ07W8j5d+xa+0m1ZZQqMCBk8CvqQeHrMFmEQIIyQe/tTefVYRTSJ/wBXaM4KMmfK0k2pWpIluJBmbGATz/8AWr1HxfoDzTKIowqbvlI7Yrto5jKas3ax49TLobRhe1zyr+1r8MfLvZVcdSCefrUl/o1xYOHkUkO45HfFbQxk204M56eS06lK8oq2q+ZZj17VIVXbfSFicjLH5axhG0eWbGTyBWUcW9ZSeppPKaTSoQS0t95uDxFqvD/b5SMHgsfxrm97DcMjByBW8MTKU7rc4sRhaKg3K110Z2kHivWjtX+0JMqQQQT+lclENoJHzEYIA65rGtVloovc9CjhIeyftIKy2PRI/GmvAKhv5AzfNyTXAo/CZDbuhAp0KjlP3uhX1N04KUY3v+B7LoHjDWpNStFGpS7DOhKqT2PNcj4MV5dbs4Uyd06j8zTxFSpThKUXdHfleGpTnZw95fkfsv8ADi5nk8KQSXE7M32YHcevTt71g+A5J7HwpEvIK2wIwfu4FfK5fJuqpt3PP4rg5wlFLTZWPh/4+65cDxDdJHKwQysSVPIOa4X41XTT+I7skkbJcnHqT0r9OzRKNKMUrXR8lwpgGqcuZ366njk2rTyMBLNJnAGSev1rEmIBU7iSGI57n3r5yM5ctkz6+WDi6cUoq/S5prdeawWWZguQByeMelYkEZJ3HLYPHqPas6iTVuY2p4erBKNlZX1NBbZmmDBjsdsgf3uetaljmZokVSGLgDPYe9KWInGNiMHh1WfIrX/A+y/2UdBM+tPO2WCtk59f89a9f/ZK0B9y3JADGTlj0Br5jNq0pTjDmPs/qsaOHStuz9BLC0ZLWOMgfJGCSP6V1lvabYQozgqMj0x1ruwMJL3kz8+x+Jgp8ij3MmCLLRqQAwyeO+Olba2mOSMB2yfce9azaceXob4TGU5W5/SxRFqTgZB2gED3rbtoCXDqMFSCCe/1pqouVWRlTiotzi/KxnRWYK8rluMgiurt7ZWI+UjdkHFVPEKKTSMsPFOo7nLSaWsvT1IOf0rtVsQjAJjaMdKiGKk2mkd0MPzQ5FseU3eiXKlnjjyg4/8A1V63Hag4Ei4B5OB0rro5gk+VnJDK6c24Tdn0PEv7NuIxgoQMHANe0XGmQMA2wDcABxWksVok0OnhIw8ux4QyNGGV+ueR6V6DrGhARlo1+cknjvXZTrxlayPOq4ec04VNEtjzpgw29PcirMkMm7A4AJJJ6jHWqqxUXeTOeMnKajBeVygxOACCXyMYqeZW3YUkuTkU41E43S0FOpKMrt3exCmSVJBB55/u0hUlVBJyDnIrBxvLTYuFR8rUlqKVUk8YRgM+ooU4GMZwQeK39nq0uoTpRaXOrPsPh2qCTnggc0zcWbJyAR27VlOMnLnb0M6KUk4xViWcEKpboFyQO1I54XJ45BB71lGbUm3qFeUZwVOBTIwVwCRwCD0FT7clBgAbiDXXRdk2jlo0nODh0j1GJuIXORtyTjv6VMo28A5wwOfSlUqOSvY3pKVNJNa2CMLuwcjACg+tSqd3I4BOMjt7msYVFKKdjrlGKXtU7yQKCXxnI2gkntTyu4ZHQ9R6+9XGSleMdDkpS5k5rcRX52kDJJyadkAKRywwSPx70RhFvlkjqWKmkpR1fURA3zfN8qsMk9qkJAUITzkgn0rWOrs9jKjOUpabdhgLgsCTkDqamZEbAZQdxJO7oRST95xsaKMub2t726diNE+6Nx2sMc+vrVmJBglslR1B7VTquyuxU6TqRbS7skSM4AC4XnOamO8SKR91SSQO9YVLtcxtCq4pQk/+ARbDxjooAPtxVlQWK4JAYj8aUG0/dWxz16s4ytJ6XKAj2gjBOw5A9auSZRlxjkHNVNuTtFWZVKSk1GRUA8vaDwhJ5PepCSXBONoZSParhDnSb3NMRG8PZJ7DwwfaNx6dCOuKbGrAhupGQcfpWEqLpq/W5nBwjJRa7FuG3U5Y85OcCrFsDuBzwWA+tSmlK1zqUFf2lreRetoFGFbOBwfTPcVZVNm1t25jgYPYVEIuT5YvXcqMZKN7aFuKELkDoDnHrTPN+YAZBz0NVa1n2Ir01KHKuhdUBwF/E47c1UgnC8Nn7wOPSqknCPLDqbYf3o3eljI8XIsXh7U2GT/o7A469Kr+NbjPhzU3D4KWzYqMC4+0T2OPNVNSjbS5+Rni94/+EgviSVVZ3JXtz/jWJ40vlXWrtmIAaZs46daeaaRutz6LBUldQ6aNsy3uIyxUZBA4PqfQ1xc2qbSByVLksQe2a8yhTfKnbY6JThNSSdux1Mtz13sfugYHauSGqibhckjIwe1H1JqTaYe0m6Sk1t26mvNIMjO47SSCe+ayxMcD5ucg4PfjgVHsJKXJe5tWm4R55LU+qf2YF83xk7HkLGGyehxVj9lhA/ip/MUkCFC2O3NeZj5pyUY9Dabg8M5SVr7n6cQgCGMn1BOe/rVqJGEURPGI1J969jL6icbvZHytTDx9gpJbvZmXNFkdyc5B9a0ZRu2kcYBBB716FGV07LVHPiqVKE41F1OTlR1YrzyTn3rpfswkKuVIPI4HWtFXhLSSuaPmlHlvo+py7Rj5RjBUZwe5rfksGb5gD1A/KijUUZN7HFDCRc1TtfS9/MwFjDAsvAGCfetg25UYBJBzkHvVe1vLmvobRdptytzLUy1XBVhnGMH2zV9YiVU5JGSMitKcYcrTerHCrKU1UW9yjDECw4x8xJPpitGBFEoQcZwazpqTjyy1RzVKkFVdRLUYLXlQBgtnGO3FbkcROxckjdj/AOtXPLERl7rR3wot001q2ZrweWmS2BtPHrW1LajaAMH69qxpu6tF6lujOHXRnA3hZpGAX7gH0rbvLTKuNpHPB9K9ClKMYpSON80G6knqciifNnk5cA57+laXlYJznGSAD2pqtGKtvcuEfaXk1ZIpmH5kUEkbskj+tXSi4AycKxHHepp0052luTUi4z54P3bakJt9wAzhjjjtx0q6hUc7TkAgVUpOMr2OB4NyadR6dPMzZbUKmeNxGQD3rUMeQGY4Ck4zTqSlF6s7KOFpSp3gtWYhiJcMOcjp659avtHtAGSTuP4irk1KPLH1IlSlFKV720M14iNoGNzNyPX2q60YZC+4/KQT7VzUJNStJHRVqN004qyVvmZ5QoHYn5QCcHoPWtCRAMDIH8WB6CupO0k1qzjcpODdrX3Mwru2/Kc8de1XRFzgknBBFbaqV2RTmoyVN7bmeUZsEKQBngd6vhVJwSMFhnFRdRTSWh0RXtKqfNtcosu4gcgkkHHerO3IPBCh8c96wlKUo3XyMVGSk5rVL9SghbADHHJ4PerqIMnGcb8kHvTjOLktLMulOUYeS6FBw3lgHIBBBNaHlnALfeB6elXOSctdmZ4KDnFpvqZ6xEggDBJzk9xV0gKVPOSRwe3uKylF3ujfDSja1R6XKTxZ2sM8GrpRXOcEASBgPU1dOqrNsww1JVK7hOPu9zPWLDh+cAgMo7VoFV2/LnYXBOO+K1fM3ZLQcKsYvke97FQq33WIKgkEjpV9grDjAG4Eg9+Kxi+W1+oqkJQcoR1sil5apGDyScYAq0V3dCMjOMf0pwVmpMyhblWmyK+3LY77eD6VMVACquT83Oe9ZtSckuhcYwcuaCETIRSOTyCfTNOVkxyAQMnHpThJN8q2Ouc3FprTyJRJudBjGGAPv9ajDAjOMFUJyO9ZVJuEXdXQsUlUnFp2b3FYqxyCQoYnn+VRsoAwOXJ4J+nFb+yutETpTilPVLUh2rkKp5Y9AOtSMioC2SMckjtSlO9ox2J9s5Q9o9l0IdgXJbjuc9RilXdgMSC5Bz+NKcW1yt6mcK0ZSU4qyY3CNt5JLkkE9sUvXoTxgmop0bNI65qSk6qV2thhgAYkE/6zcD6elSjlsuRuVRgGtopp2k9ia85yfNFK7sZk8Bz8vQk8Vokrs3cjgg5/pWSqtSSa1QuVzjKUVZdTnW3KR8udzYJ9K0Z4RhVU89l+ld9HEqS1VjCpzxcIXvcyym4sc5G0jI7VbeHa4XJzwSR0Fc/tIyjZIUqLg1NvXt2Mxo+VByCwIA9KvFduQeQWBGPWtpcyWhvTxDlSva1jHMYUKCQSCCMdq02j5IVslmJJ9M0QrqLVkc2GoxhTbtdp3RmiM/exyFAyfap3PGSTkcAjv7UpttXZipU4SdndsqFeMEk5yc+lSsOEU8B3GPx9aMPLmje1rHRGo1GUW7PcrlQFADfIBkAVMYlVSNxJzg+1P2qTUYmU5yqUuaWj/MpPjYS3zHONxqR8hsYwoIPPartGdmzTDxlFpyd2QsOU4JwxyBUvz888KSQcdamo202kKjFwmuboyntwTg8nP4VIV6EZyW5ApyipxXNuEZzpzbb0ZTlYlgOQAuSPXFTlV54JYEjHrWkaCi+axUYTjKzlZMqK21TxjOCMe9WCPur04Jx6e1c1RRlO6MVRSXKtG/xK+NqYI6g8n2pcEqMgdCM+lTyN1Ls3w1RqKi9r/eQtwEG4k5yQPShhsWMswO5iOetaU04zbTKqJtLmW7GtsCZycNyAB1PvQTtHJJBOSa0jeTSexxVYThzTT0IyG2EOCctwPWpwrcAg45wD2omotJvQ9VVGouSjfQqOXLfMBlwMg+1O2lSM845//VVVFFWujkVPmioSlpv6EG3AI65ZiRUuz5wAR8yk89qU4KKTQ5NwjZary7FVl3evZfr6Zq66cdSFLAcd6hVeZ3FDCRs6kGZzIkZHygh8A+3pVyRAwC55VhwO1E3ryvYijZaxerZmgbWQpggk5NWCgVQcDjcQO9XJRcbXJWIqylzT0UfxKBIwWZeMsMd6ftHygg4Y8Vm6a5bPcuhWag4yV+xn4yRJIckScZ9atsnADZABHP8AUfStHHma1sdDcYxTa0/I+t/LVgTvAjK5yaseSdgVchBwQfSvhqcUmuY9yvWi5XflczArLyOhcE4rVFvgKGBLbc5PvWsaiSaa0OeDc5pylZv8imVGDg47kiryxFMEckYBYdx6VEZcvu9TulUlFXSTXfqVNoKEYxgcn096kdRsdCT2Ix6U54duSUWRN81NQufFfx7uj5jRKw+fJrvviR8NL7xFetLEzGJjgZ9zXvucaNBrm944snwMp4qz0S1PgVY2xlXycjAFfUcfwEv2KERuRvGQa+MlNSlzXsfo0sI5pKTutz5YdXPyFc5GDnsK+rn+AF8ysPKfBJOT1+opQkm+V6nL9WjFuCd10PlizUxyLk4+YFR9K+lpvgTqECA7WIVS3PeplZKyZrT95qMdLHhLXEflAAgZYjIrY8UeGrrQbkxzoQAwwSPSinF7oKeIUajgjkruLznTqQQTuHemRll9eDgEdqUZNJpdQqYdTknOW+xSIELAE5AYEgdj3NXWhSRgwJAIPPc+tbaOPKjGEZU0kluZU+m218NzqCc4INa8cDYA3krkYPc1m1JSukNVVKHI46dTyXxF4TF0g+zgn5uB6ete02tpGcZz98gD+ldVDHzpK0QWCSgk+jTPm22+Hpm+9ESrEAkdQa+4fCHw2utdw8EORuJwB1rT+0pLfqddTDwm1OK1PjS5+F0M9uRChWbIY7R+lfoSfgVrAIKQMBkckdaIY6ampKRx1cshWi4pW8z8ntS8M32lSMs8DKqsVBwcDHSv02179nnU9RhkDWpL4bqOfrXowzGnNuL2OaplM3G8XZ7XPyxS1lZvmGGAwM96+7tQ/Zd1+Jg9rAwPU5HT6V6UMwgo2gzjWW1Y1E5vmaS1PmT4b6YZfEelIUIb7QvI719SeBfgf4h8PeJbS6v7RhFHMpJGcLzwTXm5pUSg5J6s9/LJtJtqzPs3T7YWHg9JCCSlsOn0r0PT9I83SYbOVQUEYBB6HjvWeSKEWp1F1Pzrie9RTpwl7z6n49fFKCe88Q3nlxuxMzEAD3r9K9S+AukX9697JEu6R8kEDua+gzXP4SWkD0MmymjGlGi5+9FXPyAfQrnYXETZbnIB4r9co/2f/DkbALAoBGSQOtcFLGqavKJ6VSrTjC7lqfkXBo17EQUtpCxwPuniv2c0f4A+GWbJtlJLA428H61lPMYpKMoNmlGlConNzsn0Py18F+A9VvSk8tk5/eDBI681+1fhn4P+F9OVY1tE4bOAPzzXl4nMHKd4x0PZjHD0opJ/0jxn9mbw62mWzCaMoQAcEdK+vtJ8JaZoO17CMIHOCAO9ePOg5VFNojM8ZCWH5I7dDo1RETgjOcgegrOmmKgqGPUg47V7mHptWk9EfH4izhZ6stSojDDE+W+RweQPaqcd0AFRmGM85pxaTSWqMfaJUrqyd9jVswuQOykAk+1UY7pEdOT1Gferly2unoKOKcXeSbO7gtFKptHOSSPWjTLpJFTJ4LADPfiuOM5Rjfc7JwjJJxV9S4tuAVKgYABI/pVvdHjhwM4OPp1raFZuyRjGgnLV2W5R8k4wBwDnI61OShKnGfmAB/xrOq00pbJG2Hm1J87uiqq4L5XIOAue9SSsDkliDznPat3NJcz0sc9LDzoy5oq6kYd9CD8xzypBHpj0pby6hjXc7gDBOD1JrX6xd6nJTipz5pbr7jj7jSYHY44VhkE9T3qjfeI9Ot5AjXKhjwFJFbwlJpNnTWxSivZRXl95zGqaa9uxdMlTkcV1REWpRiQEFcAgnua7aVdwVzkxMVJKLVrHmpXaO+Rgc9zW3qdiIZMA8bScV3UqinBTscNSDjNRehhgZZQOCOQRSAnKEYwDn86OdSVmYYeo1Ky3GhmUJGpyCTuJ7CoXk2sSePmHPrRFRS5nudVOok1Tb0LWR8ig5CnjPcmqP2m3RjlwMEEZrllJQbfVmft2morXl3+exd+6N3Jxzg9qxp9eso8q06gggAEjmumMk1dI59VJVXLR6WNxRtU7SBk5+lc5/wAJLpY+9coADgHjjFZTcm+Zm/t0o+yg9Vr2OmySAyjhic5rl4/FWj4KfboweSckZHtVOolZWK/dKl7stUdUGGwHoc9uo+tc1b+JdKY5N5GM84BHIPSsHVVk+5nhmpXTOmAztYsCwrNi1azl2COYFS+eP0pyqrmtF6HRKo+Tm+1+Zro22QbmIBbn6VVW6jl5D8g9PWrc048jWoU4uFZVJbSLoU8ZHHWpYpFwvUZUHjtWkKsY+43qa1ajUU4rb8SVFDkjPsQKcmSByQTk8djVSvyqMTLDqTqOVrLqSqnAB+8Dnin7yo3YGckfSuapzqbbROHVKLauOxlQM4wpwR1FKGTI2vu5PB7VpTgkztfs5wSgrFU4YngjaxHPf1q3xIMhep5z2rVys1FHBRpycm21p3KOHVjkErwCT3rR3whQemTzn+dZvEK3LJbmkqSjafW5UaFlCbScA5x61Vu9ZsbVd0soG055NZ4aclD3lqGYU4qer9DYt5AAFYAcZ4rzi78eaLbt/wAfKDaxzgjn681MU0tFqKOZ04wtJ7HqIuIgpHoB+npXlFt8RNClKKb+MZGeCOc+lVyTi2pdAhmdKfLFf8OesfaCVz0O4ceorhbTxdpd1sVLpW3cArjn2FZzqqMrWumd+H5XON976HZtcFtiqfukHJ7+lYgvYZoQFcA9AR1A7mmpJSUUtzyMTSVSs4uW1zE+IWomHwpq0gLFktHAA7nHSuX+J9yV8I6wTIc/Z2I59q78DSTmlJbnPjMQnyqX2Wj8dPGetXEmtXZZznzmIH93J6VynilpJdZu3V8kyEgHvz0NdOOiubTRn1NCu01Z3jYgbUGO0M5LZJJPas2yt5bhmUAKMkZPevIqqKfPJ6nqU8Mprlm7KWh01pd7nUckKowfWrVjYbUGW+Yg/hXLVrpLl6s6XN0Icsdo6G7GyYy4G3oKgVXQAjBRSBx9awqSbTitzLmi6ak9n+B9kfsqKP8AhJLgDJLRqMeo7VY/ZNVm8QXMgGGUqSR224xXh4iLUopqzPRxcF9WaTuj9NItzQgDByCAPXipoeIogWJxgD29a92inypJanyNbCykk4Sv5Cwxhh6gnABpjXQtyqu4AY55q5VJJOyIjTSnyyd3bYvxQLhTwMgA49jVZNXtchGkHJwOalVFGTnbQ6pScYqEt+5fa3DgheDnIHYDP86i/tS1GMTL82SQPc9PwrFVovWJLgoJSlrYoy2YVgMgEdj3p1zqlowULLjBAIJHFbJpJJHNyU5Tbe5mPbqOM4QMMgU6K7t5HysoIJ24FdCm9pPRl1Iprmjol1KZtXARlJIbAB9K6FVRtoUYw2TjvWqqtLmOWd5y5FutzMtst8vowya1Fh2tv4yM5x3FZSnpZFKClJSUtSbYpG1SSy5OT2qKW/ggTBlUcdM1yRUm00zb6wrKK6FS6t+vA5JIxVKfWbTb/rVG0kZJHNb0sTbRsyrTcJqa2e5h3Fu24KuBlyenYdalbU7WV8CZTliSxIwa3jiYtctjgrWnLng9jKeME5D8ZIIHfNTzz2yn5SAWbOf8KuUm7RQUq0VKXMisSIyBuPBH4U9WXKtnIyBkmt/bXjzPU6KrnJxcfhYZLAbiSQTg+vsakjQ72ByFxwPWpbSakyJwSXsVot2Q4yCx55PFTmPywMtnkkgfhWtScFO0QlUc4Jr5lTarjG0HcOR61Nw6FVyAVIyO1YtNu0TWDlL3alrdCqyndnksTwfXPWnEAFRnheQPWt6lNNJLU5YpcvJIq7cBgWIJBOfT2FWZSBkdGIIBHaqTTjzNEc8nNRtptqUZCUXABAByWx0z2olKjGAScFsVMIaqbM8d7slCD1Y0EM7BOVwGPp7GoXuIk3NuxjjjHNZ+1V7Pc6MPKMFZ/MkUEOrEYBXAHp7ms46jbKVDXGFRgSB1AP5fzq5T5mlEwjKm2pTdtdu5obiR8/BJJBHes77fakq3mBju4ANaQq2ioJaoavKvKaa5Wt+xcZWZlHJBYA56Cn/bLSSL5ZQGJB5I5oeLUU1JbnPTpTaSg72YnI2s+QVQg47ilNxEd2xuwwB6+1cdOcYySZ6mGouE2mSqg+QnhDgketWoykhiIbhTyfWto1FZyl0JhUXPZarsVXh+ViBnZkfQVaJCA7hzuJOO9VHmUrt3RxTSUpJXszPKmN1XrnJz6VOzhjuDZ6celaSxLm1FjqZfBfDqipj5lj5+UnB9KcxCDJ5AJY+9RG8U3uy4xjFezirxX5kARskDqynBPt0qwh8yVAM/Njj09TTpTkocy0aNKOGjUcud3Q1QSEPO3IJP061aQBETJwMAA+n/AOus62IbaSR2UqlKEbct2yjI4XA55YZJqd2U8bRjjHvTu203sYVE6kVGLsVpHKg5JJzgZ70TA454IyMjtVRpOLuzilOMbxcdSqZufk4BwBnoKgllVQAzAMMDP16VammrW+ZrFcy5pStbbz/4Yt+aCgyM4yMj2rJOoWybSZQeufasZ1Yxt3ZVWr76mndKxpCXKuWwRuAB+vY1hnVLRFbMwG4kkE9at1UpKSHLlk24uz/M6BX2qOeeFOe9Yq6pbSxh/NBC44BHXFZxmlO8mGIqKT9nCN16mvtXg9BnJHrWYt9DIikOCQSCB29qIyc52e5hOrKSaT2LJRWUg5LZBGKhWdGKhMEDH4Vo42k7Fe1537LS1tWNSPcCckgOSCO9T7iTwQdpwFIrXncHeSMatWmkqfQpMCik4I3cHdVlzgFQwJyQT61nKL5eU75OKp3gtjN2qhbd91mAAH61KYmAHzEndkH0PpVUouTu3YwounD3ZrdXKTxZdQc4VSeaugg/N1xgECtFNXdkZ1sJKMYzk7roZyrgfNyTnn1q3JjaoGQCSM/XoKqM1P3mZUp8j5ZLRsxpmYBgxyDgj3q1LHjb3JGMCuinVhdO2w66nZRluzP4Cg7iRwSAelSs24NkcHjPpWLqxcvJm9KlFRc3Kz9CNu+BhcjmmCQbQvPUg571UnGLUm9DClTc/wB5DUj6cMORkg01pAMDIYtk5PvRXrKSui/YXnaWlrfiI6pgAPgLgsT3NV2wSAOjAkj0+tZxi4R9pc6amJlUqKCj7q6gSMsOnOB9ahLDLZJJQZwe9aubcU2ZYms21COjT/MhkXcqrjncSG9PamhmYqcjIY4HpWyUVLnaORqfPGmpbskCjbnHycAY7U0SAsowQDjkdqxq2ilOO52Wqufs3sPRztQjJywH0p4ibOOBxnApVLWXKN3UOW235si3HaoLEjdjP0ppDHPOcHBHrWsm1KyHKThTUJra34jo9jFiFOGJHHaogdhByMHGAO5pXXJeW5z4iXsZOMlp3JjyMZ6HgjvVcneOCVVSQc9qiFPXYzqNNR10YrlVVcAgEHGO+KIzhVwMjn8KiS5m0kVUoS9mqi+H8Su0Tk5PJIBwO9WOCvPILADFVCTT5Xrc5qcIt2gnZ9SiwUIB7kkirL4+RAOCckntmlzJyV1odk24QtGN7sz3DELnGckDNWJMMUEQyyYBxRF2fuo6q9P2kE3KzX4n19EF4OcA8ioFJXb1GMDaOlfC+zU5XueurRTqJFshSvrnPI7CkVguWBJ3YHPfFdUoJe8tznhPmkpuOnYo7nUtHwNwJyB0NErKOPQ4OPWrnKDlfqZYLFtz9m1bUrtwcliACOfWmAnbtJOSCuPTPpWsqttFsdUsKnNtvct7Qy5cA85ApkTnIByG2Hk9qwjSSd3r0OipSdF8stmWQiAMFHQgew44qNWyo6ZyTgd6wnTUXytnViMfTcFbfqI/X1JBH/66YxCHf3ZSSSaiVOLlddDB1XBe2i7qRm3aqFPGCwPIp126pC3IJILfT3pqEUtVqRiGmlNT8j4S+NcitqDL0XcR7jnrWV8YpVk1plL5G9sH1r0sWoxoWua8O8spuSV5HhLJyzEnKHK5HBpzPxIGJAJ5A7V87BRi02fWU4yhJ2eg4MSV6nbk47fjVR5BsUhiMynr2FY21sjqpzd7tbmisqKTljsyQQOp+lZyPwA+cE5Oe9aN8yu9EY1qkoxcorU24JAskbBsgODg9ayUlbcMZAaTIwfyAqo04tXRyUpummnqz9E/2bYoruJJGjAIbBLdwQOKpfs0yPFYoTnLKMDPevOqU+eqrbHp5lifZYZO3vP9T7iGmac4/wCPdcqFyD396gs77cYlkBOTk+4r1J4dpJo+bpy5kouVk/zM660mzQZWFQXABOOeK1bj5sEH5SQcH6813QtFWtozjm52UG3dHDz6Val1Bt1Cjpn+dbVwoBHc85PrmtY0qcbRS1OOpUqykpKVmjzvX9EsjEsqW6B1Oc4HNdFqAxG0ZOc9D3NdlJxtyyRyV/ae0U3o1ueN6hqlvo0RllYiNGJJHQelcD8cZm07wpfyRZWYI5Uk8DjivawmFjWkqaR4uZZhUoSjJ7NksvxW0CNihu0AVupP8q/I7V/FeoyX1wv2l1CuxYKa5sThY0nZbnf7Kq1eOz1P1avPi74ehkH+mqFHJO7r9K/KjSdWu711hMz4kdd2e/1rnnKlFe9uaRybEP34uyfU/X7TPjF4fFurxXSjGcjPSvzw0SO5igiQ3DHOMY7V5U8ZDn5Wj0llFWqm4S1Vj9Gk+N+kRSjbKMkYU55Jr4Z06N5riNixP7xcE1lHEUlFRnHU9HB5LOfM3Oy2P1f8G+KE8S6elypOHXof4frXDfBSydPDtqfmIcAknvjFcKxqlJrlsdOZ5THD01yu7S/M9R1vMNpJPHgMsbEY9cUviaEx6ReMFx8jHA78cE16mFjGUlB7Hg5hUlKgufR9z458QfGe60y+ltC5OyTAH414R4ztQ2uXRYknzjgHtg1pmFWNKVoq6Rrg8op1aS55av8AA9ps/jreSuhAYckAjODXz1HEyFNhABbOK8tYmLg0lY9Shk0JyUoSdtj690342XwwfmARhx6V832Nwpi2/wAWBlqx+sN2dtTs/sqnB8kE7/gfUZ+OF8SqhiXLgFQf/r183xyKk0BwOJRgetazxDbUluceGySlGo03Zn6ReBfEkmuaJFeXBIdl+YenSvDvDvjK28PeEoB5wEojJyD16dKzw/tKs7LuPOHSoL2cVeTSse1eK/HOn6LFI8k4DRrkZPXivzv+IfxDu9cnlCykRh2AIPWvedGlFLnZ89QoV6jUorRHqXjr48vueOzlO4fxetfEWo6i0pKmQDDHGOlaUpw5lJR0ZTyj3uWTb7/M9Gvviv4h1DWLdDdkq1yrfKTg89K8o0VPtevaegB2vcqB789TRi8clTbij2soy2nCpyNX9T9YPButSy+H7CWZiZDEu4/Udqw/C9tJDoNjGG+VoUJ96wy+m3Tcm9DysyjF1eV6NP8AM6e7vXuH3FgV3EH1NV7kRWlo9xIcImDwK9apJOChHc8qSVOftZ6Iyr2aO1jZ3cKBlgfTFfN3xL+JJRLjT7F+QGBI960oU5O0qmiOerWu7YbW92zb8Y/F/SvD6SMblco2MEjqK+DfE0WoaxJI8szGOUng9605sOo2lqi1lmKqXlzcrt2PSfE/7Tsm+VbFiFOQCK+Ltd0a8sp25YxvLnceg5712QlTck1HQiHD8YQvUm3J+W57Zqf7QfiW4dzHdFA7EjGefevm1g4BDEblDEEfpWk8Sk+VJFrLackqc07ntc3xn8WyBWbU3yQ3CsduB/WvFU3cZJyCT+lHPOLtI0o8N05u0nt+R6qPi/4sJV3vm+UnHzHNeSybhuVsbTjaPeohUlODRp/YmG5lCEfO/oetw/GnxhHtVdRc7ZMqSTwPSvHjl2XcnIbKgd6mdZRW25tTy6nV/dvpt3PpvQf2jPFtgwEt4z4wCMnmvmmCJiATncHJAFYSlFy1V2aRymmpcyXu/qfo/wCB/wBqmG5khtNYfDOwUMPX3/8A11+fmmb4mBBwVbBUHge9cVaCUrrYxjkkY+9GVuZ+p+6XhjxvpniK1hmsbpXMgBIBGRX5VfDr4l6x4P1C2mS6c2gkUGMk9OK5VNwfOlua1MpqK7i72eh+zUDPtTDdAOT39682+G/jqw8ZaPbXsE4LyKAy55BrshiXOPM2eX9RlRnq23+B6uuSQCcqCAR6etSKq7cq2PmAPvWsKt0k9jorXm+a1nsN25cDJ5yOKnA8vb17gH0rOdSLaaFUy6pCfNJ62+8jJxHnkgE5P4Vy3jDxJD4f0q4upHKlICwJ7+1XChOT5YHDOpGnFc62OK+IfxH0/wALWk8kk43pHwuevpX5rfFXxxf+J9XuRHK/klnXr0Feh9WhTac1r1MaFCvWm7S5Y9Dp/H37RGs30skVjcbUJIyp5A7V8p6nZzDL5JwMjHU+tafXaalyxWp6FHIHKpF1r9V5XOgvvif4ounkZ9Tk2ljwCevv9K86uNOuXXBVlJIPy+g70/bucuW9n0KlkNKmm3018jsV+I/iNQoj1OUHeQSCef1rgJIDHywOAASD7UlWUm09TFYOnShCol1Pa9E+MfizTpkeHUpQEYHBJOa8isGJkVeQDwoFcVSrJpNqx7H1anKpzrV6H6G/Dj9piUzWlrr877ZcIHPRc+tfBsontfLYSlV3Alh6dqwpyctEYZllT+Om9V+p+xPjjxLY618P9SurW5V4ZbQksD04r8z/AAr8XdQ07w/qWgXkzvb3EIRMkkj6+1dWXzcKtmzx81wbk6agtf1PONXdRqt1zu/fHaD1+tYUzyXuoS3K/dD5Ujqc9arHqFRNtn0eFUqFGE3vs/NHa2Fvb7A6qQ2FJB9aNJl3feyW2AhT7V89Ugk7bM9+pU5ny20tdM6FLchIyTjB6Ada1IBu4wcsRkCuSVR819vM0jgo1aacnqnqZoCMAqZ5PXHSugitA+4Kc5IyD2pTq2mmth+y5abmo2Z9cfslWv8AxONRkPJKgYHbArp/2TLQC/1BxgElVGOijjmvKxclKok9Tsq019XjOHTc/QEMgRFChd3AA7VpG13Rhl54yMd+K9ehUtufLOElZp9T5e+O/jK88KQWUtjMVBQkj+8SetcZ+1VAV06xwT/qiD7YPU19BhFD2cm3qzhw2Fq1sXzNWWh89H9oDxJzGbk7AxwB156mvmWU5fcGI2nIPrXlVKibuj1cdlkYw5lq9UfS/wDwvzxOrBY7lxyckZ59K+dlcrtOSN4wPr61y/WZcvMOGUQdOCaakfRK/HbxQ+S0zNJkk4PJ968X0ixMg3kk9wx7UPFNSUupvLJacVaaPpnwx8avEV5qlhbTSs0E9wqkk9Mnk15H4Zt1tdW0+STIjiuEJz7HrXHjcTUnG62O3Lsro005z2P1k0vUYYdGtbu5ZRviBJJ6HHNfHnjr4rMNIt9N02XGIFUlTyMD8K6MtouUf3jtE+YxWMqVZN0Y6J2PV/HPxl0nQWmhtrhXlj3EqD97HTvX59ajeXeo3Ek90xdpGAOffpXpSrUqaUoq4sPl1XESSTsj2bxB8fNfuGK2fCGQsMHrxXz5LCz8fdDNgDuc1nUxqnFuKsejhMgiqictY31O5u/i54qlbeL1lwwwBnnPY15pMhcKD1BA+vvXPh8VNO6PTr4GhKonFI7V/jd4rsAJFumkycBW6AD868k1BWJC7RtCNgntXTHENuzR5WKyqkldrVvWx9GaF+0neK8KapGTGSoYg9Pcewr5HuIZFgAdDuyAcds1tLFyi3FI8z+x6WIipqWiP1x8GfELSPElnbyWtwjOyqWXIyDX5g+C/G9/4Q1C2urSdzGkih0zwQKmNe+qRGDyirGTlf3T9jYZi3IYkHGMdq87+HvjG28V6NZ3kEoYzIC2OxxXRQxMZrTQzjSmpNX1PT1YkbT36e1QZOVAY9CD7Vva6vbc5ljG5OX8v9WHbSTncdpIx703zMICWI5xgfWulUvd5GaUq8ZT9py76kci7RluTjiuD8deN9O8J6XNeXVyAY4iAGPJPY1VOk7pxV0c2NzFKTjfZfma+razaaepa5nVWUk4yO3btX5TfFf9obU9aubm1064ZYWJwATx69K655euSzdmcuHqVa7VSKslv8j7Q8aftB+HdBaRI7pSwJAAPFfjxf69e38jyz3DtuZiQScH1qJQpUnySV2dFfKq1SKm6ll5L8D7w1z9rNd7JZ5dSwwVPvyK/PVHDEsrn72efairiIJWjExy/Jvec6kmvI+zrn9qPXZnYjegYkDHU/WvjVbr5QMgsr4JB5Oawk4yjoj2MRlMYJTk9ND67H7THipJVy7FHwVctzx/T8a+SjI0jBcZ25IyelRhZTUE0tCMRlVOULwT9D7Usf2o/EEKgv8ANtwOOlfFommJZASNgADD2olJNJSWhzvKaaVqbaeh+g2kftWsZUN7CykqFLKe9fAKTyqHLfe4AbPX3qak1ooJNNm6yROThKbXKtO5+ufhP9pDw9qbwxy3YSRuoY9favyYtdRmt5EkikKyq4YMvaspxSi0zmwmXzlP3Jddbn7y6V400zWIEnt7pHLjOFI49c1+Ofg34x+IPDd7G0N+7xRyAsrk4IrGlNxenY662Cnz3a1TtofthDdrL8ynK4J4718z/Cb4y6d4vtYo5Z1W7xho/Q+tRDFyTvbRnLW918l7SR9Mu6nCsDkAnNVbe4W4SN1POeprSFdKbfQmjQTjdmhFLhdwzywz75qrukyOm7Odp7Y711RjKc3bY7KbpxjZ6W3LrurEgMQVUkj0PaqFzcRQxLLIMKAcg/1rnacn7qDFRp01eO29xtxcrAhMrgDcCMdq+PPjX8c7Xw8j6ZptwpuMNuIPIr06WElUi5Sdkj57E1JxqKnRTlLfT8j3Hxf8UNB0CCR574GRCcrn061+NPiz4i6z4jupWur1yszjC5PIz35qo4ajSle9zrlgcVi6dn7r/I+7fFv7VGn2+6Oyk3IrYDDGa/NppjK29snHGD2NJ14JWijpw+RTlJKrPVLtofWWr/tSa5K0gtmb7xPHb3r46dt5JBOBwR2PFSqqcr2N8Tk+GnJRcm3psfUh/aZ8TyMhE5A3YBJ5PT9K+TGEi4JO0kkAe1Uqjcm7Gn9lUqilKTtGKsfYsH7TuvWzK0vzhSQM/wAVfHEs7bAoOQeDnvmuaMXKV0hTymg6anTlaR+guh/tWQs0a6hlSCCwHp61+dombABzuU4AJrpUEp7as5amRpxVWMntr/wT9jfCX7QfhzW2jVL9E3qCdx65/GvyLtNSvLVo3guHRsFcqf5UsQ6ajy21PJp5biHJVIPRd+p++ej+KrDUI45YrpWWToQRX5G/Dz46a/4cmgt7m6eS2U4YO3vXnYiCcUm9D1FRmkqiXqfs5FOsqAFs5OQfWvnv4a/FfSvFdpBJBdKZCoBUnketRHmsoo7KWIdrVFeOh9EEdSDzkcGqcFyJY0k3ZU4OPUVcKtlyPcxxNJ1ZXg7E3ysATkHJJ/pQxLBjnaRwCP510+2bd302Jp0nODpN3XcZmMIN2AAck+pqpcyIiF2JA5JodKU3Z9TacYxtd2S/Gw2aRNxz05zXzV8UvjTpnhG1mijug10u4BVPzZx0rto5bUk+VM8TFY1SvUSu5P7rHtmra7Y2EXmS3KLt+UFiO9fjz46/aA8S+ILi4SC6dYDnAJ+761VTKFCVqktGT/aFStFSpx1W/wAj9Jtc+M3hjTC4N+hG4gkEcV+Leo+JNWu2eWa9kzJlioJI+taLCUFG3NsVRw2Jk7p2cvwufqzf/tJeGrdCPtqFewzyuK/Is3k20sdxDdMnoaJSo3vFX8zX+zcRQjfnV+1tz9XT+034fRDsvAXPoRgD1r8ljcSsQfMYMGxgE0ONNwvYFgMROChOTinfU/XWy/aQ8OXD/NfqMkjk9K/Ig39ySq73yozgngn0rNYenUVmc9anVoxjafvPRH7V6V8aPD960SpeRln6EMMCvxr0/wAQazavG0F86MDggZ5qMRGhJtJtI6cPRrxj7O933t1Z+7OneMdMvmUw3AO5gDk/yr8efDHxj8VaNcIpvmkjTDFWJAJHXNYxwvLTfK7q50J11OMLH7bQahDOoKsrBgFPPU18H/Dn9oK11F7e2vJykpYAqx6+9ZQw7SsebVzGtQk4zXvXR99uI3ACr1Ixj61xvh/xNa6vbwPHLnzMHOR3rNpRdlue1UxTxLUpPf8AQ6t1CHDAErwCO1NYsQDyRI5GO/tW1KT0kncmqlKXs3t0IMhgFCHGeQe9ISu1Dk7jnFaOonLliFSMY0Yu60ew/BABZgMZP0FRSA4XPc4JFXZJ3kznm05PlfTQkLlY+DkHOP8AGoyyAADGFI+70IFaQikuaLuY+0VGFnq9xzkE4wDnjnqOe1P3qrHkk4JBNZykpJSS1Lg6Uql5NtMgUIjBjyzMcAe9PMgXAZCCvOB705OTX7xHXRw6uowlZ9fI+rVlUAk9z271jxzADBbPOa+AhRTkop6HtYirDkba1NgSeWAuOCSQKqeaPu5xwDkVUpyvytGeHUabvL7icSZZGOQduQD71GzghQeQ2Rg961ak1ZlOeq5t+g1iRnBwcZz6elQl8leeFJU57+lUk3oYqlG6XmPUhcvnAU9PSq+5kAPO1mIxWkWnsaN8kLd39xcDHcACe/A6CqokUNzkluM/XvU+0utVodFam0lGDs2XAdyjpjPftUQcbduSVJAwf0rBVYu9lodWFpvkUZPVfiVNSO22kIGRsbPvVPV5Aun3JJIIRse9UlzSUU9zHMKUYQcpRuuiPz3+K1x5mszbScRyMCKxviTPu1m4AIILnOf0rpzajzTUU9Dv4dhCFBpvfoeWTMQd5YkYBApszMUJVhhs4J/WvBq6e43sfTQw8FFKKumRh2Lo5BK7hnPakVwEy4JJAAPoKzVmrJaijaEkpkqj76tk7txyfT0pdg35JJyuAD3rX3Zat2MFOTnaKu1uOgyGiB4VmAAHapbaMmaJWIwWBz61m7KWh30qKaSlu7H6Jfs+RtBo8TgDDBQT65q78CojFoNuOilQR71y4aTnVsyeJKXsqNps+pra4ZQpOSdwGap27fLGc8len0r3XJJ2toj4nDNwjzRV79+hum5MiBR1ycHPesUuenPGcAdj61o0oteZx42rJSTk9DSldemAQeRWb5hyBxhcHJ789KdGm+R33Noyp00pRV79CheqBhjjL8EjvRd4Ibn5cE49K3w8m5cr2OPETpuqpSX+TPl79ouEv4Mu9i/dRifUVF+0NeeR4ZuUlY4MbE++etfQZHVlCbmj5/NoRqVVHpHqfi5q88i3s/y8CQ5Prg5Oa27/AEl9S1K8miyAZ24oxdSPMnfW59hgqNSVJzmm1Yf4Pu4jqCB2xuJYAnrU2j+Eb9Zo5UBEgfII7e1eBmk6cm4p3aPbyGhKnKU5LSVrH1HoHl3EMXQhuQKh8HW09vbQi4yQmAc96+f3joe9UouE+aVnc9F0zSyLiF15Bdf59K6PQwZLi3BGfnXkdhWd9TOhhqbkovRn6A/CSA2/huyQZ2eWMYHGT1rrfhza/wDFN2IGNggBAHfIrLARV1c4uI6koTSevSweMX8vQr9uS5tyAB256UvxDjNv4dvZB94o2AO1fS4GS9ryrdHw2aUW6UZpWTdj8xfFyyNqtyWJJ3lsn3PatHXIC+oTMzHHmEY9K4MyrqVTl7H2mAjyYZOUdTkYI2I2lsnggHtW0luiFVyQCyn3/wD1VwSk07HdhGoU1JktvBsWMBSSzAYFaiqqiPBO7BAJ75pRd1ZI3hFuo5SeiKzsWZWxgdvY5qeRAnJ5HQAdqIrSyKbUXzJasr3+uag9qtpJKRHGSBg+lZl4EYFQRk5wMdPeutVpKHJE4Fhozn7WenQ891Sd3MmWPU4GelRa6rIGYcqOMY6130L21V2cyV/eg7Lax5tqsk2XIk2jdnj0q1cxi7kUEEZbAIFbuqnJNo5KtCcYJU3qzW+HEst14m01OWP2hF57e9dp8KdHRPFmnMFJxcLnPfNcuY1EocqO3KqE/a+1m9ErH6jeGtNDaVZqBgiMEA9sV0WlGK10aJ2IBjgXGegOKWDnJQsj5nMqUZVHJPTV2PB/i14gXRrFrOFwHZCpC9ua8P8Ai1rzalrFx85KLKcD1r6OFZUY3eszy3gpV1GtP4NkkeEakst7cPLLIWDuSCfTNWpSiBXUkLweepr5rFYqpJXb0R9lgcMoR5oq1zAks1Tar84Y4J/rUs8/ykDOASRRhcUlaLWp14mF1zSe55v4l0GC5jdAo3MCSPQ1e1+9eNMAnLHkn0Felh5ynZX21OHE+y5lGUbM+btS0O4s52ATIWTAVa9i8OaM/inxDa2QVmWRhu29RzxXrxxippzqbHHUwHtpRnFa9PLzPM9I8F6xq/NpZO2eQcd+1frx8PPhNomlaXavJZqZggySOTmuKOOdR8yR2OpSpS9nN+9/kfk/N8IfFMKecbGQAgknB4Ir9wI/BGjTRrHJaRlfu4wOR716McVKUXzLQ8yrjcKkpcrufgHd6Be6fOUu4isseck5/Kv1C/aH+COk2+lya9plnskjLbgvetaUVUjdPU58LOnKq5SdnpZenn5n5bW0TKxLLgtkHNdlqGgtbSM8eSwY5A7fSsZVbrlvqjvlh1GPPDr+hzsP7jfkg5c846UjpIQFZSGDkD3qEnKSkzkq4iUqfNy+6mdDYKZXR1ycENin6DFIxGQduec9/rXJiZOMeRvdno0MLSnKNSWkmfWn7O3jC40LxFFpk8rNZ3uPlJ4U57V5D4ZuZNO1nTr2BsKk6sCD156Zrx6y91zjKzR6jwsaqdGSu7aM/ZmGbzYY5UY7Cikk9qxfBl2dS8PWM56GJGJHU5FehgMQqsLSep8ZWozo1lTa0idRuJUlmyF5A9Mdqiuo3jjDDkAEjHeu2nh+Z86eqOXGV04O3Y+Rv2k/F62GlnTUkIMgJJXt/wDqr55/aS1mS68RT2aSkrFJtKg9wea+ho044fDc6erPCyyk8XiU5K0Y2+8+dUmF1IzseGkJY+xpLGxLLlTgnAAFfIYuq5zdRu1z9DlBuPsrbde5HJbLI3zgYPUnvWwbFyqBgTuwM+mKzjV5krPUhwmnae1jIFhC+FIXdsAI7n3rd+ziN025wDxnuPetac24819bhUhH2Tgv+HOM1Dw7GzSMgIIwACOvrXobQLOqKODJj8amnKpHTsdlKEEo66PoeS2Ph5lkywPl53AqP0r69+HvwX1XxQiTpCyxk4II4or5vy3i2d08sc7OD0PlS60ndB5BydinAx09q/QTUv2WdWa0E8JBkUZKgdR/9etaOZUmtHqTUyuUlyqScT8ypLOaOQRKhBYgcdsV9JeKvhzd+GNQktb+1ZGj5BbvzXW8Y4xu1dHDPJ5uF3KzR4pp2lDaJXI3nHHpXoX9n+SUUJw02fpXDica5xansdeAwErc60ucvaWvkyKOQMAjP9a6J7V0G7qN2QR/WsudLVPVnLUxcpvlkrctjSt8Kyk/eaLPHelt0d/LIOCpBye1cWjTcjshBxi5wdzRgKqyME6sAPb1qeEZO3k4IxjvUTSaTsZQhGNpW1Puj9kuHbc6hKx5EqlQf4eAa1P2T4+b9iQA7AYPbB4FebOpJVlc7cyf+zpJNH3osWVQAYJbA+nercaZCndkB+/bFe5h7Re58zHmqL3VZnwp+1rGwt7MhiMROxB9CeKuftUqzJaocHfESQe4r2aNflpJNbs5Muw8oV5Rk9eh+ar2u87gQCGxwOtdQ9uTt3YHIzjv614mIqNVG4PU+lhgoyUXU2OZgt2Lx9TuYDB7etdYtqqKrf7QIOOTWPtLxtFXudSjy1PeeiNPSoxAM5JXgAdqu2NpJtwjYDMCfYVyObfuvS5vOjypuKvc6GA5wwHzeo7UyK3kRlZWIyCCBU8qbUG9TnWFk6bUn6Es0TzkOSSu8A++K7Dw9od1r14lnaqSzMAQR69KzdW8bG+FwyhUSa8rnnv9mytICo4DA8d6+6vDf7PrS2sT3jYZ1ViPQ1fOuSyZap0qcrRdtz4NuLFgoOCGBJNfZPxB+BMuj2MmoWZLIFYlAOgxXbQjFu60RhUxSjaMdWfCk9u33n4KZP19K6bUrFYZWgkGXViuT1FVKrKnO6WhzSwsKqvF69Tz+7tc7SRkY69h71tX0SMoG8gZzj6dBWtOrFvlMq1OsoOSV7L+vuPP7mJfLVxkkHJ3d62LuEurDjDkYNOdZqV3sicDL93zRjrfU8n17UBp8Z2sAMgc981R8XafdhvnBMYJKn8K9rAU4VJc0tTzq9WScow0b0PtL9kbxy1yLrRLiVmMDhlUk87ulfPv7MN9LYfEC0gaQgXCFQB7YxXBjHClOLirXPOWDcYe3kr238z9k4pCY/mPUjB9arQJJ5KHkl8DPpxXq0a6ilJnz06kZpyirO5Dqd+tlbSTyuFijRiSe1eQ/HLxK3h7wXeujnzJRtAHUjHJ/wAK9XAYb29TmWxy43EOnRi4P3m7W7H5+/tF/Fm71vVbjTbO5P2ZJCAAT2PFfKHinUptR1G6uHkLZmJJPue1evjMSo2p04nflmSuHv1Y3cjBubgyyFpHJLPkt61UXAxuyc5Kgdq8ms5L3luz3Iwpzbdr8hXbb853AhjwO1KVJ+UEgdCvrWSjOSu0RQqRpO7V+voVX+/vLkAgA1YWNAgBU4BOKPaJe4ZVoVJv26sOijZ3jIXOcHA719K/An4St471NLi4BFlG4YnscVx4ivCklpuerGCkoyqNcqPFbDw/qF4/7uCQrKpIBHSv2Z8PfA3wpaQW8bWSs+wDJA5rCGLvFKEdjPFqgqlua6lbTtc/H2Lwlf27MbiB0Oe/Tp1r9gPE3wA8O6pazCytljuVjIQnHP1q5YuTai1Y6vqlKlJSpPXufjdqVuLeJty57Eeor1z4peBbnwtf3djPFtMEzZIHB5rd4VcytvuZRnJJ1JPTY+d3ZgRtJBORkduma0ZY0Q7sEAYzn9a2g4KSlJaCnzU4uMfmUYXU5bHzZ6+tNKBCzDHJBJ9adWMXO3Q8xKc4NRXvLW99/kd/4H8a6h4W1e2vrSdwI5QXVT94d68/VtrKMDeTgn0BrirUozb5XZmWHqqcXOSV/wAT9xvhR40g8VaNZ3kcpZniXcBjivir9kfxncRajc6DPNmGQI8YJ6Y6jvXmKKUfZze5zvDShW9qtY2ufqAgXKnacPgkjtimxuPsisQQwQk/lXVRqNrlT2GqcfZOcdL9GfP/AMefHsfhDw5cCGTbdyoQMds9D2r4x/ax8VXNz4hn00SHyrWUjAPTjvX2GGy9UaSrSeu585HDSxr9k3ZJ/efIfi/xJeeIdQlu7i4ZladiAT19a46SQOxLEj5uRXHVqSlK62sfWYfARp0/Zr7xrsSQVICg4Yn9MUzZEWYlSdh2j3+lcc6qkrX06nRhoTpu0FqKjbcBmJBJIz2xU6Qq/wB0tkDGOwxWEFGdnU2JlUqUknHV3/EgWJn2xop3Mx4Hc19JfAf4aQ+NvESi5Qm1s3RnUevYGufE5hTpJNat7HbDAqUG56Jfm+h41ZeBfEGrQiSCycrhSG2n5q/bzw98L/Dml2UEUVhGSI+cqOamjmDqNJQ/4JdB4WMXeV3LT0sfiVefDjWbNN8lrIHHzElTz9K/bHXPhp4e1C2liexT54yMqAOfaumnXai0lc4a6w6qwh+J+CF7p8trK0cyESISTnv719dfHz4Sx+FdSmaCMCBuUOOxr06OHg48yeptXcoVZQS916HxcJREAGJ+Ukk1fvLTBkAOG5BOOuKmpGM5cpwvDzcVeSUU0V1uRGwyMnGAT34qm6noPvFsfSsalOnNcvYqupyfMlZJ/eeyfDT4jX/hHVreeK4c25mCvHngDivHIWET7EU78gsPWueeHTV4u9jnzHCqrDl5rdfPQ/d/4deL4fE2j2N3BIGWSIE7e2elfHf7JPjKa6gfRZ5CWt5AVBPUYHT6VwOo4SaseYoumlF632P0WLMqrlieCMGoHGLcTDLEISM9vrXbShFx02FiqlSnacNL3v6HhPxt+JEPgvRpUW4CXcyOuM8kYr4Z/ag8Z3Go+Ir6zjmJihYoM+gr6bD4RKmm+p5rvNKc1pf8D5j8b+NL7xFqk80927+bMSAx6AV55cZaQbmJLAEY7VzYnEupHlT8j6TB06UXFtaaaEEhy7sSQ0mVGe9RSDknGVXHPrXmOkmrSep6FSkk/aLRN2a8iJ8gMeWByCPSnN+8IzkZKgY/nVTUpSTa0MvbKE3GP9IhRC56Y3E/e6fhXsnww+Gep+PNUWC1hLWwZcsex71y4jEwpxTZlh6NWVaVSSTja68rHky2rygEKcZHIHXBr9SfDn7LGm21tC1yoeTy1Lbh1rnoZlTXTqey8JTlKNaTWit95+Xn9jyhNzowPOD6e9fpv4x/Zqht7GWWzgU4BbgDsK6qWOUlqtBrA4ep7sPvPy0kV4WI64HXHr1r1Hx34Qm0C8uYjE2I3ZQuOTit3hFL3lvY5p04qfs4PVNHmEDKp37eTxzSSRyBmBbChScDvWEqTcOZ7djqq46Uaroxjp3Nyy1Oe0kilt5CsiMACD05rEWVQgAyBgEn1+lTGko3aR4VarCCcJ+9zP7j7t+B/wAXrj7Ta6ZqFyC2QEJPX9a+L9H1mTT762urclXicFSO3/16uzqRunocTyyFN80Jbao/d7SdVXUbOCWOQncAxx3xXgPwP8WNr+h2JaYlkjVTz045pUbU1e/us86WKc5qE9GfS5clY2CkZAP1qMRYClMnJzz2+lTCpGSfIzv5ZQiotbfiSZUrkAnc/I9aQqw+VMAcgkdqp009Xt0OGSjGLSj73XyG7gPukj5gMD2pdhDLx/C3T+tXFKN2y6VJ00qknuvuEA2HDckgHjvmnFQgJySeAfcV0Tmk9EZ88ppJqyIixMob+BiP0poUn5mxuyOvoOlVCoqcVFo05nWapN9XqfSkL7SN2PmwB7VS8zcq5YnDEgDuRX52p3dnofSSm5R51HVGuj7toJO7caqrJh85OGAODWyd0kuo6WIipc00XgwbBzjJOB6VV8xAc9CMkE9jV80VK7ZpXjzNaX/rct+ZwCQSw/WqokLDHQ7unpVqo4rmktArUIxkoReqsWGAYAFiCeQfSq6PgZJJBJAzXNKTgrrqXyRqc3tHZDcFTk4AVuQO9SM3O3GSBiqhKSSSLaSanFXBnCnPmHPJwP1qDAY5yQeoz2NEpe5dLU48ROUatoLT9TF8R3Bj0q95IVIyee/FZXjGSQaRd7m6xnkd/et6Ki5JPYxxkajhzJ6rU/Ofx9eB9ZugxYjzSR+JrB8XyyS6zcMWYlZjgnsM8VlmN3UvH7j6XKYctJSm7po5szMVjYbsE4APeo/LJCnJwXzj0rxrWlZn0DqJQi4q0WWFcHYFzuBOAOh+tMjGz5nfAyD9OauKWtnoYVozk2302L6OjY+YjBIIHb3qqqqzheT8wOR39Kyas7mmG5YQcd2+p0WmQ+bcwLgkeYAT7VJ4dZjqEC5YCWVQMdRzWkqTSutisFaUo3Z+l3wftTHoNlx/ABz34roPhbH5Xh+0XaQxRdoHbiufAUfev1uY8RU1KfNJ6I9XiUhfm4YdcfyFS4PyErkBxkHuK+icVKzaPl/ZqUpT6JfkQKM7yGIBwADVpASpPUggHNa1KlpKNtEccLtc0Xe5XZBhW3nAwp9+KsFMY4OAQR7+9ZUarauKfuyUEm0Z8q4jOCcc4NaCoPujLZ5ye1VK8mpR3N3OLi1Je729D4y/aVgkn0cwZJ3JxWt+0GyGFoX4LZIA717mDrOlQbtqz5ehhfb5lKSV46H5j2WjGK4cSKW3TY56/jXpEtqqSFiAPnJ+tfO4vFNzbjo7H6jlzSpuD9Cjp9rHC0cfB6gD+7Wzaxqq73xvHP4V5TSb7sqNFSaU1ZI6mwEZUKhwFIz71Hp+7b8oyWAx7Gs4ScHdFyvVhZbdGemeGVLahZwoc75VAxWj4Asml1qxG4/NOpPvjH86xrTcYuSPSwVLlaUkfpt8P7bytCtI2UKUgTGPp0rqPCNoI9KsioyBAoBPb1qsClCKZ8xnMZVaiu7JHD/FGIReHbknAdlbAPU8VP8AF0bdCljzgkEAn9fxr28Dyxk6l7o8HGSdSUKa0Wp+cWp2qPczOfub25PfNbd7ETLIxABDtkDtXlYh3nofbUZydNN7nDfZlMijgj1PatyW3IYH+LBJIrJN2sjqk7WUkZZQAKVHAfmpZDtwAMHcAAehNFmlruYVb8vJJ6dypJkomCc7sE+lNe4V3wGJOQM+lVGTSujzqajWSad2jPS1luZdgBZmbqOpNe3fCnwf/bd+lzMgMUTgjP8AFRKsoKy3PQw8JTXNKVux55bfCnVNci3GJh5mMKR1r9F7LQLSzt0WKNVZAMEjrXoYerUlGy0PLxWKpwmozV2j84bn9njWEYLHGQ2d3A6DsK/SF7JF24AG6QdutdkYVG02yMRmtOL5YR1ufnr4K+F+s6B4js7i4tWWGJ1XJHTB5r75m0+BmzJGCFPBx0rCth5Vo26HTSzuKn7Nq119x554o1B9P8LyS7ioEZBA9QBj86xfi9cCy8LXQ52e3bFetlGHUZNdUfnOb0pVpKEZNa/1958EeItYN7qE7liX81+vsa5m8kEl1LznMpOR3rmzKopT3PtcBCNHDRjFXRJczkRlgTkc81iSykfI2SrZyD29K8WlC0ldnpvGRbUYLT9SleXBSMFsnqeO31qrcFZPmGR8pBI74rujKPO5teRxRqpyUF63ZxeuT/uMFtzbjjPVaqa5FvTGT8uQCO3sa9PCVIuV7fI5cZebXM9mes/s06SuoeLmmJL+VtXB7c12H7LNzY2OvXAuSATGDg4454zXnZviU5qCeh6k5xjhpVEtdvkfpjp+nbbWIEAKApBHbirFtr2meWFFzGdicZI9K6MNiEo3PjIVHKonN2NOG0VWGzJB6H3NV4/EmlbQRdJnJI5Fa1sVOHutaG1OEZSlKcrbfccN8WdMhu/BuqRTDObdwDjocdapfFDxLYSeF9SgjuUMkkJUAEc16eXVW6ibVjixFebSVOzR+SGtaUkF9cx8FSzgcdK6HXWguL65Iwf3jHPrXDisTFVGutz6qjGSUYrfp31PIr3QU3SMUwMjAHY4rvTatIA24EEnI9PQiuKGMnHRLV/gdFXDpNy2S0fmeewWz28ixKGX5lBI6N716HHpoDqrqd7d/qKVXFxTtJXLhhVCPOpb6XILCHfNbIVJxIuAO/PGK39MsALqIKcETLgnoDmuOpVi05M6Msg4yUHsj9VvhJbPN4R0oZyfsyjJ75Heuj+ENuY/COlDoxhAOfw61hleIUalmcufYTkrc8N7anRanaeTZSOCAUQkE9sDrWj4sJh0LVWB2mOB+D9Ov419XRvKrZHyOLpKNNqW7PxZ+NMk9x4wvpVLMomc59eeRWx8QIEudevppBh2nfJx09K7M4xKdqSWh6uQ4CFGlG73PONFi8+2jYHnB6jpW9bRpbqm1cFMA+9fLwcpTbi9Oh9E5J2V9XYnjtRtRRgKCMCpFbDL+8IwQSB3PpUzg4NylqKNOzSvrqRfYo3QuFIKZ4NaUMiF2XkEYJz3pSqyUFJozcfaJxS/4JN4W0J9U1mytFyRPcIQAOlex/BTS01Dxjp4wSsbhwT256GssVipONloduW0HRheSulrY/RH4ceErPRdDtEjhC4hALEdeOa9T0q18u1gRBwFU7R39RRgaMUlOT1R4WNxsqtV3fu9hrWCBBuQYOfw4rZKb0JRv4SAa6faLmStoZe0jTjfdnxF+034Js30yDWYLcCV/v4A7enTrXtvx5sEm8FXTFRiKVQAewI6ivWwUIuLh0MKeJlTqJyenU/IC4tVDEDgKxyMdPpXTX9ntu5+CFR2AU15NW8JX6n0spqbbjt3OSawyyMFJ2qDz9a3yFCbORuPUetZxq3jtrczTjOXs5LRLQwktETqRkMR9c1rpAv/AD0J4IBHQ+xqJVGpJrqTVw6jfleqM2G1cyAE4HYg/nXQW9kwwC3J5AHaprVGmot6lUaKivap38vM+3f2UoitveycAicfjjFbv7KtmRZ3eANv2gDk9OBxXkq/tvI6s1qSnh4201PtRFZ1QZw2BWgkIHynPGcn0r2bNR5up4NalGSUah8L/tPRLLJbEkb/AC+vqauftPMv2uAGMD9wCD2AHUfjXt2SoKXQMrwUo1ZVIOy/yPg6WwJB+UA54zV6a62SdCSxHIr5+dPlnc9fm9rDmatYijs1AUFuM4BA61tabE08hZmJXgkHtXPWUouzOmFeNZJNWI7SLyisWDgOMt610WyNSNq58xgBjuKU5ytaWpNGVuXkWmpUMR3JtwHJ5I71cVGLxFSCgcAn/Gpg7RZ1VE3JQZ9cfs7+E4riM6rcwqxWUhSe9e1/APTkg8IWToADJHuKnvz/ADrC0ajuzlx9aVBcqeyPao4Uh2xoBtQAcCrzuiqcjG3INe7h4wjZdD5WOInNNRXuv7zm9esIb3Tb6GRQyyW7gDjnjtV+8XdG4XjHc/0rqjJJp3KqYmStGKt5n48/EeyWx8Q6jEMAQ3DAD0x0ra+L8IbxLqWMKv2pyAe/PFa5hUa0aPTwc+enGb2Pn+5BbOSflccVbmgw20nOWBJPauFyUZKT1udEOaUdHZRZn+TuRRkHJHPpj1q+saoAGIJY5GPeuaN1U0ZpjJSlSc07Wf3nN6lpMV7HtdQTgqCfQ1vTgDb8vyn9K2w9Rptszl71NOUf67kXwc8MfYfiJotxEoKNdqDgda9Q+EXk/wDCaaPtH/LwOT7VnmFeU4Jt6GuHwScJuS3P0zstK8y1i3EkmMAZ/Su2sLZfskB6BUAXPpiurAVpW5Y7HzrhRilCr0Pzv/a5WeDRYLCJiCwY4HfJrqf2pLZJ75IpATtiGM9s19Vh81dOjzW1ZxYPKaVau5Svbofj7f6FclpHZSQzNyR0r6FvtFhbcrKCnoK8yrmc5v3Xoj2IZb7KN1Ld7PofMUGkXDAZRsKvHtX0EuiQozLtwBgUqmZxUUmthxwEoSU4PV7o8CTQ5pGHyEEjBJ617RPpSxyKI0G1c9O1Sszm4NI63gFzXcbpfmeGvoskBRJEI2scE9/evVL2yibbuyXyME/Wto4tPTqc2CwKp3jy3/S5+iX7KXhS2tPBVvd+ViW4YMT9euf6V6D+zg8cXgLR1aQArE2MY46V87QqTnWc5Pc58/UU/ZPsfRMdssSgqOP4QO9WxPbhC3mDGeOnPFe/FxilBs+ep4pzpqUI2cSJm2YBHPTnoKoSXKDf8wyQOD2rVQjZS3NK2Yuq4pu1n95+ev7W2j2UFzFfLGV85QDjufU11P7XEkJ0zThuBfY2SPTPFfS4SalSbSJwFaTrunHZan5f3jIpK4AAduD3NVLt3M5L7vkJwTj1rhnyxdm9Ed2JnGpJNxt2K0+wqflBwDnHrTSxaMkISTyfb61y+15Z6ao2dN0qfO1psQIm5hycbckGrIIVNuCS2MA9CayqNyaaWjM6Uowq8ktHI97/AGd7yTS/HmleZJtFzKUJH8OR3rmfhRcvH400FkJ+W9QE+gzXmZlB+z9otGtD0o0k+aFt+voft7YSsbKFwCWMQGD3yO9O0H97pFq/IItwRnvWeWz1sz53G0oxpNp3fU/HD9olpZfGOpNMSdtzICPWu+/ad8OPZeKtQbYwMk5ZSRwQRX3lOtKSUb2RGAwNOnFTbvLofE0kYUmJQSyqWwe1as9usZJfICrwQOp9K8WpJq93rf8AA9yWM9mm2tHbXszOtoN6Ycn7+cHtir1uyqvI5bI471M6ib905o13Slor3JLGHyg4JBVXBIqVWzD8uRwOK5qibmknszenVo0Uqko+6faH7KWs2VnrF/ZTzBXuCrIW/jx/9evmnwXrN34c1C31SzmIeLGSO3tXm16LjUUlqcmMnOuk46L/ADP3NsLqKaON1bgqAAK+Mfh3+0JYXkdvaatN5dwoCn0Jruw75NXufNVatWM25rTuj7Zfc6gghecDHv0rhtK8Z6ZqqKbW6V84xgjg9s0RqNvnS0OufJGMU3eR4H+1B4fjvvDkNykWZ4mKEgcmvovV9F0zxVZm1vFWSBnJOea6sPiYp++9T0MHinh5c046XR+DmqeG777RKTbksWY4r9n5PgP4PnkZ/sKDgknA5NZzzPmesdT28Q8PPmadl+dz8QLjw7qTHetu3ybQFA/n/wDqr9s5/wBnnwid7CyXdtGAAKqGNjFJct7nPOnQaXtHaKsfiGNDvldDJA4yTyR+tftNL+zf4ScRB7JSS5II7e1H19W5HA76dLB0mpRl8z8/P2ZRdaf45toTGwimQjA6cYr9JvC3wK8OeGtTj1OxiCvAxKkL1Pc15OMxE5zUoLVmGNo06tF2lr0PQrlfK0Odx95bclSO/FdLqFismn3ECMA0ts6KT0ORXo4Ws4zSmj5WeCjNWUrvRM/Br403MsvijVWLFzJdMMenNdN8dtKbT/FWoErwbts5HB5r67EV3KmnE97B4KnTTi3ofLxjdShcE57Z61rABiE2YXduPFeP9ZbXJNamby6Uqiqw2XQ5x0G3yzn5mJyO9bV/buBF5QBO8Ek+lYOtF2T2MZ1J05ez2UvwMiOD5lJJGHXcParcUJOwt94vgnPpVOXMrLQ5Y05U5SpRV7apo/TH9kfSbNNAE5Cee8wHPUDHavEP2ePihH4Uuzp95IFtZXXBY9c9R1rwcRhZc127snHYucpRi17qP1tgtVEZ2sDwACfpXJeGfGOnatBGYrlSjAAEEcD/ABralOUVGUlojgp2jUcYvRnV3Fms0TI6KyshGG6VZSaGYFo2Bwc4BrqdSM3zW2Lp4l09O5+X/wC0z4Pt7DVZ3ij2rKu/A75HOK+vPjH8NX8cNDsQcIFOOxzxXoLF04wSe1z6PK+acWk0ra+p+JV9anzMqCVzge2K/Qe9/ZWmaUO0OSp7ds1OIxNJ6xeiNFlEqk03LS97H5xeUwmA5HIK+2K+/bn9lG/IkliUq/GAO1c8MTRaV3rc2lk8nVvzLlsfAkEO0EjIYyZyOwr7tj/ZW1X+KIgyHKkDj2xVyxVGCUZM1xeATjzUrJvS66mr+ylqzSRyWsjkhJeFz1xXrfwU+DN94K1CczIw8xhlj3PpWGKUZ1GoPQ+feVwpR9o3qunn3PraADyUOSG29u2O9XI4mijjUrkjrVUYWd1scatRipN3dyBU3bcZIducdqvRIwHJJAyVB7YroqXp6mNVTqSTW/crsjD7oBAyMntV4RmUBeRyAc96hqLVnudNKm2lfQynQbgT0JyPatVrYktgHCqQPajlSSSZc5wk3Si7W1MXCgEA5JPQVuw2flpwuQrEj/Cs60kppR1MZ4ebactE+p6lG5J3dAGOSPU0xEcncSdpZTweDXyCStZo9dUouKadr6GgspyoBBBxknvUMa8HaSdpGc9uKdPDxasmFOq957bXLYLFsHBOe3anxnITGNvUilSk0m0i61NNxbegqvt+bJzu/Km4yNqg/eAx6irvGS5jOFOE5pvRibzgg4G3OR6/Sl8os4AyMEEn09KqTi7TS1G0lG0tVceGHLBt3JB9uOKctsU3kMSAwHPrWVOml7qZulGnFTT3ewvBYHJJDZCjoc+tWUiYgBhjGcfj6UqikoWRtF805Qb06nnnj2TZod2V4AiJz6+1J8SY/K0OcDJHlk89/auvCUYyl7Rbo8nHSbqRox0i+p+aHiLLalNkkgSEkn+tXdbthJeXLdC0rAg15+NrxlJxaPssPhJ0qajJ6aaHMw8N5ZyEIByO3tV7yjhAPlABAP0615vLrY63Ui5xbWn+Q1UX5icbkbGKtFCNjZ7DOO/vVRuk02N1JuatolsVo4lkYFGIdACCO1WBGyD0ViCcVF3J+Z3OUo2aN3wzAZtZtEPG64UAjpzWv4FtTN4jtI0J8rz1HNVOoo07o2owTqJPqfqB8PYlTQdPXbyI1JJ79K3vBlr5WkWgVs7UXJP0FPLG370T4/Nm1Kag+Zp6o7KIZJx90AEmp1iYnJb5OR+JPevYU3ayPOVSLTT0lYaEDYbJ69TVyKLByRuK4A9jSk+WSa2IVKT5WiAxhhjr5Z6epq2YlD8/x4yR39qxpSinzsynKNSbg1ZJmf5QEZPPzZJB9qtspXkc4Y4HrW9STk9DXnjCHvHwv+0NdlJ1QE/KSpB+veua/aHuN+sTIrEhc454zXr4qPLh1J6I8HhpValeom7P9D5Wn/eNtDEEv1PYU9Bk/vANxXt79q+RdaXNdn6nRSnBRejsS2iZK8jqRirMUarz/sgZHrnisnrsZ0sNGKab00Ok0yNY3UkkMWOB2qC0K7kYDaq5BHr70n5Cpyi1yyj6Hv8A8MIIptfsUI5WZWGe+D1qL4LOz+KrRSSQHJINcuNm4U7rdnvYGipKU+iP1W8N2+3TLcHIbygAfTjirvh+5VrO3jbOVj4/IYrekrR97c+RxNVubkjyb40qRohTJzk9OoOOah+OFwosYk34JIBAr28E17KTZ4FGhz4lRcrP0Phy5jHmSANkljg/Wtie3XBfuJDz/KvE0ctT7d8zSjHozjLqEAZDFVAOf8a0LqNQoHOdxyDRBbtG3MlfmONuo8kZ6KxIIq5drtyAoKA5FVFp7HPCPM+aRyzId4wpO4kha0IYWN3AC2cyKT/QVtdNamUYttJKyufbfwO0aODR4J9uDJnNeg/CmwEPh2yYYBaLP15rjoQUnzPcnOMVSi+VaJHfPBgYPX1PerssYAU7iCxIA7V9NTTUUm9UfH3cqvubGI8G5tvU44PpV6SMgqSPmVsE0c94XgrDqKSkpN6mFJbMco5JKpnNajsoByOTk5qafuoqpKVSXNLe1mfJn7QczW/h/bFkAFgMdzWX+0zdldGSIcYyQB1PpXv5dBqDqXPPg4TxMact0fnsbqRppCxIIlOax5J8StyfvHJFeNifeldH1so22Wi0NGWYDa4LH5uSaxzc5dW3nDdQa4XC0XfodE61LmUSWaRtnBPQ8VTlkwG6nCkZPU1nRspKb2H9XjJNmNqC+ZtXpuJHPaqF9P8AONucgDj+dejTnJJyaOevKM2qq6WOn0G/utHcTWLsjsQCVPSsvSZTKqKcg7u/t2rlqNN6rSxWIaqvleiPXbbx94nACjUZNhAGATwP/wBdclBGGwU7ScmlTxTSukebLJ6TXO9rnfRePfEhYY1GQAN3Pr3rmEj3bRx8mfxJ7UV8ZOUbM9KWT0FyxSv/AME3L7xXrt7C9tNqEhD5JBPUGsgwsVVwuGUgAHvmsvrlVXimXTyqilHkjp1ZzckBcZYHDMdxPX8a6eWLcRwDhSDjuaIYiTV0jf3ovlv7y/qxziWXzjHCtgAGt8Q7GXG45YEj0qJw5leL1NIYVyjeT3MpYclMr1zye1bAgw3AOSTkDoMf41S5oWinqy/q8W+V/CiHS7fN5DhR/rQcjvW/pNvKLu0XYTmcHI6nnpRVmnFxX3lxw8XWT/rQ/Ub4UxtD4W0xT2tlBB78dK6H4b2jR+G9NUjpbqcjvkVy4FqSba0PEzapKniUovbch8fOV8M6gwyD9mOQe/NL8T8w+E9THRJIWyfTFfUZbXXtby7Hz2ZUVUUU31PyH8Wog1K7YkEiVvx5qXxMpe8uflOQ7Ak9sVxY2pUnVcuh9VH2cqcIraxw6ttyV4zyAKr3nyQkDIOcgd6x+JpIrEUYcik9u36khlUkLzuZsk/SuUe+dmAG4sGPPpmhQcHzBTlzvmcdPzO1Eq/JtJ5JBrK06Z5ApfqhHP49qmMJJtr5FYepZWTs10PrP9mm1Nz4uVs5VE4J9c9K3/2Vbff4mncOd21S2OwHSvIx0rzTaO/ltSc29WfptZQKkMIClTkZA7Z6Cr0BQpGu7BGD+fXFduHTUWlufL1YVYNSTunoRSR/NjnBx+OOlX22luDgbiRkV180eXmjujOSTi6bd5fkeLfGWNB4LvwxBwAVz3OOBVX47yhfBF4quA6kj6+lerlLUpOS3OKvNqcIw1dz8rdSjX7ROSwA8w4z146VHeziW4YAEBXbGa8mvFNyk1ax9QqrVL2U3zNsw5I8gdhzz/jVtcsxjGMrggnvXPzNO6Z1UXF+4ldq25HaxcgKCB1JH86urtBBXkgkEGsFJtOUdzR0YtpJkYUAhckupGT9fWrHcfMScgVnTaTXMDppSTgtOvkfeX7LCgabe7D+7EgZs92wKufssxh9JuW3EE3B6DqMDg1wwbVUWZKM6KhLbU+yCSU6kAvyR1NKzbUXjnBLAdq9qm23yyV7Hzs60fZXT0R8HftPzsb2A7jgQkkY6EelZ37Us+zVIRuwzRZVR717k6HPQSSscmU49Sk4TV1c+M5NjyA5IAPOew71ReWRigQgbeMivEk5L3V0PpKNNTlzx27HcafiKEMMAKBj3+tYFvevGqIXP3sEVwzld81zdJ1LxXus7TzuFwcEfMMdqzI7xXiXGCNgDD1pQVmm0FRtQak9jSicOQo5O4HA7+1ZdsxWXO4lW5wPeiMVezM6WIu0lsmj9TvgpGU8FaUOjPb4J9cAUz4LyhfBulbs5W3XBPpissDJqd30OHP4+2apwerPYJE3jgkHAP19qUgfwnG8ggjvXuS7Qep85g1UpVHCT1RSu0GyUE4UoAM9qW8yY3bBYAH5R3HeuvBpq0WdH1d1Iub2WjPyZ+LRB8T6krDJa5cj354qv8WznxPqOGIf7Q5JPbmqzKcFLbU+gyug3hlFaX2PF7rHTaOemO/tSzgHaFYYAPNeI4uUk2i6jqRkqd9kZMh/hXjAJyO1K64HIB3fKc9vetVOCXM3qjocpqKg1dMqFkbIfONwwB39aa+VyM5DHAPpxThKUlZuzOd0qaUVHvt2PT/hGg/4TXRUXOPtAwKT4Sbj410I7ifLu1BPqK5cdOT9w76NaKhOVtEtPuP1+0pQ1hb8ZOwEn8BS6EwaxjGTnylXntxzWmHjy2fc+ThUVWKm42fmfCH7TCltalUAgCJc8+hpf2mXC+IXQZHAwfX1Fe9iHGVGKWx2ZNCVOc6iV23Y+KpYvNbhM4OBjvWu6jzVO/OSCB6+teR7RRaUd2e5zOqktmjlWtmALOMksRgDg/Wt+ZNpYqxIJJPvWcLWdi6cJQbbehxF3CEXaxIByTt6ip9S6lSTwCTj+VdNODUVO+pxSjKM1OT07Hmep4WY+WQcsAAew9alubRmuTIxOCRgHtXXCEoQ5m7tHO8XTjfkW57Z4E+K+v8AhnS4LG0YfZo1AVSfu+teV2OI1jzkhnIWtKTUGqh5NTLY1bVLXl28j6hl/aD8S5CmY84OeefrXzu5QRcsQnAyOppQrWb5ioZXCMmox5V6nt11+0R4kiKtypyGDZORjpXz9OoKoCpOwgZNdNLEqFkkcVTKKNaVkb/xG+JOtePYYI705MKnap7DPT865D7MCxQAjdn8M1pTzCo4NLRHXTyikrezbbTPNIdCYzM0wAV5AST39f0r0RrEkqDknkj0zXMsRKSu2dkoKDUd1fX5nEz+HbRFAUkLnPHcV1VxaGIKVydhGT6+9ZU6jUrp6k4iqqa5OXmv+BwU3h8ttMY/iPXvivQbWISeWhOSG6f3a6KuNlFtyZ0UMDTqRi2rpasg+HWjGHxZoLsoITUIwSOxzXqXgXTifEuiuFAH26Mso9M8/jXm47FRcHfdl4ej7SreOkVsfrf4U0qZtH09WXOIUGPTjmvS/BmnkaTY8AqsQA9+KrLsXy/vDwsTl8XWVOW6Phf9pn4UXGs2Q1u0iLMYsOMdNv8A9av0D8ReGbfWdNns54lMUyFSMevSvoqeYNJpI6MNp+7ltfQ/mr1zwrqNnNPAYmIWRiFA4I9q/TX4sfA5tGv57mKz3RO5IZRwM1hLMVtFaH0VDLY35k9D8objQb22HmSwMFY5BNfYWt+CVCCN4M7ccntXKsyupOSJxGXwcf3T1PjEQSfdZduMED/OK+n7j4eWjqzeQAcDqOlaRxkWtFY8jFwrycVJaLr+p892irHHxwcgFu5r2P8A4V2FBBJYo5wR3qnjqakoNjp4CFFN295nkkcskLtIJGBJz1r1OTwIuCi5B6gegqHiKMpNJ7GeKws7RjNaGL4c+JfiPw3LE9pqUgQvgqSdpHvXDeJdLn0ptpBwhPAroo1ZuSjf3dzxKuTqdW842fc+7vh7+0raTyQ2+sSFGyEJHcdzX5s2+oXMcyyxuybXBBHf1zXdVwsZpqO55E8rqUpqU2+W+lz98PDHj3QdZgSW3vUYMgOFIzjHBxmvxk8J/EnX/D00MljqMihWU4JOB+Fcf1ZKTm2Z144t3aV0+h+68NzDc7PJdcEdTXwT8Mv2k7a5NtY65KI53K5bPWpqqUk4pbFUcVB2dTbzPvlY2dgVHGSOegrndA8W6bq9rHLa3IdJORgjnNYxxE00kj03WU04pXidKQHC4H3lAJ9QDTxIrBShznJI7Ct4WlJNIyU0oqKlo3Yz5clCCRkHg+lPmn2yY6ZOCPX0reUuVp21YTw0FF04u6PzM/ai8AzLqVzqcNv+6uckYHQ55r7c+KHgyLxV4fuYTGTOgYoPU4r0aOMbaR6GWYyLSw8l5L5n4TT6WY5SmCHQkbSOv0r3H4geCbrQ765Sa2ZAjsCPT3rHFU5TfNF3sejGi4yV9FHT7zwiSzWXYsgP3QCR2zWy8O1lVxkkfL7c9fxrlcmmnJamSy1STad+3zOWl02RuYVGFwpBroGJjAb8gO1R7Zr3YE/V1BX27o5eFpLOVJFcgq/Qdcj/AArTugkifLwAcgr1FdN1JttbnnUcK40+eMtOx6p4L+MXiTw3IiC7dosjOSea8cw6FlByeM56VUGnFNao46uTUmlUm7N/hY/SPwP+0rYXawQ6nN5cihQQxGWr84oL1oWTY7KxUgnHv0rPE8kVqjLBZDOdSNSNS1r6Nbn7baD8RNI1mGIx3SFWbjkcV+QGg/EHxFobxi1vnEceTtJPze1RQabtbQnE4XEQScdbP7z9uYLm0ulDxurNnqO9fnn8PP2kHV4bXWZiuSBnPX0zVVKMr2TMqVVuXLNNedz9HY7WMhQQCBkf/Wrznwh8RdJ1yCGWK7RvMIC8g4+vNZVEo2TWppTxTlrHXWx6U1giISeNpyCOoqaK5juI2VWyCQD6mlZTcVI7amNeHg762/Uz2tVDllXhsMD2J9auyDJQDcBk5HcD2rujRjKKaIrWnazspblHygBhhncRyKvmMlt38O08DvTjaSutjknNqfs4rYyTGcMA3O4kY9u1aJjwVOepI47V06TdkZyUZLlb90rRRE5yAcZGT2rZtogF2kjOQc+tcNVRjLQ6oczjeT922ligIijKX5G4AD+dajpuXJ65xn0rP2zlFps5p04uCVtbkSJvG1gch8D2FSsrBcg55BNTazTS2OmGHmnaT0Z1UaYAHJ7Y9BVuOPB4PpXx9Od43R9HWowgnyrREITbgNwGJyB/WtFYuQDglehHet6aUoNN633OfDySlFW917kSKMJjrx0q0VxtIJxvIIHanTg4ys3obwcY2UttbDMFsAd8ge2aEX5yqtj5c8d6qrQ0unocVGc6srLZaksQwSxB9CMVbRWwmP4SDk1nzRclFvY3VGTk09LlqKNZFBJ6tgAVagYK209AQRilNpRWmhVNNzUE+pOsCqzZ+9nHNO3Z7ksSdpPt6VjQhLS7OnF1Ixbgpao8i+LCbdBmAbHU5Pc4rO+Md1t0Z97EHBBB6CvTwOkXN9DwoOc8ZCCei1Pz01SIyXMuM5M2ee+am1C4L3L/ACgAE7T6/WvArNylqfodHCu7qN6sw2gVWZGzkSE5HarnySbHVTlSCQO/0rnvYc6UakUpPRFZotxQNgbc9O9TsVPzFecjr+lXTipaG+ikpJ6WIPlYEEE+WuRj6UyVnVsqSRtxkevrSWjt1M4ObV9+x6N8LYvtHie2RcnDqpPp6YrovgrZC48U20ikkh1Yg+tZYuVo2T+Z6GD96MquzSP088M23laXbBgQQgGDjjitXSAUsY0fnKA4HaurD0U7JHxlavFapas1EB4ZeQoJA9aXKlQvONwJFdkoWdnscdSMJSU3uIQwzl8cgACpBgtjOD79DXXQtKPMuhwvCLmanLXVr/IQRtggEgHIyOoq1FtIVW7Y59KxblH3pdTrw9SMoqDVmilcErDISCCgBGKZqr+VazsvBEbHPpgf5xRTSlJSvqXiKqhCUbaM/NL48Tebr9yGICrKTxWD8YZmn8QXqEksZSADXq5zKPIot7GXDNOUaDnHv8zxKCFncLkDfyPb61bgAWUBj3BPt9K+W51Jan1mJ5k4OJbjBBVTnCMM474rWhQlMjH3uCB1qW9LM9GDi0TxxF4o3DYJ/wA4q/FuYICMFgQCO1TTbiroqsrrlS17nunwHtXm8TQkkEo6gj19K6j9nayJ19mbONqkE+tcGOtJKHW520nUpU3N63P0l0FU+zwl+BsBOaTTW2RRs4I2hQeetenCm+S7Z8vWxzjK6ieD/HS4ES26Bhk8kH1Ncb8c9T8y/Ee4lEyox+hr1HFRw9meJkzc8S6i32PETIGGDnsOKy4rjYSu/IHb0+tfNTUldo+8TivUqahH1aMAgHIpJ5o2XlST2NdN2mk2ZSi1qkchd7svjBBByPpS3e5SVPJZiSR2ojZJJHLaUptNaFCwjzfWQfqzqTjsM4qxox36vCOSzOFI9ietaVJpJyZ05dOMqqpLofpJ8P4vJ0HTxnBSJcY7Z9KteEAI9GsQF5EKDPrwM1pl0OZJs8TOpxnUaav3OmkAjjIXJG4kH05qOZzsJByefxr1otSSb2R4EI+zVrbleZhyuexI9qrSvgEschmO0DtVwg5R5r7HPUq07arVPb9SnMxVQ27PbPrVS5kYKMDjacY7VreSVnqd1NXhZLU+J/2o7gtaxRbtu1csRWT+1FI22NDkp5POe5brXtUZwWGbejPCy5uri5J7qx8DSsPNx1G4nJ7CoZWIbLbs5wK+bhFxvNH1da86kYp6io2W5GSFLAnt6U5AQGO0Ec4Ydvasqle7StozetQ9i+ZO7IpXOOGAZTnAqvvOd4GV3kDPX3FbUUpttrU3opxopydmV2tBOFwDtkY5z2rZs186WEZK5YAkdjntXTTnKEbLU51hueTSe57T4G+Cmq+I7CG/so8B8Emvvj4A2ccXg/TVVSPOVSV9cYrycPiJTqNpm+OrrDtJrRI+X7f9nbxAqRt5TcOu4HvX6XxwR7VIUAqcD2Ndyotttszq5slBTUdP8z86o/2e9eX5RESpOQCK/R8W6A9B1OSB1rOlSVrtkRzF005ON36n54j9nrXUZCYc5w2PSv0XAt48dBngj1rFRnZuRrHN6as3H5H50H9nvW2YsICAwyQO1fouscDNkAAhsHPeppUW4XT0NJZlCbu47n51Qfs+a+Ww0Q2nrgdK/R9IYiWXIIbAJPp6Vlqo3T0MP7WXtIqdPQ/OeP8AZ51xcnyhhiQM+1fo/shOGIBCg8HsB60SipWuzb+2EpcqjofnrafADXI5oJUUAhwc+lfoXHBEA2zAZu3qKudFRs29CKWaOMnGK0RzfhLS5NP0iztpQFeCJQcd+B1rsVg+RhjKk4/OuijBwTUTy61RYhOslrc8d+MI2+DtSYHDGIjBqT43rt8GXgLEs64Y+tenlyU22meXj/ZurCEVfqfkbrsW+8nJycuTzWlq8Qe7uMkn94ygHtivOrSca3KfZU4WpqTdvI4C8tFdRnG0AgHHNas8ZZFPQrkt7UqdblbcjmrcsqV4rqecX+iyRSKyKNuQQfrXo1vZNcZZsk8HafSn9YUIq2rLjHmVpOytojirW1kj2ITjJB+vtXdyaYVKunUtg1Kr3jo9ewQw6lq9PM+nf2VYDHrt45YsTCGx7f5xW3+y9a+TrN22AW2hiD7dK8erVvUjGR6GIwtsPZs/QeGYld6kncRk+ufSnwR4QIOflB+le7RrRsmo6HxvsptWT22JRPuHyZ5YEZ7VBL1OOmBg1183PqloZQclNKT1V2eE/tAXSw+DLssQCzYBPY4rk/2lr4x+EGiJOEYn6162XvlbckcEKXNONnazufnC9x585ZQRhjnPvWdZ3SSMyZyQQMnua+ZxaTqtS2Z97RScFOLsbDbPk2k8DqO9TBQYwoByq8Y9qwoxSbi3oaSmpNJ6L8zNM5RlGcBsYB7U+W1B/ecEocEnvRCKaSOepzQkoRd7lpXJKndkAAgHrUcAfKliQSQST39qlt09GbunGpZSWh+iH7LiqNClkBO5bgnB6A98Va/ZgQp4dYsx+a5Iz6Y/pXFQgnWu9jlznERhCNOL1PrcurRD5cEZ6/SpJF/djPGcE4r26TjdNHgxlKLUZLTufnX+1HmXWYjghlQ5yPu+1Wf2nUMmvtu7Kp/POa9fEV5KinbQ6sohGVVxfVnxX5TiQyLy3JAHetaWHaRsGWyQM96+blJTShE+gnBwk5LqUi42K7EAIMkmp1XgDaSysCwPQ0qVk+RluVm1EltHYKgBLZJznse1XLcHAABDFicelKpKzve5zz5ZwcXozQsziaNW4G8ZPpmmWylbiItkp5i5x7msJzSu47HZRp2imlqfqj8Gcf8ACH6TuJDLbptAHXgcmj4N/wDIo6UwckmJcj06YrnwFPljdPTc8bNJxlWUeqPY2bpk4zgcd6hdgWA3HIUMcdgT/WvoqbTjzWPKq0YwilHUhu8GKQHIUIwJ/Cor5nNtPtcj5GKsDyOOv1pUK0tnuZ+yi6XNa3U/JX4rYfxPqWGYbrtwfbBqH4qlm8Uaiu7GZ3AHpg9fxrszaLbTuerw/XU6Si42PIpEUBc4BwcCmSBDtOw4JOW9MV5PLJbo9CtJc6i1ovwKEpJOQcsTg+1NkBGAMnoTntUwpqKUlqQ60pVL27laSNQoHAIJBx056mrKLnYNxyCc596zVTlqcz6G9Ok6kEup6J8IYGTxtorE5H2xT9PWr/wnAPjTRlHT7QCcdqzxVXnldkYSnGFOUYrXU/WjR5VFlEOvyjI+o70acdtquONqABT1Hvmu7BpKPMz5avinKSjNaI+D/wBpMqfEs4Kll8vBDdjxisb9p64ePxNgOQrKMj0PpXv4iE3QjyPQ1ySrFOSXV6ny85DDKfe4AIrONwDwrFW6gjtivnKsJNJvc9lQhze5rrYlncnGSfmIAx2qMyqRySXwRk9zUOVkktTuo4eUYtzd/IwLq1E0hY5AJANa0gwozyFJOfStItpNN6k06c4PnWsX0OPvLNCQVBOCBwOua6EQbpUGQSWBAH1rSl7kW3I46+FTnFJaP8Ctp3gPW7yBby2sXIfBUAHB9K/Vn4R+E9Jm8F6KJLRGZrYEsR14GaKOPlNWS0FXxUITUIp32Z+YEXw78SGJmfTpFbIJBU81+yc3grSACfsUe04BBHA5ropTlOSa2RliMTSUUrtpv8UfjTH8NPEcg80WUpfccKBwBX7EjwtpEYx/Z8e0c4AHauyMJt3a0IeMouHvKyWp+PU/w68QRRkixkLNkDAOeK/XCbwvpjMB9ijwTgfKOK09jJS9DleZUqlFRjFrXQ/HiTwH4kdkKWbjGQAVOCc1+v48G6QxXNmmGb0HFYw0baSNsJio1NJ69D8gY/h3r8gA+xSAcZO08e1fshbeC9GZgpsIySRjKj8hWVOLSsdizOjGbUdT8mNI+EetyNHKbFxnB4B5r9krDwZpCoAlkigcEgcmuStKpJezJwuOoS9+zTPzO8FfCnVIdW02c2Mi7LpCcjpg85+tfq/pnhnTIJYytog2HJIHX2rmrUqjXKzSnnlGnFyimXPCej/Z9IskKgFYFA/Ku2jMUECpCCFUEL7+1Z0abTSa1ONYhNOpe/cx57ZIl+YZBJ6VNe3SBRuwAck16Cm2td0efOlPnUKUtJHK654SsPEdm9teQowdOCR09q3UvAIgqt/ECfpVNOyi9zWjjnBy5d1+h8G/EP4HXFnLdXdnbmSDLEAdua+57kW1xCYJkDB84z3x1rWVNykkd1HNoqPLJas/IDVPC9xZhhJEVZGwQa/Rbxj8KtD1xTLDGEncEnAFcNSSctOhtCdKa5ZN3Z+YbaWnVkwNpJOBzX094q+EGraSXkigLwqTgoOv1rKlTXxdjprTu4wSvrufJF9p0UIDKuMgkMe1d7rnhy8tfleFgpfB3DpTpRc3e+p21qKa5Ys+WvFvhyO/8z90PmBBI6+1erapo3mOqyocPnPt9K7KGIlTpu+1zzpYWMZ899V0PkrVPBaW1uCgJJJJA7ivo268PwyxjeOQSMDtXTTzWUZp9S8Rl86qsmkux8YT2d1bEt5eecgEHivpXVPCVsxz5QCoDg+v1r1ljoPRrQ8L6lKNNRU9VdbdWfMf2yeAo6SOrBgB6iun8VaGtjPiLIQNwR3NdlOvGpC0dEeROnHmUKi1PdPg98dtV8MXUGn3twz6fI6qS56DpxXzLbWdyMNuI2OuABXLUpRc7R1aOvF4aEqadPSTSTP3l8D+K7bxJp9veWtyWjlQAMPp0r4D/Zf+JV7YX8fhrU7omGVlaIMeh4GB71yKrNq8jwI05JNNbM/SHVZPs88Up5Uyck/oKg1sfb9JieHIYcgjtUTrqUE5PY7KVBSk2lvubOnyR3kW442NnNc74UmO0wM+XjYZGetVTr8yutjR0YU5qFTVpqx5R8X/AIOWHim3nvLKIC52ksoH3j3r6XMW+MkgYZskDv8AWuijUcLtanZh8yj7f2U9kfht44+Gmp+HrqfdaMmHYlSOBiv1y8bfDHRPE9s8dxbKZJzgtjkfWumOIk93dI9SnicNWnzTVtdNT8KbqzZMxupXa5BB96+7PiP+zdeWrTzadAzwnJwo6CtVOLdl8yqvI5vk1T6n59tau6Hbnrg++K9M1/wLrGkSKJbVljWQ8Ec9e9ZuknJqBhP2rjyyty9DyKW0wh4ODkEit65szApRiQV657+1TT5oNRa0RjiaUlT9q1efbyOZRGA2Ln5WAye1XzbtHjBxk8kd6iUop2epjOElFKK1l+ZnMQqDGTuyMH+dNkOx+SSpcD6ZrWEE0dHLGoo0pOz1V/1H7mWNjG2HXp7ms5p8y43nCsDg10Qi2uaXQ8nDzUW6bjddT1Pwh8TNd8I3Vs8N85t1K5Qk8fSvJZ7hnwAhAPIJ710QpSctTnzXLaUuWUdH27H62/CL432Xia3igmulFyNu4E9TX5d+DPE154evIb2C5dCr/MFPFceKw7i+Z6nK8vqKDi5aH736deR3sQkRgQRXzL8EPiZB4p0633TYmQqsik98Dn8azlZtRTsJ4qEWoVFqj6qUgMqocbhke/0pkD+bHuBygUBT6cV2QxKjHkitTOPNVfNa1hJ0JI+bguSfpTthACthl6sD3o1Xws1VO75YvUmDBWj2tggggjrUWeD1DDBGP0FRGLeklucsqsOZyi/VF3zgM7lJckkD+VRQgtIiDlHyCT24qI4WMWnLoddPEqFNxtq7D3ZyqpwAcj6U6QYA3fwr0HemrTeisOaqKMVJb3O6hU5C9cZJzUsannPBHTFfF0Iw5L21PcSlKXsqmqHHiSIjIJYHHbr0qeNTIVDPlcj5aKs1GNmiIycXZPW//DDVEm/DA9cH0NWwhC7cYA9e1awmrDp0aipNp6jFiOc5+XJx7etWOVwpOQwwMdqhX5UmZULWck+n9IkiH8PXd8wFLEuGwD0HGO9RUpxV5QOvBV3JqUtiyi7W5HBJIx6mpV4CZYHOMk+taUpOaWtjrxUpSp3USfbkDvtBAI/hzSAhBgMAx9e9Q4pzuzmoyjdT5bM+bvjrc+XpjxhhkpgE/wAOe9c/8f7vZaeWSTjOQO9erCKeHdt0ePgOZ46Ur362PiW7uSJctnmQggVmTS/NuZhkSDg96+Xsoy1P0Sk5OKmn8vIviYlPlPBJxt7VjeaRgocZbp61Nk3oKunOmqT/AOGuarTrJsYZ4Ixn1FZkc7AMCRhWJJJ6CnJWdkLDyhpCT95bmmZF2ohyHBJAFUVb5hIWzhhgDtUxjyu/cupiJKbi1Zo+lPgBDu8RJM3QlM47DPFbX7OkTS6r5hyFD4B9B2rmrwTlFM9GGMlToybW5+jentsgjzn5UUcVDb/6iNGIwMZOele1hkou73PgMTNx996x/U1EZtoBIHY57+9VVcY5x82SMd67KyS0etx4SMlG6VtfvLjMCuVyCScH3HrVJJBluT2I9qys4q8eptKk5v33ZdjRM2z5gwxuAzWZ5pIK7SF3AAGjls0pI5JUUpKpDUh1252aZcOScCNiT7Y7Vzviq6aHRL1sn5YWwD+NbYGPNNJqyPNzPHRwyaktz81PiVe/aPEN2GyP3rAH8ayPF6vd63dMH3Hz3znvk8VOcTXPY+syCLVKMo6nFjYZ02J6ZxW9BpwZ0Y8MWAGa8WpUTfNY+ghBKXK9zQtIwwUBSQcA+1bdjZOgGcAhsEHvXM5vn5WtC+SLXNF3bJrW3xgAd8AHt71uW9twqjoc4P8AjVqTejKkpU4qMdbn1D+zzYqJ5JcZ+bJFdT+z9bFUaRSQcqpA+navOlByr3tsdeJap4VNvVn19GxSLav8KjBPbipGBSIE9hnj2r2qcmrWPg5OTbktmfFHxnvfN1RlHG1zgemPWud+Mt1v1+UBjhmAAHt1r1cwqL2MYqNmHDmGUFOcetzytLpFJVmyc4OO9YeU3K27q4Br5+NJLQ+mjKSSlHpubk1wSgwDwCRj6VktcMUTOCRnHv6VSVr2N6rUkpSdkVbqVnYnJABJA9MiqN3IwGeuSQcVKikkmiJRlOTTe2xr+G2EmuWAUnm4Q5x7il8EIr+JNOjViGa5HHrTqStBtnXhaCT5Y+Z+kvhxtukWqZyEiGCPUjkinaSDHY2wwd/lKc+ueldWX0WoXufKY9RqzfNozQkkZg4OcHC5J6Ad6imw5BJ7ED3+tevCnFp20PNck0lLdEDMWCkk5DYGe+PX61XkBVWBySG3AHtSVRJxgnqxNJJqUdCncMW25HDZAz2pkj7kG4AAEAA/zrdxs7BTqzdr7PQ+E/2oM7on8xgNo4HfFan7UNuzW1tLwQFbqOgBNenCMHRSZxZTSqSxM7Sty7n56tIA+58kZyAe3tTnjKsWxkM+cmvCnTadkfU0a8K8eTe3UsRAFTgY3Ng5p9p82CSQoJ69s1y0buVktC1VanapL0Kt3Eqp8udyjIA7g1auYlKg5wc8e9dtOo03JoqdF2svg/rUZorbr63XuZVAA7nNS6fEY7iN1JBWUHPc1Em2uaLLyxU4zTqO9mfr38E7YJ4Q0x48KWhBwO3rTPgbeLN4Q03DfchXIHf3rzsFNKTXcwz6v77i9u57tE3OBzwGOaVWVSCSSC2SfXNeypJRU466nhTqNJ0oosqw+UgjBYkZ96YWJUnjBII+mKyqwT96+g1XknapHVnh/wATPiJP4QuVQJmNwDuHUZrxH9o3U43nihEnzIpA9Tg120qMYUeZ7s58vw0a9SUf5eppxftHMDHm3OQep/QGvisTuw++eDnGa8adRJWsevPKoQaalp1PtoftItlzHGxbJ4NfFazEZw5DcEZpSxMbJJGlTh+nJtKb1sfbsf7SmxBiB9rcHOOPbvXxQlxgbSDwSSSTzWUqjcnpdmtHJqcI2ctD798J/Hptd1m00zyiFmkUce9fMHwbt/tfjHTMA5WcEk/wgdamribQSijanksVJ1E7eR+rtjcLcWyMM4dQee9Z2mS7LOJlOSqAAN3479a0pNySS3PAq0nTlzt6N7HmHxvbPg25GQFOAoPbjk1T+NbF/BtyFJKjAGf4TXsZZFrmaWxjPl9rTs9D8udUtibyXacZlI+lTXUqtPMvJYyEceteRjKjcmmte59LUoXtYxRYpu+YE5OCT3rQJGQQ2WG78K5XNvc7IQjFRc1ZoiEEUaqEwGzgZ7UGTaC2eTwc+tVBJe82aOo5zU3tqNKJw24ZPHP6VE7ArtyMKc8dqIXk7IyqckJqo3e+lj6k/ZpZV1y6yPYj1rgPgT4oh0vxdHBNMViuU25HbB5xWGJpNSXKaY2vGGHcpq7P06J8vbgEqeAR29KwIdR+0RRyq/BUEH+Ve5g5XioyPkZQUveg9VqalxOQjjd9w4z6+uK5e61JRExaTCRJnI613RpN2TehzwxFGTc2r6HyV+1Lq7Jo1tZiQnzd2VPfk15N+0n4lt9R1RbOKXPkPggd8HmvbSVGhzPVs48viqmIdSb06LtY+SdOlkNyD03MDj0qxbwkzq6gjcCRmvj6lRTfNY++54uPL1XT1O2gYuu3dkkE5H8hRaBiFY4GzB4/lXnuzvJM6dXZJab3/QuMoaLcewwQR1xUgYsChzluR+A5q6N1NI82slOrzxIEj3eUACVZuSO3pV6FPlx1yAOKttKTTVzpUZScVLofop+zLCF8MRM5PmGRgR/Wrn7OCqPC0TjIYSAgDsD2NcEPidzozSkpKKkumh9QseBn7vQ+oH+elQneVb5jkAcj36EV69GLUUz53ExjCCcVq+h+fX7SaeZ4jmJ5WFQAT3POaf8AtCgnxBOgwQuBn+X517mYVV7KMULJKPOnKWj1Pj6VXb75zyTgd62J7PG1udiHBI9TXzcanKm0e5HBOUbSZkRxBo1xw2SQTWisezYFxtHas/atSui6VKNODe5GsbFQhwo5Jx15qwcshzweDkd6lRTlZG93UptNbkluu6RQDyCCM9qLfhoSpwRKFB9M9KHZOyMYQlCUbS9T9SfhKAnhDSgRljbKD7kUfCRS3g3SCc7hboAPTgZqMG5NrlR42eUoOT5nZM9aB2g5yAOgHf2qMHGRk5xkD0r2ZXd9Tz6WLg4KTj8P4lLUj5lpOAcFYWJxUGonbZz7sgMHBYfw+v5V00Jclk9UcdVyqKUorR30PyV+KhLeKdSY4IaduT9eM0fE3/kZNTYNgC8cD3FdOZyeiW3Q9zJ5KGHi3pboeQOvDKSSoOME1PKhYDJGSTwP0rwHVfPdnoV3KUFOL13/AOAV5Fwn3wAOgHemlnwgIU4YH6cVDclJpMbrpU1JvV6WCMIdhOcAg89s0pQkoRgb2GQOwo92Td2ZKDgk2em/ClgvjbRsYZDdLx7/AOetT/CqNW8Z6KhAws4+YduawxdL3FFHXhnGcLPfU/VewcrZQ785ZAcHtUlkubW3Gc7IwARXpYWolG58xiFFz9it+5+ef7UER/txXbOfLUqfXPeuw/ai0gtcW1ywIMkagEdsdMV9HXmpYdJIjKJ1ad4WvZ79z4PibbLjJYlsD2q8loVLYbB3cn1rwp8vLqz6J17T5nv/AFoTAZXoAwJOKtQxBlViD8zDIPauOm02ovQ6MTVnFe0SuUJFRht3kEgjHrmtIwHA2AAgEcnrn1rNO0lysycpqCqxWr6GNaxO7xEcKjjOfQGuhtLUo8eQWEb5x606tRNuy3NcLKcppz3P1d+Eap/wh+kMM7fsUfHuQM4qv8G7hJfBumbWB2Wyrz1HA4/CubLpKVkt2ePnCvWc3ol1PXiolXAI4x1707ax5APoCK+gpwilozyKctbKOif4mRJGwLdizEk+vStaSLcAxz2GMV1Ku3ZRWpFaTUW2tWePeLPGOleGZI01CURqefmHfNeH/tNWZIsTGzCVoznHfmuqnOKjztioYSdROMXsen2fxa8KzRr/AKYobeeRj/P1r89LWzYOoDk+WwwTnnivBqY6Lk2loemsmmpRtL3vQ/TC1+KHhrAdb9DhuCO+O496/P6wLKq7mY7s4IJwD61zSxLVm0bPh+bldT0ufo5afFrwzGxX7UCSwIyw49a/PrMyAkyNg45B54pVMY5tNrU1p5VKndwld2Z+i8Xxc8PTTW8FvdK0stxtAGMewr4F8MXFxJr2mBZGJkvUA64Ws3iGo2a1DCZXKcW4y1P1Mg1ET2yS+ZhSCQM9a5CyfGmwxh87YlGB2Fd2CqKSSa3PFruClJQfvLoWtQ1eFRhpcMOSK/PT4hfF3xRp+tXVrbTERpMwXk8jNelGi6b956GNKjVr0eRR07/12P0DTWbQbcS5DEYII5r8yYfjJ4tdo83L+UM8Z6ZriqyjJc3NqdUMFOnDkW2mp+oqajbEKWmB8wevWvzjtfi94okRc3WHDA4xwP1/OuT6zZ2k9DrWX1VBy0dj9H0vLVhkyKT1ySOK/OuL4t+Jm4a7Y7TkHJ6elb1K0YtJmSo1akG2umh+i6W1pert2qy7vmJxXz38FPHN9r8V4l/NmZJlKnPQVz/XE5WRrWw9WnBNLoeneI/hZoWtwsrQKsjZOVFeoCQYQ4BbbnI7VcJu9luTh8wqOinUetz4J8cfAS7tFludPHmRDJVccmvt+6hWVXDDKtnr39q61R5kouWp6dPNvZx56kbp7dz8eNd8K3elzPFLAw2OQc9sV9//ABb+H+n3+k3ep20arcWqZIA69yapUbuzdzdZhTqLmhufmHfWkZjdNoJZSCPTNdDrUK208qMAVDsK5MVTcJ2NoUuZvmXmeFav4bguXPmRggZAH867ueAO4xggsTn0q6eK5bpvY5JwTjBz11f4nkTeFYjgRJtQtgjHWvabLTY5DvYA5I2kdBWixfuJrY5p4NuopxfdHk2laW+gahpmpwHbLaXasD6c16ff2KqQNmVZwcVj7WTbbNa2Wwastbn6JeELo6joNi85y01ohJ9cjrWf8KI3ufBmk3TKeLbBPoR2FdWClGclGWrufJ4yhUoS9i9i7otq1nrFyJmIDPhQfSvE/FnxdTQdZnt54CJLaUggfxe2eK76tBrV9Dqq1p0oqEIa2ProyAouMEbs8+lfDL/tR2sMvlPCxKgYAB4z/hXXHD2jvoeLUrKpOMmttz7iaWLaUfglSQR6V8C3n7VtjBmRw2F6YPLVtGjOa5l0M61Z0pqMlpI+5rmG0ugUlVWGScHsK+B/+GuNIO0PlHDDO7oMjoK1+r1GrR18yIZhGmryVkmfTXi34T+G/EkTqLRFd8gMMZyaxvhj8TrPx9Z/bLNzsVypBPTp/kVjzxTabszuo5nL2qdPbR2Pk74h/s03VuXn01C8YYkhOoAr9FWhiuY1DIDuQE57104e8W0jpzDiGomrq5+E/if4d6zossgltHAjJByOnvX7KeLPhfoHiW0kS4tFM8mcOAOK6qM4JODVyqVWnWpKN2pLU/BO+DxMY5VKkZX/ACa+y/jh8Cbnw0HubeIm0dX2tisqdGlN8t9V1PU5qsqDj0016nwi8ZXOASFIxjvWjqFq1pJJE6sBEwXI7VvVg4Runc5sLFubpX1tv0OeZSpyHIZeMntz+NWZIlYkghQEAAqqFdpe93PKqJe1UYxuySGTagywIbbhsdTUYxkKchSSuB29MVjyqdRzfQ6XCq5Ri56+nY+mPgD40l0bxRZ2zzkW11IqlSeBz0rx/wAGXBstb0yeM4K3KkH15rz8RSjFuotjSeDnVcbLXufu34fvBcWFu4JIZV6+9cj8N7x7zQNMnbkPAuT6cc1FNya5rni1cLs72sz07KjaQ2CO/r7Uxg37s9BuOa9OhTU37zIfPBqVua+g5SSxLE8jOaeAowTg/Lj606vK0ktzKcJxm3Lp2JxIkShVyd2eap4IOOcE5/8A11lG/K+bY7sRFuK5n00JpZlwGIP3hVVnJUHgAg5A7+lVSlJt32OelCpy8yWi2PUU5AyeuMj1pkZ3KCB1yT7V8HTaWt7M+mryi2k1dPT7y5FgZIJ5fHFJC7KTufKnnA7V11Zt2T2OehCm1JQW7sy0C3yfMSA2TjvUQJwWVwRyPpWFOopNpGmGw/LJQ38y2CDgjIxwRVdZGIPzY+bH1qozcdGU5zV4sthiSCcfKAMn9TTYz8uOSzZ5Haopztp1Na1NWT7dCyrFAST8qnJJpo+4B65JJ7jtVOlyzcr6ly9+KUUWpCNhYc5GcVVZtqkPydpxjtU0kk7pnLVlJrkWzPj39oK6AyuSCCc47Vz37QVyXmdUODjBJr3JWp4dRZ5uT4SM8TKaeqPkS4ZQWwSSC3Pr71WmlYqCc/KSCR3r5OMk3ZaH6A4OHvJXX5CqzEEKSDwcH9agDdPmJbJOe4z2oirK63NXWg3ZaMsO2Cyqw2rjIHaq7OwAG45JIJPeoUr6NHMuWM1PZMvRdQoySWBOffuKjtmJKAAcNjH8615YpXRtScZwTerPtf8AZuhZrhnyNzMPw4FbH7NcYNvvxlmk6+grzakv3qij08XNPCqD3Pt+JsxnJPYjHaliUKuBkgHAFe1TVkl3Ph50rvnqbLoTRNvPQhTgAntUsLZYKxPJ4+tb2cJLXUU68XeSXuocY/LUHBJJPIrR8oyR98KOD6U5VlNPndkCm+W8FqzCL7cuQ2Mk89sVLPCVfaAQAQQT3rpgoydmctetJRUXp3OF8c3KroN2+SMxEYNVPiGjR+G7nAJEisc/hXXl8IxrXT0PHzKnGpCM5vV/kfnjeRLJq1ySc7pWJB70+c+XqMjFz/rOMeua8HNardWV9T9Dy6caVCNOXbQnjsCHUliAMZx3zW3ZOjgb+QgIHtXlSk9Ez0otNc0WT29oNgViQwAII71uxqrBAOCSQcd6d1KzIoQUW7Pcq2ttngDC7iDnvW/FDHtBBxwMk9vWolq1Y6pRi1o9T69+Adky2IZT/GSD611nwGtBHpEcrKcbmCg+2OawpRaqttmOeyTpwSZ7zcqBBhhxHgkevTOan1d0hsZnHG2FiuO/Fe1Q0lyrdnxde6jKU9LH5o/GC5z4lu0GcrMwB9MmsX4pT/avEV8wBIE7A13Zm0lGL3OrIKKhTUk9LnnQZguAwLbiCD0aq4IXaQxLDrjtXicjSsmfVOtGLSSvckNw2CDwUYjNZkl2wYA4wckgdqajy2SOWFD3nFvRjppDsyGByTgjtWdJcE7wAMYGD6Ve70NHQppWk9T0H4bJ5nizThk7TODlvpVz4RKsvii0B52tkVhiJ+6ondh4RUHJs/SHTEAsYT3KgYqTTkb7LGuQApzwOvFevhbxj5M+Gx8HOq5NbNEU6tlQc4A5YdhmrMi7w3Azx0712KHM1dak4jnkm46ozZRuVu/JB/DpT50IGcH5Tkn2703Qaa5WZRSjSajq2ZM0ZGAwJxgjHarTIXAPICuPxp0WktdzlnB1EorofKf7SGltd+GzcqhBjXDEduOa9p+I3h7+3/DOp2oUMyQuyg98CvRwdSDjyPbocSc4VU0rXep+MdxGwlcBjhSwwelbnimwl0jVJ7WSPPkysMDtjtXHisEoy1Wh9nThaPNu/I5+LKqAuACAc+tPYg4YHAwDj0rynHnSdrO53zpqnJSS6alrflI2CqckYzWZPchUQIDgHIPpVUYycm3sjz6taKhFJ7s0opY1fJchg6kAjpiuPl1NoXZTnlsZHevRjSbVu6NsQtVK/wALP0g/Zy+Jljb2C6FfXQVvMG0semO1fnJZeJbzS50uLK5aOeNwwYE8elcNDK7Pmb0OTOK/tIqMFqz96o9ctXh85J1KscjnrX486P8AHrxjBDGn25m5UFiT+Y+ldkMK3G7eiPm/aV5NU1HXvfsfrTrnjjT9It5ZnutoWJsZPtX5I6p8WfE2vb4b67ch1I3Bj/n6VvJU4xtNao1oYOtWqNRlY9b+KXjM+IdamZX3DeQDnoK8FS/knJ3klgSSfX6Vy47FxlDlS0Posnyt0Ip819dTe+1sSFCgEYzyOPestZPlyBgDB575ryrR3Wp2TpqUeW9nqbJuHzuI55/GspJyVyQSzNjHp9KdNqCs1qXUpTsnB6m1HcOyjBO4kE5/hqPTbeTULmCGP77zBcAdfalG9uZszw0GptvVn1r+znorXOrvqTKdkQCqT0PrXvHwP8KNoOhWkkyYmlUOxHTtkiuSNL2tRR6I6c1xqo0OVbs+mYn2oi9MEcDp7Vn+YeoY5D/mMV6yg4p2PjlJVKl07NI89+LNt9o8HaooJDLGw6V0Xiq3Gp6He2gAYz2zAA9z2xXp4GtaaUjhxEIU6sWnqfkLqMxtbyWMgliwGfeo/HdtPpfiC7tZMgi4bJPYZrkzPDyT5rH11KMI2U3q/wBRouMAFiQGbH1rmDeN5e5XOAMcduK8iMeaVj0NYpRWp0ckny8kEcg/0rlpruZQuCSOjBu/0ohSbnyocpxnTcb26G7JOCMqSDtxj09a52O/foVLAtxmrVFpnPh4r4UttDWtNWu9Jv7fULTIlt5lYDPWqccbzN5hzt4OD3FbOcZK8mdEaMHG0lufbfhD9ojS30u3i1OYRXCRhWLHqa+LFsI5lCuoO1yQSK6IYiEXax8/jMnnUuoTsfaviH462N1aSrpcoZ5FIDDHJNfI1lYpE6jOSXzx39K66OawjZRicb4elTblUlf5GX4gjv8AXdZfULqRjvlZgB06966+K0aUn5PkBAJFc+LzOdWFmrI9/LsEoJSSszjV0vacbjjqDjt6V2P2Qlt3IO0AA964XNtWT0O2dVpqbVuxynkSRL8rZz0I7V1LWX3gx+71xQpxbvFClVdSLjJ+TOehiZiNxPzHPHtXRR6eRk8keZkChuLXMnZmtGMElBapFeKE9VBPTI9eK6qwsXldRsJV2/OsIzSdmbxprm8z7x/Z1glXwrASfmdyST2rtP2f7B/+ESsjtHybjnuc4rnwtRSqNvZPY8/N7ucZPoe1+WSoX+LaRn1roVsVKhSwAZuTjgZ717EaraPEVJuPN01Pzh+P0Jk8ST7eocHHqM8f/Wrq/jnaK/ia4LY8wjBB6HHSvQzSSVKOuhrkOHnJOSl3PkSWzbBQpkKcgDsO9dPcxJGwOCTvwT6GvBTu7RPpKk7WTV2ziZrHZz1OBjjpXUzxwENg/wAQIFZwbbRjXtThdnCfZSI367d2GNdDdNGsbbcblBOB3qk2mmtzGVSKhzx0/wCCczCFWWI8lVcDmkdsyxqeRvGR6iqnJczVjXDtxUXKx+pvwnLDwlpHygD7KpBPc8ZH4UnwoJHhHSQwJc2iMSfoK0yyCer6HgZxiVKu4JaPoepHIU5Y+ox2IpDkqNpIwB17V6atdNHHCFRRevu9ijqYH2G6JxuaByT2HHU1LqKFrK74ABtmY57gDODW2Hk1NRetzhxlOLXOtD8iPiXF5niXU8ZVjdOQOwBNW/iIqyeJ7zk7hM5we3PSt80urXPpcNVi6Cja6Z5MYyT87ElsgDsK6P7MGZVABLEj6+9fOx5eXmtqj1YyaXItEc49ozZ2nLBeSe9dfHpxKj5sHb8oFa+3hy2sZrByUuZPRnLWlmxOw8nJBPtXTrbCBwwztGSQO1YuOvMkaVaEGlFu1vxO1+F+nlPGekYOQtypBHXIrpvhVbpL4w0cAZc3Ayw7Z7msMVdKKbOmhWi1KSWq0P0ssLbNrFswWWIAEdBW1psOy0gyT91QR6nFejhotRt0PjcXOHtI1EtT5X/aU0D7VoNjdqhItA24+oJ6V7d8TtCGueFtQtNoZxGWA55wOBXt0aqs4vW5lgsRONVKDsmfjvNYmOVlGNocjjqa7nXdNawvrmCVB5sUjAj1561wV3yOzWp9VWlKLv00OHW0YMw5ICDaDW6VCg7sFmI4549q8uTUrJFt2UZvYxWiygzwwyQB3p91KEdAFOWJOR6etJVtEmjarSjOzYyPCY3Z3FjjHY1X81WKqrHecMM/yFJPTVGEMRyNQTuz78/Z28WW82kHSJXxNBJsUNjJGOo/Gvj3wp4o1Dw3ex31jOQ6fe9H9jWUItuyPMxmHlKSl0vqfrzFPEygIww5yfSviTSf2h2SGNbmE71UAle3vXq4ao5Ru2eDVqOKtFO1z7XmmSNSWk2gg8n+Gvh/Xfj9c39vJBZBh5ikAjuK63FKSmS/aWUYXK3xy12HWNba3t5NyWvyjHb1xXjk1/NqdybqdiWOSSecVy4nHpw9nDY+gweUWl7Wq9dDHXT/ACwDzweoropl3RkDjGCSfbvXkvU9mUeZ83QyIISigkEHeMe9O/eqF8vJKk4B/WjVk1YtRUVtoaTGLYvzfMMDjvWNJMzAKpwScUoRUWmjnkpTbhFWTVrnpXw60/7d4o06BEJCThgR0OK9I/Z48O3F1q8mqTg+XGhVC3Y+orOpJ86ijetT9nRdu1j66gsClt5QYgPGCfpXYXFovk4AyRk8d/8A9Ve7gG+XQ+LhBwvVSufkl8adLew8VagdhEf2hiD6g85r3j9pDwXILlNajBKTJhjjoQea9nFYeNRKSfqe9gcVF0ou2p8VW8zYBJIOQOaZMTbHCDBViTXzmKpNNLZHdF8797qdZbXBSMb2xkZB/DpWBbXzbQrkEjpjtXG273Z0yglHla0N6SaQAOrnAYAe9VN+4Ek5zjOewq372pk6CT1f9I92+C3i7+xPEEUVzMUguwFHsexrweG7ntpoJInIdH3Ak/dPY1lGLUrx3OfGS9p+7W5+xWmanHdQwsJAQ6KQR+Ffn54Q+PN9o8UFpqRZ0hUBWJJHtXdSvKKikfLVMKqVW8l03P0RmmQqBxypOOwNfFt7+0fZRQMY2zsBP+79K76aTtK+o1UqKmoOPke9/EvXbPTPDGpvcOoZ4Sqgn7xNfnZ8QvjLqnizdb+YyWpY4UHqPau+OJjTXNN6nPDAVKkk4aJfied+I75Lm/uAjZUO2Ce+a4m4vG2iRnJ3vgg9TXkYitzzXKfV4SlUV2nuE82JBgnBGSR2xWa9wQWJ44HB74rL2fItNUaUajqJqS1R0NnfLHE/zscEED19a5cXB3FNxGSDx6etbx5ZyTfzM6DdOCbjuzpZb9JWjBPSQck9OeazPDunzarrFlZQEtJczqoAHTnqfpU1ZOEHbYcaarVk09d/uP03+ENoyeC9PQjGbcED0zXdeBdI/s7w9ZW0gAZYAG9uBxWOXQakpW1PGzBylWcrn51fGrSHi8SallcYlwSe/PWvcf2jPCsv25tUiUmGcc8dPWvqMS5S95Hq5fThKmpSPz5k09MkEgtkgMetdDNb+XMxkP3ZCoB71jXnOKTjuzN4SlOytqr6+p5frPh/dCZkjBK5OR655r15rW3ktTG2PmB49eKwWYuM7Nepi8NTcrP7Oz8z421SB0nKMc4YgA/wmvcNc8DQXV2PJ5VmLcDr6ivYwmZUvZ2WzPKjlrlWSm7t6nvH7InidIJrvSJZQpMocE9+BxXmHgyC68GarZ3tnlXWZQwHdc8ivLxkqaba0ROPyyCqKrT0kj9e7WZZ0VxncQAcdDjpXjPgv4k6ZqFpbNJcqkjLhlJ6HHeqoYiSg1HY+WjFqcarjsz3rcBtGcs4Iyf0rgpfGmjRmOSS+jWJCPmyOB612vml77WqOqbg6dr21epznxt0mw1LwRqk86gGGIMpxz9BXivxm+LdjeaVJoulzBy4Icr0NehhYSi+eWh1Zbjpc6oQ1T6n5QeN7PydVuQoBEcjDK+ma9B8U6SLh5LnaC8jEkAV1zx0WrdT6OpgKnPGUHax4D5eMbiANpLL6mu6g8NSSFy8fV8AEdK4/bqTbb1PN+qyhPlpLS5wwXDKuwbQQARXdDwjdFwVUlN+QT2odenZOO5vV+sNKMrRsY2iKRqFioOW+0qwK9ueK9L8L+BryfW9OiiTl7pcHHXnpXFiMdSS5pMvC4Ocvc6M/WL4RI//AAielKRj/RFfB7nArtPAehz6f4e0y3KFfLtUGPWuLD1E2pSPBxFFQm7J2X4HS5OF3Et8x4FW3tmBUckgEkjtXuUmknJPQ8qDca0XHchUYYYb5QRx6UrA7FbAIBJIreVpuxp78JNyelxu5QFJyTnJI70hUsE2nHOa5dZO8kdDqupGNKK2ICFBBOepGB39KesRIG5iQMYHp9K6eSMkpc1rnJOpUUvZrRXtY9SjGCuCCdpJ9ueKap2oCe56jvX5xQptppbH1sqsVJOW63JQdpxk4JyDTwpJQgEHIII7Yrrp21izmcW17SLs73AbW9ME4HuR1pCpIyrAfMMEd61pRtoupTxjl7iJ4xxggjc5wfwq3bdSjcncB9c1z19FqzWlUVV8sl5f8EmgjBx82M8DPatCKEjbzlsZOPappQTSUeg6koUpLn1v+Q0xErnIG0EHNX4kLgtxjGQKmMm5Wl1O/wBlKa5m1ymRcWzkE44KEA1tTxbbdskgBCCP606dWSlyI8jMqKacovRH5x/H12fUZRuOzduJPrmm/HdfO1e5RSAI2JAPavYxs5KCb2I4dwkJJySdz5SkO6RDg7QeRV6W3OT/AHhgjHb2r5dJ3sj7mEk6aTeq1M9SQu4DDHIx61a8kyKQdwbdnPrRZxlZipQUn7SKuZ+3kZyduc5q08TpkgHuAD296q7askaOVPmceq/Ukt3O0SLk88gd8dhTbXc0qCJiPnBx2NVTpty97Y1niuRxhbVn6G/s2WhTShLj922Cp9OOn0rqv2d7UroEPGC6j6CvPw65sRYfElZqiktGj6hiUgAnkPjOO1WokUqo3dgQK+nq04p3Z8Jh8QpVFG5JAF4OSCx6evpUqBFZFIxxnB7ZqHFNOTeh1Tgr8jeppQp8nyH5sE7fWmwSKCnzZCHJ9/Ws5paSeyMHjU5eztZvQhurdWGQcjBP6VqMFk6dmUH2qpVXL3UrHVUoRUkpu6PFvilIYPDcynhQpyPXIGap/GmTyvD0qjILEkD1GK9XARc4tLc+YxijTxUINXTZ+el+QLyV1OD5rFQO+DVt7a6muZAIGKFx8xB55r5jExkpu5+n0HHkTStYktpyskY6k8gema2rLRLxwCIGBLAAY5+tck43+E7U1flZqWs3CnJA4I9q07TQNUXBFtIyu2AQDxUVKblG1jSnGy5V06F61kzIAchfU1u6d4X1h5IlFrIyl1ywB5rRRSiXQpVOdNK591fBGAr4ftmIJXAIB7HjOa3/AITac9n4ftIpgVkVNuPqK5MA5Su3tc5OI051VFdNTtfFGV0qchjkIcEdqm8R28k+k3MMPMphYZHc4r38vj+8TR8Lm2JcKLUlds/KTx9c58QXirypuGJHpXofij4V+ItQ1e4mjtXCmd2GfY9e9VmTTm0nc+iyjBy9jB3srbHz08m1sA8ljyPQ9K9fX4OeJmKiS1YEMcdeR2ry+W7vc9Wd4xV43PC7iQxqM84BOT2r3Kf4K+JXX93alm3EYx14rSKTlYic5+zv/SPnt5TjAB4YDJr3N/gj4mwX+ysHwM+/r+VCi7mvsVK97Mj+B0Jk8TQZIOwHJ9zXqXwl+Hur+H9fM1/AVjTaAe7HHP8A9auWvGXMktgpVY08PONj7JtTst4RjqoAx64qxbptjTIIOAOP617FKfLBM+Sp0Yyndy1Gcj5OOGGSO9EqHoCQW6H0/wD1V0zrN6tGGF53FuT07dypLgkjJ+UgH/P/ANelLKGUP/e/OtVJSVzmUWlztW30KsgC56DOce9SModcOSMEkYrGFFppSN8K3UTqJGfNGtxE0ZU7WyMN+tWFUEnDZwwBz2xWvs03e5EKfMlBvROx+e/7QnwenS8l17SYS0MzF3VR901993ulWWqW7W95EHR1KkEcHI616FbEqUFF6l4GpOEnFPTY/CW/sZ7UuDHzGemPzr9Hfih+zfa3jz3/AId+VsFih7k+grGOHglvoepKtOrFRjK3Q/MKTeOC5AOeK9W8YfCnxLpMz+fp8gjicguoJBPpRTouatfRl4mEqdJQgtup4Ndu3DOQV5AHrW7daHeKzRzQOGXOdw6fWu5UUkoz2OSVSSXs09VqYNraiQrISOWHHYAeldFY6e0cwL8YwAD6VzuTiklseh7Sm24yWpoWdkEVZQCxxjH1rcjUHCcAMuSB0NebiJzqQ5nodOH5eXnatY5112yDBwxYcf3fSt8WLSnfsG3cACBTjdRtLVnJThCpWUne47T1YHezEhQFrcs9IuJCI4oiV3AjA61x1YNtO+h6E24uTj06EaqWX7wJ3DGK9C8P/D/W9YkhEFo7AuMEA05whTldsdCUnSU7anF2UE1yzQopMjHCn1zX3V8NfgGkUkN7qkY+QhgCOtcv1hP3kjonRgrxlKzZxHwW+E1zfXMGq6hEdsZDKGHHHevv3RdCs9Gtoo7eJVWPGAo60RozlK0nZHDi81jSiqdJXb6jtMsYtPt7eFcAINuPQ46VupCpAOOAD17g16NLDwjFNbniTzFTT517xWjQFsnOTggVpxwrwoI+U5wO1a2vG72MVhozlzrexSMO4BDyhc5U/wAVayQgkydtwxSjNqKaNFSp1KjjUW1j82/2iPhrNZ6rPq9rAfs053Mw7E1+hXiLwhZeJ9PNjfRKYnyMkZK57iumVeMrc5WCrToT5XG8T8RV01oxtIz8wJx2r7Y+IH7P+o6XdT3OmW5ktgRtVR93IrzJSUGm2fRUqMKkVpZI+LJNLE69wQAc+tesX/hC806Qxy2zrIrEEMOtYuSaTRx1aDcuWT637njiaWIjuKYG7GCfyNd82mTNlSpy0hAz+lOdSTaSeh6MEoLlprocYYBHgLjgE5NdeNHlfJZScEKSB0xWb5Yz0dyaU7RSb8jlYifNTqBnJJ7V3Wl+D9Z1C4jSGydlY7QQOtXieSyaNaVOUWoPVMraZYTXhWKIFsuMBfWvsT4T/BS4imtr3VoyAMHyyOQa4ZSstEaQowU7zlZdjgvD/wAK71vC93rN7ERsTKgjvjjNffPiXw5BH4MubCxiHmMNhVRzx0x+ddWGpyqSvJ2POxeYum1ToRvqflneaZ5LlGUFozgZH8q97uvhprc9yzCyc5JIIHUntUVYwS91nZToVG0pbnzd/Z4MqqVOCRgHvX0G/wAKdajf/jwYFSCCFPPFZ8y6I1WHdlB7HitvYopRCoIc4HtXt8fw11xcOLFwS2SGHSo3VmaUKEp3d0uh5/p2lxxGLdyu5Sa9ch+H2vJ5RNk5bPBA6fWplFNWY3LkaXU+ufgjaeX4WtFRcBeQMfSui+EtjNpvhuytrpCs0KZYH8OP8iubAQuzmze7ajDU9ClBKkDIJU8Htx2rRl2MCw5wM49K9l2lJLZHhV6TUFJvU/Or47nb4luApbAK4+p9a7L4x+EdV1bxDcSWlq7I0hw2OAQP8iu7MJr2ai9UduTybp8z6v7j4uvxIpL+YQRycd/SvRbz4e+JGIRLBzluuOK8VxaWp6VGjKMm2zxhmmLgcjuQe9etR/C7xOzbmsX25OXx0HaqUU1e5tOLVm0eS3TrCignJYHcDXpd/wDCvxNji0cEsQAR1+lXGmpLRnLytTc3t+Z4coL3CgthTKASe2TXqcfwx8TLOGawkVlcEEDkEdDVz5W9CIwbqRlJaL8D9A/hchPhTS8Ngx2qHJ/i45rQ+H9nNY+HtMimUq626qR9BRgIJLla1PEzKco1HUesdjvQCi7wwb5Tx602Q4AJyCpwoHbNexpOTb6HmU8Qre6roraqR/Zt2W7QMT7ccVDqTq9lcISfmRiD2z2z7V00XeakebXXtL02j8kfiRMo8Rajg4b7ZICfQ5rU8feGdUuPEmouLSQmS4YglTzzU5vFzndPQ+pybC2owUlqjzCK8A8sMSWBIJ9fStBfDWqI6brZgFIGSDxj1rxHh21qz2KkHNuLV1+TLkV6iOmcneD+FVG0q9QhjbPtDADI9KzjSbi0FNKDtfZGo8iOY3TBjwCCetQRWF2QqGCUooLHA6e1OlSi4tNkzVWVm1oes/CuUweLdIIIAMwYrUXw2tpW8WaPmNgqygsccD61w1otRTZtNOVOUJdj9PbK6xawnORsB4rJtwI7BA+d5UjPcDHSvYw1FSjyvqfEOvJQtLp95sTSRThkZQUkBBB+veqMJfjPDZJGe4rZ0JRWr1RvzKtC8Vt+J8LfHT4fy6bqMmpWkTNaTNvBUdMnkH2r7P8AEuhWviOwktLtA0bKQf8AEdK2bU1ZrU7cLmicVGorpH5FSRBCwJIJcEj0r6K+IHwY1HR5riextnaBnJBA6DHeuGdCSkuVnvUq1OouSD0PlK4bE+eMAlcg8cVs6poF5aOUmRgyscgqazcW2k0XUpxgrva33HOQxkuN7EhXI57VpwW7Rs6HPBBOe1KtFp36E0moxT38yWAOFyANuRwO496tQxkbQQSC5JxXM4JK6Z1xm3o1oSIVIU5I4JAPb6VYSNjhdw+Z8Y9KbjrZrQ5G4p7kkDP8rD5sEAVbgjx8oAwOD7UTvC8WLmhUlzX0XTsbVjKW2g/eD5+lNgQJsYL1AUDuaicVy3NFQbd+h1a7XjYAbjwTjvVe0WZiqKGJDgfWoimlYcIpu7WrGeQu7b/dwQfxr0Xwr4F1nxBcxxR2j+VIwBcjj6VUZNamypXScdGclonhi917Ura2tYSwkmAbjpX6DfDr4Yaf4bgSSaJTdHDMx7A9qmN5K6WhhVxFOjUabvJlr4feB4fCmiW0KoBOUAc+vr61606qoCBsKpxkemK68NSVOSbWrPAzPGVKkvIziCVfcxOCCSe9RTFVkUhuMHPuK9bWVuVWR5SpR52lLU888c+FoPEmj3VhMFJkQ7Sw6Gu2uXQgnjO4kinTrWd10Omni3Tkly6H46fEnwHqXhvUp4XiYJFIyqPWv0p+IHw80vxlZyLNCouW3YkI5B7mumo+dptHpYLGqVnN2fQ/HeG5kSURvkMGwMV7v8QPgvrmg3Es0EDPAr4V1zx9a4K+E95NL/gnoSowi+d6t/hc8whuN0QwxLLnAHeqMdhf2xMU8LKyMB/vY7muGeF5ZcrZGJm1KLitUWlmYMc+w47e1VmV0clgRjHBrN0k4JilUvNtR1WpbeX5QRkAsAD6ZrM3ny2XcQ3IOfpSjKUWkzWlJVKbk9GyO6mfyT8+B3PrVO5J8td+Syqcgd63moxlz9URTUklBrf9DHklYnjouevUfSqsgYpvUENJwQPStHac+a2xqpShDfcpSSjI6/K2SPQ0x4WchFJILYAA71vGC+JnHinKSSS1Mu4uGUohGQWJDHr1rdtPDmr6nOkdvZu7ZAGRVx0hzSRtUoP2aUFqc9bTtNMqB89Cff2r62+F/wCzrqOqXdtfa5blLYMDsb+LpWKrwheUURClU5bTlp2Nn9nX4ZT6jqMXiO+gKwRjMauOfUkV97+GvD1p4dsrextIQsce1QABxiuWVKdWSlLRHHic0pUU401qzdtbMQwhAw6A8d6tgiUkjgZ4x2r1KNHlS5TxaeLVSEqiPPPiF4NXxV4eurYRhpkDMpxyTjpXp8SkrxkFdrZHX2NekpqNnJaGNPHujKyWjPxg8eeFLvRL+eOSFg8LMNuO9fol8X/hDaeJYZ7+wULfAMSAPvc1rKrDZbM9mk416icXZf5H5QoJpjtBJ2Nke1eseIPAOq6DfSRy27qI2bAI4PNc8oxXvUzqoyqynyVFZXOS0zRZZEjlkOCGPHcV3Wm4t4THKhDY5PY187KU4z5kdDhSSlC1n3OAv9O8t846OCSO5rtLu1E+3anC549D3rZOSk+YuCjGneSu7dex56y30cZa2neMknG0ng+vauyhsVU7XXOD37etdlTEezk4Lc4vqcZwSlZLc8uvL/xPPtjm1KfYpwMH9K7+5toxK6iMhSxP0q8NjKjerJr4WjKLlGKdzz2Gxnlz58rPIckE13SwKgI+UYU5B6GuSvmM5NX2O3L6EYNK2qR5/Po0U6EsgYryQe4ruJLQAM64OxcBT3qoYh25o7jnVUqlpR26njt3pcFu5AAyOSBXSajajzXJB5OMjtXdCvf3rHHOs6kXDqtvmc/ZWURDYAGTnB78V6T4G8D6j4n1CC0sEZ45ZgC2Ogzz61yTl7OK52c+EoVJSlCFraanp3wG+H7654jt76S1LWtnKrjI6kV+hHwr+G1p4Q0K3t1iXz9isx7k1ySqOtJRtZBi8XGjeMHq+p1VjpMMdnGm3AiQhRjpXXfZGG0fxHPGO2K9qFOKikj59Rnflvuec3ei7Qz8jfzge1drdRLtCtkbgQMV6kMRJK0jGOEcZ2i9PyPG5YCitESchjhvWt++tiHGST97Ga6nWTldbnHKhKK5U92cz5P3GcnIKj61pAcqWyR1IPairFv3uo6KUGoS189tCmkZVWHBxkg+laQiGC6g7UycelZSk4u73O2nOMWpQjodaiYCjJO1hyffrU6ruXfs5AIBGa+IoX503sezUi6NJOD338iUL0253AkD6d6njQADOTnke1bzmlJJdTlm1OmnLTXcjCEttyQM8H0q9s8xMDgk9fSt1dNprUy5ZU4RV9O5HERER8xJ3cH0qRRyM552ipUZSibxr8sk4I0YpldeuCG2knvVEFlZTwfnU8d629koyTXVHLTm60nFvZnRwkdPfIHrisyGZ0KnkjIJB71hUptpK1jevDlqd3p6G5cQieFoycMwwPfPSmLKzEAnA/zxTjQipJpnFVV7wmrpv7j5R8f/AAV1PxFqUs8ZLRyucelfXMYV1BIyQSSD3xXTi5yqwST2PYyvHRwlL2aj1PgBf2bL5uThDHyeOtfoE0Y4JUFSMYNeZHBSbumetLPox+Jbn5/J+zFdudzTHbu4x1PtX34EyT3JAwCO/rR9UlB6szp8RyUGlDT+vI+CU/Zgkzkytkk9e3vX3rtGQVAIycg1csG0k07mMM5jO9lZ7nwza/swxqwZpAXBBxjg19yBAGyxGMYyf0p1sHaKfMZUeIqkq6hyanmHw98IN4TsEsVXEcWFUjtzXqceAAMDPt0rKngFCScjfFYyWJi4z0RIrZA25GMDI704B0KjjAw2PX616UabSu3c+ZrznFciXlceCd4PBJOMntT8H7yjOTyDWcJuSsjulSTj7rXS/mTQsR3z0wD/AA0IAowCcnjjvW03K3LLVCoUote67F8SblXDFWAIwfr1FV16AE4K5Oaxgo8zdiIXUm6z10t6HPa94etPENp9lvlDqXDYYdx0roon2FTnBcAHFbqrLkag7DdaXPz21WxwGm/CHw1EBIbUEgnqOn/6q9VtrrCtyQFGRjtXk1sHaopTe579PNKrp2ctTnbH4a+HIhhbNSAxyCBgZ7iu+tpGON3RsD61KwytzN6GLzWove6lGx8B6CgAWyjG0gAADGB6V21k2UTI5Vske1YKm27ImjmE4q99GVLXwfokarss0AK5AIHH0rqY5hs28bicjP8AKiOHblZG1HM6i5uV6qxWtNOt7RRHEoVVJAxWhvG3jJJBBP8AdrZUVFpRexnXxMpXl1ZRmjGxemG3Ae9QXEgXBBO0sFJrps1F2OKm7azVmzBudPtmJbaMFskAdTVq4ZQEwDn5jk+45FRypas5Iupypxe+xhPp9uVB8sZznB7VZaTcQMkEYBHpWzUX8S0OuFaV7N6mebWJcbUwWPHtUsjkFQchRnPvxShSi1ytHQqsXC8Xr1M+WxgbaxjB2kjpVp3KRqOrljn2FOFoydkcak4x5+bVmatlAh3eWOGJB9AKnY91Jwx6enrVVErpJF05c8JQXXURRgleM5wQKavOBtORyc96mpFx0S0Rz4OlTm7vR9Rkg2pgnJUjJpzgB2fGGZgDnvjpV0oJtIdSmvacsDPIDsuMH58AHtT9uAAQM7scdveumtLlaS2LVdOKjJXavp2EZdyEA43dKnWPcCVYnqACKxSk43XQdKk4pOOzMhYf35+cncQSPWtgoI9sikkJ39aUaspJNmrpSpxaXUpKmzJyeBg++ac8g2kjI7gHvW0aiSt3OGdGCnaOskivMyIjocYbIOc81RuCrKAcs2Sef4a6FzN26jxUZOF4rRI5/UfD2lap5iXFsrxNwoZRkfWtqzXeOck7gSDUyTdmzChOcYqUG7rc8L134DeDtWkMr6ciyM2SVA5Ne8yoySBVJ2YBBPeuxU4ON1uGFx1aNR82zVz5Juv2YfDcyv5LFc5Ukj1r7Ajt1kbOSTkYPYVxz5ZWSeqPRoZjiJy5ZLQ+K4P2XdJRBsfG05IP8Xp/nNfbgs8bsZBfAP8AtAetctWknJq9j0oY+UIPTX/M+PLD9mbQ48F3YHcAAR94E8/5xX2THb7Qp5K7gDWPskk22EM7lCOiTPnrR/gP4b085aAM4IAzivoohUYYXO2QA+1RPAxvypm0cyqypqbsmzitH8E6JpKKIrVAygAEAc12xVSMgkbVAJ9fSrjhoN8z3PPr4ipNqLldIijhWPCRgBFAChR2q1jOAMjKnHvxWqSitFcjnqyjeS0voMT5t4GRzgY7VMkYK7hgBhgn0puaqNdzhlSTTkpaCqNmAcHLAADtVyOPkDgnI4PehzslKSKw6jKLjKW4yPBYA+pHPerKxYwOcsDwO9RGSS5Ny5e5Lmi9GTIpG0qSSmSAfXHNTAY2t1x8o/Go5G5csQlU5IJvqWozuK9cNjPt70yLcjpznDE81agouzehrFvn5lroTT21tcjy5lDcDI+tKx2oQcbQDgjtjpWVlOVkFOu1B8uiOA1f4ceG9VDtcWKM7A5yB+ddwGOSTkMcAn19KMRSi7RXQ1wePnH3Ypps8Bu/gJ4Ynl3RxgAHKgdiete+u654zuB4A71MMMpL3j0I5jU9oop6Hz7afAfwzGys0PGADnv619DqCRwcYI49frWSo01qzTEYyvPWnpY8x0j4b6FpQTyLVfMjbI4HFepqq4JIABOcetaulTTtuckcZXdLmqSMuGxgto41gTCYHI7GtNwHTKk5AOD6ZoUOSVmx1X7inB77j4YgwCuCVOS2e9SRNggnvgEmnVSslfUxw9VKpGZYjsrONcCBDznkDIp6yE5fPCYOP503SVrpamssU03JO/6DvsdnIuDAhJySSBwPShXPyjqdxI/oKyWHjLR6GUMxqTjaG9y3HpWmuuZIELbgCMdfYUqTbTuPXJNRUik1y7Dso1LTeqs2Sf2VYgHZEoBwOR0+nv6U8zsnHqARnv8A5+lHsW2rDpYj2rko7DFWGDEcMe0ZJOO3qajB5POWOc47e1ONHkafUyjWlUfKti75mD949s57ntVHf8rckkNgj0rT2CT1ehCxbppwkr69ytfW9tIGMsatucDB+tRSz7m2nIyevr61ToycU2tjshiKcXzp7/gc1c6dYdfITfuyARwPQVanLMgYDuTj8alRT922pz+9K8oytYom1swMiFQRwuB+lSA7mBbBIOQTVxoqNrD+tScHGTKElpa4VDbqV4wD2q9w5bkZBAAPrW9ZxStJanHVrOUVCMmktW+5lmwsyFP2dAqt0A4rRVQCoycbgSPWs54eMZJWudUcW6itGVkvxK6QRxRkIAFSRQMd89fyqXO7hf4nPSo5VBJoxnGUppSdv8yoysmRkEHofWpNrLnJOecCvQdVuNlsjCSgp3k9XvYpsiuhyOHzuH8qmUZ6nuM57Vk4STsth0mlJp7nIXXhPQ7mTfPZRlmJJYjpXUuCxcscqMDBqfYKyUmelDFuEXGne/c8/uPh94ZmI3adGckA5Awa73Ix04ABHvUKMLqKQ6GOqzT5nZI8wk+F3heQnNmhHJxjj8K9Q4QEEjG84P8APFZyoRuk9zGGYVVJyTumeWj4TeFyyhrRQFfJwoznvXqKhjyWI7ZHatXhrr3VqXicyqQanN28jzmx+GPh7TruK9tIAJoZOGAH4cV6dGhA4GMY/Dng1zywyi0p7lTx0q0WpP5FBYSFEYc5wM571oKiRvyQWIGPfNdCgnZJ6Hn8kI1LSellr2KaKvOM9Mc/rVoqA/c7skAd8U6bvpYtKMPdi7ootwAgyCByTVkxgEA43ZraDTk3EpawWljKlsYrlCk6BlkyDu71rLtJZc4O0dO3WoqppXRwRrKK9pB2af3njniL4TeH9adi1uqSMQVKAcetexSoCyYBBySSO4FaRpR5V2OulmdSMnUbvfofFmsfs4b5pGsHDDeTg98/59a+2EQbj8pI5P0rGdBSV0enSzqopJzjofndd/AHXrYYjhYqwAwOw9q/RhY4mKsygrk5B7Y9K5p0WldM7VmsZ2k1+J+aH/ClPEiOMWTMoYHI7H0r9LzbQsVAQHCk8d/X86cqLUbN6s5qGaKUlUSurn5u2vwU8RucNGy5IAJ9PUe9fpStnbZHyKCehHbjpXLKnJK6Z0yzRwnacbX/ABPhjRPgBqsjRtcMyYYEgjNffEMfAHHyMAM0PBScU76MzWbtSclE+dPDPwJ02wMct6m85BIPfpX0tGoBUAZDMQT6VUcHpds5KubSlJq1rmHovhrTdHRY7eJcR4zjt6VvgDfjact1PrjpXVHCqKTt6kSxc6l4OX3j3ZYWwFxkAbh3qOVgw5528HNNQ5rNs4nTjC8krszbm7bdsTAIBJPtTJUUEFgMM3Ge1a0Yxa5o9DllNT+NtMx7mWTeN2exH41Jdru3MBjaQAPX3q8PWU1d7mkMPKinKGtzPkuMkEMRnIGKzmSTqSQOQAar6vFddRKT5mprfYfqF3/o7EA7sALjvVaVWKfewQoJNaUpNz5WiHB1ZJ32Ofewt9SjkS7t1YyZBDDpWjGUGFP3d2cj61NRO6XQ0eIUGmpWZ5Jqvwe8KarO7tbiOWUk4VRgntn/APVXrsrfNGckHPUd/al9U5m0nod1POK0ZRS1ufKesfs42szb7KYYdjkHsfavq8L1B9c4NEsFFNa6nVHNajqOc/hR8I337N2o7QIZMSbvlOOtfdxQZBfLZUk+o/yazeFalpK5zf25CcUpR69z8/T+zdrcu3eVwGABAPX36V+g8cSiPAz82AR6n1rOGGTdrndHN1N3jHbrc+BYf2XrpmQXFyoPYj+HP58196suScAAgj8veoeElFXUtRUs5Sd5RVj480f9mLRbeSN7uQsTjJIP619gHay/MMYOST2q6eFTXNJlV85m2lFHkOgfCfwtogQ2unx7kZTuYc8V67GqZ6A4IJ+tXDDwilZXPGli8RKTlGV0trGbbWNvbBPJUBOc47elaoCMAcHuOO1dMaMY6v5HHQxs1J1Ob5FYxsQOg5x9anORz/CzYJFbVKbtypGFKrJT55O1vxKm3YCeQMjkdKnJ2n58hNpOKJNtqLQ4Vpq8ltf8ySLlRyT0wfWhWBXKkAEj680pwcm00a1HFS9rF6eY1ykgcOMjuvrTcFmBGM5Jx647U5Qbersi5RXLFp3ZxPib4e6H4hgb7TaL5hYnIHXNehKN2M8jdzntWPuxlfc6JY2u43irpnx1r/7PN0xabSnBiUABT049K+3bYDZGrjKqxIBrn9kk3KG1zfB5lVdLlqK76M/MXVvhD4k0+V8WMmyM4yF61+nkmn2twMSwqQ2Mk9Pas6kVe7OyjmtN0lJxtfQ/IrUPAGtQsA1rIHySTg4FfrFN4V0Sdf3lnG3zEkkdfasYqd22dFHMqdROSi10PyHHgbUpSFa1YhgAQwOCK/WZfAvh0uALGMAZPIGRSlCane3oarMaSqRpqJ+Tdx4G1MMMWrkNwpCnmv1pHgXw+20jT0JOQcgYWr96Ss1YVXHU41NI6H5Hp8OdeunRYrJyGySCD1PT/Oa/WKTwvptquVtUBToABx6VVPDylKzKr5lCzSXmfmroX7N2qaw8cl/lITyyjqQTX6PR2kcUmUTaUYZA+tdSwckk0zy6+Zybb5NH1PH/AAB8KdF8IQwmzt0W4ixhgBkete0xQ7QoTu/Jp/Uo83NJ6nNh8Y40+a99diNUjiQKBt+UngdOKbeBtiKjZfkN7CuhQSsorQ87EVIyi5w0dyhNqEQbCgY3HkfzrAmjkC5DEEscE/yrenhla3U5atdqXOlpsTTTq5YrzwDWcuSSC+VwKJOK0TOmm4Qi01qzBvFO75uTuJNX7mMks+cMc81rQh7vM2Y0a6oNQh1ZzogVSoBzk4Jq7INu9mOBtJFbT529Hqc1RKo+R73KoiC5bJ+UkketWouSpZc+YcAelRKUmldHqwoJRu3o9kdHE277vTOcGoUfaE4xuYDA9a+WhTcpqUehrTqzqK0loy4vJ+9xnnNRjjof4wT747V1woylZW0M1KMptzXw7FhT/dJJLrmkUuMqMDdxkdqzrSlJ3k9DNRcLRbv1LIbbnPJwMDuaci7eucKDW8eVWaNKVSUYOU1rqKqKxTdkhWH481YVONwJPBIx2rSabvfc4UlGSlbQdEcLuIORk4FWVU4DHncMgVnduV5Hq1YKNON/kPi35xnHRgT3z60kStnOTjkc05yXI7/I5oSk04x3L8b7SFLH5mwPrUUZ28cgbwQf8K5uV8ybLdOdlFW/U02dXUncSC6qT6Z9Kzy7lflBB8wDj+ddvskpJtmFf3o86jqXGyCCSOOAajTkbGOQOAT3rNyik76mrgpRjFvQATlsHAPHFPHAyoBAzj3rPWUHdaIxhTTqcyY1SSTuJJHQHtUihflfjcMn6ClZJJW1Ot2UrSd9BYV3KB0wSQO9CLjgtlskjPenHnk7yepKqxgnTfwu3yLGeAPTAH1qP+8OmAMn+dXBK12YVZxjSUorRP7y1Fll4OMsRhu9JGMHljjIxjvWVaNlaLHRwk6ytezWpZUbZFIwRuGfQ80o+XI3HkAgmqWtovZmdGkotzabYwlSMgZ2s2akHICjPTkjvT5EkrbHRNx5OV6t9CEk8cDOTg1YWI78bs/NjPpmtYSitkTDCSqVLuWmmg63Yru4/iGKlghIUAPnHX3qK0FJqS6M6fZyneNldGzZyMAm4sDuyfb1FOtUY4BJHQH3rCtdaW0MaVCTknLW51Nq5ymxj1wSarQkpEU6g5yfWuKN42itmb08OpXnfRNnRpIQmzJB4yTWXvIGdxJcDIFbRSbXK9Eb1qaatfU1jPhCCx5J6dqxWulPJJPofSsoq/xFQbad3r2LU0u8YLHOcisj7UMnBJ2MevfFaODSUonFPGQk/ZvUfLKPukglTyD1FZrSqWLHIJP5Vpytxv1CcYyeu3QndgQOTzySO1Z5cgKSxAYk59a0cWm0znjKV4pq5Kzg5+YkAnANUi4Ibk5yMj0pTguaMFsa+3UY2nHqK0hfacn7oK575qkclcb/AL2B9Patqagp2Ma+Jkqb5YaaEwlBGBnggDP15pi5OBk5UE5Pf2p1K0YqzVzoppxhq7eZOsm8OcHGcH+tJEGRSuckZIJ/SlJKUrdDH2fLCM763LOQc5wW75/pSKoIByduD+NctXoo9Tto4i0mpdSLyi3TjcSW9sdqkClW6nduwCO2a1VNWS6nPySc3J9NhiKAu0k7eeR2x2qdl37dvYAN74rp9q0n2MZz5ZRlJ6vQoTzwhduSOMjPaob7T5XH7vJbBwPrTpxjN8yZ0VJyi7OPu/1qZTyM+Dkg9wau22kzjCsxBDAnNaylTg+RHPUwrbjK9mzEhjeR1Xk72IB9fQV6PpmhIpiSQEHdzjtzWdTE63S6no4TCznJe0kcxY6dNGm5wRk8k969PutPMdqhCH5eM+oPUVz+2jOSv8zadppqC2POZrEODkEMGwR61tPDncBnBzihScZLlZxVqMZRbexkw2zxquBnIAXPsK1cDKp0O0Ag+narXPs0VGEfaRkneS6dyJINsbEjqpNXk+YFeQQBz6VhXrJNJlzs/dmuv3ma8AUEhsndjgdPU1qJBn5cnkAZNNxvNObOqNRKmko2V9DnmUY28HGc+9ajW3GByRx9BXRFRlK8luc9SLnBStotzJCA4HO3aAQe/vWmqDO0k/KefasqiUXdLQnDynZpaJbFEx4+UEh+2KurFzlM4OSRU09Ypxdia9ePN726GwoNgwfvsDgfyq7DHtVAcYJJyO2an2qbujV4iSmm3ZyFVDxyT2/wq4seNo4IY5FN3uovYxai1zyVm9BgAwnPVQBjtTwmwHepJUg4Hek4p6NiqULOKWthFjG1QSSSxyT6irZUAKOQcggjtWdO7d5dDupw5Zp230K20gkchlAJBqaQ5IBGMcn+lUr2un8iXiEqipQjZa+hGAxTI5IY4B70owqkc8Ngn1rNJuVkc0YKE+WbuRhc5BYnacAntUygHkcbsZ9sVvGzldrRHRGipO7duxAEGQm05LYB9Kulscq+NxAHtUqTbcktTChhls5FdIyDkjJ5GD7d6vJt3fOSSwIGO3FYpNx5XubRSnJpq1tEVkVnBzw+4E/Srm3zBhcr0Jz3pxeqjBGcaMqaam7plJQSSp4Ug8e4qy4IycDBY4I7e1dFWcmr9TKg+RNrVdhgUDOCThuaehUFRkkbgSR3HpWdTmduU7IYWSl7RWsNQ5Ug8gtnn0/+vTwCUO7BJyQPxocbNOxnOL+BO6/rQlSUjYQSDuGR64ORUG1yQTjGQSfxrSpT5rtMmreCUbehY3BQOTzkAZ9e9Rb25wDwdoHpWKipRsJJTkm3r2LSy5VQc8EDntVLdznJwFI/GpneLTRpKrTlC0lZlwycNyR0yR2qoZG5UkYBzn1reDta4QhNQk4k7y5C/MRlhkDuT61SLtt44PYUVaK51ZmFBRnHmkthXm3YXBA3dB3qr8wXBOSzYx6VMZNztDc2q4VSd56oY7YywORkYpmD0YjAPPvWqpJq7OdxnCXL+I1tpU9Rgg5prtkHA46j2rOcZRXLYcMXKCcpxK5YBgeuWGaqupZg/wA2ASK1nJtcrM6GJfs3KK0LZUHPYFsj/wCvVaR8qrZYA4FKlGSjr0N6dVOKc9mShgocnJIJP0z3qqzEZXknZ1HtWVTVRurmkYxUuZDs7hweSSQT247VVJYfdY5J6DtWispcqOaGHV5K92tSRmB27SBsPOP0qvvbaVJIy46960dJx91apm0atOtBSekl1I8sehBUrx7A0ff2HJPzdu+K0nS5mmzKMlTbSd0C7wVJ6gYIPsaseXyCWJOQfpWEpc8eW+prGMV77+4jXGTkk4BIHp60oYggZO8nvXTSg20kcmMppScdtrj9nykk9y2akTAyN2Bx8vpUOVrNmSi1JQTJlkC5XnDEnHrVcD5sbs8Z4/nXPVpNrV6m86nLJpPQYXLN8ozyOTT2xtAJ5JPNdNO6ioroTScZrnigA3tGrZO0k5p0KkHgkc5zSqTtFROvDpu9RLT9RjgfuwxPDk/h6U6YhQoO7dubn1B7CinTUVc5MbXtFSe3YrxAjHbLNxzSQuynknJJ5H8JHSprWbSfUWBw7cLzZKsm4quCSp6n0qVImVxwCRgjNKUofEi5xdKahJFiMAbeuH5I9KUqRjuOmB2rH20lGzNPZQm25dboexUhQvBA6fjVdT8p4ON3GKr3pPmRyT1SoJfMsqfvNg54AFLGxYELncRgH0qqqTab6FUKPu+7p/wC0ucgH++B9KahJGcnAYnHrQ3a6XU0nVUnyMtjeHHOMY59KbGQQSOTuyPxrOmrtKSNU6jaSdi2GX5iOTgE1HzgBSVOwggdRSpUYpcqfmJ4hKS53cd5gHl8/e6EdxUUpAGSCN2Mgdvaj3ZXi9y4tOcai22F80gjOByfxqszFi2ByjA5P6/lW8oXikdGJaV4xW3UJmLKwZTtXOD6juT9KjchsZYk7gMVK5oe7HY4a6fKnvczpArcMQDg5B6nFPkXceW4UHgdz2FNvmai2JUY0opPYxpUw64GPl6nt7Ve8pyTkgDcPwreo4K3dm6mnKzW1vmY0sYZQRgcZI9RWg0XGGPTIzV2ak4paC5IxV09XqznjGQflHHRSK05AFQgZBCgA+maLWai1sRKcIxcpbMytgzwTkgcHsKsLFubIyC3H1q685J2SMaFWLfOndoh2AuVXhgAAPU051CA7DyADx2qqCaVlqZSp399y36Dxk/K2AQCxA7UsQYFic8YIxWde8EodR1qfM3NIZETtdQSMgEEd/pUhUqBt4yQTn+VTKKspNGdCyjaL0IipGSSTyBmkB3Da+d3XJ7kAYrT2d0mbzxCjJ04bsrgZ3ZwTkDB7VOyjgnA3AZ9j71go3d2K8qMFJ63II1ChhjJJGT6elSJgqAc5J6d62vypE0MR7Kolbe/4j1XIzvOM4x7UYUKpCnAPWootN8reo6ycoObSsLtGMAZ2oSCe9LnJAbIAIxjoBVQqyupMiFK8Xy77IhYggqCQcAjHao3BUnJIB4IHatbub5ovUmE3yKMdPUgJAYKMgsvNVwxPqRkgD0raVFuNnvcpOEZpVHe6/Et27LuUsQVXkAd6rYA3tnGSvA781jeMdJFSpNVFKDNQyhQccDByR296yGlfbwCctjn2qZ8z0gtTnlCUWpyfu3OkivBHHjkkYOf6Vz0b5DLzxgVvZPVsij7Rpxe99DebUgdvJwfT2rKhQMjbwCuCDn071zPDqLVjWUnNpSZ0kN8siKWbgtj3NUYIxEuCM5K4xWE6LhNNnRHmqTXLol0NrzMMNpxkAD2qkrkhQezcg9/aqmuZcsi8LUk5czVktDYjlCq3yjLMoBPcDtWYkvzNkgk4H4gUuVRs7GkcVKFNwir6sW8QDJOSX4J9BQ8qsCy9UOTn3randR5V1MadRxp+8upz7wKiu7kkFcn296tXK/IRzySSB3rShFKOo6spOLitzGTHC98jAqQAxbVIIyBg/0qqkJXs9TzFBq8uW2g2RI5IwxJyrgY9u9IzCEY5IJH86KdKy12OiFJSjFS0t+Pmc/eW5SQf3QckVq3QVsMoz0zjvV0n7jaHiXyLlbTS6nISW4YdCAdwyO3pWtLCyOTglWyQT2xUrWSe5pCckr8tm+pgS2wYiIsQ3HIrSZOVB4PIIHf0rXaV4I4uWbSdV63OaubbIxuOQxIz3rZki4LMAAMkn0xVNuylcucIzbjJ6HPJEdqAgja3GO/vWk6ZJToAf501J2bR00aym+WW6EhkJyO3qarptCYDEAZyK+VpxSleLOuUZQd5Py+ZoR8PtJyASR7GoYicKQchmJIr17vkstGjzqklGomn6I0UxwxJGSMZ7U9DuUHAxjOfTiuWm1dpHU7Plm9dSzEpwoJ9Rz3qWNQFXjB2YB9eK0pKLtfceLanZSepZjXcvsCOPUdqfEeFIJ+cg49KblJTTRp7JuFpO6RJtKkc4GSBmhl3ZOcEYJB9KyqaSSbM6lR8iaV12HbgpVQMjdjI70AFOWGeOnpW6pJS0ephOabUWtWSg/dJIDdMdj7005bAyccnNXCEm7vZmNTDQVpRbut/MkUhSDnkuc+1QRgjCsD8zCiME7oKOISkrO3cvRHc3zHOGB4pkZA5JBxwTUOm4WSZ6Di5OzaaZYXgk4ztYDn6dqQA4IU5JbqO2aqtTvGxhzqDslexLGGBbnOefpTkIG8E5YEjPrjvWdGd03JBSqpyetrjl5I3YwG5x1H0pWyTGoOASM+1XGo5SaSNMRKFOUVbXuOAGSDzvbDA04bWPTHXOO9RThdqUjPFYmLskvhZKvB+R+EY5HoMcUxdwweNmePfjmlVppQ5Q+tpqM2i4HDKGPAL8D1qLeoIDDAViSPSsqEG3eJ6NVxnC3clb5cKXxvBUH0+lIzCTknBGQT6VtQi2uW5xVqailzK62T8yVTsK7skhhkjvTFQM2c8K2QfWlUSbs3YSk0o2V7MvxMR3yGIHHao4lY55ICMSPxoULu9zSpFSilKPWxp28rJubHygEH8KjRsDG7sOtc9OlGWrLfNFqCWxvwzKVbJzkAnHfisUSlQnXDYyR2p1MO2007WIp16kY+91NsXJIXDY+YgE1jeeMqc/MGJHp+NN0U5JtDjjE4JSWr0NRptuMkAAE4HeqgkB24Gd2TmnQT5XKWiCvdyj72pIZcNkZAGf1qvISOM4Py496lpVUolWSvNq/5jXlzgjPzHGD3qqXKlSThdpNdVROnblVzkqt1ZezlutibeCApBGUPIqkZJOhbk8AD+dRShK7a3Fh2403GRJISyjaSM56d6jYhlUbsbcZI71l7W87Lc3veLd9BUZNvXOSQD61AZRGQTkAseB703F83Mkbzm4x5JPTT5l+I7jtJ4cgn2qrFKVIx65yPeiV3G6RkqcYNOL3/AANEAAlsHdgAE1XSQtkg/MAcZ75NZwjeSZrLlcWm9FbUvoRgBs9ACT3qqScvy2TgDHalBSSZWKjB6x3aLaDdIqDJVnAye9EP3Rx0wT7805wbVr6k4eUpRSaskWoo0f13EkZ9akhOCAcYBypocm9FuVhcL7WDlIsRw529huGCatQlWUMCSWxkduOc1MqqSTe5p7JyTjFXsReT5fzc5Ug5HbmppZVCs745IA96hXjJNPQmMuaLhUVti7p19GHVZPvBiC3bHbFY5mWMgng7unYVM48ystjsp1eWTjJHol2ySWcbKxyrZBHt3rHtr1DaAHPA5pUJpO0UbSptR9pN2RzNzCAS+SAMEfjV2dg4bBy3Y+n1rpbTkk+hxV6HPSTT1MgRHKNk5AwR681YY4BxwEzuB7Y6irp8/RnPUjy8tRLUEQbtxJB2gnHapURt45JG7gD0rBTUoNTfU2k37VdrDkAjTAJ+8T9KmEZJwOVJxz6e9ZWafM3obqScFBK7KLqWBIwSwwCKubd0nH8WAT2GK6ak7RUjmjT5oqEt4vUzWiAI2ggdf/11olAOrDIIAB7+9ZQnLlcTarOEleKsZKR4cNjJ38kfzrYSHGc42l1A/rST5ZOMjmkuSMZIoZCgA5G0ggirhh6qD3OCe9a0Yxk7siimpJX1G2+HUE8bHHSpUUqFK5GMZA7H1rKtNwlyR2HhadOSvLWWpITtVtoJ6YFRMWBUgkcHg1q5Xhd9CqdDlk4y2evpYkL7sYGSRkZ7+tVtzrgA/NuzgGuWVRRV31Oihipyi+yJWUHaD3ByKiEhJG7Jxk5PeumnZR3MZ4uUpcq+EcwDABgGDDBB6GoNzbiCPTAPaqqJqz3OOOJipNtWHqzHA3Y+YDPpzzUAY598kgDoaUtY2e52XU4prRFxVYsxBIDMCAe3tUSPuYEPjbyR60lFyi0bUnTlaFr2NGPAK7jwcdP1qIMoGSxAAOKUZtxSSsXyuLU3sWgNqM+7BPJFVlcsFySEQgZzWroKLvfU4pVk5t73JlkBU4X5mJOD2IGKgWRQCoBJ6HNKUVdS7nSnFRaT1RLGAdo6FcnIqFXIK8A9QT6+vrVOo7uUdzNyjCKhJ2X6lxkOMBhnB69qiLhiuCSrDGT1P1qHKSs7m9FKdS0VsMywRck79qlsdAR1qVPmUFicbgCPUVlV0d2tSFGTbcdLkJ3FSGySXHPpzVqNFwVcYLZwR/OrdOEppJBCrOlFtorosh+VlBLSZOe9Xo1IKk4yOT7itKs4pLuEaSnBwWz1M7ZuUjafTHpWt5Rd93GB0x3qPbpRUpbHJLDzT5FKxkmIttwxAAOR/KtJlBY8Abj19cUpOLjzQ18jpp0pQlzt6GA0TKQxwWI4J7e9ajRFmXgZBI/Oq5NOaW46lWdV8qVmupiSjIbkkbQATWo9uCmQcnBz9aL8rSY6mnxK/mY4GQeTlf1xV5oA64yMkEEjtTknNprYiMINXijJOHA56kkn19Kvm0wgYEEjoKOZKXKty6kZJK2t7aGU8fyjodu4AntirDoVYhiCOmPWtaELO72OOtyRl7JaMoEtgcEgAZHrinsCpAJOCwIFaVYuT5orQc5RSit35fmQMSpGCSW7gfzpxbnK9GOSRXJFpxVu5dT+Mk+i3K7fNg9FGAQO9ShABjnOODXWqkW9EaeylUik1qMRMLnB+Z8A/QVPk7RyTyQ3tWco+9oYQp8rSvZJ2GOo3K2cKBkgdqkLZATJ7sc98Uc8L2aOl1XNcj6dvzISMlDzgknBqwF+QseC2QB2WrhNwi4owdeLnFS2vuVgcMM5+ZSAO9T7ejHkhSBiqU7xT8xSUI1rvYAE2FuQWGMn2pD8xHOMAgg+tNxUmpodVwinTSECbgr9OcHPaow+0gknk8gdKxlFqXL03M6dCFrvQm7BVGMgZ9+KaGGTuJBYgEj+GtXKCXMtyo1fdUYrQJXYqOAckYHpQx5A6kcE1KneSdhxglFtrXcgSLyypPIbGfw6VMGztJJwGNXOlZmfsY1EpRbVtSRXViACSAwOTVRTgg5IVSRtH6VjKEErLc0pOVSpdMvbgsiAAgMTketMT76tu43EgfTnn61KSUbMqdNKag9Giwij75ONzAgDtikJwF29MgmsuSMPdY22kpp6/wBaEyBSpwQVIBGKiHyhFBJA6Y7VagmkyJzcW2upaUAlVyQRgkeuaRTnJLfNkYHr0q/ZuPuvcdCvNNya0Rch+Yg4yFIyKYrYViScknFLn5pPl2Kxa5uVSfvFxcbwNpIBHPrz1quZQyqyk9V4NTBuSbWglGyutUR3GF4yTnHAqvLIpHdlbcP/ANdaezjGPKzKpVlB3a1Y0ndHtJBBBznvVWR/nXJ4HHHapjTes29DoUpqmot7j84+UngDqT0+tV2ddoIUgkjHvTjJyScmYyl7N3toiVmHzKOCGwCe/HWq7Px1HQZx2pualJNehnDENpre9riOwVzknhgcgdarM5ZQfyNH1eMI8tzetjIttLsMA6gtjDZyf5VC779qDHQ5Nazi3BJbCpRjBXkrpoifawU47k59QOmarFjuXnJVQSPXmtItNOKMHF1nGaVkraDtoGFz8+/jH9aRsDawJzuJA/nQ6s3K1tSFGNKXNJaSEfgZ4A747fWmAg7RkkFiGz3rVL2cmnq0arEU3BRStfZk+ORgYCnNQkkMQxI4wSfSsYwsm+4nKUpcyWmiHvgjAPGQQahkc54OBxwK0lTjJXT1M/bTb5Z9PyKxG4naSNoDZHen7Nq5yCcniqcWmop2M1UkpKtutrFYxkjljnrmpGOz5CDgMAKxpxv5WNZNSd9UxcKcMc7hwD9anx8iZOcgkE9x/jSVSKTiVLC8vvJ3f5FdMhSGblSWIFSKg2kjIHXHrxxW6Tg1Jbo4bTlK8XcUcDdnOBnPrS/LnC8HgkjvTTu3danVWnKMvaLZqxCELkFSQUwdo7+lTDcZFw5O4lmz2JPH4YreNNKN47nLhqznPmm/d6FIQFQcn5hzj1rQZckNyeOg701OyXNozRRUpKF9DIkTG1R1IwcVoypswRz8vQd6542mkn0MasnBq8dTLiiZc5PG4YJ71fVWwXxk7cgHt6ihzi7M6HSS1kikygbMk4Vic1JJFjI5+bGc+laKTck3sY1cRFU+VPbT7y5a7mx0KquOe9EZMZGDjbgfWprxeyZrToRjJTbvoX1lBLAjo2B7VVVzkP03dBWU4Nr3djthBKHNJav8CYzKBgZGcDI7elVSdu0DBByTirULqz2RWHqc0FGK1LIlLPkOck9R2qkrMDtR8FRkk96OblVmzHV1HCS1/AuvOMhcAKeD71nO+cv/AD7e9Y0aUra6M0lUtTXL0evmWS3OT1Iz9KqicdAMEsAPat6smlruc8qUb86eoOA7DsSNw9qid1BbGSpJ61pzcySRnTpv2qc9EyCeRQByckkYqjNI5O3PB7jvSg0lpszpqUIyTu9eg8Sbhlc43EEHtioYsKGBYnIyfc+9FGLV/M41OMZODSewyZsDt7H1omIZc5xv3Ae1OEk5Js1SqQl7nf8AMzCrO2DwWwOO9WXOPLIPC8sBWrrOMrJahDCSg/aKSd9yptwuACcEcHvT3Y5OATvGABWc6jtyxWpFD2Um+fe5lNCS46ZJJwanJUFhkgjnI7+tdHK7WRErRlzOO3U5pFeUoA2DnGR3q5GUUhQoOTnjtXy6lJvVbHVUqqTTjsy5AgGGYEgZ4Hep4gV+XcMbg2P5Vq1J2S1HUrxUnGK2LMIZFztyN4JNWYcIg/u9Rit5X5rIzw9OMk7NrqWowvzcHpuz6UkOMkckKMH3PaqlBtJjp1lUTgyzEoyVDEZI/AU+MBwVyRncMDqfcUSvf3lYIVVyKK21RLwGU9BjB96jUkMMklhkgntW/JaLktiaVbkST+4lDAMny5OQcevtTdyliACWGSSO1ZQldXS12OOClNt30IP72XPOVyO1SNnrkdSc+uK6W7JKXQUsRJNRhu2SqwjUdeoBJ7c1EV+Z+fvEAA9iK4+RKad9zpqc0Gla5aO3C54+Y4FAT5ctgkEAEU4z5Hq9TplKcrSpq6dtCQNwoBON2T9KjA+ZCT8uece9VGys0ctWMoylF6FncARzyRgEUwDcMZOd4yw7elauN1ZoXLBwjK+rLkchxxnIxg+9MVdoduTwOOwx1rmqK7uup3Rhdq/QlVgeNwBJyBSAnCgjBJyK1jGLV30PNnWUqzVrDgcAAkg7SRQOWLEklSSDUSklK63ZUKr5VBau48EFVBB5yAfXNIcAqMkHO6tFBu7O2GHknZy2Hq7SbVHXcc59KQbwVIU/eGR6VpSgou8DjpVWmoyWt73LsTYBVc+x9RQmGVQeO4PtWNRRlK76HVThzR5lsXod+FzkBsAj1PrSxnKjOSDzWfM52v0ZvRi6SaXUtKg+YdAz45746U+MkkYyBxnNRKmm2r2ORxU3FRevX0GyJgDJOMngd8imSMSpJY5xjFVRhyy5WayrU5N21HxhSCc8BxxTYYyFXLZIYHnv7/WumvUfNaJgqbjKUl1LCuOT/tAZ/GnYxzgbmwCfpXLUi3GzdzohhbL3tBS7EqCMfeBPr6U1shQcE5BP0rGjDng0lqdaqclTlSumE0JZcqOFyQfSmGQtwCRyQB61tGbsmt0ccsI3OTityu0RUnJOHwPpT3Z8oT93Jye9UrW5mFGcpr2aWqKhAXBGeWz9amKOVBI+Xkj3NTCKvaO50zo3XLPQpso2xlTxuPXv7U4xuAAx4VhjHbPrTsrtmVOVTRvVbCBiuGJwFX9c1EykMMk4HJ96pJtK6sSqUE1JrVlqJ2YM3XPPSoEkLkHHc8emKnmbtKKNatN8/I9n+BpiTEYDEkngEVUMmW2EHAJJPrU1ovlbZcaijFJrTZGjuBA2jBJBINVBKN7fMSWwSDUqm4yUt0c82pRXK7GzHKoydxGQBg9sVieft+UsRyeaxlQ53dPQ9PDV4xXJJe8iY62sF79kJPzgEeprxr4gSatp99pmpabnyY5/3h9M+1OspKCmlsPCYRV5+zqOz3PfGuPMhBPCK24H+Wa5fS9QF3oyzsxEggDEHtwPesqEud+6vkcmNrwpRkrbdS3c61aISslygYjkEjk+lfnZ8VPHmt6drt5Db3jBI5nwQTwewHtW2KjGjK0tyMshWxNB1In6N2/iuxijI+0KSSwySO1fjqPix4t81guoOV6gZOf6/wA6w9vBO7OyGWVJRUktUfsevii2yW8xeWyST14+tfklZfFrxZKqBr1hg8Eknp1rJV47nWsBWqQbfU/XeXXLI7GMqjdnkEcfWvyrt/ih4s2jOoMS2eSTxW9LERScbnPPLa3KnE/We01K3l2YmXrkYI59BX5w+APiV4putc0+1nvGPmXKgLk4PNcc8TCMbydjZZLXkuXfzP09jHmLuBxuwAe1N0B3n0uB3zuMYIz2OBW1HEpxSWzMqeCdBWTu0NlUxsUydwbFX5YtyoxyDtY49QK6qTUo88+hiqsrtRWpmNH90kDjJx6Yp29MKpbALAE/U9ahOaqcqWhjOTs5MI2AU4HbJx2qoZsMMZABAI+taVYprUVOjNr2kXfyL69GcAgqxBJp0bA/xEggZPpUU6ilaVy4x9nC8ne41cFXAxliO3t2qwqqOpDDcT9Kick5XfQ6MPGNNcj3MiVGbHA3IpBJ757VrmNX+c5GRwRWspJxujFSUYpyd3cxHGFByS5ZgR9MVckQcqTwMYIrJRcVZrQ0dWNSScd2ZhJJUA4IIJqdhtXIPzZyMU1UdrRV7mXJakm+7MTXNYtNFtjdXkoSENgse3NeY/G2YR+EZinBBPA7g104bDKfNd2sRKftnCla1y2/xV8NR5VtQX72Ov51+X17qVz9okHnsArHBU8gCuOpiVrFo9H+x5TavM/UuP4reGSwY6gpByAD0/CvyvXVbpwQtw5DED5iTXJHESS1O2ll8U5OL1P1dT4oeG3AB1JMjoCen0r8s01W9ATN3Jngkg9SOlbPEKTs1oczyqVOLfNe2trH6oD4m+F12r/aCkmQ/iP/AK1flkdYvmYr9skwSCPmPB9azqVWpXizTC4KU4LmlZ+mx+s+j+NtG1yUw6fdB2UE/KOlfGn7Od5dTa3dtLOzJ5S5JPcHj/PtWc8YozUUtxRy10aXM3d3+8+9jJuAG3hSM/0qIZCp6kHoepr0sPJN8zR48qPPFwfcseYu1mZiACDuzWbfttsp2UlSIWO70JBwKablK0TRL2bVS/lYrv4p0iJmjN8iumcqT905x+dfnZ4x8Sarba7fRxXrKouGxioxFqb13O2nQq1oucbJf1c/RlfFejHc/wBujHQcn/8AXX5hDxdrR5+3udxGck81wvF3lzs2WV1ZNR6Pqfp+/jHREiU/bo2JIAAPQE1+XT+LdZyANQk654Pb3rSFaCfMjCtlNZQtB7dT9SIvF+ksT/xMIwH6MT0+tflmPGGtIw/06Tggtgn5s9M1TxEWrJXNVldbnUk9ev8AmfqnH4n0qVwBfIWDAAZ+9X5seEPF+sz69psD3rlRdRkqx4PPSs/rLitDqo5bNrlqSP1LgMcgLjpJgj2rK0OcyadaSPnDQqfxPWurCXlBrqeVjIRjVtLbY1JEBGeBjilZ96BhkdRz3rR1E04o6vq1oqT37HP6nq1lYbRdTorKSCDjJFfLH7Qes3thqESW07IvlgnaevHU1tClBQbk9DzsLKVV8kXaSZ9HnxTo7KFF4gJOeSOPevzAn8Z61Gv7u8cAjAGT+P515ntbyTZ6lfLqnI1LfTU/S+fXtPLSE3sYZsEDI5NfmKfHOvqnzahIfU55rZ4tKya2OaOU13Dok/vP0nbxHpz8C6QvuICkjr6V+Y03jnxFsbZfyA7Qc56c1dPFxScWTXyqtCPtE/kfpuNYsmGVuFJBwQCK/LtPiR4piYouoMAhAzk/MfWtliYq9zn/ALOxSglFan6s29zFKrGNiRkD8u1eH/A/W77WfClndXzlrhw24+mcUsJWVRpJ6hUw86cXKSs9D3MnK/KSM8kdhmokI46gFsD3rvqxcNY7GcJwqpQnvsOhYqSoyfmA57VZRVI7kbgeKynaSu0c7oOnWTTuiVY9+4MSM9KsRKu4NyWzwPpTbstzF0nUhyva5CIWMed2Gd2PHYDpV5wCo6cgE4/Wj4pxTLd6S5nG/YyZFUYJ5jYgEHucVbkxzxlQCTjtWqk4JsxhWnUi3JW7IzioDY2kq2Dgdqlni+VMOS27I9sVlTS5k5dTZxdSNlo1uV1deSucEnk+lB5dVGVdlIH40nKUnZdGVCE1Vi29NCQc5+fjOCcdaZvCEjOQcnI7VLnKKtFHpNKVTmk9CNmJyNo5HB9KrSsQ3JOGUEAfrmuumpJXjqedXbXut2b2GuxHl8ndk5I/So0YhlAJLbgd3pWbpXk2jWhSUo8st0aUJyFVjncc81BGxfy8kAyBTk9B65pqo+blQsRglO027I0Ectt5OzIPTgikU4VsE7VUdew9a5/aJRu9xexW8ndEq4V2OQQcYPp61IXx2ycE8d8VpRba1JxrcOWMXoSh9vHbJPPbNNHGCVyCMsD0I7g0oRa1auwhj7NNvTYnVmAXOSxYYz71Tkd4xznBYHPoKqpFrRDpOLfM1bX8iYyAFAGzzyfWqo2nCuuSMMD6VC2tJmuIxSbTirMsO2SBk5OcAdvrVNmABGTkjII7+5ojGTVkc1SpJRaYkrHOSSTuBBNVpGDhCGP3j0/rV00nNwkzWPM4xbFdzhV3EFePrUG8cgZGGBX2qadk7dxzlJtvaxZVl2DGQWfH15qmshBIOdocHJ789K0lCSVpIKapuPs0/n6jpGTJUD5lAPHvVdnBU5U7SdpB/Q1EoJQUmaSg6clFPR6Dd52sFHI4AppBKH+HazYA9qU2ppJ7HPGi3Lmk9n+BEwDEY3YODTvlKhMkELk4PUV1Um6cbbpFzoqUueL5UQFgTnJ4UZx35oI3YK5DEkkD0rTRK70OWjhW5c7d1ZhGQUDEksMk+xpvK5AJIXBJPf2que9pyE6MlBUnux+4EKx4YkjHtUcZD85wMgAj9axqLVW2R0Uq0YxjBK7HvgEDaflbAPpnrUEkhGFYA4IJB7e9DaSsYtRhFuXVjieCFzy+SfSohIoJ2jA3DNTVi2uZbnXTpe5y30ZMrI2wnOdwwCOlQxO28MxyA5KkVcIKV5s56knCryxfa5pYA4GOByKro4Gcsd2eSe9ZStBqyvcqMIOLlJ66jiBg7eMkZP1NQiRf4iTlsgDvW8oONmtTjw8HVnGD91dwZvnCHOFbg+vrUO4NJs3AhSSB6etc9eTjadtDulQg6tua5YR1AZc4A5yO3pUTEHG0YGSCR3+ldUJKd5Lc8+vLkTgo6fkT7923LYxggjtVNGJK44U4H09K2vZJW17k0XGaSk7lgPuPQlSc4Pb/APXUCyEYJIycg+1Y1qblHkNKGIVOSbf9eRN8zcNgg9M9vrTcqcHHqD7Zq03FpJ6HR7OLlr6jF5GWJwuRg96M4wVOCpBIHb0rRxhFNy2OWrH3W4apDnK545Gcc9qryy4aPBPJyR6c9Kzo02k22LFV+dxlHcsPlsANgLwPc5qDJPI4UAnnvisFLmTa3O2sqsIJNaCSPllPJIyCO1R7w2MuflcZI7+gpwhZctyXzQacHq/wFOeApwMHr2qIuScDJOQST6VUaaVkkKnUnUblU0YzzMbe7FSCD3xUDMM5AzkYz6Vsqairszg5uXs0tixuUBQOCOSDVYyZ29Cen1FKEIp6B9cmqKhNXdwdmbHPQjIP60gcK2DjGeCe9Nys009zkVOVr1HZr8iFlUEEk5Hf0z3qFpSzAkZO7gjtWHLKUXY7Z4tNNRVmrWfcYAWyvOGGT70j5U98EknHYVvUbsmjHDwUW1PdfqNyQwLYJGSDUTHBGGPGfx9qp1FJJLc0ipQbvqtyOWUK2QT8xPIqNskfP97d27VdOLT5ZHNiLSiqsVqVi2CBzksCCPXvTGYlxgYIxinGFndK9jPWUFZWT3F2/vACc84570I/HzZ3cgE1L0ndvRHpxi3RUIamFFjKyKMNgjn+IdqfAezZABAFfO80aiu11MEnJ3e6NSIbtrc5ycn8O9OiVgVcZAGCP/r0+X3bRZbnBN05Ru99y0m4gY6Bx+PtT1G3ByMjAA9+1ddN86sY4mpUaTsW0wCTnAA5qRB05GN+cD+Rq403CNkU68nPlhGzZLb7QQRk5UZz3oXJAwcFSTmoqJ1FyoPaRhTfJv1HlsZOSSWzipwh655GOfStaDcbRe5NaUalNRe7GldytgYJPbtTjGeOQQQBn/Gs6rmpJDdJRXvOwwDJxxgYJz/SpVUfLyQMkDHpW1m2jB0FCXO+2gxM7ScEdwPQ1dEQZEUAgKMEjtTqTVSbWyQ4wcnFJ6sqoCMAkncBn3q00fzDBJGSDjtmoi3KPNFbHoqb53TW6IvL3hsk8Y59CKnVW2jBJJxwKwpuXNZ6WM8woqokragFDAEHpjOfWpdpDK3bp/LNaJRd1FnMqvMuWputhyqWRTkgnIweppFYoRuyDuyD689PxrCSa1ijVzjCVpS001JQoAG3Ixzx3pQOFJyQCB9ea2qaR5mGKlFKKbsKm0lhjByaCx3Agc7hgjtz1pNyaTWwqSSdoLV6/cP4JTJ4wB+XSlAwB2+bgCkrp2TIkpKPNPZskjztXdjI5JHemKfLUbmJwcKfXmtKkEndGyqtSjSitFr/AMAtIBuUDIxyCO9MBxtw+FByB6/WrVJqN73IlUSaqWsjRjlCKQ2Dhs5Paqiz5AXrkAk1Xs4rVIdapKv78XY0RdIm0MflwcE9vWsdyQu4574B7ZrlhTUmmT7Zwhzp+RfaaPOzJ5zz6Vk7i2ELYLcD2rrp0HNNomriKcZRckbNtMNypuJ+bJJ+nFQ20WCmMAbhk+lc9Sgm+ZPY7YSVR3g9bmzySMDK7ckmlj6McngDg9qwnJxSTW5s5VLKy0BUdlGcjLAilLkGMAtywBP92q5mnaLMcRQUrNP1IjFhsKcbiOnb6VcQsx+8B3B9Kzk+b3WTTxUIJqD0uZuw5AJBJTBHpz1rUeAMytxjcCc960ilFcstzpp0005Rlv8AgU48nI5IyeTV1EXkKSCDgg9RXPBKGkmZ005rlm9FcyJQwcDJBwRn1+tW5IyWVmUnBGCO5rsjXjZtozjTnZeyeiKD22Y84JJGSB2zWsE3fIx+V1w3vXPOLk1rob/W7JOUdTmigjBI5BcEZrWuYcBkBPL9R2rWaTSbIpKdOXM9v8zEMhcEHO4nODUwizwVG/BPNONlJJkuLdJqGt9/kRBjgcknkH3/AP1VbFsQPTGSfqe1XKMo7PQxo0LTXN6lUsXKY49RViS3KAP2IIHtXNG0dbnXQdSUkpPfuY+oQxXMPkyLlAeAafOCyg9WySQO3vW9Km+mxOIc1Uck7WMbzTZafIgyECnI9h2qvrO1NKvcAjEBOT29Kww0LVEkh5hNTpN1Nu5+XHxY1SSXxFfoZGwbljk+hPFcv8R2M/iXUkY5XzCDg9eTWmb07zSPYyCi/qihB6nEi5G9SpJwcEim21m8jYAIZnGR7V40pacrPWpVFGNmtTrNCLPLhiTtYHFdf4Y8OZRZejcKSe+K43UtLlsdUU3JST0OsstPW4iQjAPmA5NdPZNDZxNHtBOcLntUxquzaWhdSDslLU7D4eaYv/CSaUMYlW5UgjtjrWz8L7uKfxRpe1SH81Rg/wAI71hXbk7NHbhoOUXOL0SP058OO66fbRSEkKgAz27fyqXSFxp8GWHylQQO9d9GyST1Pk8RSbnKps3+RpTr+75xwDgntTHmRlVWbOABmuyknz2e7MJNyhzfgcvMG3EDI5wDVm5Q7C4JIGcD1r0qkvesldo8qtSckk3ozMLbUODlgCCfTiml/m55znIPauKdFxTn3N44mVSSha3QnWT7pVyBwAB0JPeq4YHKngjnI6VvGjFKxVdzTUuxoLcSKeJCACOneqaSERqeqshJOOSaxg+WNmrsum4zTqNao6KOfegPJJYc+lZ9rcIiYLHGAAPpU+12dtCqs4KnaTsW7kDCBWJJLEAds0rSq205BAx/k1rB2d+oqsG4xb2fUy5c45zznOegOae5Xb8xwAOSe9aRTa1WgT5ormk7pngfx5Yr4MYkkM07AY/ixj/Iqr+0BKY/CZVGIPnDcfQ+34V3YWCVJqKPNptSxdm+x+Z146meRsY+Zj+tRXjEyTKAfmc/hmvm68LSsfdc7bSf/DFbfgKAQQckmnw23ALdQcg+tTe17l0GpQaRIJ3jUBRkg5Ge9XUteMkY3AAA9qV7qxNPDqKU07MrpIZD0I3DkGrTQeVnofr2p3NE313Pqb9mkFtWvM5J+QgHtzzmrP7MyFr/AFCQZ5CoPoRzXJJXrJnPmTUaFoo+6I2JAbdj5hjPUCoyoC5X+EDp3Fe1T5YpJbnx8a3KubdEWpT7tPvPmA2W7sce3NUtUYjSr47jkWzg4713UuWFRJa6nNKbqJxkz8yPG9y51+9bnJuGBHpim+L4/M1u8kZjkTvkD2NcGYx/eXPs8DGVOlCL2OO+0sjgEnrg+1TGJcMxXB7Z7157irWaOyUXzc403oBXOehJH0qlNGMAjII64ocYtEUlOLSexa+0fMu5sFgMn/GsUyPuCsCTkgkd6UrrVI1V4yUZanpfgecP4q0cLIBuulGD3x1qj8PQ0vijSSufkvEOD3HescS5cloux1UIKU232P1k0W4xYW2zO1YkBH4c1V0aPbYWm05DRKT/AJ9a9PB3S5d2fF4pJzckzovOZ8ndjaORnrVNgyBucAnjHQ/Wu2EuTRq9zjlSnJ+9ofFP7SN3jWI1WTKGNRgd/Wud/aXuGGtqm0jbEhJPfNd2NSdBS6nTw/Ca5pS22PmSS7UlcZYZOcd65qSSRDgMcBwSB39q+bdpO6Z9FCq6do206m3NcqgLE4HJIPauXlunKsCSQSQM9qap9OpVKpLldS3oaUl3vYktwVIAHbNc60hUlmJycAj1qHFp2NqkE5Jx+ZrO6scBdwJGB3NZFpdt5mDk4bJHcHtWzgoq8jOOIgp8jVm9mfpd+z8pbwbYGPJUhs5/CrP7PjK3gyyYNn5Q307Gs8Ckp3jozz84xbjJU5K6PfEU/J13cEg/rVhdrZC5BySP/rV7FlFNS7nzqUqlRSS0X4kkJVcYyV6EU0E4xgjJGMelKpJ3u9jGEUvead7lsDaMgnBJ+aosHABJw3THb61TSdlcutXdFpSW5JgjAEnO4A47+xpchUyn8LHI9cUS00ZpyyUfaJfIUYyMjCnOAO/NITyuSduBg+tdVNy36I5aMXJWk7b6FeUkAFmwdpOR/WluFXs2ODjHYkVEI8z5k9jphLlkktUZjgkK4BGNxOe9Wy3UDgAKCaylJXu1oEpVG41L2tcz+Nyjdj5h0phARsdSTwa6aaXJdPcFjVGUYT2ZDJhgMnL8EkdCfSkIIfhQBuwD6U1om0yp0nNJSexCOSQemQAD3pVwdwDAMrAsR2FS7KKTR0JKFowd2WItxIOSQpII9f8AP0pIn5BGR8wYg96ubipWMm6kk5QWheR8MoySBgE+ntUG4EDOTh65U0pa7s4qEGlzt7dDRjf2BO4cGqqkjcD8oAAB9aupTkmk3Y3w9eE02nfdl5ZVBx1K5OB3qiSGyxyCDgg98VnO01ZMUYqk0pLzJZXJChnG4uSMdcDHWqrMGBOSFIzz7VdGjJyvchVVZyeqJPNIIC9Qc59aqsWbbnIOxWwP4a3pRT1bFWqOMlK2hNuG0e7Dp2HeoWk2tH1HXIHvTjzSvJLQzm4Rny2vcJMJg7sDqSe3rTJVzGTnIIIOO9Q209Xq+h1OTTSitF1IZHGMsSeuCKaxGQcjC4wPStknGTcjGHK05SerIi+OCc5IwRSsfV8Ix5x3+lYzqXqJvYKHK6VmrSELn5RggdT71XLYI5O1T371rLllFpbCi5N8snsTAs2wZwWY5x3qNcsfvcZBBPf2/KsE2kooUZ3crLYeCCqlDkpnr3pqt8uMgAEAkV0VKbcmnsa0q9PkUra2Iy2eRnGSAR3prrhjgnhieO9KcU1a5hRrOErPVjm2shZSCVIx7mq5I2kEcFgQR6jpWcLJ8iZ1Kt7SVmrP1/rcmbZwMkYIKgd/WoCeDvJzkEA9sd66ZxaTbe550/ZqolD4u3Yilfa3bd0JPpUDMzMQSclcg1xSagud6nqywzqR5YMsK42oCAdpAJPqelQK207OSXYHPpxWiswqTaiqK27lqE8BDyVAJJ701ASfmYArjHvW3LZ3TOGTm5NTXulhmHytjk5BqHcQ2/kDJJHrxXJJSUrJlxpxelReQjSISoJxuyAO4NBAKnIP3uD6V0qaS5eplioKUk09EG7aScdDnHc1CH+6WBHUDPfirpczj7yIr1YxlGPUmZwCCp+6wOPSoCylA3OSpIPpV3Snys1oOTtUht1RKrjAbGD0z61WVy3c4HBFRRjZWZtLEwba5NybptIYlSwGR35qLc27cpOAcFabqvlba3MatJxsntt6EynODnKqwJA7YqrG4G3ORgkH3rSpP3XdnBGMacVNak8shySCSQxGf8ahDHB+U8sSarSTSR1VJVZQvHbqM38Z3HJIwR61ExVmYK4O1gSB2ok0kop6slVFKyXToSmQjqSRzxUBB2H5ifmGPapqKzs0GBnGbclokStISvHTJqrK21QScAE5Pp71NOquZRW6OvE1EqV+jJS7EBuTkkA+nrVZTzzk7XyM9hW91dTe7OOdNzVr7D2b14DKMe/tUL8soDEKcEUQpKUuZvVCw8pRdp7khbccqSMgA0xiT3yQwOPSmkkuSQVZzpvnjuvxEdxucnO0ECoiQwJAIXkgelP2Cg+WTuT7R14Xj1QhlEjBRyeAT6GmYOflyPm7dqfIopRM8IpVJy12HHO3cPU5HpUBbA4JPrSdGUfeirnV7WnKUe99RjZyj8lOn0PrURGN2OikEAd6ab3ZMq8FUbt735ilw4C8/KxGfWjKryWGVUk4/nVTgrWOSWJTlzR0bZA6kbmBx5hBJ9eaUNv2kkldwJH94d6rl5YqLep0/XU4uDV0Q7eAW6Y6jvSOxO07uDnNZU+e/KwfJGmot2sVII1+6CcgZ/Op7ZWABGSS/JPevmeVrSO7O1TUpczjbldy3EAcHkHO0D09c05FJZRnHGTjt716UIc9NJGNOSblJLVllFxIvcjBPt6VLDtYbtpBzjNRSfLJxZMIVZavZD4srnA6EAn0qTIZyBwCRwK3cItRkc9eo+ZxgKrBt+Tg5H4UjsE7Z4xjHU0oybVkdXLCKaerZPkbeMjcNw9qcm13jOSRuHPoKxpyjy8y0sY0qXI4pu7vqToAxVXHyuwGMevrUsCHBbPJ/WtIOPLZ7ms6NpuaWha+z/dDDK849qsxFmC8kLnBzWM5WSsbRnGWjYsMSjjORgHA7DtTgWVPmA3ZGMdCe1azi17sTgqTi3zsa8fJUDGQeafK/wB0sTtVuMdvUVEG4pya1No11GPM3ZEbLtQhec4BI9qEcsCWxgNkAf1p4aKjJuW5cpOpFSg7L+vzISwCAH7xPX27VXuNxIJJA6gCuyjhkpXZy4tWhaD17k+5DhTjIbGaqIfvZJ6YzWfJZqSOTDpxjbdl0OHCgsdpODmoUzgZyRySfSp9lFNKTO2UPaONRfiWUbaAefvEAiiA7TtYnliQfesa1Xla5loelh6LlG8NfMlRvmUZ6DJHrzSKwXBKnkgEitlFXunqc1LEprlmu6JCw2rxjkmiTlccc5ArmhDmlzXHXxl4xUVd3GoVyHGPmC8+vpSxgjbvHoR7GujVRcmTiGnKMJrQdt6Y/hJyR3NObhdp3HccDH61pCsoxcmOTUqijBDl9ck8ggn+lVAzKRwcbmBHvVVqyWiW5jTg5e89VtYmeJfMRlIJwcCtfS7Fd++RjtDDg0qlSVOKs7lwwyc1ZpWLNlA7x/OOoIxXR7reKPbGwDDBxjrXBNtu6Ox0JRi5X3Mg5T5CSQoGSO9QXLl3YrnB64qopyikyJ1/Zpxb2X5jNxRk2kZLEkH09aQOoAY8DjNZUpNttvQqnzLl5Fqy7Cy5AUYBJHFQ+ft2fLkBif8AHFTVs4qS6FSlNrnskrtM0g6vtyTwDgH9aoRTB25OAOx7U0rpOa0Io1OapeK1NFAq/wAeepye9ZrStj5Wycdf7tN0U3Zs3VVpcyV2jQZo3ALdOM4/pWb5vB3Njk4/pUUZXk2jncHGlLm3ZYDAOxJ9gPTHSqe9iQCSec5Fb8qaaWxlRTcuaT6aE0rb0XnPzZJFVZXIC9WIU4HrzShSbmlFnRGU1BNqyK20KwJJGXAPpUixZBJBwxwQe9bT35ZGcJy5lKOyL8CqFGeDvwBxTkhdvLI+9gA4/pWEZ2dnsPE1VLZa9AuYshU6Lxlh39a01jwgDjPGM+lc1KUW721R0xi5RSlvujiZIyMY5xkH3966f7GXc56MSefpW0LN8rOeKaqppannWu2x/sq6fIAMTcEe3Suh8V2ywaFqZUHm3cY9K1w071knsTj6yUOSUbO5+PnxIs411u6mUhiZWJx0HNX/AB2XTVr0sMhpnPPoTXPmFS03Fn1WWRfsEo9DznSZ0En7zgl+Aahjj8twVYhWbJ9q8qs1KV1ojupSkoczd2ewaZdfZ4owhwGZcEd6w9GkDKi7iExgZ7msm09WjVRlKCaep09zqDsxdCygvgr6UyaJQg8sgBieD6mlurI0q0nJ3uemfBm5a48ZWC7iWVskHtUHwRtJx44ticgCM/h/+us66TaQsDWqKlKMla3Q/VGwvClvbqXG0xAj3x1rDtXkEMYP3gnQ+vb1r1KNFSfKz5L2snJvz2OhlvGcNtbCjIJ9c1moh+YN0YjAFejBxSTa0OOph58zldtdjQF6xyjYwSACO9Z3IA3DknkiuV0km7G7qqpBLrrccxXmXGB0IP6moJHJRgmSwOcVcantGlbQ54UuRNt2bHvKM5OdpHOO4qozbVUFumM57iqdJp2DD1JpufN/SLyOMFsjBYYz9eap+cEMZBBUMOfXisp8z0gduFrRkrzia0coySxyFYnA71QilVXGCACwyPQUSbilYnD03KTk1aK1RqLKy7Q/PGCB79KzftAP3iSc4z6VSs1qbe0bjoafmZ35AGCcD19KoeaHAwcHIBPrWLvGSfU58VTVSm3vtp2PIPjXoV9r+hC205Sz5OQOucc4/pXqlw0UqASYOSRk9q71iZQpuMlqziw96dX6xJXjHY/MO4+D3i4yPi0O0MM8dc1+lgt7Ubtsa7nz1A4OOK850PeTbPqKGY0pR9qo2Z+bUHwd8W+Xl7Ill4A7Y9a/SlILMgKIkAyQSOpz6+9R9Wbd+g6mcRg0oxv8z83B8JPFYZQ9k4RSOQODn37V+mCW1m4bKLt6EEcGrlh4xi7u5MMxbmpuN12PzWX4PeK3R3e0IIwoJzggdPSv0vjtbPdnYC/mA84qJUG2rlyzROLlKOiPlv4FeAtV8Mz3J1CJozKQVAHHGP8AP419ZxwojBo0AJJJNZrBc0ue5lVzWnXpqmlZDVtz8uD14JA6VfhweR1yOtdkKfLq18z56pOOs1stLGJqen/8Sq+BbK+QSfTmr+uSsmjX7DAUWrkfWilUnKonE0xFOM8PGLe5+Xni6yxq92y5y0zHPqc9q0PE7+ZqN4q5+WZtpPbmsMZOXtHc+uwkG6MV5HnE8QCqGOTsw3uR1qa+Cq5BY/NwMVwKL1udcYSSTZz877WBAwckcVHKRtU5Jbk89qrpYynO1pJadRieW2XBOW4IqiGbeoDkEsScd6OV2SQpuNRc8e56Z8OCP+Eo0gDqbsAn19Kd8N1P/CWaMeuLpTg+1cmJqqyR20ubVpdD9VNJG2xtyMApGM4HIJ/wqDTZF+xxsMlVjABr2MJNxV7HxFZL2rU33NGUo0cig7eSR7DHNU2lIcMG+6rAD0NdFOq4vl6miotpyUtD4U/aUUDW1TPDQqwA7Z/wqL9oosdejLnkRAgDtx3+tduYTboRa3NOHsO4Qk76XZ8hSoSNoBwzfNjvVsgctgBskkHvXz6aWqPoauF9tDlm7IxHjIB4P8RAPQirEqk4+Y4ycn0p8zbTZlP93TatdbGHMMDOflOAB6VLMhUblYkjLE/Xoa3hJOXM2bwquEHGS93oUotxeN8kfOM7e1Rxbg6LjIDgECpTcbroc+IUpNd3+B+n37PUgHgnTWUEblJwf4eag/Z7U/8ACF6cNx+4uB2OTU4ZNzSZ4mb15t+8tIn0kJSWBU4wSCfUelVgj4VBnYuM47fWvWVFWabPOjUdNRcF8RfV/m5yc4OB6VADsC9QWYAknpW8YWVkbVIqTtezNBcj5jkLgZz2qssgYjdn5cYx0NZzim7vRmfs4t3bLWcI23nBB6dKqmR1bg8Z/wD1Vbdpq+4OCcHKOjZY83GMsTgkY9P8/Sqe/DYLdeme1Zc7jLXZnNUhJRUL6lsZfaMjPGfeqhnRF+8cHPI7+1OpUv7vczpUbw5oy0RPKwUYyDweT3HrVc3COVOSFwcE/wBaqMlF8z1RUcQpRVN79yqUUrl8ZDH5h2pzMpOzOSQDkVMqj5vdZ1OhJP2k1exSK7iPmIUnketWgq+nXAx64rRVkkk1qKpRlN+0Stf8CqpAO09XHX1qwYowQcnPJJ9M4rbVtSktTiwc4wUnzaroQYLFVBJ5yPapEyhICjHalNqKu9WzpeKdWCV9ESpECMhiQygn24qXgoNucggHnmpdSTsr7GmDlGUpRa13GMAFAZs4BJHYjvUcmGxt4woAz+tK6cr9Cacm4Sio2v1GrK2WZgTwxz9OhFQAEFsZG4gED+LPFOrTjOKS6ahUqOLTvsIGw+4MQWXHsBTW67c45H4e1VyptI5JRm37y2F3HHmHnLYwew9aY2Dz0+YBfyqKKsnFkSqRXK4vRE5cE8ZI25BPaqitvwBn5gSDT1pJRTvc6qKjUu5aD2mwoU++SOnFVyCMndkbuR6nuTXQoprmktTmu4ys3ePbqPOWZAvRsKcnuaiZuY/mIAP+cVnyNXRUoxbXNpfYduAVUyTkkA+hqKR9uSQDjnb6A04QutHqay5KcErXbYgweTj5yQCelVX4ABYlVyRjsapxSV09jSjByTc1qTqVAADkrnIJ7VAXVhkE5KjaPX1qIxTXMyXCcp8q0V/vLIZcqQOrEAHvVYO2VBPHAArXVRaQlhoRd76oncjcMsRjBIHaqUpbAUMQu7OR7+tYU4qSV9xLEOKcl8LB2UsdvKtknHYimbgcKoJ+7kD3PFdMZPlcVucFLkvdu6ZL5nyBumcYBquVy2csVOASO1V7rTbfyNqdJ06nPa/mNZifnXkg5IPf2qQwsWA6LtPFYUnFRvIzqRbkoRWgyIYJO45z1H0pgznbnJDEZ9qHTblzlzvJqEv6/wCGLaAZGeBgAknpSQgkY6HcB+FVUu46vUabptJXdtB5BAbOcZxn0pcEDeWICnoKzanNprc1f7uV29OxH5pXjn5jkZqJn+YA5wykg1ooxSu9yaE+ao09gyrZ284zx/KmCQEDIHysRkdsVtzSvZLQIYaNW04uzuOdgBjGVBGQO3rUZIIyp4YnrWU4u+r3N6tB01zU1fyFAYkndgM2ST2pse/YBycYNavlhaUjlU52dkPZhkKDgjgk96jVGyzFifUHoPpVTjy2TZEJJyvLqIpKrlujOSPamsxxySQeQD2q6jUm4rc0nGKjFRexIzk5XkggDJ7VULDLDJIzgirp0nF3ZlQxcKl4JaD/ADFAYg8fNk+pqrLKcrwclxz65q/ZNq0SpXjNxls+pM0gCBeRk9R2FUPMyDtJ54xU+ybtJvRHLUTUeSKs3sW32ttDnIJPXv7VVJIAXJYlieO9SrczSHglJJOS2LZPynJIJPX1qoFYKSXJBYAfjQrJprY19pJxm+3Qn3ZCnoWAGT296jOFCjod3ApScU720JxONahGmo3/AMhwfcMZ5BOD/jUagMVAOORnPeiPLfmYqd5RXLuMZiqMOTkkZ7mpJAm5cHk8nHTjpW1OspSbl0OyOGXIoLZjM7DkZPmDv2xTSCSobALAYHqe9TKk/ibIp2UrRej0Izhc7jjr+HtT2XOSTkFuR6VEpXST0LqzjTi6UdxiYGGxkZPHbmmEn5fm54wB2pyk5XTM40nGCcneRXkOAdw5J5z6UMm47SeuK0U+ZK6tY5cK6avGotNxoc5GwghUI/3s0p4PGNvH/wBaoeqXkVHERS5G7Nsa6jaBnI+6cdjSuCUUA8Kwye5waKTnKXOmb4mlFU3GWqGwKAEABLcAH1zTomJRezquR718vGDT12OxpxfKlq9Sym9SiqC25sHHehXyykHjkY9feuhylFXe5hTi72i7ak4c5ALEoSTgdB6mmJ98knIXqBXTGMVDlexCqzqTTSsy10zgknOT7U1TjcOQW5x61VJO1kzlr1HGTcdkyYDc27qOOvf0pVwMEZ5Bzgc1FGSab+R1SozTVSDJQyqRnJOcZHekCeaVIJC5xW0qafut6kLGOUl7mi3LttyCecZAA9KnjXaF2YDDjJ6dK5pTTbstUFOFpc0X7paiOSNhJViCDSIzKdvHcH1P0qJ1lKScuh0zpxtZa3JWIZcZOckkY6Co5GXYXUkE8/Wu1NJ6GFGhFRvP4V0EbOEJ5GQxA6cVGXbb0yoY59ay5XGV0yfaQSajol0HsQw3ED1GO1BQEFduNuAoHQVdOrFy1RlUdRuMloinIdxyxI4xk0/yi52kDZzyf5V003LVt7BXotUrQV7kUYU4ByQOBnvU6oqtyMYPOO3pSqJ2tcyw8faxi1GzRNHhI8gkjnOO/tTtnyqeQwJwPWspxV9DqrQcpKDezECn5SAQMnOKkADAkZGMZz0FZRneVmVXwzhaTdl5ABuXIOCJBx6dOalTJUAkkAdcVVRKLc2KLm0ubUUMyhM5HJGTUiqdgyBkZAFZQqpy5UjreGUo3fu27kQG4Atk8kc96nUOFC9+SM9quVRyi0lsZYinGUE5PUGyceoP5UYb153AAjt9ailLll770YJxUY2Vx4XoTgguPwpBxIqgDaMEH1PtW8YO7cXsRGM7qElpcvrOoCCNiBv6H8Kqj76KCOZF2fgORWPPJRtsafUozftE/eLi3DE5Dk84IPeqnAyACM5Pb8amDV9GaJzcHCa3Lskgfa5JBGcn0xjmmjlNnXGck9/XNFPD6M54qPK6cdX1bIsnJHOAcgD9aZLlMkZOQaj2yU0orW5pWwTVNMcHYbSzEheearDJH3iQMDJ7mqddJ2aDC+4kofNF9J920A4VgSW9BVRcEYHI6Coc217NFzhCVproXTOMEAnIYEiqG9MncSQeCPWqclCSTV0XVqVHLmhomaSOo43klycE1QVtwBCkhQSPes5UU7TTNYTjVhaS1RoAiQDjuMZ7VErj5SQTjHA/rSpQTTlaxhThFTSe9ycIWJJOdhyPqaYrnkA4LAkGtOeaV2iqtVTjKFOWq3J/lwqn+8CQe1OC5IJOSTgVhGLvzNipU3G1SKuy5E4ABLEsq4x601cKwOThDwaKUE3zNmjcJvmmtWafmr0zwaqo2SmBwwBB9s81E4NXk9zaFWLcWtkaUfzbS3QMQR6U2FkMf3juJwf8P8iirJJJLS5pShKpO76bHIeOcp4e1BgcYt2JB71S+JEwg8MaiwPW3wMdvauvAUr1E4s8fMEqklCqtWz8ovG8Mc+pXYBIYSsefrWN4tvnbUrsHIZZVBPrkZ49q8vGxtUZ91hKUo0k4Ky6fI4x7NmPyYBRjnHer1tc/JjZ8+4gH1rhmnF8yO2dRRpyc1puS2khtkSEN8wIIx29aWONpp1YjGWGQe1VKTS5jkp1IuSt8L2N1b5nVQDg5zk9qZHZCMM5bKjAxWcKiej3N5NU0uVbs+h/gL/pHi2LKk7Ij07+ua0v2dbMt4oLPkgRjA9K56s1zxSetzqnNLDzbWh+hVuS0MI2gqqf0rTtowkA3YIGcD1Fe5hJuCutWz4CtBp8l/MqI7Yzt2kDJz2pssgSYKR8ropUnvg81cqrUVJo7MLOKklJ3I5ZlTbuPHViegx61518R/F9p4a0eY+cRcyRtwD93nitY05Ti1smefiFGFVOLOS8Z/GDSfClw1vJ+8cKQSp+6R3r88fGXiK51vVJZZpiY3lbB96zr1Y00lF3PVoZRKv705WufXtz+0rpO3eiqAMKwJP518EyIXQ7n+UMQfw9a5liUmm0b4fIFGTg3p3PuRv2mdPbCogJ34AJ6+4r4LkZo1DMxPYH0zUwxDhLTVGlTJqclGKlsfeZ/aaslKkoAMnGK+BoA00oiRmJwOD0IqfatK6IrZQ5SUVLVn6A2f7SK6hNDb2lvvkmkChO7Z6VxPwP+FbvLFrOowEsCGXd3Has54lq9jseTQpwUqktOx9peGNbudVsILu6UrK4GQewxxV60t0s4EhhACKoAx610Uqc5NN9Tx6zg5NQ6HmvxM8eyeDrZJ4VLbyCCex9K8p/aUnMWl2vzZLADHYHtXrxpwdLVXOXCTnOu6M9EcbL+0zNE2BGdynliOgr4xnbc6Fm5LEAH3rx5VpJ2Z70srp06Vr3R9mp+0/IjDYgOGDA46H2/pXxKwKjYRjYMgelKeKnJK/Qxp5RSjJO7V+h92237TbOAfKAzyQf0xXwWryI4KMflIGO31rOdS7Tsaf2c2lrqtz9Bbf9pGZyC0QK5Gcdc18QafdM6GNsh9wwfWtfrtkos56mU8qcov0P1j+FXxFfxxFLclQAkgUj1wK8d/Zck26dcPtw3nEAn+Ljk1wOvKVVxa0sel9QdGlGUnqz7XRVGdvRnOD3pkMhBGGORJ/D6+tenGTiuR7Hz7wfLW95mR4oJ/sHUyMhRasCR0BPP8qr+MWb/hHNUfOALcliO57V34JOU49BY6fMlG3Wx+Zmuuv9q3I8wkF8DPt6Vja3d7tVumYY/fuQD25rysy0qNXPrcHFxpJtW8jI1CE7V2sRgHr3pWuY5Ixzzzgnt7Vyxl3NqUpTSaOSnikXYpODkbiO/wBK15hGzAKxLFyP/rVManM7odT3dHuc/sKupycjDEDtU7bg644LEgE1pK7VkTQnJRTktT0n4ZDf4u0ZwwLC6XOe3pR8KQD4u0mPJyblCMd+elebiW6aUYdWVLm5bvofqFp4zYW8RY/LGAMd+KfYoBZwjcMlVJx+or6LByTV09D4+vByu5tWJiq8ZJxwSaWVhGGPUlflHvW/PaNolzw0YJSet0fA37SErDX8lTxEBg9setZv7R0pPiCU7ySEViB3BPFdeKbVBKRtk0nOTUXornyzdXAVlcngnIUd6p3DjI+XKg9+3pXgQjrZHt1XyxtGWqJfN5cZBUocE9qoliVA3DuSfSs4xsrDiuX3m7+Qydt4dORwMse/pVe4kyh2tnoeOhFWo66m0W5Xf2SgfM85SuVVyMDP8qcrHOSR8nTPY+9N2Ssa03Gya3P05/Z+JHgrTMjOyMYI79OtWP2fgP8AhDdOcZ+eJcZ75qMEk3ofP5zd1VHufQUcpC7GyBkZz61EXHC4IYnkemK+kU01aKPB5HFJpK68x7ybVCMCV8w4z24qlcXCQRM0jAISMse1Dg2ku5jPGpXjPdFwzbUxuA3HJIr5k+JnxssdA82z025/0oqQSOi9qtUlzc8tjCeJk3Gio3a6nvuoeKdK0tC13dxqeCBn9BX5V+KfibrmuySb71hFuOAD27Vzyqxk+WPQ7qOEnG8nqj741z47eHNMdo47gO6MQQDwPTNfmE2pyzMJJnYgnoT1PbNY1K8Vo1e51f2PUqR9opWS6H3lqH7TttHITCu9UOABjAr4AluC+AGIwxJJ7VhDFXV0tEejHI4uNpPc+2pP2n33KyxEqWAJ9a+HNz84YDoSB3NOWNnP3UtzmnltDqtUffumftNRu48yPkLjOOF9vwr4atLtf9U+ADnJ9ayp4yUVZo7KmU0pw54yfN+Z+j2m/tE6FceUk7BTK3BHcgV+ezTARqocn5iRz0pfWeXZHOsuVa0VJpo/VrSPib4Z1URrbX4BfA2kjNflDb67e6ZMrQXciEE42np9K0+tu3MXTyWKjZNNn7LRX9tcKHhlBBAIAxzX5u+CfjxrWjPDDqEpksjhST94frTp4tKVlscssHOFKTkvu6H6WCQ7eSAB1I715r4K+IOmeKrOGe0nUyeWu5SRxW8MVGerR5dKtGCtF6s9IILAkcfMcj1qNSXQbWG0Nu4/WurlSa5CpJzjzJ+QuduGBydwP0NNUOxHy4TI3Z9M9q2hWi5WS1NqMJRjyx17jCSSw9gMH3pzHBwRkjOAO3sKSvFppaGcKTleFR72ISMcAgBFPHY0SYLlM4AQEEfrSSTlyLYboJvmbWg1iQhc8Dyxj8KYrfKQeQ3HHanVab5XsZcloppXYkpQBc5IYcg9/rUYwBwSck4z3qeVq19mbUYQUm3uQ5Iy38JzkCl7t2JHArenJwbcmcUoyb91bELyZ4Y4zyDx+FOChyCwK85INKNZQldo6ZYaVSCqXK+5uo+6xwPwqRkO4scYIGF/u4o9vBtq2pz4ZTc23sxoYYbP98AY7UjBvlOSAwwMeveoUHfmXQ6FOpBPS7ZXJbcDvIxwCOozSYGQFGckEn19a6FdtKL1M6leKhyyWq/UBvYFeeg4pQchjzkgDjvXMrpruTSq04t6XTHxqQUIzuG0kDtitKxgVmLHqoDDPendtOR0zw6nUSSSsENoVUAHGXyB61sgY24IBwAcdqtOFrsnEVJRVoL1M94No2hsdcGrsnzZTjIOCR9axVmlZ6Co1JuXso+tzGFpuIDgnnGfT3rUYDCkE4VjjPeqnzVJJpmsYqnKUZPVamfFa4Izjg5FaQKKdhyCxJBFOVZS0iYc/tJvm2VmUJIAo5I+bOPY1cm+bbg/dYDJ70udJWtqjrnh1WTg3Zb3MOeIA7FGCQSMemeauSqGcHYT8pwP7uemKhXbukRBKMVFmQifKDuAO8jHp6GtdYFdFGAOWBz3zXTJpPmT1NqFNuCUXrqYjA5XK4AcEE96tviPIOQWyB7Vo24S11PKtKzktr6lVSVx16k4+vagbsnbkcAL7Y9auata60Oegm05xevmLucgAHnPHt9ahLjg5I+fBz7U1BS95rQ6JVqkbUk/6YyRnb5cgDg5FRmVMnGCAMbv6VXsXdSS0MG7SVNvXsRSHyxnGeMk96SQtIH2DBA4B7eldNOF/i6mVaE4rlprYpMC7HLY5BIPtUgibGSTwDndVzmqcW7mVGpGo+WS0IkZeoA6gHP86kjhYAYJAxjFSklH3GTWxcHJOUdhMZ2MCSPmH09KcCd21Rzgmo53slodVFOTTj9of0HDEjAbPrTWKlATnOSMegrN03JqIVKvsqjklp3HEBsbs7ck5qEsen+0QCO9P2aV0yHRkkpJ7ljaFYbeDuAye/vTlI2gnORkCrVNJc0kdNWipqMHsiBlwQFzgDJx6U7JVHGcEkkE1Dbi+VGU6UXHTZDVIYIQxPce9GVGAecEDA6CqqTbfOYYS10padiN8YBA53gEGjO5gR26+1KCsnJnbKjCUbp3uRSKCMMSOQF9jUyjOQWOQeCacaUVo2c1VpLmhuVmQkgEkEk49hUmXXntyMjqOOaUabUbSY403KSa0uVtr7l7qeR7VLksRyF5BBPQCtOZRTS2MJygpJpXIG5OT3J5HepPlwCVGGOQD2qYSUUrndKLlFyewyNAOdxJJGD6VNHzlj1Gfxr5WgpRjZm1eg3NQb0Q+MLkZXH8Q98GpQxwq9exrohBvdbGSm5zs0IoICEZ5xkDvVjgKFJ56/Sqo12lbc7K8UkpR36ina4wD0xn6d6aBuJBGA3B966ITikknq9zgrttOSjp0LIUccnGcAipFwCgIwNwANZ1JcsbxZ2XbUU1a5PE20dCCpxk96CmPmX7uSCPSpnJSimyZpwTUdlp95OGVcBSQS4P1qCFGGCzknadpqKrSfKnqZYSjKpBtuyLgcs6nkfMeT2pVHAbBBHJA701RSd2tVsa16ijJJLbck+8AozljjJ7UoGMknlmxWq5bW6mNOnKaST0uwQEcc5JH4U9BubdyT0A9azlP3feNPYKnNtO6Q5Axxk8BuR/WgMR0UlnwAB7EVrGTukjmpwTjK+qYqgbBxnL5GO9CAhsc45zTad7JmtKCnFU/wCkIAobDKMnoT2qYoCykAbdo69qcJqUbMqEpQkqUXcQdsEfLkkHvU8cAZgRnAYHNVGcbtMqMpyS5VdJjFHAOT+8JA/Cr4tiGUAkZyRjtWc4QcVqRCc4zba0RnEbCVJ5LgAjtV5omU4ZeAxwTVy0SUiOWbnz9ytGMbsknkAU4ZGAcjqQR2qedPSP3nTZKVp6r+tSRG+bA5G0YJ9qUbsE9TgkD09qwcZyfKzWXIn7nYQMByMgZzx7VKqM49MnOanEe/NNLQnCYSN2pPVCQwh+DgsSSCKsKHiKMcDABIFOdWajd6I6oRUa15K6IZ7cxODtzz19PerEszSr82AeQPY1canO9WeTXjyzc13KScckEnjGO/NSb+cscxqCSD29amm9UonRVanJ+VhQrDYuSeck+vt3p6upKYyc5HP86yhUc1Ip4VJpQ6a+oxiMMSeCOB61I5CnDegJNa2Vk1uOGIlJcjVu5XEbY3FstnBJ747U8nhiAB1IB70oVHFpNajjh6cpXT0BFyuBkYJyf5UqkKpYcBnyQfpzRGmnO8dxKTjJpfC+pG0fzkkdMEn1qyZAOOcZxzTVWUZcr2OmvSi4pJFRuABn5ZPlIHQ5pTwq45G88/XpXO7OWhzuMU21uuhMoyByRjg1AMrn5iFUk4HfFaqDvozmmozkudW6lxX58sHB+XBFVRgliDjORn09KcKXJG3U6KNRJpNe7rd9y+j4GA55Yg4qtGxH1AJOO9U4yafNujqS5LKL0Zp5IQc8kAAHpx3NVFfeAeRtfiorJ8y5TndSUZPlWxpJKE27cnDE4PbPaqPmqmwZyWJGKzqUlKSR2QxLkoycdTXFxhMZIOBz6ZrHE2ejZTJGfT6UklFcr1RdHFSm5KJxnxVuvK8J6iuSMoF478VzPxlvVh8IXEgJycgg966MDHmbUeh5+KlKNeMYPdn5j+JJFmvrvj78x6/pWJqNx5tzOSxOZ2P515WKupWR94+ZxSlv1IIvldUJOB19896hVwPlUnacEMe9crk3qx+9pbobFtKFlYEnAAJ9/pVRZcEc4ZeKLpR5UT7JS+JnWQXG5TjJC85PU1h210GZMFhgkketZO8lZGvJFxu1qfXv7OgVvEErgkny1Of7uDwKi/ZrUnVrucFixKAnPp/+uuFU+WpG2x04nmeFtFa6n6GxyExJ1LAnp0PpWWbqO3t2d3CrGpPPQ17NKVnbqfJRcHJSloluYviXV4tFtprueQBEQlQe1fI/xi+JhvLmbSrOYiMIQAD94+9eor043qLRHkYa+IqylSPMfid46udfvrlVmbyg5UKDwBXj99OzFyxO6RiTjvXnV8a5NxWiPqcNl9KEVJrVHPXUQL7zjjBBJ6moJ5cgxkk8nPtXG7t6I9CjOLV+5TEgw4Oecg1TZ2Eir0DtyKc9FcHzNtdDPuAXdowcruAGO+a9T+HvgPUPFmswfuWNosoLNjoM0/aKKbZrhsvc/fWiOw+DHwvufEF9DqF7CRaIwYAiv0C8G+FLPw9plpbQxbSMAkd/TPvUyU6zuzhrY+nQdor5m7ouj2+mWVvawKF2xBcD1rdQhRk5BAyo9/U16dDDRUbt6ng1cV7W7ivdexXwSp5IGOCKkOcEDPIJ49q6k7O6WpwVJ2ahI+R/2mHxZWKqQAASR65qn+025WGzUn5/KGMdgc4NdLvDDuXmdOWRisQ6aW6+4+FpCpwuTnsT1BprthgNwyFJzXz8oJas+kWGm48sXoR/Ky4KkMwxx3xT42AUOVAJHBHalUUVZoUW3G0uhUKbBsyTgjB/xq4FzgjIwwAxUVZJNM6acndyRHE0m+MxjAAAyehxUikK+GIOVHTvQopq62FCslJKT3P0N/Zd3/2LcOcgm4wAPwx+dP8A2XmC+H2fccNcEEHueOPpXLgoJVWtznz3GSjTiobH2fE2E5zuKA59aoLL8qj+Lkda+l6JpnyGHUpSblp1MjxtcBfDeqpn/WW2QPcCsPx/cmPwpqTEncsP5+ta4Km1K63Rz5k3dJvdn5feILkLqdycn77YArm/EF7u1O7I+757g+xzXkYpyU2pH3GDoqNJJbk0d6WPc85INcoLwKW2uSCTyf6VzWT1NtedOPzOvFxnBUnau5gDXMJf7CCXJBUDHcUlq7I1bTaaOgMocAMQHOGwe1YJuNx4JBIGM9qNU7ic5OXLeyPZvhPLnxrpK5BX7QPmPbjrWT8I5Q3jbSN2QRIWH4VxY2m5xUU7O4RaUXKWx+rVmwa2h2nP7sZ96o2Eu63jU8N5QJPqccV7WEo3pWT1Pl61WLq3kloXpijDAk+VR36j+dVC/B3ZIyefX2ru5JJcq6nNCDqNuK0Pz1/aTm8vxLOAWBLDA9qy/wBpS53+KrjzM5GNpPq2M1146LjSjz9jr4eUoRbXw3Z8wtNktuJ2huc+lZk04UkZz0BrwJzd7I9hYbmk5t3TLk8nlRqFPHAx/Ssdp3UDcSVANRFpSu9TpnNp2itO5JLds2I3POMYHYVml1+ZycZwB7VTak22KM5Rik0aUNyPNiwTt3DIHes2AjcqqCfmOCO1aOmkmiIqpUlaKtsfq1+z/K3/AAhOkbiNu0EY98ZpnwEYf8IPpTsQD9nQKoHSsMGop3aPMzfFeym1KPNynv0sgjXKknJJHvWXe3sdpbzTPkKkRbB74HSvoIU3JKMT53ESi6KrONrvY8I+NnxGHhrS3tLSYC7kBHX7vFfEnxl8Wz674huiZGdUndcZ7Zrvr1VRjfqdGAy14hc0tI9zz3V9futXunuriZmaRiRk1ySsxOScKM4x2rxJ42U5KbPo6eDUYulfTe5fkuCxGeFDEAg9eOM1AZMnZkHfzz7VzqUFqy4Qm4Sg9L9Q3yMVyCOmD60okKhS2SAeCO47iolUb1S0M5pQUYN38yCaRWBwTuLjkdsV1vhXwfqPi69WysYS5dtrNzhR/jVxqpWUmbVqbnFygrHGJIxDEE8MfvV9taL+y9FLZRve3Tl3wSD3OPTpUuk5JKO5E6NOMnV5tz4zVmY7x0xya+x9f/ZmurK1ln0mTdIiEgEHnH6Vp9WmmlLcqnTpxTmpHyF9obCoxPzLjI7Vqa7ol1ot7JY3MTK0TAEMOtckqMk7NGlas4JWRj3MoIHIOCAGHbHpWbNKu1eoBPAHanCMr6bmHOq0VKWj7E63ZAPznjBwO/8A9es5XBJOMkEZPrVuMuezVjL2MIpTXmex/Dr4gal4V1W1dLlhBJIodSeAPT8e9eQxSyBgQThGGDWVSlKKui/ZQcItxTv1P2h8EeKbXxPo9pfQS53oCVH0HBr4x/Zl8bTpcyaFc3BKMAUDHoOMgVth67TSkzxMbgvZRtFfEfoSjEcA8bsgDpz1qlHKWj3ZIXggCvXjFRXunluu+ZQb26lnfxuBBwwGKrI3DDnjvVRbTu3cftVJc19eo3AfaCTk5z7j0obIwwf5Vzkeorq9mqj5o6Bhamjg9mJhUwufvHqO9NJXB5ztbH046VlGmpNuT1NsNKcG5LoPOCMA4z2PaoBgldxPGcH0zVqu9kjKUZympSWg75VQqckPxkdsdqgLj5tueSMA9DzU+ySkm3qzau9FdWSJAV5GCPlGCf5CoQWwy7ucHFZewT1TMp1Wkkug9yWUAZUHv9KaXXlic7QOPSrpxtq0aU6ilFyhuREtsYjIAwCT79KckvmHC8gOOCa3dmk2jPCpv3ZP3epBIrNsOT8pwBVmNC78EliCcH69qKNVrRmM6kZNwhHRbFcKwAzkrk4Nbf2cLFtxkg9++aipJNpMdN3d0t+hBZkAqOQFU4x796khTy+XyCeQDROLcjshKKTko7I0yFJByDnnB/pVBpmLbsE4B2j1Nc9aUkrJGPsXWfMl+JK2cqc4O7gjtVWSQpvbrvIzjt2qeWUrNLc1pUU/dXxLUlkcFGBJJXge/r/9aqB6jJ+U4OPSt7qEl3RyKU6qlGpoWYpGyoznMhyT2FOtVDsQxyBz9aJyjz6rc2jRlKHKnsXQvmYBwDkYJrQSHOCxB2nHFc918OzOilTqqLUVexQNrwH564z6VotIMKMZGMAelXDmd7bBOUXJQ2aM1bfCnvwSMdqvDAXIz34FOTUJXe50e15o2asYNxbKH4B6kDPY961ZSAOT8qtjNUnJavVHCqjnNK1lfc5iS3KFmyRgEfnVi8kG1l5xuIOO1dKw6qJXezM/bxpXlJdTElDEAPgHtjt7U9921WODuB4PauulBLVnNiK8W1yrR7mbKAgJBI5Gc01h+8AL/Iw5967XBL3pM56FaV1zIYsm3jccg5P9ahfAbAbgsMAd6inFzle4pVJQpyXVsmZwcYJAfgCq6vtA3sSC2eRyM1rNRXw6nmKlUcVJ6pdC6XDKB0AGDmqbP0bJ278gf0rCVGTd0j06TTS0JyyqqgZOc4J78VV8xypXdkFs4Has40OZptmdeSpx5YKzJ5H4yGJwATjuKiCkDHAByAa6oxlGSZ1ONoJPUiLBdrcbVbPFMlbPQHDDnPrVSfNFwWzOWokpKSl1RZjnBI688gf41VQMOCxG7qKzlRahdHZWjKMm5PcuuwICkn72c1SBLLhs7WBAB757Gp5HHVo4o1opKaWvQmMvmEsThG7Gq6q4CZJxnP8A9euhxjGCi3oE6spVHJKz7FxHJUbicqSM+lUyXAAyeGwPpXO6TasjZ15ShzxWl1oS7wBgnOMH6VE7HcuMkspGD2ooxU2ltYwxjcIuUHqSlnBHXackHjj0pkYeQj5uRkY9aTox5eVs35uZRSVn/mOLZKZwVLYx2FIFZTggfeBFKtaMdNi6WJhCPspL3mRL/CWJz1we9OZCrDbyAxBz6UpScoqNzOm4dFsOjBA4OVfjntSRM6gAgHkEY6ivmKLbaR6vsee/O7N6f8Etou0BiMhBkgU7zCAFxglSRjvROV00kcdOcKc3rtoTBVIJ3feJUg+maRW3sOMbsYI7V0TvyR5WdOHlrccAGK4wSkgIBoVSrMAR83PPatKtRN3jsZRbbdOS0WpeBA2kjOTyR3pYmDJswRuI/GoumryOadJyV0yTcwB2/wATEAetMOFC9TjnHp7U6dFRdjR15RSt9rf9C3Hx5eDxGRx64pkR+bplSpOT39qTSj7z2Ot1ZQfJHdfjcuwjeMjAUEn60qsAPlzy3IPbjpWbrpysjmcpQSdRb72HoVLZwRhuMfzqRuCOoJ6AVFWpzvR2Z00q0VNtpctyMsSwK5HPU9gakB3hVGQQwJrojFJWlqctSE6j9x2uOCkKCrbtqEYPfNAXJOOvPA780lH+Z7G0XKpTajuTRqNy9RyuD71Yt9hZQe5JFZcrau9yKVm7SetySOPJYZILcjParbhcL82GycYrJwk0nE3qU1G+l2JDEIyuThd4JxQSxGCxBwDz3q5Jt3mc6dSEkov1NIsjqdnOMnB71XjlBjUFiMjgn6VLtB23OrFRnUglFjphHJt6gnjA96VUDmPccDIBH1rZ4hJ3aN6dNOCUpXsZjQEOwJyTySa1LmAAliSCeMela4a133OSvi5SpuNPoZabIkVTksADz15q6sYYJ2PBye1Z1sRzJtuzHRS5Yzi/UQICoKnHOTVhUONq8DeMH196hVGnotDeVKMklT+8gkjJVDk8AkY7k45qxtYlcg5DY47/AFrBRcryRWHlUpwcZaozpARjAGOMk1amiB27c8kMfStPaR+JF2ilabuvxM3yiQWHCOOcdjVlYpEXGSV3YI9MmhNxd+5GEp3XM+l9O5UUZ4UnkHkdqueWE4xnbnJHehy6QWqOd1YOquZ+7YrLxsVsk8BaC67hxzzgiqlqtXqi/dcNFvsPRCQpIAJJH1pykt904BOOPfvUyXtFfoa1XJyjTUbWtdjArHAfI+Y5x3qx8wUDqd3U0RTspMqlyRTbfXcqHO1RkAZJFPkTCqQ2dzMQQPWuhO8PdIm4wd77lXd1ByCxUkelQzdBg4+YjI/WsHT5pJLc5oP3G1tew5mzx0wBgevNMBI3YJxgkE989qUqcYu7Mq97KEtV+hYU4Ejn7q4P0GKgR9xZehHBz2Fbus+bVHU8LBQVKD8yWNwuQDyr4J9aiDKMMT/EQM/xUpVFNXjozOkpRkov7y6HXB4JKngHqR61TDbiCDjaQAB3qI0pKN5GmLrKLUO/QuoScEjIBJBPf0qIllHOTtYj6Vm3OUOVaIm8Kc4ySuhskx/hYBtxH0z61TmcDDZ69SK0oUk7supUUZaaNnivx4vDB4QmXOPNLADscf59K5r9oS58rwnPufl2HT+Hiu7AQbTbPKUva4iNJPWJ+b1zesJ5lJGd7E471zVzIxmdgzEeYODXz+JinUaXQ/Q8ApOKaeh0Md2uFTJJIJ47cVgwSAu0gY54AI7e1cr0dmdEFGKSR1CXbM+dw2g81ixOxIJOMnIzS5dLm6caicZKzOms7rdIuSQSeBWKkxRkYnAJIwO1Unoc06S9olB/I+9f2ZJv3t25wck5J7eleV/B7x1Z+F9G1GWSULczttQZ5bPWvPlS5q6sbZljFDDRa3ufX3xd+JMGk6fJptrOBNIgyc9D6V8CeMPGNzrmoTyNMTEzE5JPJ74r3q1VUnaOrPlY5XKcYzrPQt6jrRv7mSeVyzuxIxXnT3xiVlVsDJGPSvNlKT3PqKUYxpxhHQ6S9vhnAfAZh9fwripbxpAoznZ1J7U+VWswqVk2ot6nQS3Cnljlj1IrL0izvNWu4LO1V3kllUZHb60rcqtI0o0HXqKC6nW+F/D9x4m1OGzt4mOWUbh2z3r7i+Dfwxg0Oyt7u8iH2pwrFiOR7CnFc7SiFVwoKUb35T0H4X+Abbw1pduqw4nEYJY/xV69CvlLgkkEAknqfWuiNBRld6nztfHyrWntZ7FkBfljwfLZSGXvg0B8jIyB0Jr01FyaUTz6NVOo5Tj8WnoIGO0BjnOckdsdKBk4YtgjHTvTbSV3ogVJxlpt+QwNgHGSGIIP160xEZsEk85wP61CSbd3qiITgo8y1R8W/tPSZ+ybTg+SQMdjVT9qDC3MAzzHEwCjvWyg1QVtjPh7GKdeSW6/qx8TbmcMBkhmJJqM/eJLFeRXhdbH23tZRi4vYtx4dDtycnIB70yNkj5LAs5AY+1Qk09COaNR2luhwY7VJYjacEClyI49rc8nB7jNTNt6GlNpxvFfIjQrvAGdwOeaijB3K4IPzZUmtI+6rI5YTSl7x+j/AOzLlfCqtwV80sPYZpf2b2x4TtyhG55SSD2rLCUn7VsM8oJ8sL6aM+pzM2U5Pykc+tZ+4kZyeTge1exGm2lFbnytZOPuw2OM+Jd4yeENUcOMtA2Mdv8A9dYvxQYr4O1RWwf3R3H1HYGvWwKUZtnkVqs5VIJPboflZrl2x1GZiTtaY7gO5zzWPrUrnULkY+UzMRjtXh4+/tHzKx99hpv2SaRC93k9OGyRnvWT5m5lwcYBOR39K4I6aWOqzbuy99scPgMS+cj2rId8RKxY/eGCO3pWmqOaMOZLketzpor4KVI5PJOK52GQ4CjI+YDjvSau9TsnLkkl0eh9CfBiQzeO9IbcSPMYg9h0qn8CXK+ONLGQVSQP+R7Vy4lpWRtCm1CaR+r2ns3kxg/eVAPrimWx/cxSZPCgYHpxXuYa0oK+58NW56VR6XiXWmwnPJ4AHr7VWZmZQdp7kZ7V0OqpWaHRpON5RejR+cP7STIfFlztYlN5Ab1x0qH9pMFvFdxyQFJJz1+tdeaSlKlGUlodmR3dN2el7fcfKdw+clM7t2CPWrCwNuUKMs3TFeDyvpqke4sQqlNq2pWKOw5JBY4xWvIoVANvzYOazhe9om3uqDctjAzhlDHqSCD2p10TgMnuTjvWjhFOyYuSPNGdxkORIo5BD5UDvjpUAZ90QBwSxJJ70nSdm7mk03KNRLW5+r3wJyPBOmGQ5fylyB2JqD4Fc+C9JJYkm1Rs+tTgbRlY8fMeaU3K+qPQPiBetZ+FNWuFB8xLViCOwrK+JYkk8I6vs+99lbA7GvrMuclO7R8xiYqpKKe9z8n/ABBevPrF20jk7pmJJ75rI1sn+0rhScMs5yf8a8bMXOTc5M+shhfZxWt0UlmU4CnoxHHeqakFumByQfT1rh9mlF2d7nRhqinFSa0NJXJ5GRkAH296jicHGXIUngntSc+Vci3Kik5KbWi0NCHcxU5yOSCaaZWjxhgSVBGKSlFxaWhHu00r66n33+zDoFiNJn1FowZpJy+R/DjFcD+zb8Q7TS5JNDu5QqvIChbpk1zxiua8kVmtebpckO33H6FIieXhMcN0NUbW9SeOOVGyhTII/Ovfp2avHqfL0qjlC1tLGiYw6AOoKHJYHoRSJKCMZPzAkZractbLYaqXik1sfAH7TPhSLT9Th1C1iCCdCWA6E17f8fvC+o+KNNhFhCXmgxgAdeOn+TXa6MZUuaX9eR0ZVjOevKN9EtEfmCyKSOSCOAPxr1d/hL4xEhUaQ2WbORXzVZNttK1j6CjQSgm9H3PH3jHmFUBG3GCe9evL8I/Gjg40h8jGA36n6VopSTSsazpXtyv+up5Mi/LlcAHIBr2O3+DfjKRdn9lNiRyCSOFrklpZvYjB0nTTg1oUfgvq76d430gqTsluACR3xXa+EvhB4w0nxLo13PYskFveAscHp6VliYvWUdyaiU24vY/TOxuPMs4G5IMa8n6VT01JIrK3jJG6NABn2r1cuUmmm7I+VxdGLlFN6o0RITgEgHPT/GmlCTtJPJJr02opcr1RwqnKUbrTVjjJ8uQTwCRnvTSTgAZG3AAHeopSb0RpDlabTs7W9RA2V3gkhsHA7e9MA2grwMgLz0H0rWUOaVn0OlSlGikrXHckAcknoD69qic88HueB0Fc0qST509EY0aVSUY82om8hVyP4s4PamqRyOp3EEenHWtna12tGRRxaquz0cXb1DfnnB4YHI703D/Kec7uAO9NNXSsZurJSbjuOwuMMNzE4571LGrOwAJxuOc96KT15lsXWpQUFCo79X5CRxuzKV+75nIrVijUMAMD5ga2lVunGaNKcVypw6/iEMKiTec85AA9u9X4UTcBkkBDz6VxwUIRsthVKDt2JlxtDHnOcD1xUrLiPO04bGMdRXLKKWiVjSc506aad0zPmwABwGznjpViRFfYDnGD07fWu2neVrsKrnTjdPoVkA2gnOcnBParqW0io+OdpXtwM+nvRUk4XcSaNp8s2/Uy7qHIO44zgA+ua2HgWRCA2ec806lVtpLchRcVKSfzMSOxckq7kfOOPT0FbyLyp7tgkntj1rGUnJKPU1w9Nv34q/NuV7W08oqSTywwK0nIBVs5wQCKmclJKM2SozjB8r1Y9UQcdC3IPrUO75eCAQMVE4t/CdccVyLke9tQZFVST1zkEVHLJhcBucYBPc1pGi2kluYfWHC7jG6KsrsqhxkMAAfakwdrKxIwck1ouWT5Gc9KtJz53oynKpAT5ssjHOf4h60kr5jDZzlMg+tdMabuo3MKrTfNNNdjnLuQh5BzkDHPqat3aBtrHJLHBBHX0ojzO0XsiqusXbd6GQ3Cqm45yTg08oD8/POCB6VcpLm5uphRoW0jt3MaUneOScMc+lTXKjK84DKenevSpzk4nFiJOT5X01KP7txkgggAgenHFJgBh8xJbOK2SSs0cqrqS5mthCcFvlJPHPrUgiY8NgZQEEdjVuWikzSrh3ZJS87FcBWG5eV35GalUELGy4K8kEd/ahN01dbGdGEXNQSs97kaqSUbJzkEk96t4OGJBJCkcd6iVWK0S3PWq0HOndPVdBjIVBOQVAJwe1WjGTtOSAEKkemahYp810tTloRi4NSlb5GaFEoyBwpIIPetH7P1IwdxzgUVKt0nshypJU9dbmdgEDC4GQBn1q4UYKVwOnX1p+1tFW2ZVLDucVczTlB8oJYAnHarZUuSOSemT2rWc21eRlUi1CyeiKRYsQm4DnINWGi2sjD74HA9QKzi7x03JmnGcYrbqIpDHBXIJzn1quSwPDfKMEY7Vt7BtKzscdPFp1XJq/KS8Eq2/AXGB60g3MnAwVwPrWKSbsz16rcqamlZDkOcSFjjcSQRyaUErnJICAGk6UZRepnTTjLmTHE/N6AcgfzqIkBl3c7sKc9s1knJrXZERpQT9pFWkyQsQr4OW5OewojcZx0Xccg96xm3fnR6dPDKonTvZ6CRqHxn5eoA9PpWo1uRCOCQeQR296+bdRKXJHcVRSjJSavd/cUQCfl5GMAVIRgr3IbA9vSupQu+ZM46sYzlqSxrzG/8UbEj2I7imrwcKDywXjt706bknaSOyM1CnemtWSliRkHHYfWrIjJxnjOCcdsVnSqRvZ7FucpNOa94Iicj+9gEZqxEu4DcQMtjPpWlRqzi1oZ03Z3jp1JFzkEMQCMcVbjX5QWGT6Cs7pS5Yg6SlK7sQKjLtyMbSxG3PNXFHfJBwoPtWknKSbY5WjJcq0tqMH7vkHLOTnPc1IwwoDEFgck1NGLk+WaM61Rpc0F2AEkcgkrknP8AOkRgMqRkc4z3q5RSaaRpGrCVRweklYepwQBxuHBP1pzgJs+UkDkE9qOdTi7LS4lSjTnz3uiUEFgEb7oIGe/1qMScHoByScdKwlNSiolKc21NPTt5E6thlCknackj2pkQ3q0igEhQRnv9acpqEuVsxouU5XS0WpY+0MAQ2ctjBNRkE7t5OODk1pBpK0t2dqg5O8UPaYqpYnCjGCTUe3epAOAAcgd6zipXujmpYNymnU+RMk0ipjeWBY498dzVck5Q8jaSRnvWs4SlKyWh1NR5LR26fqbtpcMSuchlK4PrWWk7xsHwQSwJI781w0qbcbSXkJuEJ8j6r1OrKkxttyHyDk989agiu1ljVQMMD+ddEabcUmrHNTjFxtHVXEjtXaYIqMQxJ47YFdPpvltKrkgYPI9R2rknjGlZrU9H2LsoxZn/AGFyoKjBA5Dd67crANrfp6fWnCo3HmS1LcnBa/CmcdFpshUf73Oe4ruUMWF24ySBj0rk9pK7HOTk+dKyPPrqw2j5jnAIOB1rpr2FWJ6A5Jz6AV00pKWt/UmalJuLXocRIFCEYG7JxnvWhLYhecfNkkg/pW8uVz905XUnyO+76drHNynKcZBJ4NTzptYhl7gD6mt6NoRaSIi3VfJNWRkMjkod3POD2PFSyDa4xg5yMn+lFSfOnJIzjV9hJ04O67j0wV2jlm5APrUG5tw4AUYII7VksOkrs2q4iysldlsEDJLE5JIHpVcXAXcDkZ4Pt603ZpNdC6eFkrX2tckmYDhOdqgE9qqMQwJ3EB1IAPalz8krProRGXtNWrIrlssDj8R0p7OC4H0AreSU1aITpSUbvcgdWVAwJOG5A709mU4GflBzj1rGN1NJ6o350opp6sqpIS/HO5QS3rilfaFU9F4B9q2xMIyaXUmlVlGSqtXtoTxtuwPRup7VVDbMgtkAEkgda54SlyXhoHLJ1ueL2LaOAdpyMOwyO3pVVXAJIzyBiumdeLjYxmoqo2viSLiyk5zyDnA9aqGTaApzluM+lc8oXaszfDSapSk+vT0EkcndnO8YIHbmoZH4OTjIOT6VcKi2sYSc3FN9T5h/aTnH/CLxqvAkBOP7x5rD/acu1i0GBNxBUZA9a9XDP905I5acY/XoSey3R+cMs5kckOSuBgjv71nTSHcX55JGR254r5qdO92tNdT72viFGHPHyNmKWPIcsQMlQB/F7VnQsTjk+3v71y3WxVOSVqm6Z0KTCXaAMAE5FZcUoDDEpAXIz6mlytI6XUaaVtzoFkDHB4O44FUI5jvV+cnBOPak72MJ0faWTdn3OkgvXRBDG7L3IPesZJcgHcQFJJHrU6p3SG7QheRsNM5O0sT3Ofes9mLeXtdthPA9KIXtqdDalFNaNl1rgMxwQcHBBqkHG4RsuOMg/wCNaNW1RySqpScW7sswBppkjUn53A57571DDKUlDR5+RgST1FKpJKPurUvDRi7KWx93/Av4YRrDBq98gaWUqUH4V6B+zv4vg13QLezkKrcWi7CDjnHSssOoylep9xOb4qdKPJTXu9z6b0+1SGCONcAlRg/1rTtEICbmGWA4New2oJNbHyWDlLmcpvcVo2DNyAgC8nt1zWlJFgKOhbkn09KtSlNq2jNJUlaM5O0fzM0DZwOcuMAe9ShiOORg81U8M7Nt6I3jiGmnHQapG4biBubJ/wAajLDK/MQelRh6WlpOxtLGuF+ZXe5YjYbTgYGRjPeoPMUq68/Kc8/0qqlNKSUjipYqM4O0dPyPhj9p+XfqEYDYaOJgpPvWZ+05c7dWzv5WEKpPbjg124hJUFy6kZBCUas0+9z40uSC2C3OSOKqzSDdtOSVO4+1fNap3R9bVTmnFvcesoA7hlYqCPSs152ypPbJx604LXUKtaNOCstL2NgTEgLuBYkHBPWslZlbDcFhgknqMUlJ812tAdONm5as3YWDPtAwGYdOxzVS3ZiyuP7wIPrQ7MKUHF81tJH6bfs4IF8H2rrklmIOe+cc1Y/Z12r4MsX5JkyTjt06Vhg580ml3Ms4xDhJKe9lqfQzDIKqcnORjvRgA4/AH69q+hlpJOLPkZSk4ttatnlnxdPl+CdTOcFoWJP93HQ0nxhyPBWpY5HlgHPf2P1rqyuUnJyl2MswpKNSnZ211PyY1l0N3cN0/euc+nPFV9WUyXtxk43OxOO/NeLi23VbZ9xSk4wSSMsquVA4AxgnvTdhYkcFQQQDWFkki3NT1S2JJVX5QCdvfA6UhydgPHIBIpqcm79SaU4zfKtEiskeB8rkHdk+1TGIodwJJdsH3qXtuR7sKiaejPbfgK27xxYEHJiUgk9+RTfgAN/juzbO1lUjA6N7f4VjiIJONztk24SlFaI/V6xmY20YUdAOT2ptkyCCNGGCihcn1GK9GhUSkmkfGqpKUbvds0F+bcXJAzyfTio925hsILbgQPU16fskmpHPOvGMZU4vTX7z81/2jJT/AMJbOeSHHyg9+eai/aBnWbxhdRs2R5xKZ6j1FdGazfIlJHbkE70U3pufPIjOAUAUqCQfSp1OxSBnCsDivnIqTV1ufTqVOMbx0Rnt5j7i787uCfSkug3IJKjaDj1qp0WrWDmUmuhmsCCxB4Y8A1TkcocZJ2sfwpKLvynPpP3pKz1BUUyhmAKh8sPX1pI51aZGBGAygkeveibSjzRKw2KlBJtX1sfqt8EgV8E6SwPW3UgH+GnfBJlk8GaMFyf9GRS39/jg/jUZe+dpz2PFzfExVdxitXoejeIrX7dpOoWh5Mto4X61uvD5iMjE53d+1e5ganJJX2ueRi6Vopx37n4yeOdLfTPEGoQSqVEd22D6ivpT9pH4ftaaq+s2sB+zXIB4H3DnmrxuElNqUdmfUYOrGVDlbu1ufGrScqQMKMginyo6ysmTgkA57V5VKlZNsIxfMuV6IcsyqM8YyCAO9UpEHARjgAnnufappOKfNJlYtc1pQRfS6LZJc/IRx6YrOjlCqctgk5JFDWqt6GThNJz6G5ZaveWNyk1rO8bbgAVOCp9a50TMrY3EsBkk96cqTcUlujooTjKHtJaH2p8Pf2i77S1t7PWpWeJWUKzHOBXxkt6QuQxDHhSe3vWEOde6jzcRhqMoucFq+x+yvhX4o+HfEEUDW+oIJZsgoTyDjj/Oa/JDRvE+paRcie0u5A6nIGeBnqa66Vdtaoyw+B5J3jK+h+2sD290FLsjhXAIPbHevzk8BftB6vpKxQavcNLCuACc5Hpmul41N8rOWrh6kZttbH6MfYraVs+UAIyQCO+T0ry/wZ8WPDviaNFiulWeUKdjkf8A1v5Vc8RC/vLRnnxxU1VtHY9ft9Ns8DMIwrkjI6U+yuYpFYrIGHAwKFFSa102H7WUk5JdS3Fp9lFg+SpAYnGOtOkl44IDbScHtntTeF1tJjoczlzp3sN/s+yJx5a8tgDHQ1TNwVOCTgkkkelbSo3SjE2p4lKUpN6voXp7RcN5Yxs4x60RXAbhnJHyke/HNTBuKSaHTkprkatYzmSYkAgjkcHvWnLLGI/Q8D611qHNGyWjOaviJ0tZK7toYxDjGSNwPGe9JM2XOAAeeD3rOdJRlZHNhqftIKtLoBHyIN+XbJJxUKuSAckgEYI9+9buk2k09TevR5qftErDyCnzMxIUnj2PamszED6jI9Kl0m1aRy0qkbNR3QMUVwzDIXOAep9KTJxg5PqT3FQk7ckzWNJzjzwFZxn7p4A6duagblmAJHPOP0rVtWtbUrklFXezLJnCPlc9ySegNMjj3YbngjOe9YVopWTOmnGDej0fQtwXQGA3zYYD8e1MijwHIUjAyQO9UpKUW0tSJVYUbRSv2NiGdt33chulRxRPhU4IJJNYyg1HltoRh6rpVW1rff5mqrDk5+Udfb1pUQoBvzggnPr7VjFzbudMa0NYSWiHoVG1dvOMZ9afGctkjA/hB71c5uKSHRqKDu9WybAKY3FW4I9j2qAEhA7EbRyfxpezbdupo6vJBuKW5Iy87lJBznB6ioiwZQxwDyR7cUOM4pwT0MJ1Yu0pLUkDFlBAHzYyR2xURkyoxkEOcgduO9Q5OKtEKXNBRUt+nlcc8gJ3Ln5TyPWqjkEtyRggEA+lauDdubY2rRlCPM92TF8EHk4B6/xelVg24FQ3BIx6qKh4eMpO+xz1ardpXu+xKxDnBwVLAkHuagLfMGUEDBwKIU5KPMXUqwUuRaf1sLKwA284PJNQu+c5JGSPxrSgo7BToNpyT3I3VdmdxIIOP61A0hBIIxtJGKIxldtvzIrSUkoNaoqzfMqgMdqkknv+FJMygMWJBbpjtXVQilZRMZwd+Vu7/IyjuPA5GcfSlYsqsVPQHn1rolBJ2tqYqommpLRfiZE4V8ZB2qTSXTM+PM3MCRnnk561tQlJSTjsczpxdObktVqUCQwADYzyB/OkUsuF7tkEGu+NNpJtnHGu2o05qxYjyQBnHIFNEqYUDgseCO1KNm7LY9GVSElHl1exbURYC5B5I6cVRLbWHOAxzinNpxumYTq2nyqJcyIyACeSPw9TVTeSA3BIPOPShwldXWxyzrSjvsy4su05YnDnGPUVUUM2Ar8HOT6HtWPIldIVOpKdROn1/AvNPGcbeQeM/WqyZBGSPlGDWcoRilc6/wB45cs0TCRV+dmJAABP16UoVdmMYK4OB2qkouKi3qOpiXTkorVMZtGPvHJfr3yKsogUKSQTnjNRGTvq9D0XCMoRcVqik0eUDcjPUd+elaahQrE85wQKidZwdktzmjScqKlF6q9zBdNp2bBtHX2rd8mNgflJAwSf5VsqyXuyJo0ZRTnHyMfJXHXby30xVjUJI7KLfIwHQE/Wo52tApW5W5orN86uD1CgADt9KZayQXUcboTsLAgj61nWrxia4Z+2jyPZFeTIH3sjcSQe3vS3CjdnoGIB/OumnVUlpozzKkJTp3k9LkCsA2Ax3GQ8mkOGKkMSRgg11VKbkk3oZRklo2dWXxGF6AKAB6Y6VU2FhjJPz9fWvhZJc6k9j2lHlkm2IFBKnblt2QRVlY8ABOWyevf2rok4tXWhjCUnKz7kKxtyOSd2Sa1oYxwOh4znvThVutTodD3eRL3n/X4kSQHAOTnsP8a1RtA2nqFyfes5ScppRXzLgoxalezKscYVWGASWGQO1XSAMMOhQdOpNdNOEZNybuPGOcHot9mR45yFPYH0xUgUK+SxxxV03yNS6nHq0lJ6dWQiOTDDggA4z39Km+VSIwxLE4z/AHq0d5JSXUuHLKTlrp+gzywVXa38ZBB68Cpz0K9WAJye9ZczSTZpU51JVIrQjSPcA3QbgAPT1q2i/N8pO3cCCe1LVyu9F2Kw7lNTVte5C0ZGATkbCCPSrcqq4Awd+4kUlNRauacyVJOSv0MtlZUHJJGASfrWn5IY4znHOAPzFL2jU9FoYVElF2Vl+JmLKwGAORyPer/2bGMAD5jg+vrWM4xbcWtC6NJJKUHqt0V33FohzgghfQ/T8asbHPvjAqqcWotWJliHfmj1/AgSCTarHG0DB9T71egVcgbieSSPTpgVSs03J6G1ZuNOLitSPyiVwMgh8ZFXxGUB25wRj6e9KcOVqzuU6cYNTa+XqZrxuoUggBTg+oq9FalwNpyMkkjvn/PrWsrrVM5aPLCXLFWb6jLSQKFByAoyT60427RkEt+XasKlGUpWTNLTUbJ6G3bXpj2/OQAQD7mqcCfKd5AxySe1cdSjaS5jrjV5YKbevY6yO/WWMEyEsSckH3rnUZoR8pyCpJA70pQamnHYqdRzlGUtFY2F1p4psKxO3Ab2z6VleTvTdnHOSfQe1bVaMPhb1M8NzSqLqjqZdVgnRN5wxHB9fauRKygKSeAwwD9Of/rVjCjyvl6lYnmjLnWi7mpJOTnBJCnGD3xUUUeExnuBk9/rW85XsorYzoQnKLlJ6XM+4dWBA4DA8DtRdW7LnGeV4xWnO5Oy0HTlzp21t0Mcxj727IOSB6U+aMoqAEjAbI9MGt5Jziknqcnu0q7i9rbFby+c85ySRmpF+YDk7sYwOn1rCcJuOj2OxzhKako6P9CqwJXnIb19KvvFn5sYKqMgVNCpFtyLnNtWtaxkklwuCQCTwe+KsFGTL4+9kMD2xVxpbpmcq7502igWO7Lk8LnH+FOwflYEh0OQfTHcVu6bguVvc54V5Tk5PbsRAdDuyeTj1pYEyDkE5Yg571FWMkrpk0lzJRj8hQD8w5HPFWioIx0LLkYqFJN8z32NG/ZySfUoeWF7nBBzz0NWiuCQckbSfyreTcoqL2NoJKLdPcphck4OHPAAp7MoPGAuOtRUi0kuhzPm0kluMGR8zkE9M+ntUMzkkLuwDgA1T1aS0N+dwi47yGSMvLbu3X1qsznYucnqeO9Zzk4ysiaMZ1VzLS/6Hxt+1PLs0u3TjATOPTmsT9qq4xBbRMpA8oqQOp5616sFy0dTmymCqYup7TSyPz9875yoBxknNZ0kjlsDIXqSO3NfLVpczUmtD7alTipPkWiSNq3beQxPy8YPoaz45idgBPAOR9O9YJNtWOvEVuSDna9jaR0jaMDIG4nGKpLMPkG7KggZFJxVtDD643ytLdamzA5YFhnGeAe1UFk2bdrEbR0HQUm7sui/dcm9PyNmG5kLbSMCMtnHeq8EmUIc5kJPI70mlYKeHc17STNkTAMBtPUAn1FZ3nAgbiTtycUO1i6bcHZrQ0POZS7E8lgB7CqaXEZKjnaSBg/5NLlVrM2nZTUorU0oGYkscFlYceuKqIzxuoBPXJB/Sq2WhwQpTldT69D6S+BnjMeGvEtsksxW1vJFQg9AexrwTTbuS0nSeJyHiIOfesasEnzLc7bKS9nJaH7maVfR3VpbzxHO5VbPqD3rwj4FeN4/Efhq1Dz/AOlW4QMCe4ruwmJ11Wp8ji8vdOrKz90+knnZgqljkABiOh9DVaFt2FzlmB6V3Rai9SKlGMlFSVkTso/vZwccd6eo4KliNxFOnByaa3HVlHllZaFMqpXfnHzEgeg9KsshI3BjsLkY9cUVab2b3Hh5Oa96NraGaQ370jDDkgHuf8KusigqeQuQfpisadaS0SKpcvO01pY/OT9p6bfr4iQ85LHJ7elZv7T0kZ8SXDKSXUIpAr2McmsPG24uHXCo5Rh0bufJcsp+RQfnJIOP61SlkXeeORyMdq+Wkkz6lVXTbixuHaRG4PBGTTPOwR3OCCD39KG2lZF0qCdRTn1JQNrjqADkD1pjNgKefkxxThd6IycE52a2N+3mQNHhiFTBJ9PrVe1dF2BxyWHJ/hrO97pGkoNyi5bI/Ur9nsbPBOnkdDkjPYf/AF6s/ARSvgjTEfr5QOfXIFGWNud2ceewjUi1FavY99DHBBAGG/KkVSxHJ2sCR7V7vsHJcyPmNb+zk9rHkHxmbb4J1AqGLKwABPsag+OGU8D37gkuMZUdT6CvSy5O7uzkrr2tWLkran5TalvkvJiOczEE+uKNR8xbic9CznJHYnrXzuKsqjS2Pt40UkuV2sU9gwQTkjn6U0SZYrghefxNc9r7jcVTs29LiLFkAnIOCwAqyMfLgncWI5olJPRbGsYxitCGLy3VlYkFM5Jq1EFBPAJYgEHpinCSjJMynSUlKLPaf2f4wvjm1Zgd7KwyOhGRj+fFdH8AbFX8aRyB+BEuQO3PWuXEzTkkzpSjKk5Lfofoxa5eJdoI4Bz/AJ/WtaKBY4wOg4BA7DFfQ4Wm5JRifFYibUk6jsUzmMEqeRkgD1qSZdoCrjDAAE9s1006CdpHJjKb3b1PzL+P7IPGFw4x98kse/PNZP7QBP8AwmF+hYgQyMMnv9K6M6g5RjZ6HrcLSUKMqfVHlayqYyxOc8ADvxXMrcukaYYE7u/avlrNOx9DShJyu5aIv3MquWDHgNjj9axJ58ljzs4JP+FXCV1ZsmcoRk3NbhctECSc46gCsmeVnV3LH5STyelFNu1kaRw0It+9oxqtmaFFyFE4JA781Xs5ds0TsTlWJGfaqlyxTitxup7NwVup+u/wOUJ4K0dscrbIR7YAqz8EFb/hCdHBO7/RUBY/xccGpy+lKT0R4GeSjGslH4v60PYeq43Hqc47etWREpAPvtIr3NHFJ9Dgpx9nT1fvM4Txv4QtPFej3FjdICzK20gc16BtAO0/xAYP4c0RxElG8VoZ0pOnU546tn46fEX4dah4P1WeKW2bynldkcjgjNfqX42+Huj+LrB4LyBfM2EqxHtxVYmjTnJNaHsYTHNy/eaI/FqWLYAxHIJAI78819D/ABP+C2t+Fbt5bazd7GRmKuB0/wA/SuF4Np36HtuajT5o62PmOfbtB38jIJPart9b+TJtKgFAyk9/pWMLxlzXujFVYyglMxHD+UyliCScZq4Y1TbuJOPmIH9aFieafNYPq6hB3epDEwAVT12jn0oQgAbucn86ynGUW3IxoVE5KnFady1HKVA4z1yT6VFFjHJ4JwPais1fTS5dHa0XfU3re5CeUDkFyASO1c7JdFfusThiMCrVCKW5vKUua8Wehad4lutNmS4trx1eE5BB6V5+JnkEID7Tldwz3PSlKmrNrY4qtODSutHc+6Php+0Zd2T29lrEpa2bCEsevuK+JVkaLyirEMCenf0rKCcnyxZDy+k6bdSOrP220DxfpPiSzW5sblXjOMbT9054zX5Y/Dj4p6l4SvoQ0zmzeQb1Gfl6f0row+Ku1Gex5eY5bKnTUoRufrlJygOTy/X1rivBXi6z8VaNbX9rcB/NUFgTyp4616GDxUW7ROOpS5oJvQ7L7QVYBiSc8AVUk3A4XJcnAz2ru5VKKcdzGNRwlZGr5zSKELZ3ZwPX2rMV5B93knGD6Z6/jQoSS916mtfEx5U57M1mQS8KfmIyD9KfagnqMFcEe9XdRtdanNh7VG4S2exWFuyjcQfvEE+lbqBdjbs5BzWc61prmWwnh2qaXTuYCrtwATgsc571akK+ZgKRnHStZ01JqTJi7N0mrrTXuVmU8Ag4Bxx2q9LCVjWQtjaTk+gom42s1saypuLcYvQz0AyQAM+pqyiN3GcsDmnVikrdTmlipVKkZSXuoSEZ25Of3mMjuTUyJyecjcAAfWuPmjKPM9zopxdRNU3Y0IUWRQCQdp4AHTNRQMxGFIBBAJ9KxlFyjZHfhZQTtJfD1NEbdpxnGR1pqbwDnluTkd6uElB+98jKUqk0nH7i3uZxGACAM8HtSISFIySwySf60lVSm0kKrTcoc0t/yE54z1HGajeQdSSNxxx2NTNt6NCwlduHIvi7CsZCRnjkEA9qYTkZIJOMZNSpxeiWoUYTdRRewok3EsWBwxJ96bGCVJOQcgGtJtyaRtUnGUXCUbr9BDIq9zhSfxqCQKQCpw4LEg9PatVRd7xPPo13CUnO1k9BpJlZQuTuyuCeuegqAKPuq23cwYjucd656lo+7LY9BRlVppx31Jy+UHUMSQSO3rVYON7EfdOCB/OmqUm9NjKFKDppvclGBwSRyAAfpURJVQQeEYsfatOaSbJq05KKb2/rUaW/2yNvGPX61BI3cAnBwPatFDmtHuY1bK1nt0I3fCNnuSQagPzFiGJ3Ljn2rWS0siKdPmagtGtxsp34BJxwST25qBhuKEc4JzjtRTi2m1odLwycnK92rIhkY4O0kYbI9qeIsr1OM1VOcU9OphiFKUkp/CtjFmVyVxwAxIHr7GtKSIjcrAE7jjPeu6jO6UorQ8zG0E0pSeiMBt+M5IbgDPb3q/IoA2AEkkEmtozUmlbQV3JKL1108jOCsoGSdwYDPrmrAKsSMEYfv0966ZycY2fUxlhlTqqUUVVkUYB5Iwxz2B70pXOASSOQc+lOtGL0Z0RxM4pcqVnv5CkKdm0kDOcjvTsAKoHBBHT0FRGEnVtfTuc65ZJzgiWNgjBgTkc89sd6r7ueWI9Qaxr0ryvfUrDVuWKjHX/MtKgHG7nJOfWq8lzGgxv7jJ9KhTdRW5TeklTneUjQiYYILgFCCSe+azF1K3jUOCMbsEDtipq05OpaJpTi3C8naNzoI1X7vcHj3rHGqs4DQQO2XKk/5xWE6llqtR1alqaVPVNm6AEOTg5GcAVxl7rmqhzb2lqTNyQo/hrns4rlOyjKUqatv1O7L29urbpAFYg9emBziuEgg/tWUi/ncytktGPujPbtWCV17z6mCST5I6oh8T6hHd2m6GMlPMIL9jisLxDYPpRS1idvs7gOoPauttuOmx14ZTcbVNTrvDlvv063bcCSGb6DvVzwftbS4QzZfzGBz0615tPFSu4MmVHml7uxHdx7WxjqePat66twyNtxnkgGvVhXi4JdTmdCabTV4nINH5Y2DIO7Jx0I7VcuIyCRwBgda7KcW/ekYUq0fZ8sN13N+LDFcqQOMkd+aSBkyADwAc+1fGRopx5Wz26c+VNTV73L0aLGM7yVGSfeliZMLnJGQQT2rSTbSj0PPw+EcZe7tcmj+YgnOA+frjtRGwCEgEsTkVvUSTSSKjTSm5rVFpMfKeeHyQe4z/KolI2gswOwkH+eKuUpKNmtio0oSqOK0Ut/Itk9wMDI61VQjbxnBcYBqNItXRvUpRjDlctEycjcCuQehxRt5OO/X8BWnM+a72OepWXK0vmgUHKLt9ce1KqlSW5+8APbipdpQ90uhGcnaWiJY0w2CCd2ck9qWNmJ285YEH3BFTUqSSV2aUpqEmupMPl9Qe/oTUif6zls8jI9M1jTqyavJGkZupUUYbCITyOcgjkds1OEA5BwDjHFdl09UyeROMotW9B8ILgdAe4qTaRtIOCSMe9ZJyTstjmhRi2oyfQfsX5A2Mg4BPbNNYEkHtjBB7+tOtNqSfQqjGCqO2/crSruXAIBJI+tXGUBYyR1IIPephJXbRpCbvyp3X5FOCDGzkgljle2P8+1atoFYAcEjPFRKSiuaK3G3G1qmupJHEm0ZBOOo9faraJn5MnAxx3NKrHlir7o05E05Re5FGqoAvfGR/hRIDhDGDgE5BrOMW1q9TlqzSS5N2MnCuFA42nJx3pyAnPOc4wT70UnJLmT1KqSaVmhiqAyp0G0EEd6kIYjIyNpIAFawlypye5c5xnaC2HGFOSWJ5AJPfPeqzu4HfAzxWMqMndP1Lw1aDhZLYuIyrsHGQx/DNUs7sEcDIwfSib5W5SFSneSg9jZ2xEFhnJYcDvWUjOGUq5KMQCQe2ecVnUgovnbKVRyTpNadzaKJkMOM8YPU1gtdSK2CSc4IraNoxjZaHZzLk9x6mpKiZQemFHsOwrOe5b5ST0J3e9TTlOceVmULtykyO4VTgcfNnC+h7/nVUszlMkkrnBNXhoaWvqc7xdpJQjt1HRwfMrdFUjj1qeKUYODgkgfSrrKTai3Y6qEk4tt2FZMFUHIKscVLvDqz7ccdPQVNOlFTutzy5YmUY2l8LdjLeNGJO4kBiAB2q3+73BdpAI4rWrUd2mGIk1FKPQxJYQhY5JXIJHrWlIFO0EDe2QQKxp1pNpS2RdSjGPvJ/EZXlAhQCRgEE9uasMmCDuyysuSfaulTSfLui44NNJxdu67FF2IZiM7ccgdqe6qckHHzE49aKcIt2l0Dmkk4x3vsVZmPlkK2NwwRn1oc4VMrx3rWN72W45SjCF2rIzmBwMAgqpOPWrDBSxAOdwzk9qyliOeyaM4V+W0Vq+iKO07lLc5IJ+tJkgsW+hNawik7JmMbwla/wAxhTCgk8sxJqNnG0HBO0nA9fWud0ru8TaEpKLj3PgP9rC4AlgXJwkZXIP51iftX3S/b44t2SiDAHoexr1MVU5aCvsYZBh1GtOSd29z4dDkHCcEbhk98d6iLgAcDK5wR3r5J2Tt0Ptq1NybS3sXUbB5UlsZJ9aoGcqM5IyRyO1OT5ndG2XyfI5WuuxuRSDanYk5OO2Kyoblh8uSFUhuO9TVjyySWoqsVJWpqzNxGDDByCHwM981TjcMRtJGXxgmtL6pWtYHDmheDOw8O6NqGu3iWVlGzuzkcDpn1r7k/Zy+Hlm2lW+uTx73uFBUMOnSuOVZ86gkdWIpRoQtUfTY+LfEXh2/8NXv2G/UrICM5HB+lfZ37T3gBGtotbtocArl9oxjFeusvUoOrHpueFleaOpU5Hstj4UScSEKoB2sMnuaqDMR28jLknH9a4Zxs7HtN87ae6dzSWTdwGP3iQR7VQQ7CCzZHcjoaSi2vQVSpFx54q7/AMjZSckELwGwCPTnrVGOTJUckZzT9m0m2Y/Wk5JW3Pq39nbxw2h+I00+aUizuyBhugbNfOOiarLpd/DexSFXgcPn0INZTtH3ludMpOqlCS0XU/dawukmiikUgk4IIrxj4M+NE8UeGdPn87NyIArqOo45zXZh66lGyPHrUIqThNWPfYJAFO5j97OT3qhG6kKoPyhAMH+KvQ5LK7PGwtNRk4J6P9DULg5wx+Y5+lUxL2ydoz+NS58i590c7qU3XSS6ak8joseASdwJx71RllB3be2QPaqU246E1VCacoOzR+aP7TDk+KpiHwULA+xI/wAaxf2krkSeLL2IklkkBB7ck9fyrqzKtKVJQvodHDNPRqUdb39T5efmQA8hyAT7+tJJnJPcEHBr512tZH19LCJPnktyvuDphc5TJ+tTCMnLEgYHQ1PU1SjGHLchXcyoTkO7EDHarYKBVy2SASMVrGOjkzilNqVob2Rft2IePPIZlyfSoLNlecKxIyPy+lRZ2uzqo11US5Vdn62/Af5PBGkgtuLQNx3HA/nU/wADE/4orSCwIb7IhUn6f0qcri7KUjzM4lOVRRWjPdY142tnkkg+lODhWQsSWOSM9691ScVfqeIqHK9XZN2PDvjvhPBd2Oue59T0Bqp8f59ngi4ReSbgHJ7HHFehg23B8mxwuTeKjTS2/Q/LHUQou5SCeWwxPtVPUJGNwxDfOsjA+ma+drQmn727Pu5UnUfPcifKNySTkEH3xUSyOrABsHIzmslC3xLQdBvlcEXVkDMGDEEEcevrVPcygSBj8ucgd/8A9VRKNnZEUZtKzRrQOu9QWBZ3AwO1ZsbSZCg4wTz6U5XSsxS9xpJf8OfZH7O2npc+IrZ4yTIVAIHWsX9mbVZ4/FqwIx3CMAZ7Eng15teMlUjK+h04maeFlJ6s/SpreQKu48FRn15604XUsiDezFtg698ivq6XP7OLjo/0PhZwppuU9UVLhMDsMDDE9OnepJ1baWOSMAlfX6UU1Lndnoya9o048q0Z+VXx+YP4uv8AjLb85P1qH4+uT4uv2DYbzyCv49q7s2klCMep7HD1F+zSlqmeAiFcFFbP8WfTNR+aBuz8ocADHtXzEk079T3pUHbljt2Ip4AEDbgO5B61EJyxKOSQST7Ck7rWQ4tStFaNGNLGWO0ZYYwPzq9IiEdx1Bx3rSNSSTYmouyl1KdmGEgdEBZACB2JHQVftYX81NhIDgDH9a2qxafMuxy0k4zjTjtc/XX4KHHgfR8DpboAP7vyipvgohXwXpLfwtbRkjv0rDL2o6ng50mq7pwdm+vY9jjYn7xxliKTeoAWQ4UkqM9vSvWxVpR952DDvmSUtwJIZTkkbwPpVZrhF3bmHA4waqN1aL2ZzuSjU5Yu1i2Hx8zOQpbknsPas97mIhPmzyN2aVOUXK0URUhKEXeV22U9X0ey1WJ4byFXWRSOR0qy10jRtufBzxk9hW/tHG0VsxwpqK5k9fzPjX4mfs26XqguNQ0RfLvXJbaB8rHtX160yyBgzAttB+hHpWs6kZS95aG+Hx9Zb6rQ/GjxR8OfEvha4kS909zGrgBlU4NfrfrfhXSdfhaC9t0ZWBOcdSa43h4yjZ6I9WeYR5k5x94/ExoQpTchJJILHsc1+h3xC/Zns79JbvQ5TFOzElQBg+lYywDi7Rd7mrxtOsuaK0PzmLMATjAVieO+K9F8VfDXxD4VllivrRxDGSRIOjf/AF6FhuR3l2NKNNyhptc82IR3UfxE/p3qV4thO9iCDgE/w8c1xtzUeV6M1k4wak9U/wACNIwpO0Z2YZQf60qkMxYsdq9D6/WqpfvFyN2ZNSkk/aU7NfkT5c4VSS/U4/hqPzNpVycZxkeuO9TZRldbhSlJLne1zRjbBSMSEO3JI6GqMMu2RGbHzMDx2PtT0lHnluaPGOVRU0vdfU+yP2cvHtxpesQaLdzk2904Vdx9fWvnDwlq50zXNMug5VUu0yR/Dg9a55RaXMjnq0ISfJbTp6n7VRlJUjcYPOc1geEL/wDtLQ9Pu2JzNEpOO/Fe3gsY2rvQ+SnhpKbUd07nUKg3lGAHlqCcdzSuxDLycMCM/WuyEpyenQyxckrQnrfr2LUDKmCC2Mc+9NRCAO4C4z6Vu+jYlKdD3JO7SL5ZWVeQOSCeeaoxSsrsDnBOOe2ayqNRs1szdTk6b5t1+JJHF+93P9wE9OpzTSxJHXnABNWq79nynFThJyjGS03L6sD2O0A5HaoQ/CRq2BnOay5Y8qS3PQhUk6luxYMYxnIHXp3qq8yZXn5eQMevfNXyySTb6mjrty91EMqrFjYcgk5HrUQO4Ft2Tvyc9qbpNvVnLyqEuR7PXQbHIUKqxJJyAR71VklAfcemTjHbFKNNXvcI4jlnyxV11NxJxtHzEjGCR3rJttzFRk5BPHp71dTDRewUsROcbyVnsdBHL5mckggED3+tVI9/yqTjP61xSoq6lb1N6deTlJPYuBwctnOVwM9se1IMYPbBGPfpUxack0XSly2alcTLNgjlMkEetKxG7PPOBgdDz0reckrvqZVqDik4N2uP3EfKOmMnFVWLBcR5wWJ+oopQXKmn1FiKV6jvHdCy4P8ACcsDjPc03c2M5xjP1FVVlyxblqTGlOLTvb9SA/eHOeCCO9WWRmk2ZIJABI71yU7yXNI6KUXCVm9GV0QkFicnIAq8sQLBASNoBrWFmrt6iSjTvCL1/wAzOILDuOxHrV9kUN1GQCeO1Q9U3HVktSdO89EZWQBwCCCAB61JNPbRK2+YY3DAB6+taxkmlczo1HyqTWhX2EZGQFyAB61nyataRuoDliSMADrW8r2i2RGVH3nJaP8AAtmLaQSBnJwfSsxtQupjtt4CUJHJ7Cplq+aQoR53eK0L7JxknoDWXKNXkA2bVQEDg9PX0qYvm1ejNZzfKrL3V0JrqYO24seARz2rHm0y85D3TBiTkgDn2ruhKz8jg5ZWahsRyXEQ5eTg+vbP+FU4tHQNulLMxY4Y9q0hOMPeerMaqnKKhsluKLyBM5lHQYx2q1HptrErOsYyMgAdqdetJyV0VQoWi+V6mTJfgKoiiZtwAGO9bQhiOBtA7HFCcknFbEKolaS1Zy/nanIfliC72IAY8njvXQsuPYkkg1288kkkrmMGuZc2/RGBHa3bgie4IywIx6e9ajAs+5mODg49Km3tI3kVUi6STjuzPawjf77s2WyRk81oEjHUjkEE960jhoRXumtSrUdJQ3bY1LaGNDsXkMOtP8wfLycZH41FNJSU+xlWnKonBbMuQzbdoBIG7t6elVVIGAAfvZI9adSlGSTSMkpxk4vYisyseq3DOw3sylfYf/rp01sZnTEhEoOQ3p9a5MRRclFrdHoU6sYNqT1JNRCJfWU1vxM0qhgP4hnv+FTWdgqS/aZpGaSMkgnt64rjrxajyQVjpUlUhd7PQpeLYBc2MVyQA0GVb3yKv+IABpU/zAAEEAdTVUKKhHlj1NKdWU1yNf0ir4MkdtORXx8srDB6gVW8ISf6CCQeZWH1rz6lOSm7bFNSSUup3Mm3ld3ykAgnvxVS5lYLkNhQSSD2x1raMrwTk9jas2lzNabmZcqGJwOgAz60x5fMXPIIBGD2r06N0+V7HBiKykkktS/AuRuIHykZx39qVcbgASvzZGO9fHwi5avY7aVKcYpS+yy5GfvehODntSRIzAuc5ODg9sVrFt2XUxxVSN3TS91lnacADoFAx6U5VLAEnBOMj19a7LRvyz2IqRvCE4aW3HxneAACM4DY6j61IuUIxwWbkDvgUptqN0zpoQiptt2TD7uOTjdkkdvanBTuUqec4GfequrJyGpRqtdkTD7xIJIJBHtSrg7R3YkA9xXP7NxV1sbYN06kpSkOLLlc5BbCn3peQxIxnpn1pwT5bt7mlRqTbtsKuNuRnCqDk09I/lIJyXGCPXFW1rvojkjV5aTlbVgmWI5O4nORUypjgnJBBBFXOaSuznwteak5LR6FyEcYb7vQg1NA2cEE45AB/WsalRykrnZVbSdno+pOIwzLlskfNnHSmKwUKWyNqkjPcCiNoxXcSpU5SVVrYe0eSc8qcDn09aeu04bkbcAD+QqIVbqy0LpyaVpq6bFmi3KobJAweO+KezDjax4bBHpWcU3JJ7mdShC/PF6q+g21GJNwJO9x+J9as2/3j8o4wcHtnrW9WcOa7OajCU6aS2W5oiIBlIBIUnJHenRgh1cc+ornqqTjruzuj7iuhphySduCAAcepq4rAp/wLHPaqb0UWjlWFlGXPzehSW33DJOBwR+dSvIoIQMfmOce9RByjq9y8Y5KKp7+ZVbYvCnOfSoZXy4zzhhyfSqak1zMypRdN+zeqZWdVwFJOWPB9M+tJlepOeSQTWsZNvm6ipxXO4pa9yBmzs2MRtc5HrSOcvjOR0z6ehHvTSTnzHTSi5Lki9R8bHOGP8IGKrySbSwAIAIAI7evpUzldKVrEUKSpycJO7/zHEbScYGCMY9ajDAbsE5OAQPf1rSMnJJPYj6vyRagJuYsx6AjioQwKqSSW6kVVRRlHlS1Rng5uKc++wokcbWZiSF289u1V9+3jJP3j9RXNKL5vU6cLJSptydmWA+0jnA6iqHmKDg54bqe1aezaTizpq1Kbikt/Mv+ewUck8gZ9RWS8hYblyMZBH8q2jSbe+x4bkoNOXUvyXDh1wcZOQT2rK8/JG9iQDjJ9qTptR5JbHTVqxjNPq0aqucE56c4PbNZyTMTHliQWHTv9axc0mo9j0ML71O7Xf5Ftz5hVuQdxVuecCot5zwwKgnOO1XCTbvE5o4ectG73IztYgHAEbYGe3pSyOCcDAG1gfeqppPVm8/3S53uQPyAST1IxTd5CjI6n861U7WUTFSdVJVNmU3TBODjeMYFMeQqhHJJBOB3PfFKompK+xhTp3qOKRTbAJUkk4IA9DUbHPzrg4ODn/PetZcvNpuVHFqnTbeq2K00gQKGHy4IOO+KguBxkk8tya1p2qPmZxVqsuVTXX+kfmn+1Zdbtfl2hslCT7msn9qm5c+JZsZ2qwJA611ZrC+HUUdXDlCTcnNbs+PnkYMBv3EDJBqsJP3gOTxhfcV8nOFkm9z7TD86fK1ZM0UwcZYk8scfyqGBzyS5AZgAD2pctmuXqdk6UXFJO1i8hZsOGJycnPb2qZCuUZiNvII9TSjZu5hJOLkkWrNd8qb3JGRnPc+1EC5uY3BJy6j2I4pNNq1x4aclOKtdbH6//s9xZ8EaWd+H8jJz0GcVP8BwYfBmljaRGYBke+OlcuAoqMm1rcx4khHnu1a2n3no3xC8OQ+I/DGo2Eoywgdk9c44ArvSisiBsH5gSOx9q+pwkoUpKb6ny+Jv7NSS0R+IHjHSJdG1i7spUK+VMw5+vFfSn7Tfgk6VrkmqImIrn5iQOnesMfly5lUhsz2svzlSp8rWqPjvc6dwR1A9KWXglduCB0+teSotvle563tFZN9rjkuXGCzEHdgEjgVTj3Kx5Jy2OadSmlZSepjCcE3JLY1jckyAK33xjms6EsUXJOd5xWXK9UapqSTb+R9l/sy/EP8AsjXToU1xthuxiMHpk9RXyj4d1i60PVbTULVsPbXSsSc889Kzl7tnEyr4eGIfJN6rsfvFaXQmihYH5WUEH/GvKvhX4ri8TeGbC6SUsxgUN65xXoUMb7ZOMWfLTy2VCXvK57KHGcFuRwAKo5UnJbLDBAHaux1Faz3FKpKMVFpP+upcnk/d7iC28HI9azrmVvLI3HGCcdh61VJPmtYwq05xXOnqflr+0XdZ8YXoyAokPHoe+azfj/KsnjC+GSUFycE+vvXTmlklF7nrZDUjOj8z59WTed7sfu4BHaqrSZLqmTkcivnuZO1kfQVJNNJrfqaUcrBDk5wxBPc+1VUHAyT7n1qFG8kkVVUmkkjQWRThSQeBgeoqgNoKdASpwB3q6lrKxnUqKMeaWx0NmgM0B4IaVVOe2etV7BnSeAnjEqnPpz1qLtK/QcHepHldkj9f/guHXwTpT7uPKVQB2wBin/CNgvhHSlU8rboQvrx/OjJ2uW7PFzxznU5V01+R6+ThEOTnBJFVGk3A7Sd3TntXttuOj2ZxQV4KbV7Hg/7QjsfBsvy4UyHIPqBx+VVf2iJdvgnHJJmIw3Q//qr1cGr0nJbnnK6xMYvT0Py4uuLqYbjgv19KiunAuZCckFhx6V8xXTvzM+09hNU7xfm/MiiYM4BJ+8SM96QS/KiYxkkE+ma5lJy2KpcsYqT0X+ZYO0428LyTjtmq5l5+UE+WCeOhxVpaaMJTfJzPbsaCZ3Ko+6OMn1qqLraA20jdkg+lZpNo2co8lpbM+n/2bWdvGYUZP7o5B/h5/wAKT9mJlfxjM5Y7Wt8gntjrWdRpSSZm4RjQcL6n6hQhfLRQ546Gq8FwrJEScMduS1evhk4xTTPk5VlOo4yT8vMsmQIjE5zHyCe9ULiQtG68biGwTXoKilJNbs5lJwckndLWx+U3x+ulPi69GRvVmAI7c1g/Hq4z4z1Qhgc3DZB6jnn866M3p2aUtj3OH68ZU+VbvU8LmmGWLP34x2+lZxJZAwAIDEAjt714EKNnZ7Hr+0k24S6l7zkaRWVmDDAJ7H61SWbj5gQA/wCdY8rSaktClSi6iUXqjeUebGy8fNwD6Gp9IhE7qAS3zEgCs1JRdyqtSKfJYLdCrxsCQVcc/TFdiNKDugXA3OQAfX0NOtVjJ6mtCjVU1N/Cz9Rfg2MeDdHJGAbOPP8AtYArS+EdsY/B2kxnJAt0wT9BxWuXQtBxR4Gb0pQr+0kcx8cfE+oeFtCiutOlMbuWG4d8AZFYv7SVhLP4MMu45jlYKOw719PBp0mrao8WhUjUrpTV0z4yk/aL8YROy/aTtGQoJ4r5wvhslfOQFY9e/NeR7W/vJ7n0FfLaUbSlG59GSftN+LAAPtbH7oAz+g+navlKSYoduBncc5qo4ucJR5Dg/s2nWm5uLs9PQ+pl/aj8VJLgkEgjLDv+FfJuA8gK5BTJJPfms6mKc6bU1YTymFKo2rv/ACPs3T/2nvEk01ussSbpJVBLHjrz/nFfHsNwsTwuoO8OCPqDWdOu4waTPRhg6CUZcp+43hPVG1nSLS+d8ebbqxI/2sV5l8B/EsWteCtJ/eAzRxqsgzyCOgrOjVU002efWpyhVaTuuh7pMqHGF3DgAHoDUjEsw+X5Rx7ivSo4a65kzzpylFuKW/Q4rxH4L0rxDbvBfWsbrIhB3AflXa7gpGedzZ+uOxrVOUpPQzlQnSiqiemh+Unx1+E//CFX4urJCLK4JYZ5Cc96+pv2pxajwxEz7RPJIAM9hnBrohgfbQcnuexQzOMpKg9ep+Xhl/eEFhu5+hJ9Kp3D/vmKDJ8wgZ+teJOioWS3PWwtJxTbVlfTzFd2JAyQ44JPeoDIvmcsSd2eT1oU4tXkty3RlyNSfU0oiRt+bLBiSP7tVoZDtyMA7gSBU0ou7b2IhOKhGaVrHQWU4juYCW2hZASfSs212STQuVDKsi7lHfnpWM03HU6lioKSS1bP2g+Ek73Pg3RJZH/efZEUj8OoqD4QItv4N0WF8hxaoSPQ4GBTyqFo8reh85nFGE63NDc9hADKoYggsQAe1QKQB1IIYEEdq9qnSfNe9mzyalrONr/5l0NtAUthsAYPb3rMMm45JJIycf4VtCje829CFXbtTi/eW3zLYk+YnksWJPvVISlVZmbAXcee3rWsqKaSW5gquvLUei/r8TQ37WQNklmBHtWd5/C44bnkdhUUqTmrNbHTHFOWr26GnI5BBDHH8qyXumO0c9Tn3ropUZKfK9jjxcoRV4eVySWZlJTJCEfmT/hWVNIGPzOScggntWqpLntLcqdepGPNvFfeapn2j5WxuwfpWO93FFHgMCMEjHb1rGjTV3FkOs2lJ6MvRuM/O2ctwBWH/acW9CjbiMkhec11yhdanNGTdW71/I7OzZTJgOMDGR9a5y31OTgxwsecAY6Z/Kud4blSbZvh6Mo1U09H07HehgCrE8bhgCuQOoam+1I4goYjO4/d965KtC6smehSfI7Nats7HzAF+Y4y3SuTjj1G4+aW6KA87VrP2fI7PU0pwjKdpaHSy3IAPzjqec9KwBpTu2JJ3bkkrn7wqpe5ZIucOZ8kn8zSXULQld8y7lxkA1Bb6RZwhQqZHJOR05rmkm00wU25KLY3+2YVO1UZyMkADqT61tR2sMYwqAAjJz2/+vTqydk1sial7pMyW1G+f5LXTzubALscZP61tsSGzuPXjFWr1Gl0I54Sg0nqYhXX5AoeSNd2fu9q6ESAhQ/U8g+lZxhd8zRVWMYRSezOcj0m9m5ub9yu7AVePzroc4LEHg5Fb6NppkVIckbtadDnxodoNjSKWdcgZ7GtpmIQnrg8k9qUWoyvJms4OSTprYofYbZFz5K7c4q1vUoq5J57+tKS3/lQp0p393ff/MpmJIhkDAVckAdaXc3rnAAA/wAaXM000t+hLk4U3F6kJ25TfxuJwKY5Oc9cEEexFb1aLvbv+Bz0IxST3RWlj8wbc9WIIHY5pshcsAGBU5Ix2renFW5o7ESkpTSiuuhQ24bbkBV6+9WHIKgsBu3YGO/SiLTVtmbzhz3m9EymY/lUK+CAdw9+OatgAsrEkkHGPWtJVJJuT1OLC0ZSShfQypo5NvGQpGKvEKHwWOwFd3t611RrWjzNFQw/L776/hYxdrBdp5LKSM9RitPC54JBOfwrSGIera1MqUY1GkmYjDawUgkjPNX5E2qFGSfftVVKkXHQwnT5VaPfUzChYY3Hgjk1Yc8MoU5Az7CiFRtWuVCioaRdn+hV8ot5eScDnJ/z61MvzEZyBngetVCMm047EVvZJqNtboVY8r8xOU+bPbJ64p6OF2cnDHGB2qqlScfejsjow7glzWs+nyLKR5KAMCzKBk9sVLAVDpx0OQfSsHJRjdl87UlFrd6gqyL5a9iT07Vp5G5W55yPpXC6iUW5LVnfCny1eaLtoc7rw/4l0vdguQKn15E/su6IOAImyT2HrW9JtLkRzQlOLatqznfCMgEU6kH5Z+c/Sq3hUlVlAcgeZ09a8+pQtJXZ0YjFOyilrY7SaVnHP3SDgU2RlYDGfmAJHpzVUVFu0jmnXnJNN6WKUr7TnkHI4FEqbt2P73GP1rso8vMotaDlGco+67Jm2qY2t/d5+ma0YoiR164yMda+YhFOd76Ho1OXl5FrJXIETbgjO1QSQO9a0UO4JtwcuCMd61p4hNtM5q1BKEU3dMrRqA20Ak9QT1FaSwZODkEdCO9FWV5WZ0t8lFQlp2KaIxyqgtjGD71pxQEuzF+QccVTvGKaRx4dTcmov1KCJgr1AByc/wAhXQG23HPPzDJI7VkqibtLc7bWnzR2OfkzuQBfuuCD6VtC256EgsQM+1dLqJJRa1RxUaFSU5cu3QywMBeDwCfpWm9rtUYwSMZz60oTcFaK3OipSUqf94oxg5zux0IBqQcHBU4yORUzhZJtGcq8lpHa1iRCSAVwDTlKsXHVi2AR2xU0pJOy1K9qrJNeVx6McAdB1x60gIDE5Ppj+ddEk2+YyoU5QXsGtO48ScENyeBx3qPcN+3BGSOR2qXaNktzoVHnXJJ/Mto5O7BJDNz61VDMrJzgs3JHel7LWz3OR4mNOPIrqz1NGP8AhOSMnnHeolkXGWJwrZJHU05WaSZo4xnHne2pcViDnJ2k9R29qjjYGPPOCe3esWuVWZzTrqMFbY14pQnUnGQPxrPQnKYBwWBFc0oNpyR6GHxineTVnsavmLkEEhip4HQiqBbcQefkZsZ7UUneLc1oaRqO3JBXbLjyEZOcngDPaqG4lTkkbck1q5xlZNCr0lyqK3ehWdmJI55HXv8AWoXJ3IpBzjcST19hWlSKmtOhxy5qcVBq4pcFcbsHk5HeqkjFeckjnArKVK8uaL+Q+eSadR3HPMuQuc+hH0qgzEsCCNpx0610cicddwpRmpJvTy7loTRnOAcupCn0NU0kYSL1yv3ge/vWdTmUb3uzehUg5NPYtGVQSvOQBn3qmZA5DjORgGtYxXJrueepNT5o6pE28Mp5OVByfWqRk5O5jzgADvUrf2lj03S9vTUmrNFrcowc89CPSqBdlwQch8rnuK0q3TckcVaMJS5UtU7hvUhjjk5I/CoGb5s5OSO/61nHVKSFdNtVdh5bG5QM5Ix7VBICQeRyOR610R5XFNrqYU1KnJcr0YhBUpuYYzmgsGAwBkE4HrUVErtpHZUpJVIqbJY3IJVVI2AHn2pqE56Zbdgf/WolTi2pLc2nNwSjFeha3j5RtPzjkjtUBdSuRk4PU+9RThZc3W4pwqq0dkPEmQEbk55B7c8VDI3Kkc/MSR6+1FRqSdnuPD0Z0m4PVCSnovoSSfU1XZ9zMVzgjnnr61UI3iovVszoOk2lJ69hrtuwRzlu1V5WbaQpyMYIHan7JXtcVP8Ad1FNrToMDqQQRycjFQF8bQeCSST6gda35YqSkyHiZ8ji46NkVwyKqg5PYkdaguNzJI2QNy4AHQY71NOLjPTZmWLn7Wi4SVrbeZ+Uv7UUu7xVcB2B2sASe+TWf+0vIJ/Fl3vckCZgQf4s9DXTnEY04Jt9Du4OqOrSdo2eup8rNIFd3RiTkHjvTNpU+WpJXd1NfKT5U7J6H18XPkTvqTLcEEAEbt/IFCKq7Q2Qwzj39KFC7aRNZKqk4rU17SbdtLgkkn8KzFYwop3k45JHcVSoty5Uxqpypzau9jtdORZbu13EEecgAHbmqWhyM95BuIIaRS34n/CsZpdAwMOaoop6r9T9nfgvbeT4N0iPB2m1UEfh6+tafwkKr4R0pcYIgTPvxRlNNctnqeVxCpym0noj1sI6IiqxO8gEemKjL7TuJB4Bwe9evToNK6fyPM9rGEYwnpdNHiPx18IjxL4SuHjiBls1dlJHXI5Few30EV9a3NrMu6OeBlYfUYr0qWISShLY8+nh50JqpHXax+GGrWclpeSwyAgiUggjpjpXrHx28Ky+GvFd+BEVt5Z2ce/rXHmOCnCV47M+vwOLg4OUN1ueIAjJ+Y5GQAegqHfvw38LAYHpXz7s9JbnX7RKXKloTRyAklm/1ZAOO3vVcuykkMSBnJrZpJJLY51yualbU2E2kRhWBY4JP9axxduuHiYgKpG31olFpXNYp3dVx1dkfef7L3jz+z7qTw9d3J2SndGG/LH0r488GeKrnQtbsdSjkIMM6s4XuB1FcNlC7ijSpFYiPspfF3/Q/c6OUNtdSSXAJBrzz4eeJ4vE/h6wvkkDM8AOQeeMcV7lLENpJo+NlhlTl7P7Wv3HoEzlEc5J3A4A9aZPny3Ygc9j3+td1BPnUbClCMYupN6WPya+O02PGOpMGJj80gZrM+Ok4bxjqeCDuuCQoPQ5Oa6c7UWrI6MgTUPaKOn4HivmZcbHIG/nFUxMQ3fA4B96+ahUbjZn1Naq21dXRro+7c6sS3JI9KzoZF2Bgckvgkd/rWUnbU1pTaaj0ZrxAAruJ9BkdKoCU7FbeR83JPet1G7uzPEKUUndHU2MZNzEpJG+dBke57VBpdwZZ4WBJG8E/WstlrsOhTTmpxeh+xHwoXHhHTAW6WqkY75Aq38Lk2+E9H3KFBskAI7cDrWmWUvdufO5rUi6rTXX8j0dACxJOARyfWpliyNuBgHqK9ipO8UmrHO+Vz9qvuPm39o4geEVUMSWlJwO2Mc/jUf7TMjJ4QhTgBJHC4/iJxmu/DRXspJPc8zLqsp45OcdLH5dXSt5zHcRh+p7801stI+4EndkkfWvnq8mmoo+6+s03U5ZrUZvZiPLIJTg1Gqg4SNiDvBz61hFtaPYWLoxn7q0ZOkpDAkElj3qzHGCN+SWXnjvUGlGlKMVfzK/YEjGGPFPkiKoWwVxyAaqNm7MqlGKSiz6a/ZhJbxe+8/KsYHToCRnNS/sr24m8VzNvGAgzntzWdamlJKTCvUbpSaifpejgInJyOoPanxwZTzGYkkgZPevcopJWvufIK9RNxezVv1Kk5ZoWVCcsCAB3H6VPKvloWyQwBYEdsd/wrehNJqx59bBXjzN2vf7j8iPjuv/ABWmo4yR9oYnHTrVr44sD4w1Bj1M7EEe9b5rPmVm7WPcyTCKGHU0uZHgEsiRKQM8sBSTjdgyHI+7mvmnJJWR7tKXNVTXa1isHBb5gducH3qXYD5aD72Sw9xVxqyT03NIUYwk5SOq8PSraXKMBkuRzWXpVwsNxEzE/fBGe1RWvUT5jDC8qjKSdz3WIJ5AmwC20nHvVKymFwIlDZXAOB7Vy+zSVz1YObUYQfU/VT4WxKvg/S/lJ/0UY/2uBT/hgGj8IaUW6fZEwT647VplSbSbPls4xMo1JWVncofFTQP7d8H6paqgaVYC6j/GvQr1Y5op4iC0coIII6ivq6acJcyejPCqTUXGaWq1Pwp8Uaa+nahcWkiYeKZ1Oe1fSH7RvgGbQNbutSjixZ3WSCo6ZNYY6hr7SG7Prctx7rR1VrHxlJDlizDG04HrU92h27gSHXOfavMmmpWT1NcTUcWqj2KRQKVKsN4HU98dqjZ8KvOQTg57k1m3N6M1m4yj7VjCQrKFbOGJJNV3YHnOCQVA9aSso2W7ZjzSjNSW1tEz6b+BXxf/AOENv47S+lJ0+VypyeF9xXyolx5MnySYUHOP5YqHBKTcehy4nDOsrT0bvsfuhonxH8Na1ZQ3Vvq0Tb+oZgCM9K/E618baxphX7LqLopAUAH7voRW9KpKzktkcEculKMeZ2136n7Z6v8AEPw1pMEktzqce6PJAVh0OP1r8P8AVfiTqNyojvdcLK2QSzdf1r06NenCN5PQ56mVTdX2cZbn0/8AH/4vxeMLySysXLWcYwmDwa+JbzxnpasHkvQ7YJYKenHX61vVzBKPLBWR00cv+q3qLWWx00k7fIAAFbn6157/AMJpaSZEFvcSfOQg2Hn6V5iXMk5rc9XlnBJxerPQY5QSCSR1AzXno17Urlf9G0xwsoYAucH3rNNzTiuhvKtyT5k9z0gyDPlJxlsk15uJPF93JhGiiQ4Ic5JxWEk4q03qyasVOXItUnc908F6bLq/iLSbGMAie7TJHfB717J+yn8KNe1fX4PE+p6jI1vZuDEMcEkg5HvXLOopSdOGrDE1FCkqs42tsfqF4Utk03QrC3GAYIUyeOOBW1aaJBFDFG8rMYwOD0FevgsPFRcXufL1avtHdKz7mh/aFsvzNKpXr249qiGl26MrLGCQc4x+teo4qUbPoc9KCu5J7EB1S33uFLEbgAR9O1X1jSBQUA+RgwJHQ0k27Qe5z16EZP2k2ZLapIW+S2YgEEZ7mtQIuw7cDgjNdVObaSktRfUIpusm3B9P1Mdp79yPLjA3cEHqPWtZwAQOPvDp61pKD9pdPQmvNumlJeS8jFEN9IQZJ8MTyB2FaTFhxkgsTya6KdGTV+p46i5Tu/mZCWDbsyXDE7xxk9K11I4ycDbg/hVVadmmz1FOMKbs9X+Bm/YLYFPMHzcEkdRz/WrpC7jk/KoAHvmumnRindnmzx03JwaT03GRQRowSNQFGDj1qVcgHggbgKiKjJJW1KVX2c0lI0onjDxjGCCOlVlYqVJGe4PpWEqSTaWrR6dSpJpRbVvQ2Dt+Qj1wRWes+4L1B3YOe+fSs1CSjaxmq8YpxZqRZ2qCcgE8+ppIIywTHGcA1lUV5X6kUm6cEk/ddmXVyvl7SSAQCR3qcIwwoJAXJBHb6V51PmkrX2PalRatJLcmjwOBkAdu2aQMVIwxAU4z/ez60OF2ylFNJy08h7MzDPPIPHrSNjcMdOcioire8lsZWUp8rehErEckjHUj0pg3EfLgbjgg+9aKE3FJvQuEoqF0tL/eOabg/wB5gCAe9Uz8pOCQAcZ9+1VZJpt6GXNZOmlfValvzsEKW4Unkd81QMgAyc4JPXv6VM6aTTNI1pwk4SWvQnkuPmQ8kEkYPasxpCGAyxUtg+taugmtDgvOzb0V9fMvtKD0JBRc/SqRPGdxGTk471jvHke1ztozW8ncnErZ3kkKOR7VWkmCgE5GMYx2xWtNqUbJaE4is4QUJPQlkYAIyglWBOPSqqtlkU8nPHtXRFX1ZrSlKnTV9hz9ACD1yKu4WSMKBgq+Cfw61hRbc7JHn4i0KdorV/gZQ8wbT97gZPYetX3t2AwAQeeOzV088ZO0kdMME+RVYvUrA42kEYbafpUqwEq2DkY5NKaXLaLOSgpOf6FaVSVOeO4xT2jPTLHGc571NCE9GbVo8ybbv/wDKMoUrwSpwwPrUMgIlLYI5x9OK9J0m43keRhXz+69CMSttAZgck5P8qdBA0rq20lNxHsD2p4nDwTU7mkak17tPd9SsyK7gDO4knPpW5a6SzsmOpODgVTlCEWk7G3sakpJyW+5hEbM5YHkbffFdzP4dEkYUcDABOOeeuKzhiktGrgsHeouSWpxS/vDuOeHzg9/Wu/Tw3HmLBJIwfpjsax+sQbsnsdCwlanVVrNO79GcHuC4wDkE49zXa3Ph6KMZAIYE5x2z1qlWV72Kq0Kk5Jw26nIw3W5QW7ZIx2HerLWEkEyoM5DNgL39BROFNtSSJUpqCpzdinqy7tMue58okDH3vajUVK2dxGRyYsD2wKzpwbkmnoOdaMpqDWqOH8LSL5s43AkNk56D2pvhhds1yAp4dQCa461G8kmdbqyai5fEtDvSpcKV9DkHtzUseVADkHrnHejlTd0ZSpJy55P5FVkxktxz271ZZd4GfvHAwOg/lVU3GSt2MZ4uMKib0TOyitFXpnHv2qysoEeBnDqevavnKMpTdktD1KmH5ZOpJ3aEQCMbiOFIxjvVKeUhQGYgEkcV3qk4x5Tz1VjKSvoXWmQNuwQDkkeuOtYuZixwxI3Z+nFOEE42eiMq1X3eZO7vsb8NxED90jDZNYcTvnOCOMkHvVTopWincmlKVRqcV6nYecpBKtyQAM9sCsoO0YXc2Q7D8PrXHOChLl6mlSCqTv0f6GvFMBtL/xkgEdqyEk+ZQTkgggelVKCl717M71UjTlZ/DoaVzIpGFzhmz9eOtZshJUoWO48Z9K3owk5XkclTHLldlpchlkUkYySrYqHJ3E4wDwT61qr8uppSgpXc3ZkwcFlGSBuGTVdQQvBJw3JPb6Uvebs3uVGSj7i2sXWIPzAkkMc+9Vkc+/y4AFTRvCKTV2Z/W6tSL5VaxOduNu7IJ6Cq4PQ9cMQQf51vThJ2T3OeWIg1Ll0S/UslvmVeu/kD0xVfzDkKSMjnIrOcLNuK1OnDwc4Oqle25ejk+bnqDkg9/8AIpkLs27kBeMZ6jnmueN7xcio1OeUlDZ2Lscm75ACCGzn1FRINu0sTlckj1rWdr80dbHNJSceSX4mkuDgZOV49jmoUnUn5M5AHFYRk7aLU7MS3JWpvRWLRcAHYf4iSfSqjSMpPPLsD7GokmotSOOjjJRajs+5aZ/x3ADIqrjjOcKBgAetXGKhF2N/rcpzSZJIysuBkjeQAe2fSqrkFlJ+9uIAHarpK2nYupVbUoNWT6ibcjGc7W6HvUTuWBweSCa3XNzc0tGctSvGC5UtF+RSkjG9cdOQcVKoc7FPC7sk/WocnCbT2OnC0oVqfOviRSLsV9dzZBHapm4IBAPzE8d6ceRNSkecqtSUXGTs7lQ8Zx6kCnsR0zhumfSrbbabR2xjKMLUkQfdwpJySeabKqkEdSG4x/Oj2KfUmGIlyKS6MQEHIJycDr25qDDAgEkEkLn09Kvli43RTrJ2jJaN7jWyThckqp60YyeOpJyTWdKa5EmrNMzxEGpc1vdBpCuTkFQCTnvQRkLwRuJ4olByWprBXlFJ2IS68KwHUHnt6Ukqq2OnbOe/StKMVJXSNatH2c+dO7ZLGzMA2c5wRjoKrBs4wSAvNRUg4qyOWE5U06ktVsXw+7CEEcg8d/SqayOSrqwGMqPb61MqslHke5NHEuc27bFp5NpAK5IIHP8ASqjuSMknIGAa0jHmj7y1Or6xFWV9HuRswOSOCMnPpUTcFFPAO7NWktpPQ5Y1o07O2vQiLMWH4AkdsUuNvVs5zyO1ZRquUWorQmU4RV2m3crGUggMTgYBPrmnOu8LtGWIJANdFKlG129xc8nHkb8ynK+Mls4RWPPfA6fjU7xFx5ZUENkE+lOnUbinLSxhiIVeZ31XQ/IP9oaTzfGF6ck5lYHHt0r7G8ffsz6d4w1GfUpLkr5kjOQO/SnmlWM7RhsfRcOVo0aF60rX6H5RlTlcjJAJ+uK/Qqf9je3kfdBqbqz+33cdhXgVKN43S1PfeIpU4qKktT87ycYIBIKjJB6V9+N+xs4PGqMCG6EHBPrWE4dUtC4YilBJKWh8ChmaKMLkhCcg9ga+95P2N7x8KmpsNpLMQOvtWlK/PzrYiShUvNNP18j4p8NyN/aVhjkvMoweN2CBX27p/wCyJfWN7aTDUi3kzBjgdcGsakHJcy6muHrU6ddVuZWR9w/DBDF4Z0zcx5t1JHYDAxWz4T0uXSdLs7OT/WQRhGz6AcVvgaUowTaPn8XXc8RJv4GdtEzMp3AnkkE/pUYc7SQSXDZUDt9K9VKT0R5sKrU3NK6Q5WG0HawG3nHt3py4JCjP3gMCjmak2tblyVqMU3712fH37T/gkarorazbxbrmFMMccivqTxRoEXiHR7rTbpQVuIWUkjpmu3DVlUhyPQ58Jinh6qk1e+/Q/ByYSwyFG3AqxVj/AHTX35rP7JFzdXk8tvqAEE0rMqr/AA814eIpJ1Nj69cs4pp6XufAaNKRtViVAH4H1r7vh/Y/usYOosdwIUemK5XDlaa3Oqc4VKfJc+FHTcFf5g2ST7+tfecX7IlzEyA6mxxkEY6f/Xog5O8rXuc08PTcYxU9Fr6nwoEaMIVyd3TFffsf7IrBsm+KqDwRSjBydktTbnhCKtJWH/sq/EArFL4avZD50UgMQJ+8D0Ndf4M/Zt1DwrrdjrNnqbiS1mDMAOHXuK5YUJQqe0T+RpiacK0OVWbWzPsCaXdbzEsQHiZlPZfSrcFjI1qIpPvNHtbHbI5xXuYefMlJHxmMvRpulLVv9T8evjSRL4t1RgxG26Y89q+1vF37MNt4m1e41Ka+YNLIzBQOnOea2zapGT54nZw9GcaCpzl6H5bF33BM5VSM57Z71+iv/DH+m8H+0HwM5z15NeLytO8T25Ok4qlN6Pc/O2BNp3p9wvkntX6RW37IeiqPnu5d24Ag96qq5WTaNqXsIPl5tj870jIVQ3GWJ+tfpLD+yH4eTaftkpBIYKM4HuKORxaurmNTEUXLlcz8+tEUrqNkChJFwhKr9a/Re0/ZR0W2mimW4kDI6sDnng85pyhKUbJFQrUIVFUbtFH0Z8MFVPC+lKeQlsgP1xXWeGtJTRdNtLFc/wCj4AJ78DrWmAi4x1R4mOqOVXmp69jbX5UJzg+oqdkRVzuwASSfWvQq07yu9TljeUVGSs935Hyl+1BI0fhJV4JUOUB/vV658Q/AVp47sFsb5mVIyxUqeVyO1dqqRjCyOTAxdTFObdoo/GJmZ5CjEqQxxnsDX6LN+yl4c3xu07AbuAM4X/8AXXhVqTc2fZqtTjaSa8z86DI27jIyOp9+1fo8f2UfCyjDzSMxIwB1HPXrWEad1c1liKLd2z87oZSirhTnPGK/Q4fspeHIj+7uJGVM5HcfrVexbWhFDFU4+65H55yEBQpBJY5GO3rX6IN+yt4adAy3TjooB7+vepUNVFrUyWITdk7I8X/ZVUN4pviAPljjwPXJr6n+HHwVsPh/qDajZzlnkADA9sHis6+Fm6ia6Dx9amsO0pXfY+jtoKxgZI6g/wCNRidFUKzDgdz+tejT9okpNbHytN052UXZkMyhUcdRzgntjmoZ72DysGUHnGc9fp9a9LDxUZJIjGuUqTd7n5BfG5v+Kw1Ta/3piQB1Xnv9a+rPiB8AbXxLq93qQ1MAzyMSoz8pPr/+utsxm6nuxeh62RVaVLD87+JLY/OK5yQrEfxEHFfYd9+zM4UraX0rFcHG3qPSvnnRk5Wtc9iOKi6bVJ6nxl5ypw2doXHHavqK8/Ze8UzDNozEs54IGB9elOGHbVpGdaXNaSmrPQ+XY7hWC5HKnOR/SvoeT9k34mys7R3dqg2gDIOR9eapYZt3ud0qEJQUeZXjscF4Z1uBGSGWYqDgEn+HPQ/5Nd/bfsifE3fD5viSJUWQMVRMHH1J7/SorYeKTSeqFg1OM7zknF/mfqB8MroS+E9LIf8Adi3Q57DgZrC8BeFrrR/Den6fe3sjTQIqMQcZGBgcUsDB203Pmc8jJ1VNvqepy38I2r5o4YgAH161zg0WzhJKs7bAVy5JIz69K9iLWyOCknz+0k9zjPiN4d0DxjpFzp12wZ2UlSMZU9jXfR6bZqABAudpJPuehpQqSi+VK9zqhVcZSsfhz8WvD974B1O5tpNNupISzeW0aMQ/tn6V+y/iz4f+HvFthJYahYo4ZSASBlc+hrpqUKU3dLU6MPm1SNPln3P58rnxTrJGy18PzESYAZ8cV+kPxH/Zav7OS4vPDa+ZGSSYyOcegxXDUw0r8tvme3CVKsrt79D8xTceObspixit13ceYSePXj/GvorXfh/4m0KR477S5VCsQDtPrx/9esPq003EyxV5TSbVlsj5suNN8VS/JLq6xjgs0a/e9q9TudMuI1czQFDnAB6g1lOjKLTT1OOlJxnyOGm9zx1vCdxNj7VrlywLZIViM16FPbyx5DxkMWxzXRVi4xUY63N6dFTXtWrdv8zhY/CGmLOjXAaV1UAGRic11nlkEs5GAQQe59cVyzhypM7IVE480bGJFpGmwOqQ2iF84JC9K3FillkxDG2TzhQcmtLppRSOGMpSTlJa3GQJbR8RxgDk4wOK7HRPBHiHWnT7FpMzs5wrBTgn0NKa2jNanpxvpJvTscysQlO0knB5z719lfDf9lrWdVnt7vxIpigXaWjA5J689P5VhKpzLlSMuaFJuVzxb4ZfDTV/Gur2cEFq5sBIoeUDgAV+ungb4daJ4N063tLC0RRGFLFR14oo0pVFyI4Xm9Om3Upq7HfDrwXY+C9Bt7C1iACIpJAGWOOa9CyVVgclQQB7V6lLK3FKS1bPmq2dTry53p0JgWx8w5wMAVB5hXJPHIGP8K7qdNpqcdjH2inU9m2T+YG2EE4HGcflVVZDu2gkEMcZ6Y9adSCb5YuxKpqm7PWz/MnZ9xMePcZ6UxQSygtg5zz3pxkk0+xvCDqpprTsK2AFVevCgemDzTl27sDqCBkd6mU+WN0iIxk1ySeiIpFJxkkMWGPbPrUuRgMSSTjH4V00pqmk5GNehZKM3fm/AqlTyWwQG49vensdoQejgn3rqpzc3ZGOIhCC5V1G9CQRkMMfX6/1pq+Y8hRQACqhSe5rog3dSlsYTTikpO+ghTBU91fORWjBEWAOCCXGQPeprVkpJjeAU7Tb91alGNN3HJHBwO9dCkAjUFQOSefSk59EzOjVg3eK97sYX2eRsEZy+QoH1rp44QgXjuMY7Gs4YiNveKcpXUbWuc5FavuCtksWyCe2a6iFI2cOw9yT3xU1MU4pPqejh8NCUHF76hY20ickZBUdexxW9DDujjKAZDMSPbjH5/pXmyxHtE4yVjrwUYJxSTaM/wAkqVyDx0A71uJACu5hkq2TntRG0YWbOirRaadrXOcaPy2A55Y5ArbnhUngHJIPHQGs3LnXNJGMuZu0Xoc+Nu8ncRuIyKuGHD44JDAn6E0TmnDlSNKVC83Ny1KZIIJzhlyR/SpZowMAHngk/wAq0bbsk9CKcmnySa11Rmydc5wWcHB74qfy3YIRglPXv70OCbatsZpTtdK5nyscADIIGee9OlU8kk8HA9qumpJpo54waXMuhTZmO0lc4bIp75XYeQ28k+hFEE+Zya6Dxbail1IwxYkMSB0wO1RsZCdxJDbgQB3qpNtXa3MsNKMGpLce37vhiD8oI/CopBIx+XqM59zUwi5XimdOLpzkud2sW449wyQA2ctjucd6lsnIwGByDjI7Zq5xnFWexHs1VpLlfUu2ancVZfmLMeO4q6qKGVj94Y4Haonok09jWGG9lFVJO7fQueSjRhj/ABAYB7Um7btxkgEDFYuU3OyWh6McQlBQjv8A5mYLXYWUDCsSSD3rTZeoOQcg5HsRTl775kck4SdG7ZkmBSSR2Xj/AArQcghvmAK54H0rohVb9wwcIxaV7tlCO0gkI8xcR7gGI7e4q6qnCqckcHP17Vl7eaaUXoEk3SVlYqw2cK7sLhT2Hb0rQiUKCzghcHOOtdFSrqpSZnz83uyXzH2ipExDdeMEfXmrVvEGZAcDkZFcOJcWlI7KE5tuM1oaYhcjcoJTggHtXS2cAa3ROny4B9M1zzqpS5Wi6dNxjzQWlzBhiKkMRncRgetdGLVcxt6MQBWFSolNxZ1xgo2cFq9zCvLcTIUCkE/r710720bxxITnGASPaqo4hqNkzWjQhdN92ecy6SoT5jkhCAa7K6iGGAAByAfbiumNZySkjzfqcoVG31Z43rdhugnC5DKCDkdeK6/WLdRBKSdpkjbacdOOM16mErXmrIyr4dTXK3Z3Pnnw/wAXtzHk8nBx2yf6VP4bXdq9yhGSxJx684qMbPlqpJepnGhKELtnZbcLk4IDKSD+lbD2D+UCFIRsgkfw8Vmq8IvQfsVKF0tTGidSynJVgQRnvUrwMpOV44ya2UILRs56lkttTqk2sFKkldoAHrWTFd+UhHPUEexr59Rmoqx0e0ik5T6mvMilAzZIzwayP7QTADFgWJwa9HCYaaacjhr1aM7VIL+kbMaAjPBJOAfSs+K9VhheCQcn+77is8QnF3S0OylWg4rl3ZqxIoI6Y3AkmqUczfu1zgby2R3pxpSUbXIo04zd4bI1yiEscjdx078VSjuVzuckckmojh248zZFXEtVVTe6LCxABmHLHHJ68VUku1JyH44wB3pLD3abeiBY+Kq2Ue3yLLMoILds9O9Zn2tNvXDGt3hXCSTfmRPGc0Go6X0Jju2gZIZgSQveod64ViQNpzn0qp0mo3W4ueM2qclZrqWNxIU5zng59qiMu45wSzPyB0Brnm4yd7anfKm2kktFqGXGOOjD8qiZ1LAbgTknHrW803aLOWNWLlzRTTJQzcK3AbnI7VCkm4YUEuyAr756VUE0rszdGMacl319C3gtzuwQeMdxTFfkdcrggHvTqSlFJx3Zph+Vw12LkbAKSpIxITj19qhReFIOfmP4etHIm7pkaQSlH7jQVuM5OCAAPSoYgBtGSSVLDFYVrRV+h00pvl95XRaDENlTnBII7D61CTllJbrgH3qoJWTZz+1lzWg7XLqZfAJIYHr61XS4OR6YGB/jXPNym20aurF/u2XTkgAL1OP8KgWcBW3j94OmP0rV0k5J9SKdSSfP8gmVyVY/cyD9KdFNktjII2ggdBzxWtam4q1jWcmqqqS/4cr43LuPBBIJHerXynbn7wOMCs5NN8yKjKM48klrfQp9NjKxP7zHHY1KPm2Nz8hJx75qFdz12OOqoqTUtLFF12KcdsgE96uSJkqWxyM4Pt+VWrNWmhTjTk04amQxXG05UtkAjvVhox908fNnntVxgnG+5s5Ta956IzSD0A5yDk96fIMcY4BJBPet4wc04XsziqRnJqUHo+hXLlgMDjoc9/elck8LxjviuZ05Xbeh14Sko2g3f8CvuYYyxI3YyPWlIOWBGCckn0rSVnZnQq84P2QF1OA5+70J7Z7VGxQ7SOgPJPUgURgm20Yzk7tLVjJApO4k4PB9qYzHuCPmP0NdEINbaoxhCKbinYCF2gc4LqSPSpowXIIz94k59KxlJp3kjoxFDm5bu6Qq4EY6jBwD60SOFVRknaSQRUJOcrpaMmnamnGb2K8uQ3HTBGKCzN8x5HAA9BW1S7ST3M7RbU09CMKDgsTg8Y7c0vGQU4zwfesJxbd4nTTpuDva6KzH5QAScYGTVjYduF4K46dvStI6JNEVKTc3GLK68gHJAZsZqVAdoAGSSR9KFS91pCvaSlNajQMKGGAdwIJ746gVK67l++QSCcjt9KhQurJle1tJuGwzYBx0G7JFTkAA4yWzjJP51ilKCVtQqztDVFIr0AUBicrU5GWX5uTk89vc10uSd2yadNQim9mR7BjLLknPX1qcgA7QOCwJB7GlTiovXYznKNSnZ7plYIOOBu9fSrGwhRyNzA7Sex7UqtWEnypaHQ4ShT5luipFEvcHl8kjtV1VwWI5VR+eRWdWEeVQXU48JUnObktkVzzwpJywyTS/MDycjHJFaOKjFOO51zSSsttLiq+0qg6lxgjtSZ6OCAeTg96x63W76GFfnTi53USdJQJMcfMQDntUEa8q/c5wT2HeonFSjyPTqbQcY1OaPkX2kEoABwVYZI9KpiUljkkDJJI71th+ZRbaM6sIVFzN2aLrKrKCOADznuKYkn3wWHy7SKUebRrZms4xlBJtosRqBhMDK9D6UxHGV3H5i4Az2z6VE1dtJaouPuuMpPmX+RMEBVjgk8g04zR+XJ84AJ+XPfHSk5qUoqOxlXl7Nvm3Hg5UDj5iOR3ponTATeucgAZHFHMoSv1LwjjKFnqX1GAvHIAOKoC/tYiA8wDL0J7kdawqUnOVk9Tq9vJNqDtbc1zgOTzjcTj8BWc+q2uEcMSDwPfPStoxcIqLRxRk+dze/wDkXTEDkqcZ4yO1ZLasArBIXLfw8dRSqXk22Wq0oxdRr5GoAGUZBBTJHHWss6jcABo7RzzkD0+tXWSbXMT7WKjaKsbK7VBAHDICc9Se5rIE+pzASCAJgcqT92s6ijJ2R01YuavLVNG4BhVJI4YAY7VjkapIQd4UbgOPSlGKgrxJqtwjpG6Rvso2jPBBJJ9K517C9ckm8fZvAwP4cVsoKK5V1OOlVdaTckb5kAAL4Cj1rBj0t3z5t05JYnBPH0qnG8bQ16Gkbqdlp1ubbXECqCZRnfyCen1rJj0e2BLSbmcYJLE85qK03GKlFHfh1Ocby2kWJdTsky3nrleDgiol0y1B3eQpeMHBx19KTqc2trdThq1YxXs4sqnWLWRvKjDszEAYB69q1fs8aBTsAYPwcdK0p81+ZI1lOns+hiyarcAHybNizckEjP4VtJGgUsBkdcmonWfMm9yKteMYcqRhLe6nIuPIVNx6nvW0UHGVHyjmtGnFXktgoUXKMeV7mOP7RYsHlVVyTwOlaWC275jy/J9KJtyVo6GlSvKM+VbmeLK7kUGS5YfNkEVqKxKsTklnwT61ThK7afkKlyypxU90zNi04Y2yyuxfBO48j2rQLNwQcbXAGO/tVxouTv1OfESS5lFaf5EEek2g2Ax7lB4DVc848YJAPHFc9XDdEysDi5RjytaXKr6dbx/diUNuJH/16nLemchsCtIQi0o3NcXOdnOCs2UTbQ7h+5XAyTxV1Qd6kkkL1J7+9Zxj7vNHRr8RfW5KdpLRq2hSMUa+WpGewJ71dER+TkkFwGI966KdJt36kKpeKUFZJkAtImwwAy3A/wAashDgHJGMjPrU8snds758kmpxWv5lRbeP7xA3ds96ubSQOCQM4Pv3qJQvGz3MpV2n7235ESDZjJATJwB9OaZJIAo35AV8k+lXyu3KtBzpqUWk9F1BZADyfTINRkdWzkHoD2rNTcrI1m7UoxgtiwHGCw5wCRilixhQACrNyT2rJQt7zdzilBzTa07ixgEspJz1Ge+aWPPy4bkPkZ7Vrdt2YU68YRairlWWGOZcMMnPB9fWrHA6HvkAfrXRGaTUWZYeLTTnszldT8I6JqsWy8sInDcksoyfxrp3w+N5wSxIHtWNm3ZnVKq4ybgrts8A1n4AeBdUZ5ZNIj8zn5lA+b0r30nlMDhAAQehqK8b6JbHRRxVSlUV2z5Cvf2WPAc3ItXXdk+uDjnHvX1pInsN2SRj0q4KKVmzWpmM4O616s+Mo/2T/AcbgyQF0iYlQ2Tk+1fXM0ag9cBSefWh0UlyxJlmVVw5pI+edK/Z58B6c0brpKMTgtuAyK+guPlOc4OCw9KdHCRklJnNUx1VxVpaHGaT4F8OaQVW002FBkgAKOK7QKJAGU52sAcVdTCRUbNaiWNnKSl2KqRJGmF9gCfbpVtotpQ9Tuyc+tOdKm02uh57qyqK7WozIxEDkksSB657Gp1ikZd7qecYNOEuV3QOMqkeR7aakR5XBwBnJz2Hehgw4AOO5PfNdVLmautzoqQi2lHRIZKVCseBkAADuaYSehwNuTxWMIy3kjOFC0rJ6sSI5blgMHkHt7UigLsZeoYMD75qa3MpXj3MnRjFNN62JcqAXJJ2sPw46UwOFwuTls4Hp70qTXNysxhzNLkdnt6k277rLwC5IxTVKtvJ/gC4PqauK97ll2O1VVBtpaiYOcjgjjBqdiOD3GDVzlJtKxzwXOnUb0K4OWywBORgGpMsGByCMEgelUk2lZ2MZRbburp7Eka9TnOQSCe3tUUTjB38MOoHb6VtOu4R5mtCqMZSas0ka1uxiTfnnaSQO1VkfnGMFkAP4Vz1JSm1oatUqb51qdAjpLh8/LkZz3xVC1YbVx03nPvx3qpcik4o3hUk5xcVq/yNRfmY4yMHP1Ap8WNq4GDluD2qLKFklc6mue8mxyQkO3BK7lOP8Kkjl3DcM8Z696wrpNb2RlToxbs1c1InYFWBIJ4IPf6VSSXCDc+cNjHepqKUJXWphOiopWeuxtiUFf8AZ6g+vrWYJxlMMNvPAHWuSpJNtJHo80pwim7pfeXZVRkXHXYRn0GOlUjNxjJJbnJ/WtlJX5LEw5bXi7ajWYIwyOTzn1qJ3zzxgDAx1q3yuCijls3UaS1/QgnIkyR0U9fXioSd/wB5htbGD6UotwSUnoia0YOUfZ6shD7g5HGemO1RygnegyFAGD9a6Z022nFmtRNU3IqumQFJzg4BNBQqCGzwBk+nvU+0blZnnwn7SKmtEmVCDvUc8uc5qbyy2SMgcgEfzpOEpe8jrqxjaLfvIhRVK55xuOR6VYWMIMjoOfzrdzUlyvYI05U0lGXXUqFACh3AZYgj1qzEAVBIyucgntSSunFLQI4eMo2i3e+5LbxqoBAAIUkY6HHalilAKBRgqMDHapUZNW7CioU2oNXv+BfPATnPJOPWqzP8wBJJ6D2rDWL1Rq4OKbjt1LqyKOgzhiMD9KpF2wrDqDke9VGq3F33JqVJRSnJaM1HlbhhgEYGTWS7u8m0EhTg8/SueEVUi0nY7o49wlGnBXRcDD7pYEZIDGqKSqdu7JQsCQa7IxajexnWoqTVSL11NRQw2gkHkAH19afZ4lPzYIzj/HFc6ainKRjCnrGKd337EzdQyrjruJ9K6MRWwt16B+c89fT/AOvWHtE5Xa0NvqqUrt6/mZ1ih3I3IIbkGp5LuOL5F5bpz7YrfnTjeMSY1JRi/L7zqbadW/dqxBGCcd653TbxTL8zEEkAZ74rlmnz26nTB3pOpT0tudp5TbMb8Fhjjr9arx3KFVJPJ6n09KwlCUHqrnTh6tLlinp19S0EJULglj0x3pon+VAp5LZ4+nSsoqUZJX0OmVRO83HUyroGNip+Zyw5Puat3RV1Dc7iQOO9bxlFSTWhze0c1yNXd9zidThZ0lycERuRkdeOlalyN+0ISHIcDPc+n4npXdS1koy01OTEpRftIs+a/DEQ/wCEnvIycFFGB6DJxWZBqI0fxPcXDqSmWBI78967Mwpzc04s5sRUhGmpN3PoZ4E+zLz/AAk4Hc9q43RPFK6xI0CAqItoIPvXnQjKNSzRaqNJQhuzTvLQHIHBbAOPYc1PdzhVHB3EHBHp2rajBOTUdTedJqmordnGycoB64JBqnHKGVSzE4xj3q6VJwfvnjYhOquaOxAHPzEk464NNn5+6ehPA7+1e1RnGSXKfK4ucqcXKGjvuWUl2kDJKsCCPWq0e7CdmHP0p1qSs0zWjXdSKnJmkl65YAg9utUA/AkORtNZujGK0Wp10ce5WSdo/iXnvZM7eSRzgVnbmI3E5JIIx3FVGEUrNaslV5Tqc8H7qLouWb5txA3YIHaqQkyCqYOSCfpWlSjHlUY7mUcS4O0lo3cvrIem4nknB/lVUvt+6x3Due2KiNPmVmtUbVcS1eaRpC5xhc8AAA+tZu8EcnocY+tZqgoq8iPbSqJNqz3NWK7Y8FsbiBxWXyVXrnPUVk8KnLlR6GAzB1Yc0jUNwAAwJPzkZrLDHBQMSwGD71r7C0mkc88UpS5m9Eb32jIVgxLY49vasZXbCLuI55qXhYud+hp9ak4KEup0UEowCWOCwHPasSGVxwDhR096mdCTaaRSxihDlX3HWQEADcSepzWOk7xou48ckgVzSw8pPlRrRx3uKMt7myJyhUAkYyCR6d6yGuQSeo3d/pWNSg5aodWpUUbr3Xc094U7dx2jpisxH3uApIzggehrSFCSVmzSFSTvTXzZtLcLgZyFyc+1UYJs7e6tjHvSVFU5Wtpcyw1VuTXN0NqGTKgkgMXPB71Ui5OcggYIB71y1KMnO6dj0XU5Eklds2IcMRk8Meh7VXjlGAcjO4DH41U25ayRNG10/M0VVCAD/ETxUPnD5PmHUk57iueFVRkubdFY3ni1KL3ZPHCEKkAEZ4Hajzo1BCtkckE9/wCdKpVctIvcl05W55/cQywq+4NyOgH94Y5zSSTxlS24ALwM962jKaVuoUq8mrqNrfiY0vzD5icngk9/aoXnBLMZABuJGT0NW5JWaRzpOd438ypMchSCdpLA+1VpL2HJVpANuR1612KVpNtamFBStaK69ewFgo+Y5LcgD0rMm1G3Qb3kBRm4wfTrUxi5NXeqOitJOLlLbuW/MGDzuODwf69ayhqNqpDeYCdu7I7D0FTUpqOliaT55X5rGsp5Q7eAw6dxWb/atsDhWx8hUZ6gmhVG04xQ8K4Rk5VGXSu4oODlyARWS2qQlvl3AE4GBUtO9m7sqHIpOKenU2MLtUclugJrD/tYPsMcTEDjGOp7mtZRbdnuOMFHlkn7qNvqwOCS7AAevtWINTnPEcD5ToR2NY4aWiUDTE4lxk1NXvY2pCCiAcFskAdqxVu7zORbjGckk9azl7srJjxUopRjFXa3NJciRVJI9M1ltLqmM+Sg3Yyck4x+VKU4tqKROHxE2+dxaj/WhsjIKZ4DEAgdwKxj/azkkFAVYEKM8j3qVUUVyMuk5OqpX0NZ2YE45XJwB3rAEeoyHDTkAHoB1JrSnK7vLcwxGHqu86bukb28AHkl8gH3rEe2u/47ll3EEY7VKaTSSNlUUItvfb0NYyKMkuC2ec/pWMdOd9pe5dieM565q1Vg5JNanPQw/Om0/dNXegICsAxJBJ7ZHFU49KjI3yOx4GQScdKm6lFc25FODpzu9dS493AZFLNjYVOCarx6faJgBBjdkE9yaUoJLmvsa06c5VVzac3Yke/tl2MJCXBPH8qQWUAYBEAy2OP5VrC6V2JU1KVorXZkR1O2B3KxJOBwOoFSmKM7QEBGRkihtWt1NKlKF/dRROqBWXZbuRjkY61dYJuUKD2JIrKb5kmlsPEY6pGEWrmZJqNyV/c2zAEEkH+EnvWt5ahcZySSM+tPDOLqcpNWs7KbWlv6Zn/bb2UYEIVDgA56fX/9dX2+QKOzYBx2olSSlZM5qdeS91K3MZ2NQdlVJFGHYHI6jPGOe9a3yMDt5IQc0Ti1a2iNpuEYc7VylHBeHO6cEkgnjrWttMgRhypbJOeeMU5avfc3hBSpttWXYqLZTuB5lwxYDtV/cV3kkkAg5PesKaurxYUm6aUGtCutgoHzys23JbPYVcViDu3EbiMY71EaKjNPqaVXTnDX5DItItc9MqAQAe1XI5WAQHOSfyqp2lJK2iFKUaUEnr+hJFp9sBjYM5AzVgNgAHluQSO9Uoxm+aJNPlgueerkWFtYlHyIoyDyfXFP3ELjcRgAAjvmspNwhZM6J4i01OOwGKJRjbkqR0pC3zkg5wRxRTmk7y0M60ZSTfNoKACTx8qk1GsjZAZsjJxjtWlTVNx2MlVg523didZEBUDPzAZIqEspwMAE55FZRoNq7HHHOMU0tvxLayrjBJ5I59D3qiJMsqEYXcuCe9aqg4p6nQq0qkHG9kywrr0br6jvUfmKCFJyNp5PY09FNTZw05yUnSt7yJjLjaoAyCATVcyKcEZOCQDTlT5VortmspwqP947F3zEyMNzkZA9KqL1+XIDZOfSs7WSk9TupRcY+zTs2WQeDt56DA9TUGVH8WGK/p3rRO9u5wKK5ZST2LTNgAZJHQ5qk8hK8c8ggemaui3F8s1qRi2pQVSk99ycggLt7sRz0PrUAkHy7j6jnv8A/rrKo23d9D0J6UrtfL12JM7eW5XB5HeozkRfeON3T0+lXCDlJQlv3MIYiyTaskIW3cKRxzmoiQRwT15x2pxupJPdGcqqalJR3Hq21jyAAe44pvmDauOVwck/yrJzd7tG/sIyjFyeo888norEjHemICoDPIQC2MntitVLm1Rm6y5mmtBcFht5IDEg9h6mpUK9eec8etTV57qy1ZU6FOnFtq63sOVSVXGCxYAEd6Qv8q8Yxg4Haibk5OLNKc3UgktENIAbG4buox2qMZ35VvnABz3PNVRlJ/DuZRqqLcZrRW1JYlJBZs43Ec9/SpRtJ5YYLgk+lCm/ikio0m3JqWhKoXCoxIG4njtnvVbzmyGI5zke2PWqjSS0SLo15ypNzew5iq4xJjDjAPQGoS2QApz82TWijz6yMJVeWPLTWr6kbJgbmbO7OR6UrynBCZDYwCff0qIQlfmnsYQqRnJU3fUcgGFBGMrwPT3qAv8AKM5EnOD6Vk1zOyZ0zsk3a6Q59v3Ax3BhVdG43Nzznjua3pwt8e5hGo3FODsupOG2oC2Sck8fpVdmykYBIIwBjtWLldtNHVhq6lNJaK25ZdsodrEcgED074qgJcuy5J24J9q0o03DWTOiPJKTmnexeLAcngdj6VTRmBCMcoxPJ/rRUhb3mOcHJNpaloMxAJODkZB9KrkkHryVIPt6Vs2pQSRy/W5pJ9h+7dvy2F6A+nrVcMwYjg5wcelEMKo6pnJHGOo1KotdStJGQx4yOAfbnNWmZOFIOC2QKh860izelKMm25XfVEMcG8Bi4xwauoEAwvOGI470ryVpSIpVpNqE1ZECxJ80QXO8HqOvqKsg7GUMcYIwT2+taTldXZnDmdRSUdH1GLAvynJyzbiPXFWTjK/3sn8KbXbYcuZy5mJhVUHrtPSm53BgAQGBBP1PasnFpKT2NYYjVUpPXdFW42lV7AsQc+1TH7rbsEMehp0qns5d0yLpx5pS0MSTKu4BB2cEenvUsyHzDjockn1xXSoynZmfLNJJO6KhkDdyCSAOKXYVA3cqcDnv65oXK1dalq8JJr4RGXIY4wByCO1Bkyu3kDJOPSqjZvlZz4ikpSU2TBvlCjIOQDjoarMXDI6OMLnIPfNYKDUrrY7nVdSlGEVf/gFlnwFwpyGOc1WaXKLhTvOM57A1ryOLavdnnV5qNL2aVl3LAye4Pzn8agGVKjpnOamrBct2Km2pKKZMxXj+Z96jxlgTll7D0NXRk4q99DSqk5KMVqX45P3WQc4YgYqJZNyld3AGAcdPelVpuU0tka816fK1qaEM7bkXBCknOfaqyNlkUE5UjBHvXQ4Jpp9Dmr13TcZp6G/HKSoGRwctjtWWrEJkEjL4NZyjFXikZyxdaaTjsaplzj5uC2cfSqyoHUNn5Rj8azlTgleWx6MX7iinr3NKCXkZTGNxwOmar7vLjVud7OeO1OShOnZHLSoyhO1R76lrzGJBYgE549azkvBuAweTjBrGrQSXNFbHThrOV72/U2EkZTGGIBBByeg9azA7hT8+QMYPp61lGEpOyWp187hHlhqmaO/YrAH5gwB96pK+RuP3iQTmm4xm1zdDjcakoON7O+5Z3AD5SclsD3qmXY+WckjcG496mVKMn73Q6YzjKEdNe5Mdp2kk53AACoA7Apg4fPHtVqmt0znk5qSVRbaXJcAK6578t6VFIST7tzx3pSg3JSTO+ThGPKldPcG5yP4cA4PembyOhJBbGD2q7KKUpdzJU1CMow2IH3KpySAXyc04KWbOSVwSc9iOlaQio6IyouMvdk9SHIUgEkfOSPf0FRPkAnnA3Hip1eq3JlGcYrnloO85BkoMEk5IqFP3hCngHIIPrT9i73aCTclaDsy7vJKOW3AgjA781CilckEkjOB7isJxbirPQdOi4tye/YeJSCIyTjcOPapltx8rN1wfwrRODdmjOvharklU27ELShmDLkDkHNIVUuDwcOVz6U3CEdUbwoVVNNvXoPZypVcnnjP1qMgg5Y5ZSAAO/pRSsoWRGIm41Ep7mxaTLEVOCWPy4HbHespZCXO7IO/A9qwdFP3u5q6U1L3XodDJqPmHy1JBUnIHYmseN28yN842tkHuMd6TpKCb6jqy5pRXYvvKzfMDnLDr2qtG5DkHIGeG7CtFzK04v5BiIqTSl95pFiACGIKsCCKijYkgdSSM57ClaTd3uawUuVU4Wszbt72VsZJJ4xjsKrWjIxRWbGcAEelZcjim2XUgkoxt8zoIb+RVXDkDcBx2qKJIl2ruzyCM9T/OplOMrKKO/BznJN326F8XJCDLHJbAqlMCmAM4JxjsfeseRt6aszo1lBuKjoNmk+7tXjOcH1rFuLox5PJxkgnt7V38uiOWdRpcrVmfL3iBlj1y8GTgTsBjsat6rYrf+JLmC5JCyTMAQeh//XXqVYwTi5HkQoVKjcGvd01Ok8Cyl57oKeU2nI7nvXSeGNGttMgUxAiU48wnvjsa+flec3HZI7KVKM2ot6nS3DM8TYzhBgAfyFTSvnIUnae47V14aK5tTeu+VqDd2jyqG/jYKqzAHg9enrVCLTrfbkICMgEAfpXb7JuXNbc+PpVeZb6RNP7bB8h85S2QQM8de9NTT7Y/8s1ChAoHpXoU6SSd0cdKU6nvpky3kSDPm5BIAJ6Cmixt0CbUXOSM+lZtJT95GtGE5Q9pLS/Qd9sgbJMgO4DcCe1SJa2qhYygJwcj1rR1XblsTUhTck+nUi+2wPuAfAUgEemamMUCMfkHGM471N2rXRvSUX7qZX+2QRg/NggjI9Kk2QbPuAv0yf0rWVZuVraHNWUYxSjLW4xdQt/cgsM+xqYqFwFUdck0XbfunROulNRqKyI5NQjBxyyEDcOw9anEaBgMD5lAYVClJ6NG8ZRatJehGmqREhQjZDHPHAp7BBs2IflJ4Pv0rSVFSb79zhw+NkpcjRD/AGmpbAR9oJGCO9X1Cq+UA3gAjHY1M52lFWOj2Sd5zVvIz/7S5QeVIA6kEHqPrWtEsSgbQMnOM9qzlU5ItxRMqDgleV5fkV47xyqlLd8kYGa14wjhWIO4Pke1Q6spO1jvwuAhCC5pb/qVVv5SikWrEgDBPvWogBO3dhVGCB3rnlNxdmXGspQbittPMx3vbtmUraHbnnJ59x/k1rsQxXC4GSDj196nDzkocr6kVpxlFzS1Whkx3N8xQLAAGIOSetbiqMHBIyRg+lU5yclHuZwglBSWqe5lLPqJJUhUycBgemelapUnd6HH41pyya5WLD0+Wy2SG26ak/HmrsLEnINXkl+7gkAdMd646tGTSm3qd+FqQUnzajktr6M7luwoK8KRVreHGG7pnjt7VhKm5RszVSjKpeMbKxV+yXjIrNdvzzkY5FW1ny4BJxuAPt9awipKd0U4xp2vq9BBYSsMm+c4wcE8HjpUpnzwAAVPPvRWptW1N6OIXI5uNtfvGf2SB927kYcHDHv3pyznB253YBPt/wDXpuMr3T0JhVW89jLutMt1ZTvY4yQDnGatXEqtkHO4g4Pet4QjazRxUa0U3yK67mDJa2qrkoSpY5x0q8yBgGIH3iMevrVToptJmcXVjUc09XsYX2G2XjYACOfwrQmjByg53DII7A16FKME1JaHFSrVailG12ijHaW+c+XnAH44qaNnLPvHAOQK3qYOLSlfccakp1LTlotLCCOBWB8sAn17U0qGcg8ggYPpXPCEIxSZ2e0qOVoJMkhEY3nYCr4HPbPpT1QDvxgjB7GoqwjJ2WxjOtUpQvJbvYV44yvAPpgfpUgJUHcSegB9axlhU2pI1jKVRXcbEceMg84z6dcUnBABYk8cmsJpxtGKPSo63tLboOGBySM+gqFyNwyDlRnPrinGCkm2TGMoSim73/AtqwwQ3ViOB2qhJKACxyF4GR1GaxnTcFozbmc5pydunqWBOqsRggBsEGs8MHIfdhcAc0Kk0kmtUcs8Qoy5X3LnmoeCTkklcVVwEK45G8kj0HtVUVHmd9y+Sc9HsWTjOd5xk8H3xULsMHaM/MAcdzTpVG0mgm1Ti1JakgZf3YzjLHg980wEDluPmHIPJ+tE6cedtnRhm5ULSViTeSWxwuASDUR4baM4JBI7CqhFTWqMniHGWpKJMCNeT8wHFRru4wcMHyfah0YxbS6GtOcpe6nbsyTIDCQ5I3gjHbFR7lxt5JOeKzlCyimedKrWlJ1YPb8SYABSwOQ2CAarhhuIDE7SMU4wcnq9CZPmSU1ZjyMbcEnL4Ge2aYpzndwVfjHYe9OcPsdjoo1HH3nu9Bu9w/B+VmAxQBu25GQGYHHYVLvBWZzyxUpyvFaroPGXC9BjOalAUFQeV2kkepqZtyi7I66dGFRxlN2BQAgyeuckU0qCjLklDwSKUIuU1HoTe0XTtoWVA3cEgZwPbPrSROB97J4yCe3tVYiChFJo0hyym23e244NnrnPQ5qJeRhjjBGD6e9XCklYiWKUoe2b07EygMNuT83IJ9qbuGeDj5sAe2eahx1be5hh60XO8o6PQuI7R7FGeQRn0IqBXwyhzkEjI70uZcjlLY6XNc8YrbWxrCQbAS2CTyB25qlkLkAk4yT71ypKXux0Ou7VPmlrYvPJ8yMGwV5BPtVRJOyElsZJ9KqEFa0kZVXKcouLs9i0jBjkFgMcE+/+fWoTKVK55UZ4PrUuKk7XJdWpCUU1p1LYcJu6kliAPSq6uDtHbOR7VbjzWdrI1nTcHdPRvbuWSchQeBkn61GHBC5zgtzmnd1Htaxz0cVCnTs43epK7ZAJHykHj1FOTYBk/eySKyScY3j1N6fLVd3o0Q7sOV/utlfbNOlG0JgkYP5/WuxRk4pIyulN1HHUAcoSxwDnGO3vULup4yRkkD3qXeLTfQzxt5u70Zc3Y24z+Pp3qk0hLEjHHOBTajNXkrHZWnKFPnburE5fJBCg7ux9qpvLggI2Qx4A7VUoNxtbQ86dZRheW72/4JY3AjqSdxwT2qqZAAAScnOPbFTTdlqauMmoyt/TLnmBQUYep4qoJlyAAAQSee/HNKclFpLqXPEaSp2LQYnaC3THSoVk3bQCdrNgD0qOe9n2JjJQfIle/UnztAyoDE8kd6YzY2kONvOfb6Vo6nNH3Tpp8zimlqt/NDCcRsRkAEAY7Gk3hXALYXzQST39qVJNy12RhWnGN4vceJCNoLE9vY1WDIRjJ+V+T6+oqmoympPQuEE3ZaLqXll+Xlfm3gA+n0qmh2hupORgHuO1KtUip36mMvacvK4+6XiSMAnGFyc9T61AZMoq7juPQ+tUuZu0UbTryjSUlp0J+ch89Bgf/XqpvOVUMQQ3IpSilG+wsNh4yjdPXUviTPboeo7VUEmOpJJxgen1qYSad0jGDVVpW2LAOdwLZLNwR2qsjklQBznn2FXKVno9hQoWbcno+hOSqj7xOQMD0qmXIIGcdCT/AIVjKi5O6eh2x96FqehLI0jENk5XI/OqrSNuGSSCAcDvXRyJLmk9DGNRt8qWpYYnKjJA3Ak+tVScsWHBAAwf0p+x5oNLQydd02ra3JWO0nyzgFhn+tQO7EY3cggg9ql2i1fdGytZSW3YkLqxOCSwfHHeqvnbHA5HOAfWqUU9biatXcluy0pw2dhAJGT61B525VJbjdkY96zdN6OTEoO1nsrkpkTPykkA5J9KhQqh3ZJ5I+lOdpRTRSdSTamtSXcSwzkg9Se9QORuyp6ChQlBXTK9pFzvNdC4XBYDGOnSqkTnjrg8AenrVwUYq3VluCjLmT8y4A2CRyA5yfQVGrkA9SOAT60TjafKtzz/AG8FLmkSrIqqMgjknNR7wxBbIAIIqKqVk5aG9SvUjKMIDjIwcqmTuIwPQ4qEkAMwzkEEe1ays7QZbpzi1O9rl3cFKg5+8ce9UEnwo3MTt5HtSjCS92xzylFNSmy75pLYJ9SSKomXcxYsc7+c1XK2uW+xg60VK0ouzLLS5I5+4MkHtVcsdyksCvJOe9OKi43ijajBtRjJ26Emdztg/KcMB3poO1Qe4xU3c42judVNShJRWseo6aPeFG4EnA+maYsmOCctwAT69hU4eLi7ozq8sk1ayRQMPzkq2Tx/9erRbaAoUlmHJ9PY11O7dlujOrKmoqT7GaQ25uvUEA9vWrsihm7g5Oc96KdRct4I5qvOpqCluUjuC4VcvzgVZxtXB6jA+pHeounPma1ZriMNKlT5ou9iHaQAxI4wBntTl3ALvOMEEk96uU23ZHPRlCd5VFfsx6HeMj7obGPpUp+UfLjJbAraNJXUooHWTi1FiK21mHJycEjvTxAcmUtxwCPTFauhFtczOSV4Tbgrq34j4WxKrNwVcAH09CKTjhQpywAPvUui7WZ2YCUpS55I0+MEZIHXIrPSRs5GWUtjn+EetVClJO71O5Y2nKLbVmaEVyRGckfMcY9eKyVkBVuMAEEA9sVWNwcbpy2OHBY2Si5QXW5pzzEhArkcZye9Uj8ygvnrxim6MEvdK9pOs1zdBEnIZCzZLkcHqaYiNhmJyfm2n0zVuCTbktzClFyklGWiNSKTeyKSQGyCR2qkpb5ckg5HSuWom/eiehTq8slFs2ULFB0D7jnNQb9qqwJI7iuCdWMm2logvBNON7osoyjG8kDIBPpVfzCADxtjIBJ/SnT0u0jtws4zapzfW5YJOFIAOMYPoareYfljXPJY/TmsqSfwo0xlZyi0++xO0nyqOC+/Az0OKqh9wQg5BJ/HPSt6dBSbTfocznOMXJ7diwxAwwPB5qEkFVx0zk/WojzN2vubOTcotlpUD4GSDgkY7UyOUMQx4VdoyKJObVpmNKbnVcFpruNMQO5+dvBGO47mnbt3PAxgAjvVww7gkrjnZu711IfJ5UnI2tnHrUnmAkd8sAKw5p8ruaTqQ0klZJiF88BcMeOO1IZFYNjgEg57k96HaLTepFL97dx3ZZ3YVBgklRkjtiq6SbhtyeG2k+lbRTl7vct1XFt2uxGQEZLHBfj3qzGuVQdSvANTWtF6LRG9KnKUlZ6sjeNQvBIJwBjvVvhhk5K5GAO//wCqlCUW7NEYn2iu3utihsyEPO4cc96mb5pEPBxkHP6VNPms7HPHEqolGT1s2RLhVK5IJBA9s96E25BHILZIPbHarnTcrN62M4znTiuR+6yxG3CjgEjB9OafCFZQcFsEk4HI+lcrqrmtFHoYeUlZMt8KPTdn8KXysqTyAGII/wAK2otzi3I2rxba9ktiynyBec9DnuKgMbLnJIyCBjtWVROLVzOniVNcslqi9FOxMbAkEscEVUjfauC5yM04U022tjF4hxTg0aou2faJG5LED2rJMqNtbJOQefUVlCmlUunoXTcprllr2LF0VIJX7ygnA7VUmuFEZxyegz/WumjBxlaRhVpJ3Sl72mp4Xduo8XZbJUzFtv1o1H5PF8ZB+dpg5Hpjp+FduNSilbcyhNSTptadz0u2Zkh5zk4OR9aWN1WIluPlP5Vwt3krvcmhVVSi1DeOhZR2Dl2IKoQSD0IqIurKyt9xgcj1rolFys1pobKuozU1rY8+gk2/KmBkj8D61EpAbPIOQSK9CUuaV2tj5Og5xjyrRv5mkHDLnIJwOtV8Z3dRlRj2Nb0qad2mS4ShFKff+mWBuDH5uuePSmx4xgEjAySe9azV0lJHHSU6fM4NuzJlIVuMngg471AuQM7gORwO1T7JRlZvQ6KUoOHO9mTZDbSwz3GO1MiYDcc55wD7itpTirJ/8MTUwcXDmUr2f4CcHJJJbIxntmk6KVAIyME/hSlUslFE1MM5JTer6C7gwySQOQM1Gd3zHglRgisFSvZrYupOSm1LUn3MQASeMEE1DHzGGbI+UkE9veuinLkupIv6rJxSk9CbcMqxz24FIxwPmPzZBJFYxjK/LFm2JpcvLNNXX4oeMqm7OVBySe1IzAbUz9/AxVtyeknocc6yTSlrcsI+wHcc4GKjycMFI3dOe9TUptySN6FaLjzLXoX4mXaqd3yAfeq6Nyo3fxAkj1HSorJOXM9zRqcYqnDVNmhHnOM9ScE9qrwluASeOlZYuLbVjTCVkqqpyWpfzvAfJCKcnHeoQ7DaRkjHOK4oQnCN4o9Gq9ot31LSyABYyx+XK59fSqqtsY5yCeARW0qTi076nO685tpqyLfmAbVPJ3ZJ7fSq6FRtZW435IHeicuaXMYyq1WlFaRRoxliQMYxJg+1QmX5lxz8oyT7GsacpJXZ6kKFOnH3dnqXg+Sc8qBg571WJ4QBju3ZAFYVKbejZUXyPmi9SwjYBJycAEg1WDb9rBiAazqwcrWexvh4wjJRe7/C5YyGIZiQSwAx2qsHwVVc5yCAe1KF4ycpao5moQbTeu3qWXbYygOQeTgdDVWRsqNxyd/INZ05NvmSsdeHanJQmrp7vtYGmDNHuJDEk+3vVRjuLKD0YkHuK6adRKNnsZ1q1puajpsTlwwU4wNxwD9arhtqggDO/P0x0rbmdRctzipVpQla3Ue5JODkhVyCPekU5BA+8xGPc0XhGST6F1ITm7Q3bIJA5Ugt8wzk+lSEOdoxgFiDjv70VJKCuzndJQcYxerepAq7WbngsBgd6ldCCq5GG7jpzWdOLnK7fQ7J1PZv3ldfkV1+X5CxAckA1K2MKCuGUsDjtWiStaO5z4Wd05y1Ww0ysqpvGcgDjtTZGXKgZ3MRg/WueF+W6RpPEOaajo9hm5doOSCvc9xUP8TMM7eRg/rW9OSdmupzyiqT5Xvpr6jjLkuedhORjv6VEHUbnyDH/Fn071FVRjG6R0UKMpzcOnX9BjEv90kbk4B7UpIPKMM5Oc/yrSKbSaQKChKXM7rTQkVNxAJz82TjtTYyRli2CEJPtThzRbhHYzjKNVqTjZpkyMRhskY4IHbP/wBakwqrgHnJIP1PFKNJSdrm+NlNPma27DZHAxjqpOcd6hLH5NoI5OCO3vRSoWbsefilNQU1pclRg7D+9tzg9/rTI924tzwMA+lZTptJO9jswsW2oz1l3LBfLDkjCAkjtmnhTkLwTgcnvWLUVFJb3O5zlGbjJbIiyoIjPOSCD6GhmwYwBkqScjtg1pJOUeZdznlWTiqbV/MZn5eACys3J/SmpyDubAOOlQ0212O2lCLptQ0ZKhOFPPI/OmNwqNuz8xx9KG7NuJl7rpqUn12HE4BIOc8c0jHPXHIwaOaU5Jx2OWolP3E7CiRkGwk5BI+nrUPAy+SeMH2pys3zS37DeDVNJxdloShstjecZBIFRkAjaXJ54PrkD6Vm5Rk7oKMeWck+o9JSgIbO5Wzn2pgDbdu4kgggntVqKk+RG1CF4urUettEXM5UHJIJBA9PemRNx6Pgg+1Dg1Kxy4nDySXJ16lgsPlYsTt5BqAEFgOox371lFOLSR1U6cJQXPuSKUwuTgk5H9KXliQRjGcA0Ruk2zNYdN2j0JOexAbHJHrVckAuBnJx+OO1TFu1rbm7jGyS2RoK27G1yQ3OD3qjG5Yx/MQDIASew9QP/r10KEpR9AUoqlZOzNBJFQnk5Zjk+wqqG3KylgTxj2rJ6JQ7mVNxcfaN6/mWlIkY7s8ZPPao0ITk5OMDHr61hKLlJRg9S6Kbi6sloi5jO4bTtIPP1quJj3bC5wfp7U/ZOVpPoc+FvJNW66Fgv8gGc7W5qASI6jGe2T71nCKUuaO56sJc0EvUv+YeG5OMc/0rLkuCDgE5LHPvW1CLUk3qjkaivfbtLY0TKDkknBPftWV5hDdSDuB+tUqreyLcYu2vqXWfJRcksXzj0qqjkFSeRnI9qhRbbaIrY1OSqoucggYwGYgZqHzPmQ852tz9aU5NLUijUlzpW1exMIlAwWypJJA71CXcqFBGDu5H8XTit/aSm0m9DplGEFyJXlfX5hIdpZxnaEOQe1QlgCGLHk4xUypJq8NUY4rGuK95bDzJuCj+LeMk9qgYAscHALCimktbnNTm/Zuajr2LocA4565BPeqRYZAEhwMj9KrnT1kFWpGEUujLgkBIPcAj/wDVVBJApA4+o7CqdWL0SsjfDNuMVe9vwLu9mYYf3JPoKpCZdjYH3QSD6VlJNRUIrcypzU5yjJ6lt5hGoLAkFgc+3vVESsx3ZOOAAaJNt8suhVOpFNciuzRjlBKncRnGQf4vQVSST1JwoBGe9aU27KTRs6zhFQa8zU8wJwPvMowT/Ss5pAD1LNkZz2q1FtanPVlFNx6MuebjO45zwSO1U92MDJIBA+tVKcZO8kTOi4RilKxeEysN+CQWxiqSSnnnC7hnPeuRJwqabG85SjDmW6/Etedg5GcNwSKrhwBjIAIBIHatk49ehrGMo+892PMvMY77jn3qsxDhssQeM47VErxklHqYVKcaqVRuyX4kyy/NuLHh8Y9ag34yCCVGRz29qVa17M6cNUUU2tkWRKCSGyHGDnsc1QeTJUKT1Aye/PNdPKnCyPObTnzLZlsOoxuAzvAOD37Zqk7lQCGO0nJA71zzpKMbN7nRCUo1LPVIsOSGYFsjAAHpVJpG+Xg7iSAB2rejCTfJFaBN2vNMvBym3POADg1XZ8qq5AYk8+uPSphpdM7ZS5oxlF6osSMB16HGBWc7FT1JxtBJ7c1cFJK6ZUuWVPlSs2Ww7YHzZIwFz3HfNUzKpIUHAVhis5wd+YzotuKpPfU0UYv8+SFGRj1/lUCyhRGC3Xp71tCTb93Y5MPTjBuUtzSaVfl6dM49KzN4x9SCPYURw6lJu+rOeLXPdLRdC3uK5ZnyGXgD2qnI5ysgbADAke/tTjFyTTex1QnBLnZa807iAQBgHk9apb9gOTnC9T2AqEue0jXHT5Y33RcVwSQWICZIB7+9RqThRnOMD605xsr8xyUkqk7xXQmTkdfugde9RFgCAuCDwSf4feiSTny21KrVvZU01v8AiWC4Ck43YJAB7YFU8uBgsSdwIPpzxTdCKlZvU3p1HOk6iRakkGFZWIywGD3x1qovIQg564Hr61cHFaPYfM/Zxknqyw7EbWPGOST2quJDwpzhjg+wpyly6yM8VFOKUNGWEO7GWOWJFR7mRlIORuwMdR71om3G6ehxwgpyty/Mnb5SMN1kxz2pu8cgjsfxq4ySjZM6cVBOKhBWa6isB8xBDHIxz0xRCF3AdCwBx6c9amLild7HJKE401Svdb3BQCSMd8c9q1LK1FzLHuYBSxzjt9aTdOElJBShKVLknG67lSGBmZAFJ3MeMV69pWj2YiVWTLLgqT24rBZipO7Vjso5PFbM8x+wTSFFCliSDx2r1+aztIChSMcE5GPyxWUMcnrbUupl0oRXJ6/ceRSabPEFXB+8evpXo11bPIxcA4AIAHfIq6ePV/eVxYqgpzs1ZtHl32WXO1BllJBBHJr0C008h97oCFY5OK6a+aRgk0tyI4JNuD6WOGj0S8Rg7oSpBODXoU8kigoyj5cAg9gO9CzGUoqNtEYUMFGMZSluecPF5atkEFR+ddYtpFd+YCuAoOM96mrWgpK5MVFNz5dTiGchcjjowz+tXtQsJLWUptypzz6V3QcaiSTIlenCUpLTqZqOUJySSR19MVWZ2DbcnDEkg9q71QcUpN3R5zg6jXLouhppIo2LzgkA4qjagblO4ZySCe9eZWw8Lvud+Fxk7cslo9PM10bjG07CQcjvS27+ZgA5TGQR/KuTlT1eh1uc3OMY7IUHJwzAFVAx/LFSNAruArEMoBX0PtURinJOL2OqnzRiop3bIpGA2HqpbBHpTJWKnPAYH5lqFBNcyYq1KXNyS08xPNxGBu5YkE1XGfM6naWyB6Vo6fJecjllSaap/iXVkcYAyRnqe1VgxDKCcR/zNcqTk9EdLkk4wfQttJsHJwOTj0qmcMEDNkNkkmtVGSWrN54d3slo9h28qwOTwecd6hLEMQCT8gOR39qcE5JKS1bOeinTbd72/Qf5jbyCTjJII7Coj8zfeI2cH2zWt4uPKbQu4pRVmzRhkLDOcg881WjkA4JJA4PtSlNy91CgoytJmuCFwQxII4rNEzqFGTwQfyrlp0ZyvGbNq1Vxb9m7rQ1GkBO5SQQCM1mmU7CGbIAzn0+taTptO0WY/W1ODTWuhPM277uchuvpVIylWUEg5PHvQ721ZpT5LpNWsWkyQCTncwJPoBTouqgglgSc55x/hVUZNR5TKvQpzXPF6X2L0GMrychhye9OjIHzEkhjk+2K5pVIq0HqdNnCftIrRmpDKRySQcg/Q1EHXA9Dkcd6cVzJW6D+sNK1txlw27PJ4HX0qGZyM9sDJP0705QkndEKk3eklb9SuT85w3Y1AW6N05zgU6FSSi09zohRkk409X3HAkFepwpz780xmG0KnBU7iPWr5oybtuTy1YRinpfQYzuMDAKqSTn+lQ7w2OSApwT6/StHJPfQVWm4z80eVa26Q+JVkJOftCZI7A9AKi8RR79cijDlfMcBSexrSvTjKF2zmnjJKDhOOl9z0qB0aMO5O4g4x05PArnrW7u7F44b3BiKgiUdPxrjhNwehVKjDkUmzplAGQxPUMfpVFdSs2Bk81QFxjJH5V01K3MkkhRoRhGSi9zikkPBJ4Pp3qK3YH73G0gZ9j1r0pylC0GfKQxEXL2lNepoxuQSXzuPAPt2qOF8op3HBJBxXXGEVG6Wp5kcRKWIUn1v6F0HjPbnOPSqomGQC3IHB9aU7wV3udVWq6jTtqSsylVYA4zjmq7MqIMjIB6DtThBSu1sTXUXKMZ6NWDdtbcSQinAA/XNMLEOMHhhk/hVqouVt6idGnJOUNy0JF28E7mOMmq2QCAeC2Onfms1yttI7I1eeClJWZMGYEHAIcgn2quxxtCkgHjjtQlzRbsRGPJUUk9d36FyOTHPUc9aqZ3E4BHUEetdKSlG8loT7dJNpXfYvth1PynG3r6VCkg2MFJB5BNcK92SitivaRqxlUS961iYA7V5Bx0I60gkBGDyOtb6tpI45YVLSb1Jt7BfvZJDDPpxUfmJtAI5ckAGlCCU0rbHViuaEIygWYySu0Md2CCT61X3kAE53gjGKdWk5S5UyaWNcYWcdPxLqM5C4OPmxn1qOHccsTgbsgA9KKsUo3juOOJlUjdKzWlvItZdQAWIIYnA71E0uAeepHNTFSjKzQqUYufO38i+HUbSAcCqUc67QrMT6n6+tef7Lkldnpqr7VOKVv1LShgeM45J/wAahedVw3IYMDWtKb2S0PPqRs4qLsi/5g46k7gD74rOSUMRtJJyM+9c6pSSakevKsqsVCNrI2E3P1I3ZHI7etUoJig5BXY3Ud6xjSlB2j1HUcE0m9kXnbCHapyMDA6j1xUUL7UJPJyTmpqRcGm9WYUm5JJuzJVyQPcZwe1PLrgO2SQxIA/QVk5OS5WrM9JwjOcZJ3QBcAHnLAnPpUq/dTLHJIOPWoguaVrEVKijaLdkykEJIcn5uRkVclACEjrxwfr1q3VSbp9DP6soxjUk9imBhOOSScYpv33XaxwCcj1pNJ1Gl2LhCXMop33dxU5C4yQSR9DSq20EBsbmIJx1z1qJ62cSqGFTTlJ67AcDLDI39QfambS5HzEKWAP0raV5e83oTRfs02ld/wBbBhshkI2gkEHvSO21SY8g5yB6VMmmko7mUZc65mrN7/IjkOQARwO4qrI4GxQTuJINaQgpKy3LcvZpJ69R5yQrl8Nzkdh71R3k4c5A4BPrirhSak03v0OOnXhCSutFrclbGVbcSpI6fzqPd8pGSc4x7VEbRfdHVWjOq7p6DXHUoTg8rmnZXcVIBPBIH0roTUouUtuhjWpWtBP3nuRhMMSDgHAwalPIwD/y0JJrOnNpct7sHQqTcqsXptYcMFc9ME5A704ADYTxzggdzWsZ+9drU05pxp2tbYQ/e24IJXk+tWWjKuoGTuXH1pUoOUbmM9J80/kU9jEgEHaAQCO1XsjKqByzYx6+lTTr3k1JBUheF4yuk/zKq4VcdN7bT7VYIXqvJCjAqKkodNzonRcuW70K6sTxkAFSSP5U3dsGSSdzjAHWhRVrJ6sFKpFcyeiD+7knO7GPXNRlj8qjHzOc1jKmm9XoOrjJunypa/mPV175yWHTt7VBnng4AJGPU1copJJPRGtG7gruyf8AVids7hyT7DtTTj5ScgqefelTlKzS3OOnTjKbUl8uwOMep3EAfhTWY4U5/jOalxjay3OyhTjz8/T8gJKkc8nIwO1RAv8AKxbnjIHelTWjaOGcYRaV736kinP8WGwBk9/SnInQHlskjPf0rWpbk5nudXtnF2lt+QqMw4JJPAOffvTxyFAz8xOajkbbSNpqmo+03b0t+pMCdwdT8oJAHoe9RCTIwDja3PvXLGM0+V7DlCM2pp2HiQcfNjnOBVYMAC3PLEDHeulcsnFvcitOSdnsi2SDIME5x0qorAFd3GwAtk9jUV07cy7kU60lVUX1RZJYjIJyWAJ9Kqu2NqZPJIGK0XIneLH7tm3uW492VDnA3A59Oe1MiZRuDEkkDA9KmtNpq+zOaVLnTlDQttwS27JJH41Td93AyAACT61nGnK+mx1VlF0+V7otNLuTLZBySfbHSq43bVJODuJA96KSjFqxFbDzUeZ7Mtq4+VR1LZB9aplmB69cDiipCUlzJmuCrprlt3LpkO4FSRk4Ge3uapqzA7mz8w49qp0oxV1uXgqkpSemj6ehd+9hs8rkkHvVNpCFjxz83JPpQ04ycUbKrKpTUovd/cT7sDkE57+lVRNn7p4A/rUKjpeOxjjsQ3BW+4tb0XByQDyR61WeT+HHTH4VcaUZyvc5sVVjCOqv/maCuxAZc8djWf5uOVyB0xUTpwj7o4VYxpqU1qi484QjcTuycYqj54cDJIJOB70Kk4RUZM3WI9o4zjsPabO08nuPbNV95Kn5u+ciqp00nc3xabSUWrmjuK7XJOBjPtWespbrkqzAkHvik3NSUbHEpJSuuujZOHO5MD5Q3Q9TVUMVJIxyCBntW03LmuluZ0qMaUXd3Vy3vyQRgY4yaqbg2AMgZ4J7dKhR5loatxSUkvmWQ6lvlJAOSR6VUeRQAvG45APrWcqCTtc0nVXNdvX8y0h2jHPAOB6VWL8KoOMggk1q/eWpdO1OOu8vwLSS4GHOeOPfNVvMLD5uCH4I71rKqk7MihzSi5PdMu+Zhj6LiqyNhQOQwA49QRwazq/yoyrc/MpSe5cWUMdwOdqcZ/rUIcEAAkcANjvWCglou501qsnZpaJFhWIIOPl4OD3pFCkHIPLZIPeumcVGKluzlqwlWacXoug5ZEJkODk569xVaTC4xnjIJ9amnByV47CeMcE4VFqTCQbXJBGcVCJFUFW5zjA9aizk00dFLEuVNxnurfgPdjg7j1yTj0qsXOehBUdT71uqLb5UtiqWJhG873W/3Ey/Ng8jBJA9aj38Kg528kCnZp8z2JddNJvRvUV88BieJMgZ64qF5PMABJySRxXLClJy5nswhXtF03u9mS7yCDz8wJOe1Rb8qjBuFYHit1KysKVOLp+9LoTNkYKEBt/Ge9ICMdSSp5x2qORSm4sdLEOEUkiNiS3ruPelckbW5yT+VbUKL5U7dTONWam4vVkY+ZsgAYzyexp0cXC5JyG796iUVzWiPDxq05tVVfVWJtu3y89s8n3pH4K5PVwBiolvbqEpQU3KT02BnOGXktsOM9jR5YJ3A5YGtFFRs09TV1Ul7SK+/wDMEJkReflyQfwNC4zuzjcTwe9Yz+JOOhrGCnJqWz/ABycg5HIPtQ4ITGRySBn+tRGm3otjOpTcXypioW4BI+UjJPepCSUDLkkZPPcitaNTmjZKzMpw1unZRHKQ2ME9CW96ijXG1eTtIwSe9VVhK/OmXgZuUk6iurE27eNu4jBIye1ChTgEdFGPb2rOEuW3MaYanUrRaWmpGuGG7oMkAVPn26cCrSbk1bYOT2UnZdCuCVz3HJJ9BU+xjtCn/lpjB71tH3m01qcXLCUlKUtOwwOeDg43EYNXls3KAryoJXPpUTcZO6O2POkpp+6vxKasOqk8PgVaNhKoQYIGckVMYppWZzUajjFztrd/IjXO6MDOVwc+ta1tAvyOQQA2D+FZ3k3yzfU2lOc2vZxsmrfebGjxASIcYwSSBW9pscRQsrAEcms61VTSsaQw6UXBa8u53FpIot4SF2kAE47mqemXCzSBeVIPAPevJxL5JJWPZy+dPEUrNcqRuNumYSFchsZz2J61sQyxKgBUHDAgGsfaNTcUdEYqMU29OhlrapIrrj5lJB96sSyK27YxHIIJ6n2NdWikm3ucdWUlFya0Zz0/+jnggEt1qle3qRyyb8YGOD2+lbU4pLm3OWaTX7zr+BDPGZ/lG3BGCT1HvWFJrG5skHIwcirqKTScSqdoxlHexYMIiXAJwcgkVKblZYg4xndg5rZ1ea11qcNPDzlFyS1Ma42v5jMAMAKc9iPSkknBYjccDI+lVBuM0zqco1IXcbOO5xt3YlDlAMIp+Y9B7V0MrRsrDBIIwQa9ajim4ts8bE4GMmpSdmjj1TbIACNq5JI71dntzGQw4BYkV2KcZwskeRToOM1N7XLEEwTowAyBz6elZyOchuh34yOwFZfV3P3T05NwfO9jd81cBQQWJGPes1ZTtVsEZOCR/WuWdD3k9jWhmEeRzgTTAsucjIwCfQdqFkwuM/LuOR/SuarOS1OmjaSSSs3YhDDAHJGCKhaVSW6gbsD2q1GSVrnViOSoot6scMEkBsgNnn0qFiAAcnJ4yeue9dPsZL3U9TnnKELSto3ZExOE6EtwQPSm7iXQLgOy5JPSsKlVtqTQq0HTSgpXSGs2Buc4OccGlAViGAA2uST6GqleUrLRGXO2kkrt7inO8AZ/iBB7GoxlWOTg7sKfT1rmlKUWlvc7vZQkubm8rErSbWIGeuCB2qBSHJDckyA/Xmuip0i1uctOU4yd/l8iyhJyDkJt7d6h5wAzEgk5BqqiXLoYKlOT53pqWlPDFjwq4IPQVVMjlcHJyoyR3rO02kkdk/Zxlyw3RMWyVz/Djp3qKOUODjOQxx7VpGkno+pFS7TikakLqFJAxwM4+lVoXO0/KQMgc96wjh1Ti0tSqOKi4WijTSUkDPQ5J9qzTcZBXaCCSOO1Zezk1zRWhtTrRlpb1NYXihkjbjGCQeh+lZJkHAxn5+DWtGCjDszOrWm6kUtka0k7OhAJBCg5NZImVcB2yQOp7VEYuKv0OurUlKp7OLt1LrXOFPcgAgntWe7MQ7K+0gHnPTHerjT93mTJoSqSk5PW+liw0q7cDI24yPxrFu7nyLZ5sYKAHB68Vo2k+VdTOV4pRta/4Gm8qop3HJLkgeleEah4u1O5nlRJCiDO3HespYZxVmRWxUklH7K1N/xHdQxavDcK2RFsZgOwrglluLnZ5jsXkfALetdNWcWuRdiqc+aHNLbo+53N547kEQjtrYc7gS4zj86xovDRaESzTBvlU4UH5a54VIp3SMHh0oOafqYMl/PO5YyHIwRg9KkbTm8940fHzdPX0rPl5k7aBCcrpQuztI7qIHYed0hJz2rwkePIhw0+MggDPWvrZ4JqK5dT4Si3OnzR2Teh78LuNCACdquR9TXz7/wnsWzabgZAwMnpiumGBmtWYU5q0pv4VuvU+hRex8gvhiBgmvnM/ENN3+vBCjGTWUsHNpN6G0MWo/Aj6I+3xg/eB3EEAnrXzn/wsJSeZwW3DJPcVdLA3XMuhSmnJVLb7n0c1+g+YOflwK+b2+IMYYgXJOVzwehqYYKad+jKp4mc5ulCN33Pol9SjPLOMnAJHf6V82v8QUPW4JBJAOa2hhHbm6GXJOMnTjvtc+j/AO1YAvMowuBjvXzI/wAQkztWYYZuTUf2Y6jvLY6Fj1TioXTaf3n00NUhwcOPl5HtXzA/xDUME+0HOASRRHAzT5oo2pYmKi4W1/I+p01WM7fnHY8fyr5fX4hgEETkqeTz0pSwCSuisJXm5Wt7up9RLqsIVlaXkk4J7V8ut8QUbLi4PU7ee9Cy9ys29SI41qbpyWj2Pp86xDg7HB+YAH1Hevlf/hY6soQTAZ6Y/rWzy+SklFCVKShKdX4bWPqb+3IVBDSjqCK+UB8Q8oR52Q+ADnoRVLKknZvY5qVWpGGmqZ9ZHxBCisBKAducDvXyI3xFVvl+0+gUntS/sxpqXU1hjOaPKl6n1s/iK3OR5pAwOhr5B/4WKdrD7QehOT2IraGBvGyZhUpuMrzuvL16n1z/AMJNCAFWYD5yfr6V8dJ8QSxjzc5+cZGe3esa+VaJtanqYO8qMnHofZI8RwyBSJju3YI9K+TtP8dPJNgTEh3ByO2axeA5I86enY54xVZqktGnqz7MsdVjd8q4yuCMnrXjPhnXvtPljzNzsw4z0ry8RSSfI3qe7zxo041Fq72/r1PoqGcOqEOcsD+NYWl3JdEwcqCB/wDXrz3GUZJop+zqNSd1c6oPt24xt3EVDGxODuJAPX09q5JQjF3SNK8U4qMncts3KHIxkdKrFmwBwAcHjtUYelZXTHQlTm7qJdWQcsXJwCAB2rPEuG2jJLsAKHQmrS6DdeDk4S6GwjBwR0ycE/yqmjg/XOc+tYzScve3NJ16ai423LTRgKdnJzwDULzEYUc470oWm1YuNOKjyvYbGo3AOxOGBIHUeopkbjzWcsMhQAB/OrjFRXMYU5JKzd0iZiqgbieoIPpSZGF5Gc9B29Ca2hDSyHiq1oxkn8yu7DJbOTwc98imTNsYbiQMcn1pxu1oiPZpz5pPQryts2gZJbPPpUbbWLHk89fXHQVKilZ3vchzcpWUbJERGQrEcE4471JnaeWJA6Ed62U0rNno1nBQb8tUQbcbH3Atggg0hdenGBk5rJJxd3sebVq05QstwPGRjIYbc+tVTIeApPCnr39qbqpvXYydeS5Zpb6FtJM8dt3T1rPV2JjxkFXA47VpK0dYrU0xOFnJxS2NhnUbQpwcnIrNZgVZSTzkc96zpTSXMwq13XSppcq/qxsW0khYA8qCPw5qKA7G37vlIBOemK0qyfs7o1VF+09nN3a/UdKvlspDZJycetLcOrNuDAkHv29qzoTXJ7yOOGHi5OUXonqRgEYz/ESBjsO9MUbG3b8qRwD29qc0optHfGvCCjFaO46UncuRgdcjtUJZmJTd15IFTTjZptajlNTnemxCM4AJG5gKcu7OADnOBirvGLu9yYxUHdvV/gMzgjcTuUZ+lTbdxBIG8ZAP1pwrcy03IrVJVP3ctexCxJIG4gbAQO3vQUBOMkkcAe1Xh4WVmWnUirxfqJgAD5wBuHJNRZ+YrnI4Ab1rN07SSb0YpThJODX/AARRtDEjPZiB2+tLHkBSzfNwCB/F7GsJJQS5TmwtGpTjZ7N/cWQeI8ff3YAHXmo8/NnnjHI7VMeZRcnt2PSqQhTnFx6jxKq8jAAOT9KMcsh5LD8quFONlYxVSU4vl0Y8sMDgAnGQKrc8Nz8pII9KSw6UuS5hRlCceaktepJGFCnOTzx71G2VU5OTkA47VdWE+a0TpeIi6TUo7b/MUr8xbGQzgce1IVKqOCSpyPetOVRSSMKsVy2lG+xGMsV2nhM5B9T6U8Ej1HB6/wBKyVKUFaJuqFKnaU2IrYZRvJH86QZ75JVzx6ZpzhdJXMHRSmpJ+7J6kqsBg5yeeT2+tMySWH8OG61lNNWsaypN3jf09CZByMknLbsH+VMZmBTDYO7OfSpVSctGjqjRjGChFjlYKw/iVmAOe9RSO3yhRhjuXd/dPbFXU5VCyObC4Rqs0no9y2c4ABJDEDHp6mqnmfMgJODhfpk1pTk3G7R0zUISi4PRJ/f1HmQqGJyPShnwoBHG8Y96xWstEcyThTUk9WJvwgB5fpx3qBnDdcjIOD6GtvZa819SVXXJGMoq1yT5t8YViTuA4/So8hCByTgHmnOopWSZtHlUuRbsk3Dbtzgs4G49qgZvmAznkk47Vz+7bmW4VcN/y7UtyaMk7QSSSTnNMDDKtvznGB3p16lkm0bUsPTptOer8vIkcjp905OMd6hYEkHJB5wD61cKUnFSuZYyk1KyWm+hZ3ZGG+8R8voKreY3ykKeTgH0pVKN723Mf7QlSShayfUnLDeQQfmxgUwbXKkgFeDk/wAxRRbUFfcupdyaktGOLhSoOTg9fWmBl4YnA6j3qlaPvNanNgqK5+Vy91gABzgEc/XOKY78M5yAzcGizlpH1PRpwhFtT1SdkIrcqzY+927VGfnPLYLIyjHbjrVSScUupyuo4pSe99C2uHUEe+SetV+SfLDEfOM+/rVVOWcWnsEKyhNcq97e3oWi2QQeSMAY/pTSSTnghamhJRSktx1Jyk/e/wCGJ0O0dMse5qMH3wTyPzpVqT0b1Q8PiPd5E9HcmEmFHJyGH41GQGGzcSGyMilCg1Kz2Mqk05WJGkU7SyEE5P1qE8BSSSwPy+2KG1GdkdNuaDaWqHBiAhbqSOnaoGckoDkZGcDsa1c5Tu2jmjh1GKhHWTLOc98cHj1qoTjHJ+Zj0qdXA0hVhRmopbEe9lK7c7jwSf0pm4cAsSWJIrWTV1oZ1U27yevQcHUl2LMTwMHoMelN5I6Ed8VneLbknZdjFUJxjaD1HqV7g9OBmmIQpCHOeSDRJxkk2ialSUafspbl9XOMjjAIx6VW3KARuPPPFZ1km7W0PRgpyp3T6FuMgFWbJcZx7Cq4YKVPJ3HhqaTlFqJhFQdJRWrLqum5SoOAeAe3PWqocBiWJ+8AB6VTpLkUm9TVzl7TTR/5Fi4yQVRyG5ww7e9V95L56jd0Per5m1eJca0HJ0597+pZTIAJJPbnvTEZWwv8XrUV48zUu4UlK7k1eKLG1SC2CCD0/lUZLYC9ckZx39arm5lY54Y2MZ+0S1vaxOE3Fd8mCBxToyGb3JIx7e9ZyhaV0zRuLbutGKIgVBDH5nyfrV5EDKjMPuvgYpOsouyex2UMHGVNNlFVIBH8W8Ej1962rSKLLBnIEjEZ9M9qqasrJ6HFGs5WUVvcyREwTnrnJ966/wDs5XMaxqSd2B7e9cd4pqTex6fJKDi5rc5uOzd2DL0YLgeld9baaIQ6sQGBLAf40SxqT5U9zL2VSS57aL8Tk4tPJVXPOcDPpXUiPYdmQAuAPf6VanK7k3oYunBRi1GzM6K1URhQpOM8nuK1uCNqHA+6T9axc3ZW27nVON5Lm6lTyFlUBMB1GT7VImVBdWJYYxn0zTTUoqKepEpJYiy2t9xQex2YLthQwyT296nnnd+HU4IIz6VtGcpJKW5tJQjJyWq7GtaaTvjDxyFVJG7H8XrVa31FoIhGST8gHNc755SS3JbUW5W1Oj0xfsx3ysCY2GcfoK5SXVHRlG84JIIrKrhW7O5pRxkYJuSu2/uPRhqEW5RuyG3YI7YFebDUWO0gnBIOT3qaVC7cVsKNZVIOKVrs9EmulIJQ9UAwK4saoQuw53cZz2z0ohQ53zPYunKNFOk0UtWvRv2lyT0Pt9axtRmjkZnAJG8ke/tXpKCa9mvU8uhinS1Wuo5W3N5pIwCBj0qjC6qMEHDMcGprWaS6mijOcp0ovlRuQzFUYbyc7SPcHrWYJOCFz8i4HvWns4ppSRjzVaaSb1XYnkk3ZZTzkgk1QlJCAZxnn8ayVGL91M7OV1KblUWu78yZJdgZjkKeBmsmWdhtwxIYAg+ld/1aUrcux5NTGU4NSa959DQndPLdSMlWAHtWMXldRmT5t7bh2xgYrqw2HlGKbehzTxPtFKKWxG7LwFJGWJI9cdfzpF2rt65JBP09K6ZJxbd9DkxM04xTWo8NIuxTkIwOQKcWA3A5LZGB6e1Q6iaTtuehhqcElG9mugqyEgvuJ2rnA749aiBAQxo2CrdR39aweEV7xJ+tuLcuo3K4fdkAqT9KfyFALdQMZ962lQ5lZmdOyn7Te/4McQDtPTnIqIkqQuSMZA9+a44QcL1LnfLEuSUZrRdSUllAJPzZByO9RI/fcTyB/jRGCdN36mcnGpOKTsShwD1OV4K+tIxBKlRnJwTUU7XUlsdTXJDlbHkhtgDYCkDnvVcjIwDjJAOaVlBvl6kTdKUE5rREnHy7SR85ORUKueRuPQYP41VOnJTcmKUKTUUnoTb8bs5OD09KduOwLwCSc5/SsJT5ZqDOmKcqMktLP8BivjpkHnHpUL57HlSfxrZq6Sex58J3qWTJkYAc9WJ6d6iicbd7A8ckHtRUilNqQ51qsrW1T0NBX3YBOOAQD71WV+VcHLHkZrF83KnHQ9ClTlq0kWkwTywPOSfWqzSkHPoTmqqRcmuXQVOnGEXJ6kzPsAJJOcjAqvI/mKNpwc4p01FyaZNa8ZR5uoxmd3VlOMdcd6jz5eSpJJYZHtmurlV7R2ZzOnBt1JbonMuCuRgscEmqrMHZMnIJIHqKiUHKLXY3UnCN5dTM12Zl0u4wSpKEEn9KyPFVy6aU6hwGlGAT2I6VOGp+9zPoYwnJ1E46p7+R57oNol1cTSyncVJAB/SqGnat/Z8bBUDSsxxWeJm+flWxPt5ycnJ6Lc3NY2xXUJCqoDDp7GsG51KW7BeQYzjAPtVuMeZI44OUoXg7JnfC+Atv3koC7MjnrnqDXmX2qeVcNKxU4OPWsHyqolHU9CM1OCUvmdEsqC6YrIGXfkEdq56KVQ5k3ZCIVx9aULyerCpiXSjJRXxHwF/wmUrEkSn5XGP85rjG0xlQMFZcqASv1r9BVSmtEjw8ZhZt3dlbX/gHWf8ACX3LSAeaSSDkk1xosZQpHLAHIrd1YtLscccres113O4HiS5lQO7kr1wp6Vy8MErx+XtIbgg+nrXFPFuU0ktD2cFlMZRu3sbp8SXQICuwI5xzzWM1m5IYg89Ae1Wsa4p2HPJ4c6d9Nrm9H4juZON5XGAST0rmxAR97JPOSe/1rCGNcZ3sd9bLYU1GK+9HSnWLhuFnb3J71zCmQbfnzySD/jUxxtRSTRlVyakpOpJ3v950Tatccks3DZwCeSelY8TbuGOOowO3pVVcfKnJyYYHKIOHPJdbG7/ad0QhMhG/nntWapxHg43LkAj9K5YZjOLstmbVMkg23JWehqHV7kBQZScgAEVj7wch+digZ9/WvRWJs7vc0oZXaCTd0aP9s3bKx3sDGD361U+QqFKn5jjNZLGtStGJkslinKpKV7bK3csjWpdrN5jjCnI9RVYRAkkDPPAFR/abck0jtq5U1FRvrYnGqXLAKrE4XIBp0UEaocnJPBPrW9XMpJ3ktDzcLkcFTvbVfiym+o3KENktnkD0qeWFZOQvXG3H61cMdf3mjprYblp6PXsV01Kdow7MQrkjjv8A5+tTGxRwM53YO09jmrnjW5abXsc9HIoNuo37yV/UhOoS7lIcnHJB7+1QG2X5epZmyMdhUzxLjLlZhiMBD2cZJ6PojrdDvpY5UAJ+ZwSR3pmgwnep6DeCMUq2Lt7rehrQp04pQjHVn1R4CuWk8hskMMcmk8AoVCdfmxn6V49ZRbbRpFSgndao+qNEl3RRLycKAfan6FGPIjPI4Ukt3zXjOKjq9znrvmei1R1KbgNueCQaI+eOcAY5pTnFPlkjkcZN2vuO3gEjncARTtg3Edcqce1ZxUW7mlDCunpu+gRsoCBgcD17etCDDZJwBkkeuKitFtpImlGTjyPo9yRZGHOe4AJ71CCeCwAAKkH+dZPDq12joi27tq8idmchSD8xyCKiODwCcljye1KVKyTlsZwpxqNSb16h54zxyoBA96rYGCvZWyAe9XCKjFJs3pVG6l3HRfmX4psM3UggAk9sVUV9oXqdxzj/ABpS95XRVS9+VpJXuy3KQ37vrzk4qASDlnBDFiKXO4vVbmTTnKM1snoDJ8o3AgJwMUyRiVxgk7cjPr70kk5prY3rU3Km5y9CAtt6k4OTimudpHcA8Y78U21KV+hz0OeFJpu9iB2QuVZgVfgg+nvUTgMFOcHPT6VrKjFLfYinUbldq6tp/kQMGJBVj2OP8aGO0pg8s3Of5VpGpZcrWgsNTTkppWfYWJyH2c56n2pIhhg3XPGfWoqOEYJo0wleU6rU9FuXGG5gRjOMGhWLnPbPJ9ax5ko6lVoQnJN7JlkZVDgfxAZ7fWmhjjgnGR9amM25+RcpxaUYvXXUUtkRlmODjn6mkLYRQVztHTua2jNttNGFSmlFNu3kGRnYoOA3X2pnlnaoyTjrXMoKpdXOmdKKcW9xw4KHJO58U+MEnBJG7OPatEk1eQ6UZSumtOv6jQxxgNgKSCB29DVjaOBgehB70lOzbexnifdi5x/pEEcpOcZ4k5J7/Sp/L+ZPmIG4k+3tVJxtdmcIQqJKk9fyY0PncDnIUA+9I2zcwUn7rDPpmpoQSim2ac0rtx6b+ZBjKqzH5ATk96nZQUOM4QDn1x3qXUknboDm5y5mrNfjYq4ZXUZILHA96l2MwGTg5IOfpTV9UmaRrRmrzQwNtYLzheQfWlUsQq/7RBx6jvVPDOSJr1uZLlVth4becEnC5/Go9vIwxznBx3qXRXwdNxTxMlBSjrLYm4XBPOCCR6etRZI3KeQCD/jVRg476nNgas5NyY4FcHDE4zkUAANliBhsgnv9alXUm2epUnKMFIc2SExxgj8aRJAhbcDySTmnCpJJTa1uc8GqjcG7W/G/+QwA8fMSRkAnvSljwOgZgDn69a2lKSXvFUsLTgrpbdxpDnrknkkinYRyWVjtyVA9K5ZVIr3uxksK5T5I6Pf7xNpLFhkDcQc9x7Um77xzwB0NXUmlDRCWE9nLlb1EzhCc/M3PPfHSo3yd5HqAMds+tRb94rMdLE3SbjYkkf5ApU7lzyPfFQgsM7DlwpIB6HPrSUW5O2xpLHRinpqx5yqgk4PUj0pzMQqjGWLEEelaRqWduhFWlTlG32vyIw5YJjI+bqe/qadg7uemBxWcGm72NJx5YK0rfIa+SyngDJB/GmNxgIxGc4x39fyrXSScEYQSi1zu6ZI56EnqeD6n0qvKSUQYydwwPXNRC6koHRPERU+ZK48nlSScHBJHfI4qAP8AIrA8Pk+wxWEp3bgtzaVCDTSejJdwONhAG7njpzSDlkBztKkgD9f/AK1dF7RvciK9nb2erfcm+8Qd5ByePWmg4bIbG0ggUczaSMW6iqOUo6EqtkFscAHINRKxzyQNzbcmqs4q1jorYpU0m4k275SoORyCaq7j90ZOMg+/NJqMXa5i6rqLmW/YkXgsGJOACPb/APXQpBJC5GMZHrzQqibTSHVpxilF77jS+4BVyfmOT6U07cscAYPX1punJzck9Co4mCoJQWuomWUcclmJwPamLtD5yB1wPWj2kYJOWo6sppJFhWD7WJAGe3cdzTMqCM5I4AH9ah0uZWWxi1KnJc27J0yd3zkcdP51EWbOScfORx3rOTa1XQvEXcoRUbsmWT5iOoGAKhVwPlODj1q6s+WKbVzoaTqqMnv09ScN9wgEgt0PciooypAy+ORnA61pCqp3i1qTKnJySi7NaEzHcw+YjJAFNYAjJ/hXKj19Kl1HJ3RNalOE4pO992RSFmYDkHIIP0NBALElic8fSuiLcI2erZp7Jxr+0ktEhiE5YlQJOScdcev4UgYE7FcbgTn6HtU0rNXWnkY1KUYxcYu99fkGd3UkYIOfXmosA5TklTg++a3pRsk2cMqiqpJrVfkSJ8p2D/loSOP4aco24Jzk56Vx1JXaTWh2wu5JRf8AwwowDkkkDB5pwGAB3Kk5NXP95JQvZEyXLd2vIUGMKVPDDJz70jlVUnvwCT3racm5cq+854uEVyxW4DBxliBt498UzLb1HPAOamVOTV4mFKolPkirpFgZ3Env/nNQ5yi4BO04yO31pRl7SPK+h6axcWueaJYshlIbrgCkQ9FDHnIFXiYNxSWxlSrQtytalhZNoXGSuTz60xMEkZ5XDAHtWVS0bKRWHlJwdNssqTlfmPUj6elICdytu6tzjtSUk3poZyvS5VDVfmWoldfmBJy4BzUkR3lQG2qTjPYVvZQaizTDVlUTlbQmV2QkAkh2yB6Ub/uqox8wIP8AOpUI3T7DnOCbV9+hbs0M8ibGJOcjJ4qzpYCurDAUHH1rz8RJJvl2KwUpTVtrWPTNMsozHFuI3JySfXFVLS8dY1+fB3YAFebUpucbxPa9skrS1Ro3MiqSzkDaCSTXK6vq4i+UHLspwD+RrfD0nyqLOT2kqkGovRFW6uGFxnzMLvyQe/FcbLdyse+5WPPOK9H6um+Xqck6jikorTp0Os+1MHBDkKck+1cot3IoUFyS2CM/qKzp0lGXKlodMVzW961jq0uPnzvJOMmuZ+0sXG3Kq2CPerWHu7M82eIkq/NF3OxiuFL/AD8qVIJFcq1w/XeQOM4PSsPqakrRdtTshiY05K6vc6iVQApQ5AXOR2rBTUcJtJ67v5VVKU0+Tow5ISkmWJMsTubBUFifSq3m7lLBjkDt3rrSel+hFJQUvZw3ZqRBzGhLFjwPp7VDa3B8wA8qVBI9amnTUrtqwLFThJRWyLbuEYFwTtIJxQ3zhcnPIP1GeRXPToRg+Vs35qnKpraTKckgm+9gc4IHQ02a2HPzgbiOB25q4qK1RvRoTlZPQoKBlWXPlqCAB254qzxE2HIPQAjuKcOVrmerMFrNyb0HLkAjoXORn6dqj8xiwHBC9fxrOcbrmmTh8Rao1HZkkjjZtX7uCcjv6CqEsrcbSdpcjjviuihhWpc7OStjJpqKKchbAVv7wBz29qexUsq8kscg+9e3GcVG6R5OKpSjUT59RqDO7aM4yBn6U3DhgScKcEgdTzzWbpJPmvoCm3FJ331EBbJOz5jtGPQdxSngKck7iQR6VfLCUeVMvEJQnGotUPOWIyASTyagDnzMAE5IB9vpUToKGw6VSEpe9o2OJCksQS3AIHao8krnJBJzn1ra/vJS2ZyytJNokIG5mJ69M9qGU45PIYk+1cl2nyrYudSSSkloyJlQsCGO04/ClwQA5JIdhjPauuNNpcrOlV6a96132I9oDcMVUdSffqDUrJgkDJzWDhGK1epzxjJys0OkyOpJXdkgfzqLcxXLcHk8fyrGOHSTkz0JynFpR0btYVmJwFJIAJJ+tNOFYDB2nOKzglbQ1rpVI2lq9PvA4JU8j5uD607iPBBJB5FZU/7rOiUopxcokjEE7gcNuBz6VCWxhjnDenvVUqT5U09Sq1a9WzVkxrOeAAD1JJ/lURYggnHLEnPailS5UmjzK3KoylF6DlZSpPXJIzUSkBOh3eYTz29KucLpNmOHanTco6JFkSHgLwFUkmog7bVXPTIx6VzOLlKLtoeneUYNt6aD9xKlejHge1Rs4DAEZx1ranJuFlsRCmpS50+w7zNjABhzkAdqrhjwcn58AGqVm9B+zkpJpXuyyWDNuLEBV+YDvUSuBvLHDMwxjr0/xou4QsmY1ZRqTbaskOZWQAk4baCQPUioJZDlSckEgY9KdOLmtSa9aEZQUXqcT41djaxxZPYgVQ8Xzb7i3Tn92OQfrmtUrUnKO500b3SlbU4MIFddxJbJJx2qSUhyNoOeSK82nJJXkdVek4ztF69fRjWPmBduTgsRmnI4BPTBOQSOBWjlfVbM4o4Z05rlehV4zxwPT0+lKVz8xJ4YZA9KFBxVlqzWpactrITKxhhjIJGB61YjTe4BzhsEe1EWrczYVVKCTgtD4RaxXCH/AG+vrVA6ujDaJDwSoI7191Gk0tT5eGPqc0YJ3S3LQsIsMN3z5JwO+ahGpopJBznAA9DXLTpybuz6FYyMWoK3L3NK202Ihi/AZcAH0IrLGtEDcCCFODXViKMpRTtZ3PLljEm3J6r9TUltIowuSCU6n0rl7jXV2yYY5JGAaFgJTXZG9HMLRi393ew+7CIxGCdpyQPQ1zlxqiy8hifkyD/SieEbfNLbYzeack4xTtd6miDGWyOQME+1c8uojsSRx+HrXBUw01Llij6SGZU4LmevY1hjdu5UMwBxWR9vCFXJ4L4Oe/uK0eHlFWevU5p46NRqdrJPub8TqqqFbp1z2zXPPffvcLJhOvPU+lYuhOTvFEyx8eXnerul6WOk8xDycHnJB7/SuaF0xALMQBnJrWlg5qTUjohmVKpKDi7NHTiUZ2jgDnPce1c0L1y8J3Hk4x6/WumWBbjzNbHFUxlNVOaLaudfFL8obAGeG9q5sagSv3jyxABrBYapOSi1od1PEUHH923ddDpo5N0bANgrk5+npXNrfYEYzgA5IFVWw81Ky6GGAxNOacE7XOja42tDgjaGBwK5J70kk+YSRyCO1aUcDOdyKmKgp8revc6/7R0bdkZA4689R+Fc1FeYVW3HvyfTFXDByjLUKWNoypXjK8l+J0KOdysTjJO4juKxI7g7lG/g5PPfiqnTcm0jOdfmSctmekaGRLJEgIBLDGO1UPDzq7wurHPmDgdq850oqV3udlHFrkULH1z4BiX90GIzxk+oqPwCTuiJzygGD2ryasZvVM3jFODSd7dT6n0mNfIiVTyUHTvim6M58qMEYHABHeuZRaSi0ePiqU6sue+qsdVGoA+bnqcDtUeGO0nJyCuBXO0+az3M/buKUVG6fUvIVKc4xnAAHSq6q3XcccA47Uc93bYHCU+o4xp8yYxwQMdqZ5snVyTjgAdhWnM7XaMYxd24fCMESEAFsg5AI708HuFG3tmtU29e5lztaW2F8oBAQcjqAO1KpznLkfMCPapbaSjJkUMXJRcoq7ZVdV+6c5JBB9alYnl3YcOSaitBtWZ2UavuOe6KrgglW5IGeKa7YO5WzgEc/pWFOTSvYqclOaittB5dCAOo4OD3qiXYnaT87KcYpudndo3UYyWmqX4FqOTG3kDLZBbtVF3XaVyQ0mcH0p1JKy5UOjzzTlGWxMWDE7eQp5HpmqwfaBlicnGT1NJxinZvVHHCu6keSMbO45iOME55Iz3qTrxggFhnNZxinHmTNXUnGpGmiu3OCTjdgY9D608ouVYcbJARjtV1Ia3TOn2jbfL6ECkLjJAyelTjBXcRgAkc+tVdX11FTjGyct2SB9u1Bk72Bwe3rTVyNj9SGGc96mlS5bxTu+gsTblbT0e/yLONwVueG6evvUSzADnI6gEdvWs6r6NE0cK3BSb/AK6E7/eAzwxAqAkohUt0OM1rCnbTqbVOWXKprQtRsG+VhnHBz2qOM7FUjJzySawlGLba3BwcLLdIn3EDnOWPPtTRgsNxPUVcbNczdhKlUk7RWjRaI3BcNg9AfSmgoNq7gGU5wO/pVSmr2fUcqLkou2uwv8J/ebgMnjvmlY42Z6lgOOnNVeTkc1SEaacGiBo1jQ44G05Hp7mnyMANvIPOD6ipVVtm/wBXg3GK00Ilct8wIwuRg96hVTjnIG7IPqKfskpJLYyWJvHle62Za6sASQOpFIqllySSytjHpWaoO7s9Cq804+0avLsMZeMpnJLA475qaSP5VAyGAPSnRqtSS6nE6KdT2jVpPsVJA2/HGGHA96cC54VOjck9qHW5W4ov2adR+11TFPClVbJwME9qftBVgD1HA9KismpK7Lgk4NLRfqRqR8pIOQQefalQFlBOSQxJA7fSqu4vTYnC89Sne91F63GMeQd38QwT/FSqcjJzngj2odR6RaNoPnfMtiByZGXkht3BNSBiy47EsRntxUyk5PlJp8tSLkpbdCMMcoDz845NBGCqtkgd6hxfNZMqpWtTvCPvIZhvlZckA9ak3lQcc/NyB79K0jC7ae5pGUlTc4rViLgDA5APNDARrkMRuJ59KzaTtFPUmnBpe1i7vsRBWLlj14HHf0qTeCM84AwBWkE0kth01Oa5pLYRieoPLNxTMk/xYA5wOwqUknZHZOnG3PLruTDBYcnqM+1V2bGMZPOM1EYyu3HcxddzilJWQNhzwuNjHpSHBXHXPBFawcVZRM44ZRk6s9EvxGsMhQeiknAp4ULwW+cjnHQ4pUknJy6F4iTpJT+yyLdhVXGMkkkUqK5XIwGEmVB7CrcFFuT1ZManPGMoR0JVKkFtwBBPJ7fSmkZ9COhxWNJLnNqk3JXvqMcFmAOOeCR1P1pVwWLgH5Tgg/SumLUVdLVnF7SSkoN6JjjtGxjycgZHfFRY3bhuIGCT7fSs1SkneRGKk6sk4rceuQMtknjBPc1Fu+4MkAgnH1PeqVRpcwUcKlFK15XJdwQ+5BAA701vmZFIOG5yO1Ckprml0NamGk24J6y6jnY/N6ECqrSFQxLZVeTn2601o+V7EVqVo32drE7NkDoe2DTNpHygg8HJJ/LFZxmldJaHRRptU05bokTYFUnJG7IB7VFkqVAzktncO1VTg5yunodtWmp00p69SVm3kbuxxgVHv6NkcEH606lJpq70OWo3H3lsTk7SCPTJqu5zjJI+8eKilCUHZ9x1Y05pVE9SXzApT5cliDj/ABqpvaRQVODgg5/XFbwheW+5565ISST16ltXLEMSSuQAD2qAvnChhvUA4HpWUZX0cdEd2IhH2cVTluTNIV5IJHBGKhC8qdx+YdD2NTCCmnKWhPN7NxcnfQWNsknacN0I9MU/7hVueWII9a6alS8E0tTlpYr2UrVNU2PVF5bncWJB9KbuKlEwD8w696qKk1a2hp7aCm7PV7FrBKdckkj6CmBsEHdlRk4HesKMZL3nsdEqClo9xyqxOeQAenrTldsqAeg5z39qesknH7xU8Cowk23qSKqyZ3DJBH6UhcupC8MCSCD6VvQglK6Odx5FzN6roMYHcByBwTjvVvAK4A4YAg+lc1k7JD9pUb52tCjs2rgE8EEYq2U6YOc4yB3rZPmkosmUoRlzPrYrhiy+45471aMTADAOFx0oTSTkti8bCUnFtWtsM2/KrdPmIwPTtVgLwpPQ5OPpUOnG7fQ1pS99R+0RorIoyfm6jPfJp+8HBIIwxGamytdo2dRzqXTtYlifauwnA3kgH9aYVByGIxkEZ9RWtSrFSUnuLD+0Smov3WXAy7guMjIx75qBZCoAyCR6VzTV486WpzwqOMrtaGvA4jkUAkKBkVlecQihTkg5JrLld7SWx1e15o3StdbHb2Woxg/vT8qEkg9s1xSzsSCSQSMEjuPSiFBNt7GUKijFNM37+VLx0ZATtY59+elUI5kUBgTvOM47jtV05O1kzOtUnOSurdDRg05DESW+Y8g4qOK86AEhcAkDv60X5o2O9w5rNPVFKazwckkk4GB2rQdRJglsqAAB3q2ly3bNuWUJKEldsy1iyu09VPBHatBbYM+4YJGAT6UTrRivaN6nkYinCLjTcdbmfKMjb1HBPvjpW4bNSMDkjIz6VOHnFK8nuXWc4tuK0OdHHzDkHsO1ar2ioFAP3/mJPet6lSCtGKNMJZwVVr/gFWAPgEtwTg1KECnaGyy9SKyn7t7s3oxhzKsttR2ZEcFX428enNWSo+XJxtI5qI1OZWYVKVOSjKLtcljumQDqSBjPpTwqHaDz1PPeueSu+ZrRHZRlFxUU7MZJN5mWOQMZqWSBShIckKpLD1GK3g1fRaHMrx95yvYpnJZQV9z+NOZCCOTk5UAdKqM4xXvBKipwacrX3RCSvIDnGSvHXimZwWK9VZQM9+avEyatFs5YYpytClHRE3l7ghOSS5zn6U1pRlQQO2Se1RRrycnKWxdShBNPruNa3VQzBQMc5H86d5vGz0Ynn37V3wqRVopbmdXCU5Rbb1WpSkX5gynC5wB61PzIcBhuLnHoadCumnCWxx1KCT54PVlHdghQx+9jJ7UjgjeVByFDAjoPWuyFRct0cfuylyTe40vkEjGBnJPamt8uV75yMe9Z+1ipuL3FTwTclJdAXG0KwzyTk9qYGUYDZJxz+JraSaXP3JpTi26bVmnuSiQ8dD0H1pu3MZOOeSB61h7Vct2tQjhnGokndBuy3l4+6w2+4xzTJCARngDv+FRWxEl7zR6NCjGUuRq0kJvkDMpJBDAcd6YZFYMocAkHB9M9KhVpONpLcinh1GfPfQCeuXwxJx9O1N4Lgc4Cnj1qvaSjBJMzxFNKq5oTJBweSeA3pSYwxxgjPP8ASkpK1gwmBjdyT31FaTcR129vf61HgkgdgSTWStGyXU9GUtG09dtSbdt2kSZK8gjqKr5KY6nAxn1560oxXw3MXGXw20tf5knykqCcrz0pEbKtt6jIzWlSXLJJdSa2EhVgoyXQRmJAXJ+U8YqBnPBwc5Iz6Uo0lFtSeplCShBQXw2HKzfLjjqSabjC5ycbQR7mtXaTSRMaUlBNu6/Mc7F3X58DOCfaoXbarBOBxgDvRK6aikaYOSk3zDjKynAOepx60xQpIGSGBOAe1YQUY/Ejtw+JqQbdu5KHDfMCOGAIPaoSSM4x8xA570+ZpKHc1U41/eas0PeQk5wMdCKriTZneQVU4I9Bnn/61SoqKsjkum7TWiuebeJ592ovkZ8tVAHrWbrMxkvpnzjEpyPUVU20/Zs76mHj7KHKZbMFZTg4BIAHeoULMFOcqGOT6Vz1aDkrSZzQxtqiil/wxPEB353djTIGBXdkH5jWai6S5VqRiJOpUTtazGkhWfd1Izg96idwTu4wGJOe1OUpNKL0Lp1FFabX1J4WBIHO7qAf5UQqwKspIIwTik6bckuppCD5Lzff8T8wDdtJsKBgxUkjvVxNPKgY4yBye9fqrwkYOyep8QsdTrpOK5b3+ZWS+lTcpYgHqT1GKuzacuVIOGbBOa2VGNk4nmqSp1FCo76uxmzXLYIVmzt5+lSSWhEhXOSFBye9YU6c/iZ63NRjHkl8UtkZ7yyMvGM8ZzWwtg7qqhRhyRk9uKbnLntJFUoRpxipvTVejOcZ8sGXsD+FdUmkGVRwNycgAda2lUi/dkZ1IKjFVviscesUj7SnG0FuO+a9Jt9GBEYK4AJIPqfeuTFYqKWi2Zvg6cZzjGMt/wA2ec+RIAiFSRkEEnpXp50OHJBA5JPPejDYym37S2rPVxOFnGfs5NWPNvKZlztI4BGf0r0U6KrgOiY2OAQRW9Orz3jLQ8OSVGNqfvSueeojtlXXO4gFexr0D+xUy44wuTinGMWk5OzLnKbfMtUt0cVFAwwig4UAkD+Vd1/ZyRqrKDucEYx0rpoWqXjFGWOx9PDxUXHTc4oWrL+8bOMZI9K7eXTxnO3kqFyPesZpJpN6BSm2nUW8uhwggk2o6j5S+WB7+34V3Z0zhMDIHJ962hCLvoXJ+wlHl1bX3HCpA5wBnJYcetej2+h7mTAOMjOBXNOKhJyWoYLFwqS9m3vY4m3sp5z5QjIK4Ne56P4YhiBmZQW55/lmuLEZjGELHeuH6kq/PGVkjxI6VdRyFpMg4IAPf3r2HVdMXey8bdpJOOmO9csczc0rqyPTpYFOpdu7OR8MxSGdEQnG8HA9a7/wroUiTm4OMj7oA+lc2JzKnJp7s76ODk4tx0sfSHw/s38uAsSBxn2Na3g2VkaEdApUECvn61a8m+h1UabUHHqfROj2/wC7QknGBgHsaTSZ/kGSRyQB6k1x1Jzuoy2PGqXUm0/+AdMkagIwzkNyPrT45dqDc5AzxjvWLqcz5UXhqHs4xnN3d9xWfaF3HI3AEe2ecVXncME5H3jUJNSaOrms01p3IXJy21sEHIx7U0bSWOMkjmqU5tJTOKDUYvlWn+YB2VgVJIyST6cdqXcAmOT8xyD2qJTcbKOptTowmnODt5ETPjOMjLDqeuaidguMnBbHH411J+6tdTz6UZTqpJadSOQt8mScs4JpzfN0JBOQPapp6T0KvKi26asrjE+bdkY449KXDHsRh+p7VjWj7ydjanZwab1uRqql1YE7QcEGngYJ6YHT2rapVXKl3M8PJKLUtXcqEE7QQCx6HtmrKR5zlsYBJHpRJ8jtc1oKcnaUbIokbAobkgkE+hqdowq5boCSc/zrLkvJ3eprXqwp0rJWZGXHBx93tSBQ4GASUz+NTCFpXWqOKVec4pbJACeAxyDk0w5XgEkjB3Gto6xWmoQcI3cXvZMcwYbApLbgQM9s0bNuOo4yAO9YU5uL5m9Udbg1FJPQjbec7XIBYAUHLMCCdoIyP51cG4y5nuOhHnlZLTqPYnkEgtxyKQHlMZzxz681S5rqTIVLli6a2/IkDCTaAQcEAk+tRgANlMAhgTnvS9m3Zt6joNp8svhfQuNwFXIIBwR6VXHJKjPzYJ96hR5EpNamtTDu7cXoWW7gHGCASKjj3Fsg5O4AZ6ViqraStqa0uT2aTdtS4OBtY43ZIPccVF5hIz2HFTGMlGyKrVIwqqqpdi0JN2xeO+B61GDtQBWPZsn1NbUqbScb7nNiJtpVodbg5LPtB55HHbFR+ePvqCCuRj04ommlyC5FJLm3/IkXG1NxycggjvTQw8vcTgKSc+mBzXPyJSaQezUuXXVE4bGG3c7cY9ahI37QMg7gRnvW0UlJRexXtYOPuvVFnd8m7PXI5qDOFA3YXI59fU0lFe1utjZ1nGlqtW9RSGJynAY8Z7etSRscYPQED8Kei1auYaqspp6kAiw5IPNWSqynAyDnp61Uqt3Zjlh5RTqbWISjH7uArHqPSpfugY5wSB6CsFSlGT6myqOpC7SsyswIORk7jgg9qcwO5QDhWIJP8zWyjZcz1ORVZOfI1r/ViFm4X5Rgk7j3HSk3nOwZ5JyR6dqKdJJXaIjXbi5Napke4sxXnOAfy7U5kYAsGwccAdquLio8sdztoVFNqVRWT09SNsJgDu/enOpbBfJbnk96h8qd2KeMUm4JaDdxBRg2MnGPSnoFQk7jufIAPbArGU03ypHNBqnK3TuQtlSgHJyeR2qXgjeDk46HvQqiS0V2dNWmpK6duyKbZGCzHO8dO/oKsbDjgkMSABnr61rRmre8jnjVk5cktyIsDtGcBc4xTlTjC8ZOeKVaTcm1sbpycFTfUTd8p7M3b196cVwhHcEHArJzU7cxEKcYpU2hhJYHglkAIx34pQrE5yBgHj1zWyxHLFXWhr9WSTle72EyzbF5DFMEjsacpC7WyQBkHNTTioxbSJqOWlNaJjipyvfPGKVzyFIypX8uK3hTtokJ0eVczegjY+UFjgE8DvQHyenO7nPelGLW71OfmjOST2f4epJ5allO7AJAI9KFICr/AHd4GTRCavr1PV+oLm0nYf8AZQ54OGAODViKXadw7nH0qoUm07o4KlVuXs5P0ZTNoynLZJJGfYVpPcmUbR/dGDWUWpNxasi5QqStOD2MN4Gdxu6g5wP0rZRgSC2MZAJFElFK6NazimpvRoyNrBvL3HgZGK6AW+SuFzvJOaycW0mvmc1Wq5t1I7o5zYzbATjucdq25bLLfKDg5GK6IpJaaHZhJxp6xd3YxcIwVcZGQADWjJaFSoCgIAQBWdOyd76LoKpFtKUuv4mVyykYBGQOavKhjO4k55IBrZtNqUTGhQbbm3ZFFk252gEkHAPep/KIkDNkA5GPTNSm07N6scsNBNTSuuhUIwyDcQQQT/gaubcjewyCuAfX0qnGzUnuc6pqLbjsVUYg85LE/nT0iYlsE84KgU6/Klc7qOkeZfMYrMN3Urt4JPSrXkDcCowW5OO9aTknFJaHn+ybu+hGsbfxH5jk89uavRxqzcjIyOtKHLGNkzedOCXO1roQfOuOAM9SO1XvKd8EgAFsADrikoKS5WtSamI9m04dSkA23dkDk1bERXI6kngn+VZxppytHYrFKThyxe+pVXJcbTyR1NWlRVU8EEgn6n3quZJqEXexFGnyr2m7sOXdtBLfMAc+1Ko8shvMIKvuOO+KJRvK3RmvxRUpPW9rDtx3AMcY5wOhpCcKcdDgA9xWKT5/c3Zph2lT5U7+ZMgwcZJ3N0NQIx2gOTuznI7+lL3otrdG6qRaUm9SYYIVFzhjjP8AjUSS4Kg5ClsYHbNaTknaTRzxrqMrbvsIFJOck7iSCe1S78AdcEYx/KpjVlNJp6IhuMpNbN/gRsW2fKuDnAz1NNIJAOT97jPetPaJSv0MKKj7KTtoMyScjOQ+GJ71PCu5QzY6g47VoqnK03uFLDucEm7LclVdoOMHGBkU/HzHk45P0rmnUU4q+x3TryjHlauMWM4YBiASOTTwSDjfjI4HvjvXRFONkcVOto09gUSFlUZHOcCnK3oSOBg9zUSjZOMQqVIxhzta9iyhMYGQScg5HeoBKVL9cjAB9TWXLF6ye5cMRdpNW6l9d+fk4GQSBRAVBQHPJBJPaok5Rjdao9Ck0mpSdi5CzspkGQc4A+lOV1Ri3LDoAax5ZcvNFF06MJzc9ncsxzbSPMJI7mqXmRs/zEjaetE2optmkMXduL1ZZuQWK88NyP8AZqm85+Zt3IwBjtUKi0k29TGNRwi4r4d/mNDsX2jBzhif7v8An6VEDlfkIB3YIPeux000oRWh5sZTS56mi2+ZctyXwOeDRbEpu3ZGQCB/OsJU0rOKPTTjJqL0at8ycxNlUGTnuKnilLMMLgjByf1racnFKyGpxScZFhVfCjaDwRkd+K27VY26dB82fSuZ1FGLbJ2k6a2ZgtAwXr06kdq6R7USZPAyGJA6msqmIirRfUqjgeRObdzh5AQzA9q6W500JKXAB+UHnvXSpU+VXWpz0ak3VaWz6HGSkxqd+QRzk9q0dUt/3fyc5yOe/tW9OFpcxOJrKnFpIyFl3HIOCT27GqyMN2e+QAPTjtXR7G8bdThq1+WaqfZL/mjcgGRluvYDPP6VSE20jJxngk9ua1hSklfqaV+WaUosss4l2qAMYByOoOeQah3cEKCGKkAiinS5YqMnqcjjTbcZrUTJIIHOen/1qRwFG8k5wDj6dMVajbVbo0wypRbjPdjDu+9yAOR707djGDkng+1dP1qcbNI4KeEUnyxlot/MTcfLyM59fT1pTuIyB0ySKptOomzalCNOKUtHfQhuCzR8EBMEZ9T6VHLIQSuCQCSB71jyJN6XuEoSqTU07WZGyDKZbPUE+n1p3K85yWPNNSas0d6bk2k9hNzIck55A+tKVV+cDLYH1rKWHi/jZjHM5RtGEbt9SPJGfmJyAcUFiOnXdgiilQco6m2HnCKs3qMMpJXtweT3oKLG3T5gQeKaiuXmS1M41W26LluPBK/N7k0zf0JHcYP86l3jJt9isJiIxp2E8xTH0ILDA/GoyARzkjjGfrVygnJNDhJUk5N6MaJW2bM/OCVx6+9HlglX6hWJJ9KyjSvJSl0FVc4wSauv0HLuJAbIwOPwprtyDnGOuO9aRV5We71Mqii1CyGtnHykHDEknvSGUbVc4GGwSPes4zi5uOzNfYzkk763+4YdxZWJIPGacWDDoAwyeO9WkknBPVndCi0rqVyJizHBIA4wfWoWI4z1UgfiKHTtBRa2ObC1f3klHToR3LGNZXb+5niqt/LttJ3JI2IQCe+aISbaXQ2qYVzT5u1vvPK7uQvNI3Ysxz356VXuWBkLZABzzWFSneTmaYOk5aRey/IibCrkeuOKrifdgnGBkEVz1YSTTbOKWLqVJOUY7FuJtpAU5HUA98darQyMG5BC85I7VnOMk77nTUs4Rqp2XX5j5DjOOM5IHY1WK75AuSPmwPQ10e1TSci6lanytU91a5oRSBkUZIZjjI702PAdGI4VunrWM5395oIVm4tye5+dsTBFAZh1Jz61z8epRlCzEFiwCj+dfsXs17SKS6H5bQr1Ix9m9XfTyOnJRygU53KQB6etYkV8AQckbASuP5VlzuOl7mt+Wq21ZpXOjt7VHwWAyQBk+1YyanyCWwobBOelXVi2uZaNGuArSmlGdmpdTqks0QNsIJXGfasCLVQ27a5AkAANDhzJSM8RKmqnIru2pvwqocnIwvQ+3eudOqCMSBWIwTgilUcKiikjTAUpwjOafnY7CKRCVywHzAgiuKXUtqghickgEVFWjBtSXzObB5jUjWcVGzezPQRJFKNwIBJxk9TXHQag5wAxO7Bweo9qyeEgumh6CrzjUXtHqdhIUCeYMHaSSM+lcw+pqiAMSGOSQPf2rWHImml8iZ813Sgut7m48sfOz73J4/lXJSamVZT5gHBJIqKkYxV7HVRcW/eVn3OgeZYyGDE5U8A/zrj/ALewcNuJ3EHAPJHtVKyi7bnDVm51eaSdjslmX/aCqc//AKq5mPUeVVWPzMMbu1TUSbSludUaD9k4RXX8z0G0hMwXaCUkIJ/2azNP1YRQ5C5CEAheorya+NlGTUT2MJgV7NN6tbnq2k6dbCNVlA4Aya5mw1suBgkYyCDXh1MZVT5b6nvxwUXSvy6Hf3DQwRMiYwM4I965OS8aVT8x7g49Kj67aKbR3UMC5UefqrFea4VZBv5DcHPasO4ZCcsxLKCQB0/z+FZvEKTvsdc8M4tNvRL8T03wvqNkjrbuoDFzyD1rhfDyE3UTMcFZeD6V5uIoJrmud1DEVIRVtrH1p4bEZmhMPC7iQe49Kh8DDzo4AWJORye9RKUfgb1POVROUprY970xU8pVU5YBSSfenWEXlog3fKcA47YFcqkk9GfPVORJxqdTZLOEwpJXaSD6GoUPTBJByMGtuaMJJhVlNxi4q6/RE+4sFJJxwDntUe9QMsxGWGQKm95W2NZzk4rne4F2dwDkZcEn1qElwc7umMEdqudKyvcKVRKag1fcmc/KWB6c59eeap7iVyCcHg/hUxhHmSQ5yapNvVkzNuAyctjP1quJCGTg9gMd645VHC807q+xUsPGoouWj/yJg/TrnjkdqprITg7/AJXJBz/KuinKV+ZoxjeUlbVFoSheNxOeTnvVYuwHJID8Ejv6VrNtpSTtqbStFypyW9ncmzv3EMMkAYFVnkDBwFO7BGB34rOFFtpvYqthko36kpJGME/Njp3qqz5xg8Yyc9s9KtSfLzvZEVJSqxdKMtifzj3B2ZAx9arBiAW3Zxgn1NROq4pSa1ZjSippU5dC+pCq2Mc8H2NVBLk5BwCpJ9zXRCSdm3psKrOUarpwV7Fryy2QMbsHHvimRy/UjjJrOTTfKZSlC/vPceI3cbgpVhng9qlWYrjGeFyT6/SsuW70Wmx1/V4xcWnchMQHBOc55HY08Hox/iOQPWtKiileHQdNNpSlo72XmRMDk9SGIH0qwhQhST90jg/oBRCqknFrUJKpOXKtCHy1OWBw+ePepzzjHAG4cetEJzkrPYxadJ3Tu7kfk7XUhiOxxWiisUBGCQBgHtzWc4yTshwqynJST0M6NMYXAKg59qv+SpAIGMscGilh1dJbmsnGcd7pFXbtILEH5jk/SrxiUBM4POMHsaJ3g3GWqNLQcouL1/IphWZmUP3JyanVOi7eSQCx9qcsQlH3UcMKf7xqT0voVWU4wWAXI5+lWtiqWyMcjFVPmuo33N6fI1eUdejKqjauevOcDvU+JDkkEKCeR2rmpaytLY1pVJRabeokYxtkGc4Jye5PapYz8gXn73X0olOSlyLVE14Rk/au2ozy+NpxhMDH9KmVGG/JJA5ye3rUqUpT5UWsGopVU9VsIoyu7t1AHapU3HoBlACCO9aU4OK5ZIxr1VOLb3GgbAGJPJAx6YqF8jAUnI5IpUk3OzKdaNKFm9P8xduQPf5iD2pCMHIyfTPelzSkk9jnqYeCXNJ6P8BSFYFVYhVz1/iNR5bGTjaM5B7+lbpNapnVh+W/LFWVh0YRe+eOaaqtuwWIGSSfrWVRtPmZGHg4v2bjp0Hsquy8k5IIPcAelPV8457ippx9/Q66ycorm2I3jB2liBkYwe1SAYHLZJOAfSmsKlpJ6HBSxEpJyn0ehAYQeQc4HA9at7Qpz36AUpKV1bY9CnTUlyyepWW3UFAWIVWyWH8GO9akEasuOPmJPI9KzvGMr31OStTUl7JR1T3M0wY2Ag7mPHtWw0ZBUkggZ247U4JQsjbmrUk3HW1jCkgcbcA7hzj+la4CnlmJYEEAd60nUk04xWp59WSkvaTZjNEcjJBG4dK23hGeAOo/CtYyvTUZbmlPHNSUoo5x4mGTjGATgd63TDvAxwcnIptcrSN5TqW9qlZdUjBMcjbQCQxA6D+ddDDAAuMY2sDuHtSbSfLIw+syqT9o91+Bz8kbFQBnbg/hW4I1B2gffBI9vaj2cua6NqrSXe+pgDJHIOdrAH0raMJXaOWYkYz2PpTlTvpHc5VShH9435mMEdjt6jII/CthbbZtUAfeJB9ambkpJtXOylVhUVm9TPQDaCOobp61oJboVG8EMGbn69K0SSk2yp+9F01o0UlT+6ME5BrSMRGBgDk59qxd9OZHPKqozai9WJYxbh5bZ/e5AJ71fs7ZJmQhiGxtH9awrOSi1LQ6OSE5wlbmj1N630kSoGXptJHtW3paPDtjZsrkDntXnPGTi9D6D2VHlSgrHLS2Lxkbgcg4AHau2vYVlyCAXZiSfWtKWI552fU8D6m6dS7ev5nm0tuDxuxtIPHeuiurXkDGWBJ/E13wqRT13OytdOMUrWOTa0TCsQAzVsXEMieWSu4MDjHb61UZttxi9TmcYQd27r/MwJbbKj5j1znHTFaywyKAJOflGSO9Eaii+ZPUqGG5oRVtNTm5Ld2IABxkEf4V0hjjXPHcggVtGs4xtJanNCnC90tDnPs+wg9c4PHatho1BGCTkjArWXvxSQSTiny7mWiooy3UggAVYmiBIUYYkE5HQ81LlFtNm1Oq+RxbV/zK+VULg5JOCR3p6x8EYwq5wB2qZzcdZI5aEZTkouXwiJIXADDGcAAenrSpGSrHJAD459Kj2qclbTQqcG6q5I3uKdm5QOSBnJ7087cqUXBwSD9KlSS1RtVjVV5J2tt+pXbHQY+YAAD260kityEwCQcEdqWqs1sFLDSqy9o/dWw0v85BwFZR+HqaglGWRsZ3MVB9cDmuiEnytPRnJUozVZN6xZJuJbapwMDOe9NCsmF69cE96KjStKJ2RhFtqJMgDLuYnBAIB7U0HaOOcAggd6VRc1mh4VNSvy6gCMAd93OO1PXb14CjoB2IqYwcp3bOarR54Oz1uPUbjkknGB71IFxh84wevr7Vc6cox5YnVTpx5YqW4CNl+fg49e1K8vBzk56ZpWaSjLUxlBWkrgcAoxJGcgY6UwE4BJ46EDsaqpCMVd7GEqVR2U1sTAnY2WJ3ZwPQ+9Cq2ARjaWB5/nXNV3TR11ouTi7av8BgHHJxu6H0xTWK4Jx3PB6GtqcruMmcTqShGSS/4I9FO0kuSdxwaVAduwtnIGParak5K+x0KpGUNdZEmBlSGILMACe/pmmA4255yAB7Vi4uXuy2JcHCXtI6p9CcSbXAbnkZqqflyM/OykgnoMHvXQ0uVW1TMcTVhKNppq3TuaSzlWOScgZz6VmiRgAHYjIJHuK5ZU5K0UzqwVZ8sYxdi/5oJIJPfJPfNUldmw2e4LD1+lbzd4pT0OinKXNZrR31LabmJxJgMABj1yarq+wqTkYbII/nRze6klsclbEKSamvdWhchkXgO4DLnAH8VQIckMAB8wwD2rJQvJTubUHOCUYq67mv5y7VG7nIJxVPy2YAZIDEDPrVvltzLdnQuWMrvS/4mlBKrnI529c9qyd6xMoVyMHk+tYQipRaibubkl7TfyO0srlBnLALkkD09K4yS4IC7GyVJ4HbvWKwyklz7FVJRlLlXSx6bFewx/OWHUEbu1ebrqMrIy7zjgg+tYVsFaNpbBSbjVVtjvbm9jZWIcDGSSO1efi6JWPfKfm6AmrhQVtdQlLlmo7X6mvezRyEA8k5I/CsGS7DtzwoAAx39a6IykrNrVGEqEYybTvEiuFRevUHkj9KT5sjPOcjJ7V6NOSfup7GM8RCcFDl21IGKrleSRwMdqGTzGyAQSSDjt71tTxKh7zPNrYByVobdBokbftXPAHP171EULONrEAkE471bxEUnUSujFQipqMviLo5TazBmLEDHf2qkkgUgEkgEjnvThUjHVbGTouTUn1/QvHJYBeAGAye9MX5hySCVIB9K2ryind7io0dUr6gwbbhQcA5wKMsFGT17Dp71g207XLWHmlZaoic4BLMSx5J7HPT8qkbDrgDkkDmpjFSkm2bVJVI0pKHxDQTg5IxnIz2pmQMjueMVfuuKa3MsFSmpScn6jchApByAc5FIN2GDHjOM1m6ilotTqo4aKvJLzRXkYg7lJGGBNN2sGbkhMA4NXGqkk09AeLjdNQ94jMjNjHUEEk+9JkbSSMZbOT3ptpw5UKNRqqqjW+mo9ieRjIGME9/WozMVGzgktgVyuPv+6aVG1GUoLQnQqM7mBAJGfTFUS4yNwIywLH611SpQlLmm7HnU5V3FQpxvFlxJdzbckAAhge+e1VhiM/eBAbIB7elNwaTcXc6Kd+VKpsDjhWLZDEn6460zzdzqpOUDAkDvzWSbinJo6eb2q5IPf8AQidhjBPy5G4HouO/0qLLE/L2bDCh0+aKmtGYU5xUVFb/ANak2cFiWyCcYHY+tUN43cKc5BJ9fQGnKPLHXcUJRsm37tyyzNjG3gkZqMMT0A4YAZ9BWSjJPmRpRxdNy5EjF16fZpr8ZMhCgntms/xVMUto045OMfSu2hFRjJvc6I1HKcW9Ip/iebs4ZickhSRgd6qs3ygqCCGyAO+K56klJ8jJoRs3OL0uO8xVXAHzNuGahDZXIwNpO7PpkZrnqNTlzrdDXMrxqLS/5kn2hiw+Yg9CB3qArjcoUBuoxUNpRXcdCmpVHzrQtLKSQVUkqR1702H/AFgB7t+VYV7JczNaNVU5OD26mtDEz+ozg5FWoty7D1wMjHaphXc042OivCMUpJ3v0PyhiikRQYz8zY4PbNdbb2AfBUcuwH19K/YJVHJc3Y/M54iKjJQV3/WxhLEyA4ckr1x0HFdadNVSm1uWYEk+tTCUU+bqEJuT02scerSFUKbtpJJx6V1jaaylSQfu5GO3tWzbkm1sdNWSkoRjokcrIZRs2E7cD8K6o6dgjeuNwBx/Q1rT9xNM8/M5qcUrWS6nMbpGwi8bjwR2xXUrpiqyjjG7I9zXPF8ydtGL20VypLeyfkjmokeQois33ifrXVRaarsJW4KtwBV+z5I80n7x0+1TkpW0RlQW8irkucYbBOa6SO2BPlbScgEH0pe8mpN+6jgq4q6bitfUwJTKEjwTgHG71rpE06OUtHuxtAIBqKk7S95nbhUpwco/Fv69zjGgaQbtpHOMDv616CukIqYAIxyDXPGvHmSex6M6T9jKWib6HAiNgHcAhMYAxyK7t9KWMlTjfjJJrsU+Vpp3OaGJk4OlUjq0efeW0TRyMxJA7dTW3e2iR+aOMhQRnoRTqKLVphh8wcEqbV3EbY3mSqqTjg89xVG1hJnjI5LMACM8CvAq4ZSu4n0eX5tGUeWa0/U9N0mNpo1MhJOQAR39K6fwrpjXCRjkuCMAV4c6ElNOTPo3j4um4w6DpbOdEyHIO0n6122oWIjt2D8gcEU/qsklKWhlDOYuDpxd1ueWuwSX94QRGQOKyNVn8idiSQC5znp7VniMK0lFbmuGxEJS52rpdT0nQFiklQJ13gnNcv4V1P8AfxjzTkyZI9K8yrSdFKN9D1abVVRb33PsrwNEAYSnPQn26VS8DXCmKHbncuAT6152IV3ypbGSm25OK0Z9E2ygpGQAeASPrVWwlVo1Yg5YAY9eKzVNOKaetzw8RNySjJWRqspPOeFySfSlaTardcYGQO9a87ilFK6MaNKMJ35tCtIc+WScgZx70jHcQue2APSmknJvuEozuoxehCxZupwwVSc9z/8ArpOCHG4cHjPaqqQUbJ7GuGnF3TfvIj3jaASOWYDHbFRbSNi8ltxJI7UpUeZ3iYzrSVJwWmoCQA9Sc5xntTlQ5LHABHJFUqKerMqLi4KMegwuCvYLzkjtTxAdyjaDu5zjpVwi09GKNOmnaDuyJWLMFBP3gAB/SrHkOhQ+jAg05SjytpBKLdrtshde6vjOOKnEeT945LYx7VnTg00m9TWtTulfa+xS2NhMk8FnwOx4q190BeSS2T9auU0nyRG0kmpbvQpxr82QSRyT71cTBVV5wCx/PtRNppJk0Lwm5Je71Io0crzkDJ/Gr8aDOMnBAOaFhORKTehyRcG2o6vsVI4iBgEjcQTV4D5QPQ4J9faiq0rKW5WDumpJa9UVAByrZI24IzyeKusgUHGA5OAe6isG483Inqzvo1kpe0lHQrJucruACK/BPerOCckgkow/GuilTbi2zeeJi6sZct0ug2NW3kuD9/Iz2q3GrfK5UkOMf/rrnlOyaeiOXE1YtuVNavYh2FcsORnt2zWxFCjgKAD8wJHt3qoVm3ZrQqdBuiub4irCxK8cBWBBPatAwqiFQBkYIwaihWUZcqHCTilKSKm3G1AODnj0q0sedw5yACCO/tXW6yTTMalCMoyitG9iuEzlQeg/L3qy0q7gvTjBx3qYSc5XSJnBRgud3K5XoBjI5x2JpXzuQdSDtB9PSrqczV0eaq1OU0473G+TvK+WwG8qAMdachIdQecOTkdvSuWpQbfM9z1I1IqbUl6BDb7ywxj5icnt7VPGSu0ZAJZgP8a5q8JJ+6d1L94rrbQBaqVJBGVJBz3qwpPG7OD1HbihcySj95OOoQlTu9nsVxEqnGQVZsHHarAQnA4BViTjvWuqSUTnp1Yq0Y6WI1j3BeQWUE49easKu1iQM4ABJ9O1EFyO0mb80ai5ZaNdTNuIBGRkcZzn0+la+1ZFAOTxkE9qn2z5eaWzZzypKNRRnqc2YtwA3Ywc5PtW4LdQz4PGcEH1NKtUcUnHc6sPKDk1J2100MMxEHg8sTyB1rfNqCeGztBIBrNxdrsdVK94q/4HPKjFQvJY8DH866VLPAUYxg96d1H3WRZqCjAwEgIXBAI3cGuje1DjKngnAx7da2upWaeo4026ajPzMCOHGQxwXIHI6VteQp47IMVlUg78z2IpYaKXItXuZO1TnBJ45IrRKhdxwBwBj19a6I2jaL1IdSTjJv3VbchjRVUFGOzGcetPXO7K5xu4BrWOF5UpWOWjiOeTdtt2I68gk42g4yOmev51YHO3PrkD1xXE6Chqtz0qWKlPpoZckZRwRkA4Jx3rUKKNykZygODVKUm7tE16UJNQktGUkOBwpA3kY9aniRccEgqSAR39atU7u0tzP2cUlJPRPbuN2DeWHViM+/FSAqNoX+DHB7ehqqUlGPs2tDknCFSs5xumRbNvyrx8+SB2z1qT5iCFB3beldUYKLTTuceJotyTatzaESKFQNx949e1OGWUrzwQB7/WlGq1P3jSnanFRWw1jwc4y3Q+tNwwJRmJBIwT2o9hKUVJDo6Sk0tWMwo3/LwnJx3qUKVUsuAqMc471tGa2WwqlX3+ecbNWGABs8kYCgj0qc4GGZc/OSMdge1ZU+V6Pc3qzlTd1syoQF2uTnGcgD3q0UySApATNaJN7smnhZTXNHpuMhkEciuuflODmnxoTgkkZwRnvXPUpJ+49mEcQ04wh0OmtL/EYOCTjAzWXZI0hG3JHmAYryMTh483LfY9bDT/AHalDc6YXLNsU5zuGSazUkCFMk8HGR+lYOCk7Jm1Cs+S89WaTRJtZu+7gHsKoNddMcLuHAqZpRkuV38jow1SPM1J2styZok2gHJUkkZ96qm4Lct17DPSrotNc3c2nyaxvoU5Yl2t2JXAP900yZ+DuOQXK49MmulJuSSdzyJVXNWeyMwkO7KQANwFSSDc/OSM4Ge1bxre0ST0KdOKV09XoSJZ+YvzdcEEe3erS3cYRU5DHAAHvWMIurq3azNKfIlyWu9jPaxKBW42HIye9bOwvC/AGMjBqpYi7VN6o6qeH5tUtjj5tqlh0A4yO1XrmEYQlSDknFdEJJJOXQ8jGwrNSUNLmV8pwuckAkk9jTyuRsGRtByaqq42ujTC8yUXvLaxEz4GTkbRk8daV43C9SR/LiqjNtJRWg5ySbg5aER5LHOOCT70o3E7OQQBjHf3NVO7SbRNBTi5KMr2GRrwApyASSD2qRQIwcDOM5PrR8K06mNCMlK8tiEkIVz1YkkVK6jjBGSccetKGjcWzvlRlFpRWqV/kMC5OenJBI7A96cvBG/o3XHYipjGS1WpGE5ZtJaX/ATZwhTAGB+Gacz8Z69QMdvelTpyUnOXUirGEZKit2NZNuwOxOWB/KnbcsuSegIHpWqpyTujOU4zSg9LOw3YW6kHnAA7CpxGWlSRTjC8j19K0inKPMnt0MqVKSk4tXXcYqFGyc9B071bjULnPLdATUSbsu52TpSlNtPRr/hhgUAopJG4jI9KRgWOAx/CspyUZWsY0XJtRT1S1KrPlwnUEDgU/YI23MScDAHpWzUVFRS1FSpqTlOb+QqsVRmJwVOTntUBkTgBQQAMfhWSTTtJ6siVSHtIqKsr6jwx+UEg4cnP9KaCT82DjIIA7H1rXli35mtaTjJ8u1/yJVYfK4GQQCSe+aWPdkFsHaoJPqahQkle3U0hONW6fYYOoDHjhQBUm7AAI65PHYUVGo+8jkw1NSfLDXTciKuAxByu4Ee1PwclVwCBgn19KHyuSsdGHxLSbfUGOdvPUEn29qhLbiy8fMSoNc8KbTbvY1rctuWa0JhIyEZJI5HH1quDgqp5Y5Bx24xmuuPLy8qephQwrnHmT0NKK6aPBb7pYDms9GMgyOAOQD2x1qVTWilpYmrW5Y3nqWnbzMLuG5hgZPv3qErtQZYDAPXtURm73kOjQbg1T67jQ5LQgDCjII+lDlAoGcN6/SrpuDVtjJV5qKkndL9BuSdpOSSSMjgUwOWMZyBhgQT356VtK0t9zelUc1eWz/qw5lYLyxGcY9qXeCoBckHjP41lGk3LmkTKUZ8sW7JEQBX+I5LAc96kyG2rzuGAR64NU5pvkeh2Tw7UXV3X5l60LMpB5CnP4U23baNuwlWzyK5Z0Xz8y2FRmnSUW0myw4XcVBx0BA71L8pw5+6mck1MpcySsTOVn7r0RWMYVQB3bj+tSCN26NhSTjPfNdEpp2jexxYR8qVVq7v1IVgDbWXne+SfSrikrhWGOCQB2xUNOMmmz0qtRVHzpapEIt2Uqpzjkhh3qaecEAAHBJ6dq0pV3JW6HmV0qbTjG/8AmZrEp5ZYk7nIOKex7ZPJP61o612o9zelHmjdrVMjLAt+Q+mKYEVRlnIOSOO9ZxjySUVsy8RNzg1U+JjTIMBt38YAB6kjrTJCF4yflPX1rem4rWPQ5Y8lOXLJCTSAg4+8QcfQ1WmBYZD8Hg01B8ynex6EqloNEYZip3HlmIGe9IcKUJ5GOR6mlW5U+ZI82lSioe0k9dxGLbhkfLk/hSeYT8xzzIc1rCKi79zSvFqKctiMYyQc45A9QajkyhJXKgsCff3rNwSuo9TSGIu00tF+I4kcI5wxI5FRFuFByxEmQD26VlpzOKV2aUVUcI8r0b2HO25gV4wRketQDO7zOu7O3Pf/APVW0IyUWovc8+FRxm4TWtyUKf8AWc7gQMegNMEmRx94YOPWkqklFR3NKVNqDi9Hcc5VAp3HnIye9RPMzBQxyPT0rdqTibQdOUlKXp6g7K4GCQOpI71AHzzuOAQM+tOkk1zSeplXqck20tB5ypXJ5IHXvTCXO1TnPUA1DnzJp6GcKcacXN63OM8WsGWNSCCuWI9ao+J3Y3iqCcBe9b024U0khqMWlCWqexxjuu1V+Yg4BI6jNDHYxUdQeT9a44wimpI2k4KDjHRkLgY2NySuc+lMHDggEDb39a0bjzX2ZjTi07tXug8zI2rksCCcdwPWowQpBVsg8E+tYqlGSU09j0reza5nq9vIuwYdlcNjOATUloC3lrngEA/T0rCcU04vocNSlKaVRr4rmyhEYQZzzk57+tR3BbEZXvniudXs5LudlBONOMYu6PzsguI/lywx8qnHb0rjRqJQbQ2WznjoK/W1TXMowPzqrVlV9+1tT0DzwDGRgqWOTXCpqpI3FmJV+QK2imm4yMIw/cqSd2mz0eOaLHzHkgYrhU1UFBhiCAfxFQnaLhJGtWDqpK9jtppom2gEbsg57iuJbUmfblicHOe9U2oHDTpVKslHdPr6HXxSxqQGxnJBI7fWuLTVWjkJ5O89q0q1lKmpW1HhacqdRqo9dl6Ha/aI1Y7jnHUnH4V5V4m1LVDps76cCt2g3Bu1bwhzRXLoxYyrCcrNP1PVReQgqXkIVSSADwa/PvUviT4sgvXt726eOSNiCCcZA9KzcJJcs9EejHBylh06cf67n6I2l3blgysMqACB+dfI3w++KEt1dR2V5cAq20l2PQ9hXLXrU1q9jtwWXV6cUnHRfqfaZvoFVCBjALEDvmvL31gPs5+Xggg9fQ1zUsRTUbJHRjcp5Ki53oz0Vr2Fgd/B4Oa89/tYEud5POck1z1a0pP3dmdlPDQguaOjWzNnVCsgITA4YkDq1cvPfkYdnOCQCa56leo4ps7MNgKU3eW9rm9pUO6aIDJXcQfequiXQaVRkgt0HpWc68raI76eCjGPtlG/l28z6O8IgKkbbiGGDgdvpR4LZPJRnBGFzk965atTVLcVWcpwdRqyOm10hLU7T8v3sVH4gwICdx+ZeSe9elhZKSTkj5KvGNOo5RejPnLxAwa7ZN/QkgHt7VB4icicqW3DcxIA6HivUdJWsLB4uSm0tE+na3U1/Cqj7RFhyPmAKjtT/B5UXEOzoWyRj8q+fxdG8Uon1VLE3k3N6r8T7G8BM4WA7sEY696s+ABvS3JOGIBHtivna+Hla89Dpr5o501Ck7H0Jp0hSMc8MT+HFSWaKY1wwzk4A7/SuOWGdrRPMp4qpGyn1L+/B5JOCSQO3oaUR/xbsk54Pes1hVKPIwxuaKUueEdNLDfNBJcZJJ59s96VI8NzyRgmtKmFcUra9C4YtOXNLTyIyWJDEgZOMeoNTbSCnJBXI46dsUuS9mtzojyWdS2pAqeZlBkFmAJHpWkqLgdAVJPNZRqSSaRpVoSlacnfa6KqQ9gDyRjPerqhd4KZzuJI9u1Ep3jyRWpl7Lkquz000IwhVQON3APtVhlGSSSc44HYiuZVnFq/Q6Vh43vHdlYZB+Y5KNye1SgEBg3OcD65rZzbaTVrnHTmndQfvLuQtEpCkk5wfxqUoMKeSFbI9zUyUk3YIzi6ak90/vKZUMkZVQMHJA7U9+dyYwTk8VVOztJq1yFjI1HeGkkVmQFjnorZ471IyMOF65yT6+9dFGN9W+o6sozp67jVHzZxgfzqTGNinGVJwPrSV7Nh7WDlGnPRIkQbkUZxg5XimYYEBTyWBAB6Ypwmpz5VuhzpQUXOO/QtqmBuxkkDg1GoKnacnGOfUGpk1a6QqUrJWd2yyqg5xgDOeKZv2mMYIDMQSe9dNKk2m0zGOK5nabs2WBj5WUkhSCc/yqONw46H5mwB6VnWo2fM9yeZ8tou6LsbqoCpgElsZ7mqi8jLHDDOB60PC2V31NamPjWh7ujRbMoVkBJHQ5Hb1qqh45yVD8571hPCJS5UzGhiWrX3LSzYXPOTk/l0qArlUwcZYnI/kaqNJy95LyNPrbcko6jy7bm7FGB+tIhHKkD58gZrphaLuY4uqotKTtroDORg8ghhyO1TKqkhecEc5rKc1FqLR1+zcIurfQiUMWyCRk9qcfvhc+uPb3roUmoPQ8/EWlVhOTJA4+UMOWwMehpUAJRsco5BYVEqfLGyNouV3cnVycdskDnvzTHO0KAx5cAZqPZtysuwTxcnON9mWFcMRtxkZyD3qBCeuMHPfvXNyuVnHc2rxhG0rk+5SsmWO7cQD3WmAIu1jzuzkDtVVad1eW6O6N1FOGtx6yKCME5BGfx9ajc524xgsR16VnToupFxSMZ4hRak9C2sqZ2HADYyfTmqK7i33jwCQfXNKOB5YrmerFicwvNqC0X5s04sHkdSSD/Sq8TuhwrYO3k+uetR7JwaijooSag5SfYvncuGJJ5JA+lV9wKRknk5JP8AOueLndqR0qUYL2lPW/4F1SuxF6gHIqlHJlgmMcH8Ktwk3724UW3Sai9Oo9xliEYgAgnHf2FITjJXlc8n1pQ5uVxtoc3sYxlaW/qQumMKzZGcj3p6FWA6n5iTn9DWv1lpWkiKGElNvmd0V2j4Dltu3P41K54KnqcgH+lb0qs7WetzmrQpRXKnqiGPpsJBKNjB704LsPHPHI70V5RUlyLQVGo0+WTukDHGAM4OQR6YpERjyRzngDv70qcNORBRp3lzKV3f+kKrAqw5GxzkkdeKUgjBBIOT17VK5XJSR1OolJp7DJFyQoJAUgkDv7U7sucHGB16k9aqE3F3S0ObEUad1aWo1PlI5AYE4I7VKIxlepJyCPStFJzV1uXFxhdLWxC25XUpklXUgDsfWrAVstnqM5x2p1KrUrtas5PZRSck7JIrhCMYbPfPpz0qUYycjIJGPY+1ONRqCv1LpJNKa3YBAVUMcYPI9akI6A8ng/Wpi29Fudcrqraavp8hjLwUGMg9frSsu0vye4I9OKE3G1tWZ4yrGKtLoOKsQSOAQOTU4cbVHG5cHJ/SufEOTkuU6MGoSptS0v8AoCJgFWyCF6+tJ5rLjrktgg9qwqRmnzN3Na0qbailZdAjYxEkOWAboKQmMAsDkrkY9DUXVVpvRnVFSirpFgkk4DZ5xz2qo0u0Bl4O7ufyq5Q1utzSChON3r09CcOSQuSAeg9apwksRljngEHqa56tLlaS3Yk48vKtkaChsZzktgnH1qWIhQPmHsR60U6qatbRMKNKNR80VrYqyjAIY5YtnI7UkuGbyxk8gZ9KqFFxkm2cyvNXS1M+RmLKx6rwAO3rUknyjcMEAtxj0rppysrpaGlamoxUn1/ArPIS0fHPII9KgUiQhWOVRhjPbmqtFOzW5yz9o2tdF1NuC6DxsCSMdff3rLV9pZhnaT37e1YfVopppHoU8Q6kOS933RPOWOWTnOQQe+KqiQBsdieaqEXFKwp4P2lRyb0REVVCMnO7A+lDrkKFbOGJ9zXRTalJto5Kykko09LjXZdhZTyuBz39aazALg4xkdO1KEk53Zz1MOqdBq/X5lPzAh8xwRhjjNOEisEwMgk4I71rU5ZKyWhVChNRUovXdjWPQAH5wWJHb2prAyqpVsMD0B4NQk0uVPY2pVZSan0f4EJOWQYJO4nHeowXM20Egrg59OeMVtG8U3IyqtTkpW07i+YSwOQVBwSe2aftVtozwSMe1RzL2dupVSClUtB7LQeuCBtyAuRikVSpwDlSpA9jjrTTlF6bERpuoly9NyT5gRlunXHekB7D+Jjkntiqcnbltcd4yjaO/YsxXGCrA8hgCf51Q2lWXJO1uOK0cly+69TmlVnGVpR0saYZXkXHTOSPUVnxswLcADJBz/SsqlJqLl3OuhKSmnJWiWiTuG0kDJIqLcGXd0bdhSO9VyuTSZnWkopu/VAVO8jeTyME00NhvmzxyB3OKxqOTjdfI5KsrTcVourEMQ25GDgZP9KkByGcE7ccAUJuTUpbnoYaMYNOKumiIYXAzkZB496kEe0sSSQVAJ9K1lOKd5MjEqMqkZR0tuPUjsMAnvQpC4wSVUAcd6wUlPRrQ6HiX7VNLTuh+AGBxg5BwP50rZ2jJ53EfSq291BGnGTUvVET4PqcdhSybTtB5AIPNapxS0PPlGakoNaFZuCG5AGcgd896ezLg4U/eIJ9KzcnyKD2O2vFyqLn0SIGbZgZJyAeKRmzt2rgZzk1U6PKkZ+3aahHbqRLOedvJGScd6R/ujb1bOM9z2zWfsFJ3nsZRim+ZysvQtiUbRnndk59KpIxQfM2AWwfQ10KjCLVzqpupFtJ+60y25HygZJbLE+gqqCw3EMdvv245qqlOL3Zx0qy5XCKt1JfvYO7uDiogfl+U5PJrJxSkovZlwqSjT546llcuFAIALYAPeobd88845AJ7GtnTkm7PQqE42WmpcRMkkgnBIA9M9cUxpJC4IJ2jIIHepp023ebNXWnFy5dXoXVIULkgEnt39f/AK1MUg43E53A8dhXTTUYxdnoeRicw95RlDVdSQvuJUkgZz+Paon3dS2XbO3HauZUY2u3odNDHuTclpHaxYE23YCST0I9KpHdjHJ4J4rj9i9pPdnQsXGacILaxcMoO1iSfmI57etZxkZcBsEE8Y7V0xouKS6o76c4uCknvoT+eS+PXJIPfPpULMApP9zA57miTi2o31OSOJTd5EhYqAM9eTjviqbOWAySDya0aTajJfMujL3OZPrqiZmwccFDgkt3GOc1V3FtxJy3Ckj2rnalazBpOSdh/m7txxgFgee2BVF2wNqgjaSQD39ap0na5GEhyVFTl6+pI8mVKvxucAY71FhuhJzg49qceaOjNqtJTvGMdfUV2Dk/NnaQcD61UZipyCCckEetdUrxinDVnHXmorml00JJJQRtbOA/T3qnIxPOTvZvy9KUIptvqEYP3FHWL3Lc0m2NOmCygk/WqTEsFznrjioowjGfNJ6nZKq/ZOlFJIl3b1LcnDdD2wagV8qOCM5IHrV81/iRxYVxhC6epK0hwSXYMuSfeqsj7GU9dzAAema1obWRWJp8z556Wf3k/nDjnJAJ4/WqW08EMe5HpVRlFtxXQ4akpRbb1vaxakbp8+D/AHfWoM7lUdWBJJ9TWMajhJdj0as4uPMn2HKx5G489RUHmglnwcbhj2reKjNrojNLkj7q1d9S1kDB3k+XkYNUJJiiF+w3Ag+1Q053SVi8JSjGfPKWnpscPr1wst7J12cbcdaw9SuDLcyMzEl3JBPbmitTaScjoqNybSjZPr3KjjPzdRgEA9qrsSTySM+/SuVSbaZyxdNtKb2Fcs44znIBHr9ajEoUbdpLMduampUjzppamuFrShBxT06CKAXVR9zoQKep3EAEjawBx0HvWkff+DYiqlGCdTf/ADNOyAEsaEZ5BJH1pLaUiePsuQQa469FyhbqPB1GrRUtOxvBI3bBTBViQT3xUgPQoOcAMK5X1kjow0oQScnd30Px+8w7QQ+Tu61zA12z2At5ikAjO081+1Uabk05dD8+xuLcYuNJanXLcBmLqCMEcHv61zY121I2nzN4ZQBtOD6mktEklocUKVOMOaOkr/idQ1yd0igk/ISuOgrnV1q0/d7mddzADg81zVqfLG6PSdWU4pNaPdHRJcEqCGOM4bPYDvXNDXYEJYpKQQMHafyrVxm/3iRNGjFuMWvdWp1SOpC5YgHOAO9ctFrjSFfItpWRiRgLyMflVunJK5hTlecpcuq/U60fMEzKxVVwQejZ9awE1GXGVsmzIRgN2qFU5LRuehTouSVRLRL8yLU/B/h/WHWTULGN2JGGAGR9ar3Wp6ntjENsvmhyByec+v8A+utJ0Lu0mceGbw8m9lLW/Yz9R8FeHf7Pa0s4BFJFESGUYOfqMU1otbnEzXV0VU87U9vWso4dU0lHW56FfNKs4OrKXKo2t5+Z5npvjbxVp93NoEUAuZYHKxSMRgAdCazfDCh/GtyrOW2MSVPajMKEMPNOCvc7crhOvh3iay228yHV/ib4v0S6aG7t/KIYFQRw2fT6V75q3hXRddjC6hZq42gEnsMcCsqjgpqo1c4quIqVKSpRhyvujxfw98U9Y1K/ht7qRWjklCBQv6ivS9C+Hnh/Rrzzbe2DSeZuTf8AwnPauWulZKK17nqYarRjHnlL3r2t3PaPDDG4Nu+9gflYg9h6VoeHI1jdAgO04yB/IVwTinC0fiO3DU54eMnU6u6PpDwiqrBb5Y7cYAHrT/CYCxRktkIRwfwxWEKSpO7erPLzXEVa8U9kvxRreJGK2pGSQgOQe/FUvFDSNbOVOR8wGa78KubTufO4iajJNvXU+dNbmInlABIL547+lQ6wStywxkhiD716NSCskuxtl1WTTfzOt8HODKHAOAwyP8Kd4PJEsZHC8HFeDXk6i5UtEfW0cSlTTqLXv6n2d4BZykDocRqBT/AS4ht1U9wefWvEcnKThExr0mpe+tGj6F0/BSNQR97HHal08q0CKoJJGMj6c0qdNJWR585Qho3ddDZXhCACG3EkevpUY3HDD7uen880SppvmZkqy5uSOn6gPm+bjaSBz29akjKq4wvqQBUy0hzLcujBOXLUeghO1gTnA5z604kHAXjGAM/WsoxTXs5LzuZUFB1WoPXt+oE/ONuccEgUz+I7jnP3ge9TO0aajY6KFebqNRdkt/OxYHIdlY4JBH+FRKclgWYsT+fpXPJSaVjvq1JJrS7LGDuJXALLgZ6D3pI8vn0AIIPaqjSilyrc46tadSXPF+6unmhzr8wbvkHA70gkI2jkKRgAe1Ryp25kepXxSVope9bcjJ2ooY5Gc/U0hYEdPukk++a0a5ZpNHl8suVyTvZ2IyuNrNjJP505gHH3sEDgjvVpKUbpWQRpxUlFP5ldlySc4GQQR3FGwOWDEkKuAOx9abpRgmkWpOMo8r16kjMS+MEKrKSOw9aArYDIOmc57msXFxje5Vamqkm5iA5OMYqQZOeBkEkEUQgmlFbm1eSpRUm7dBFJaUcnBGAB3560gZhGspOT5mAfeqUZR92xiqSio8z0f9XJdmXG7JD7cY7cUwS42YPIHA+gpUKjWkTSu6cEm1dq5d2gcAEBcEZ7U1cLkHJLKCT/ACrR3dovYxnUUaaS01uN3bU+XJJJyfSgFQR8xO3Ax6ZoqNuOmtjVxc1drUmUArlWJIAJHpTQSCoU8GTBArKE0pKVjZ4VqPLJapbixnpnOVAbnvmhnYuMHCgHIPf0xWnJGKvHRmWFTptKTv1JWGQhzjJ7d6aJP4sEMOoHehwvK6dzrnVuvf2uTopGSx5bIJPYdqRGO913E4AGT3qKjb8jmdRU05xfNfoKMKSW+8AfxpPm2shbJbH4YrWMnGKtqefiJNN1LaCnJCAZ5OSfXNMCEgBjweOe1beycHzHDSqzneUl7pOgb5sMSBjOe9Io2kDJy5ySO9YQxElLmi9T1a9aKqQhL4SaMBkY5OePw9qYm9zt3Yx0P+NZVJK/PeyOiDj8LV09hxVVIkXABABPcjPemMr+XtbqM4A70Ummmr6DqxVNJQ3Y6Nsg4J6457570qgp8meCOG71naKunsKhByp8lR+9e1/IVAzFRyMEkEdqchEZ2FiSVAz3p1LStI0hVqL3JbRGhsMNjk5IB9j6VJ644ywJxVKnGUbtbGkqkqUotat3+4lLlgqKo+8cn0FNViDuJOBzg965nRTd2dNOu2nTjt/VxAcDg5YNjA70mQeB6kk+tb1qcbtrcxUpSsm/ImViF25zuGR7U2PcUXqApHI7+tYzSTbluXCnKyi3e243kY5IIODih2aRVKEEE8471nCspXi1qKMFBJU3ruSMyMMFc5cg+1I6q2OTjj8aKb5Wmma00m5KS1EXe2AORuwc9qdu2tGnKtxnHeqliHOLclsc1HCOMoxbvcCHUqNxOCSPerO47csuNpYYFRCq4tuS3IxeHUYxlSWqZTJBG3J5OCT2phQZKgkDJJPpXXTpxTUkwq1LJJK6e45iOgwCuBTGB38cruHPrW1ClCL0dzDEVFJqDWhNC7OSS2FABI9aWJggKNySTk+lRWfK07HTGnTjJpPtYk37+QDtDZwD3pg+XG5+eg+meKynJtczWqM6uBlOSbdluIWGxup2knH0p6jf8w5xgEjvmqlUd1LqVKnFtJrR7Bvy7ZAyCMj61Y+wzcOq4STgn096csRFpNFVqFWlVbkn5FbksX7gAr71oRadNIQoYdDyT0rOeIglcmhRc5OTZmBsgAAgLjhu1bE+kyRxgiUGTaCwHas4VoTfK9jTGKSh7RrVIxZG2oRvxuzknt61ZW1nLhAhLMQORWzipNTtsZYDEJpJIpmXCqGI8scDjritaPR7qXJf5dpAzxx9KHOEYpo7XRrTd+iZkJJyepBGSW/pXST6MtvbtI0gbgHHb6V5kqkZS0OueHnBJyOXBAKvk/IMAdzUMhaPHBBWQ5rodJuKilrucLpRVR1JbWN1GUW4JYgngk9qyI7n5EQcjIPPbNcapyhNtvQ9CNanNRUFY11IYkEDnBH1rMWcjHPqx9sCos3K973NuRQipImlILHOSVAOfU5qo8rMuVzhTg4rr5ZRg6a3JdSk2nLe19RrY3ZDAFeMeuTxVEygnaxOeQAa3krwSlucHtZ+05o7FgyHdyeN3OO1UBLkZbIySCD2rR0m3dk0qyp6rV3LPm44BPLqST7elQNIdpCYPykjPc9qmMtbPY7sdh0oKrDd9CfewwV4DAgiqjSMzJyQM4OaXs7tz2szhp4tp80Xq1t6EkzcEjpwPrUWS2PmyCAcHsaamkm2zCpVtSVRLcjB6kE4JGM9qaykL0J5BGO+a0Ti1oXSrODTe7/UduC44zgjGO9QMcHGSCOQCetYKyaudDotwUdldkjqwwS2AScZ71EzjB6nClh+FbUpKLafUmpJO0Y9Nx4JVsEkfKOR3pqMOBnAAAyexAp86XxLRDpxhJ2huix8oVVRsEjI/oKjZgCo7jB571nGnzO8WaPERUG4K7HIQAT0yTioDICFySPnOc981rVpyWrZhSqxbSl03JWcEKBzycEdDUIZR2zswcetRTqx5mkhSi3WU09Nl8yVpIwdw5YYCgdqjIAdWB6cYHaqUW4plf8AL32cnr3LLqV2duSP5VJ5gEah2yXJAA78VzynOE+Xc0pSpzbbWv8AkV2fc23oSWBB6qKljOX64Y4z711xcYRUWZ4vD8y5oPcmjUk7cEhX5Na8KjyxwAeoI7Vx15yvbqdWGotw5uq3MsgkkZ5YEZNaEtsVYNjGW6CnSa5FzepzVKf72MpbGSPmJjAwxPJ9BWoLZV+baCQxJI/QU51opKVM1w8JNyU9rlQP0BU/eAB9aSVhHtw3BXBPpz1rJtN3R03goJ8vcrO4XcMEgdcUjONjADOCckd666U1F+9sZ1qHPTSfUriUD5eeTjPpUDRliWOcMcLmj3ZWs7ESptRtN3JfNwpYMeOM+tUww2sjdDyaKcEparTcwpVlCm3HR/fcnMsRUZyQR1PvVFmXc8bjtk0SpptTZvKS5VNehI5DKuHyp5OajDKF2kHgkiuu99d0cFOpG3LN2TuSoRjBbjP51QebGccDHJHb0xU1MO3FST1uaUsRGKcFqrdS40rbJDHgZBwfQ1RLs+FwSEwMjuabgoSTkcUnzxcXorGnFMdgJYDOMCsty6AA8kEZ21rCEebczowqRinG6t+J0EJOAQTyQeO1V9PvApAOcZAGe1OtJx1Wx2ww8pSTgacLmQsmPn2gDPfFGdspdc7uDgdx7VyKsnaUXZmrqTlTUUrskkgYECQAsDkE96madTGPMGXzgE0/axSaauJ0pSWitczXYoAi5OGAyT0okGSHBIQkcGuiHvNSex51aHJFtbiOcsHkc55znv71HIBtAJIIwQT/ABc1sopO7ehy1pckUnFsG+dNrDg53e+e1IFyo2jDcYHqa5rQi1dbndDFScItrVMRxnf1BkQD646U/nrzzkD29q6IaNLqaVpprmkvdZCg+UDngAE1JzsyScnGM9qnFU4xbinqOnVThGolp0IpB84OOVBU+nuad12AsQdwGamNBqGu/YUsanP2c3ZX3KrI2zCsdyM2M9//ANdWpFXOM9M4z3rmbXKlJHX7aCnyxleRlBSeeQ2Qc1dKAhccEHJA710NSbvFWaKrYunF2nquqM84IG1csMAk1aaNc7hkk8/WlJSS5luYwxMIpxhsZu08hiTg5JrR2EBj0OMAjtUzblJPoXCHNqZ4jLbhu9CR6VY2PJvKkKzAgE9WNEaLbQVqC5/de2pQKguhwR1/Dmr+3DEliDgj6VUIy5OZ9DH6w/acr1RSERBXklS3BrRQCMgYJPI596It8raWpo4QcYuL0uZzW5HzYG0kcelaDAkLggBicA1TqtySkZ05x5W7Xa2MrySNpwSU6+9X1HmOQPvDAyaXsW1v6Gax0bxilru0Y9zERDM2f4CPp61oXUZME21TkIcZ712QouU+W46ePlGLfQ8LuWCyzE5PJ61NqcFwjyNNEQQcYI681lWoWd0yvbzkkpLRMzy67E4JJxz6Vft9Lv50QRWxKycAn0ry3UTbk9jtnUk/eS2/FmSzFQAxIycgj2xWzc+HdVjj3SRBY40JJ/z6VtQtJ2Z5s8TBQTTtKRmxThiP9w/jUKQGEJycgkEipqNJOMdWd9KCcPaN6mpHKFmiHTBHFVoXBmQ8khwCK5vZu3M9i38MXHVnYJhEDPncQOB29KroSVXLHCZPHfiuV0m2pX+Rm1zScLXZ+OMbRNlTFkbht9vrVaI7SjAAqCMZ7V+uVKSbvFnyf1xxklJW1NcQI44ABdSCfYVHCWK7S3y7jgY7Vnyyi9XoaVP3ick9x/lQgbmjBCEtlugyKZLcRRgBmwSCAB/Fj0rpp8y1toYKTd5Qf/DljajjgjbtABP8XtWaJpptptkxtxnPGTU1bOye50UalZv2kVp+RoG5t4UO9sbMYCjnjtVe3tcsssxLEsBg9qzVRpqTWqMvaOScpO1+pOss16FKZRE4BI5q8rD5ducBznPc1vRqO/Mkc7qezbp7pL8yLallGGIz1yfanXkZltZFXO4AgAd63pxhz2lu9jixmKVOCrpXjbVM5e98Q20huNswAEZG0kcY9K+T/iLrd1FfTWEbhWV2AdOpz61eJi42cnomZ0069K8VpL8D0/wSxm8a3rnlixYE9D6CuW+Csk0upn7RIzuCOW9CeledmuO9tUimrI+py6g8Plri3eTe3l0Pr2IsxySdpbp6VHGUUrGRxk4HpXVG6V47HFg5TdK1ZaXLccana4zljk47U+KVVVsKQoGAD2qKik2mzDDxilKL1ffsdt4fOZYs5Z93U9TSeHsiZOerA1x1YxSUmdmCnWnpUWif9M+kfCuVgQupyD271c8MBfs0S44KYOfevGq4lynotDrqKpCLcpX8vUp+JJGW2O2QncD+PP8ASpfE/ELKVA2ZII7CvYo8tuc8GXNWbprTTY+cNUB+1/PyUJOal1RQJTL94gnP9a0rSk5Oz1O/LIRpRtDbRfNnW+D0DTRFem8AE/1qbwahEkRbIXepx6815lpSlZdD2/rSqUJRkrNH2b4EU7YNo+UAc1e8CbfIgCqSMgn3zgV4NWTvaRkp3p3lse52LBIo9pwSF4/z61NYooiU9NuOT29qxlHlmk9jgr4hU6Sk9i8r9Mk/Mdw/OpjGB82fujgCnKUXHXQ5Zz5mlHW4vPOeCcFQPrUAJHy7jy5APcVMlFpKJ3Yec1UdOfbsOO0MCSd2SeO1MAP8K55HPp60Ob5rR2OSnUpQknNakitkuw6jJ57mhUBYEMR1H0rCfKo2Z10k2m5fImTnkY5IyfWhI5QyHBI5IFTUjK91sdTxkWlZe8iULgZHXdkj1xViOyuMF0DMu0MCe2aTrq6ZjTpScrSWt9Co0gzkr2zj0pTGVzkEuMYB9q0dJNJxDEYmfNfZ3/Ij3MTwuRuAI/rUbF90bJnbvYEHv6VlKNm5WJnUUpJxeg9+gK5LbiQDUfuSSCw4PfFawlNp2ZMqsJKMeXUaDypQ53Nxn680qPlj+Y9sUU8S1Zdiopyny9WWMgHnOR0A700uJB8uchskjt9KUJufqdFaMlHli72F5cHBxxn/AOtQrYXkDPQ0pJX0MKzfIp1VeRGwLDIY7hg5z0xTmchgAwAbk4710ULQV0YLEqrHllsL5eTyRj1pFbzI8HG/nPoPSuZXjLXqa4jDudP92tv1JsALy2QM4PrQzjYCc5GMAd6IV00kkKrl0akFSlLVD42DbFJzuIOahRtrfIThgAQO9bbu4qENWpS91dCxxwjHDbSSB3pgcbgTnJBwKyUG3puLEV4wkpy2GAsWHzc7toFEbHeuTnDNnPauiq20la7LjVpu0r/8AsAhQO5w2falVcfcOQzA59fYVypNNStcdWrTqJ0YLWOt+6HJkBcZzggk1H82Q+cEMMD+ZrSpGU1ZsrnpQsn1LJIYLtyMZ5/mKpRksyjdjBBx65rVxik7vQylUlU5eZWSZa5B4YkNgj2FNUYcfNgJxz3rJuOlmaSm5+7FaE29CFbB+UHPsOxNRgYKrk4LEkH09KipFJadCKvtJSjBx17k+4qu7eQRknHekVODgkMex6GsJypynqz0aNJqnLTVCh22jzGwcce9Em0gA4LgEjPpSjytuSR10cPOVKLm9EKxyAWbBBxn+90qMON6h89ARnt6VEJSSZE6aavDW5NHIwb7pJwMfh1zTopF2fM3OM47gVzQr39xdwoUkotJW7IeSOApHyjv+lEarJtZRhepJ7810SmkrxZGKgpQ9lPR2vck3ZXC5IY4H+zSJCxdSDjac8/rWka0VFqRlRw05xSQobBAC8IQSD61OI8sFPJLYJ9KwjWSTberBRqSTlFWSEORGxYnB7Dufar0dtxuycLgEHt705VFZRZ3UNY86W5lsGjCqAWycgelbO2JT6jGCTWUq7k+axpQoSVTmj2MoNuZCVx8pJwehFXVCtkAfMAQD/SmnGMuZrUuaU4v3vKxWLKWjxk4emt8p5GGDdu1ZxjomjCX7ialLrsSKzSdckA5INMWQqAB1Zjn3FVWpKLSih8yk2nuKU+8BgFiMAduO9XURHyQSAzKBn+Ksni0nFx6G+GpRg3F6oq+WBlcZ2kHjufStJrfIX5sc8jvTeIk7cxlVoRS5YbbmSV3K6knklR7EdavC3jQ5JyxBCk9fetoYpqTl1Mf7O+sQ0drFLaGcZyWbGPwqZ1AYbQASowR29cVftmlruH1WULSvtuRJLtdmBx0GPp1qu2QemSDkA965OaUGl3O+olKMWt1r8ju9Puba8geOdwHIwue/SuRtJ3V1IOGySQO+fSuapFtprY7KdRyTgjdNv8AZ5GeIk4xjGeRRFcnbznaDknuaU+bm5UcdRQjrJFeKUq6tM7AKSM+lP3B1JYY5OM0RqxbsaxTUOZfCdjZDSbiMmGZfNVTgMOvA6V560ktq6EEhSRj3rmq4WTauzbBVacKvMom9fm4jc+W527u1ZouzdEKzHa+SB9a7KVFJXfQ6Z42VN8kFe7Io7mcF1lJKOMEE1onT/PQOGHyhicdqz54r3W9TSpKbkpTWjOavIkwXCjIU4Fak9qhjKs2GGBzW7rrnV3qeRLLVGTnJ6dEcc27KEtgk4A9KkniZXk+YiNSFwPcDBrvcE1zLc5JuKku7LCMMLyS3IHuarPKV2Y4IwQRWFGlK17WNfauLcWwlc45yACASKpPNsAG4nc2CK7qPLFOyuzgxGGk4qTYhbdzjBLDOfSqzv8AOFdshsdO9KfvKy6mf1majzqV0PdugDY3EjBqu0mT1OMgj3qdW+ZaWNnN8qg1rInEiphe4HNUi+XB3Ahxgj+VTCCacpFUIVItJ7I0A+VBA4XJI9aoxvuBGAQc5HrWdWpKMUkdsKCbkkrrf7y6JQ3sofAHrxWY0r5PJOTwPSt4YeO/VnHJySSa66Gn5pKKCcHuB+tUDMV8sMTkMwBHeiFFtXiyJRcE+bo/vLp2lSuDkjqarhywQ5I+bb9KzUmpKT3R1YafO3LZNin58BThgQSD6YpTgjhiHU5zjpWlaOqstGVSgoxaj31Gqw5yvKoQAOnNN+5s3ZLE5ArZWa5Yo5ocsZ3UdyXdkAsM7ckEetIGB6nDA5+lS0tU9EY0m5tpb9xGI6qRhTjj1pXj2AYPJJyB3pU4pPmb2KqUVKag2ORSQMkHHQ+/pUQJLZBwSx5P86zcLSbeiOmrh4qUe3+RdVFO3BBG/kiowwycYwVz9PesauId03qjp5Y1KijHRomaDCjeQS2TkdqiklLKoGQRyCffrWsaalJO+h5dSyV4x6kkRVMd+h5qg02xim4Z2ZB+tEotyvLY9GNeEKK5t2bsV2oZsMQeBg9vrXNfaMNlDztOSe/0rnqQjN2TszaliPZNSez0Ose93YHJJx+Fc2s5UDLfeOceo9qpUFBcydzSnKE5cmx0qXgb5m5U4UDvWBHMQu45EeRgenrWSotxb2NliUpcj1RozNG0hwSMZzWVJchS/BJB5A71vdJKaMK1CnUa7PoasbJGmNwKnk1iC6BGHyT0J7CorPmXmRBOL5WtDWuCpWMLjJ5BPpWJJdJ0Zm+ZuMdqum+XR6mdaMZwSbtbWwsrFQSi7iCSQO/0qm06cbWzyScV0U5y579DjlThHlqN312GyyNkAEk8nmq0jrncVB3HIJ7/AFq5RTjd9DOU5KtzW91kpmPK4BC8Ajt61V3rggZ4PbvW1OmormW5NSSjLlT0JGJyoz1yT71B8wU5YnJJyOtJVly6Gsqfskne5MXY4YEg8AkfpTBk7OcZABJ9vWtXa3N2JjJ6qS1ZZjDFWxk5znPao45jGM5ydwJ96zqU4t3RnCXIuWa0NO2A/iUEqxwB2qGK4UMNygZJwPWob5IXT8jRwldKGydzoA5j2kAHBGSO3GajS7jnhHGD7/pXHu7taji2rSi7ptkckjOdxzjsfemK6OMKxChiDmtKUoxTSNq0JuSjN6khuACpOCARnNVJIj5bAHG1uD607yUbXO3DUE5c7W34l97qLYqLgY4I9K5qTcpfDEBlIJ9PeumlFpcyep5snJ1rPRG40nygocKWAFQW7lcHkjb09OOtVQundq5jiUnJpLbQskNgcemPald8BSTncoGfx60c6eqXUzxEVGUacmRg5ABBOTkj1pxKv0IHQ8d8GrrzXNqrM5YYVu6g+ZdfmMQ8gYP3uB6VKibjtAIJU/8A16axEUnK2pp9UTUYw6ETAZBJwQQQfXNX47dGC72PBzkdqJ4qC90mrgZp+1irWsUuFYYyRnOSOv1rdW1gcADAPWuX66k7SPTp4Wo3eBzyjcM44459a6OPT4skE/eGMGnXx0JP3ehlSwFZQstGczIg2rknC5JIro/sCqcucqGAJqPrijG/Q6Pq0rJSepypT7ncHJGe9dp9htAFbADk5x7VksbFx5kXWy2rFqKdji0gLkAAl3bAx2z2ruY4rRQmDzuJBFU82UanIkZPJnVp87fvI5ePTrg/dUndyDjrXcI4jZI4lJwB8xrjp5m000dscoUaWjsccNFuXClhg5AIPQV2HmfvCHJ7k47+9OWPk3fowqZRCnZrVr9TCtdDjgIymWKjJPeujFxGSoOWC4OT1Gf8+tc1TGy5bs9OlltOL9o+pzF3o0Z+WM4JzkHtXW4t3IPQ8gMew71VHGSWnU48bh4xipyV+mh89eM9IkjsmlWHcUYMSf4fr/8Aqr3DUbC0mBS4ClHByCOG44r0P7TVkpI5Z5ZKSinazPn3SNbsPs8MTSASIoUA9j7V2+p/DvSrtgYl2O7kgp2z1ranWjBJ30OHH5XOMlC90+vYwb2WN9Ouirhv3ZwPftWXqvgHVtMhlksNSeS3RSWVuwH+FdFPG0pOy3MaWCqxcUtrnlc8g84gDgsTgVXJaOQLIQeTyK5K8/eulqjv/hR3sm/vJUbbMCufnYEmooz5cqtkkZBOe9ZOcoKzZyQftJprQ6tGKqAG4ODx16VHbkPGe2WwfaudtXSe53Kg5z9nF26n45GRECAS4O4DaB1+tWLeFEOVBypwM1+muVnd6Hx9bB88fZ82noR77ucsIoygxncf1rU8iV4hKhJOSCB/F61rTrxi1FEVsLKFLngvnsUba0QMGmkZnU55HStFVJKlsk8Lg9TVTxSqvlSsRQwtSlKM09bEybS33s9Af8KWMMjE7c4bkD9DV1uWKundm6xEn+7itbomjTo6EgqxOf61fs4txjTYScszZ/h5rz62LkptpXOmlkyrU1FSs07mcoKkdSMnI9a0ri1WEMxJyQwANdca/tIXRhWwboT54LS+rM+7IFvIcHd5RPPb60l1nyHHWPBAPrxWsWoyTWx5OPjLERcJ9drdD5C1zw1Lqmt6jdMAYYGY5P6CvSvEXh+8t7K71KwvChdWLowyG9q9Ws415xSehvTc8LglCMff8zjvg7CYdYvIlOSjkZHb/wDVVr4PKx1W7kJy5lIYn9a8PHOKrKK0R79H2ssClJK76s+n1zJhlJG4YJ9KWORNu1TghxketdGGm4y5II8jE5fKrFRqS7bdLFqIlXgGeGfaQf51BE53DlhuOAR2q6s3FNRKpe40oy62PRPDRJuQ3ZWA+pzSeGWKSxHDD5+g6H0rz68eaPKj0cLTqQrc0p35tz6g8NqBBECxwVBA/wAaoaDdNFZGYZGxeffjpXmqd3eWhwYzFuPNGPwph4p5jAZgQSRxXmHi/wCINvCskM0LgDHQHJ+lerGTg+Vo8mSU2qq0dvvOG1NgZ9jqSA5wB7Hg1inV7TVpY3t5MEk/Keo9a1q14zvFOzPTo0nRlTb1vqz1jwaA08KEk7yCCTwKueDbCbzbZUUkrjg+9eBVxKi+ZM+so4aVnGWl9T7D8Cf6i3wDtAGQe3NbPgTT3W2jLkgrjHvx/jXlVcVGbu3qefjcvnGCrS1R7HZMAqp1Py4z3qO2JwmTj5sfX3rOM0oK6PPxPNKTkvuNYSIVJBOFHUdqnjtQyM27BUYOO9YyrwepGEw9bkcpK1ipkuUGQAeme1Wba3aaRcnkNyOwrOpiIUkmzqpUp4hOa22I1XJAOckEAV0M+nD5kRQOSAR2+lYVMxjJqR14TK2qU4tXa/EwAAMAjKliFP8AOteLSp8puOdp5B6c1UsTDV3OXD0+dqCi7I6DRdPjlXzGI3FcFiOvtWnYoLdF5J5AH4V4NbM5p2Z9TQyqk4pR3LckCrGERRjjJH6VbXG3BOWC5PvXNKvKMXrudqhTlOKk7tI52506MguyjcGOB6VrMAG9QcDiumGMkknBnivDKVW8lpe9/wBDg5NMYMNmT3Of1r0I2iBSzchc59q2WbNTbeoqGWU1epGNlc8rksJkIOCAvP1rtbnyyWC8d+e/tW1HM23quphDL4OfK91f8TzwqykqcqQAAfStS9iCyZGAhxgV6qxDtdo8zE4SMLuDM+PIjxnBBGSaA3CqeckgZrZVG5KMupnSwnNSUlp+o9lUDf1YqFyPamknaoByd4JHrzUJuUnG/ma05OC9pJf0g8s71PVcEn2oDFSQegJJI6CiFW6stjN1FztPf9B6qSHA/hIOaI3UnaT94BQT+ldKaVp9hunNQbT3HKrDA5IxjNSqTjBGDyBjtWaqO9ktzjjTpWi1/wAORrjcuP07UgYITu4Bwc+tKpS5m3FnZSxNo8so6/mSsqjGcgEkAio9x2qGOSWOTTnNKSTRywqODTpoUYIAGMOTknrmpEO8AKCFAOWPanKz943puLXM426seHwIyR1Uke/tTlBVUxzhskCsXNK6e5rUpRlJWd+YiOHZccDuKccD5ueMYJ/WslWi/eT8jZU25KDj1JAgBwSSFUnnvT1O4qMcg5BPbNYO1uWW7O2onF8yVl2HooZcgHLkZz2prZXOCSJGxn0Nbc0ZLmiznhTmm4taDtq8Z5OckelKI8nce2MD/Gl7RNcr3OZ8yfNPbYepJwCfmyCfamLuGTnOT+dZSTaUWtb3N8PB04c17p6WEPJwAQcjr3qwudufTJ+mamM5JuMtma+w5pRcdv8ALoV1TLEc985q7DGWckcYXg+lS2owUb63OiF515W0shiW7beHIOeCO3tWvFsCDt6Z74qalV007as6lhVL949irDGQoyMtkjn61qR+WxkK4Vidwx3rhnW5mro0hh24Sa0SM8owIbcSxyMHtWt5MbMBtJYYOPSrWITi29Hcc6UlyQjvv/wChbKC2CM5IxmtkRhfm2gk8ADufT61hUr68qRtHDyV7PRmVMZFIIjPykAj8f6VtkAqcjLKSCf5U54ltK6KlgoU0nGWuyOceeQEjaQDggDvmteaJSVAOBkkn0z/AIVdKspKz3HWw6jT529TIf7oIyr4wMGiTfnB6ZIHvWlLXRnlSqKatC9kNkQTKoLkkEEg9RVQyiMlSeQQD7+lNKUHozvquNSMVKPvEpjC43PkL0FZtw0mfvEbScY7Gt7zvzM5X7NSUmtTSFwsTKQSRG3AFYBkkDAEkbWwPaqhhm46lSxChaK67nRvf4O4LgFSAR2rAeduADj0J7VlRoK9pHNPGzvyw37nRC8BRVYcDjjtXKLM4Hysfmxtz/WqdFRd90awrSqNRkuVv8TpDcxk9SDziudNw24BsgsR17Vq6bvd7GqrKFNNa3ZvM7O7EA7SQM/zqSxhFzD/AKwDDAgVz1qlmopDwtR1ZKaWqGp1yHB5GPaoJ4zaHD5yxODS5pStyjq2jepPTU2oZipHJOSAT7+tZ39owrGFijCgEZx3NRCDneTQ/bxVpRX/AATfR1JUMTjBOaoWN7DMxEoxuwormjBv3ktT0qE0p36W/EsXEKmNixyCvGO2a0LhEaP92xPOAB2+ldCqpxTT0OarhrxvAo2MKRDDncTnP4+lN3mMptBIyCR6+tc1WnKTvJm2FrpVbNbfqbkTBAPLP7thwB0561kx3a4O44GQWA7cdqmdFN3ktRyxKi+VO6JdSG5SwJBbIzWXd3OSoLErkcnvzV0aCU7NmDryjeS6mFdjYCpctk5we/qKq3Kl33biVBJHtXrKKUr9DxXU91uKtqVWO7B5JxnmrwhjERBkJYEZIrnU4zfKup1U8POatKVrHP3T7QcE8k7Qe9T3g+6wYgKxwRXXh4xuosWIajrukUl5dRt+ZiMH3pgcORyQM4OO5rbVJw7nPz00uf8AAi3Y6nK8AUjkFSu84JGPanHluoszqU1GCqN3a6DE2g7RxtY5z15xUWT05A3Z+madSo0tdyYSklaS9PmWjKFVF2/dIPPeocuVBxgdj6Vn7Nyk7vQ6KdRU4Rk9xHkYx4PB3AE+ufSoGPy/MME5HHrWtCi3JzM8Vi4tKEVZstBzuRC3GcYFUzIduOhjwCR36VElBuyeprhIttWd0tDXjlVQU9RwfSsdZQCAoOAwIB71Lm200XFPmcWrdbmyZFYFlbgkHnv7Vmxyk4AIw4Jwe9Em4xTRhVpxqzTi7Lr5lszrksSSAw5FZznAGCOcZA7UoTjzJRCVapJezjHbqaBuB90k7jzzWeWICk454HsK1ndryLi7x8+hpiYEEF9y4B/PrWZub7wyAD0HfmudUGmk2dEU+Vpf15l5ZVJYLlVTBBHXms9HORjIzknNbTSlFXOOlQaUlN3kayzgZ6neQCPSs9SUGAxy2c+1c7pxjJWOynOrTptSWhfMvCgE4B5PrWcSV3DJPTB9a0cm1dLUz+tQSTehLK5PzCQlSuQfSqZkJyOgXBHvW9PRJM4q2IVRpSeutifLnbye1Mh3OwOSM4z747UOkk7M6edSUbvRE5Zx5YwTgYYitKGId+xwc1g7pN9DppV6TXNLczvnIRVzhgcj1xWg1sQVdSMc8DtVUnaLkefOhG6k3uzMAkcliecnFX4do3HsODnvilOsopRS3OyGHqTThUfoZEiybMAnIzz6VvhFdRk47n3qoyXMpNEU04pXlfc59WlLAbRgcZNb8VmVYFiB0BI7+lONaN7JbHNNTleTe5gNEwLEfe+X9K6w2aEcdSSS3rWVKvFq8WdLUpR9lNXVmcayMCTkgk5IHet6W1C7jjBAIx6mumvXcUuVEUaVOVpTbTMAgMw3n7qgY9KuyW7ZO0ZPf/GpUmktTWrQXPzW00M8udyHGN7A4FXvsUj7GAwAABjsKqHLNq2uuxy1Y1L2j95SQOpQlzjPK+ta0enyN8zEgHgE1TqwUve+ReFhNtuPz8zLSIht56K2R9a3BZBASDwWwSO1VLERkkmCw8pSbWlzKhBBG5RjcTnuK1hbxrwMZIP/AOun7ZNGUaM5JOKK6uBkoQNpHUcU7aMYyCdw/AVz1Xaab6HVRjFxcV8vmVkuJMgA9X5J71P5SEkYzkKCD2FV7Zy1Mo4Nwld6ve5cV3YgqC2CSAP4qEdY14ONpAGO+aibstdTqnC8opaDblVfG3O3OTnr9KrvdnfhhnkcDv8AWtI0JRu1sc867ny3Wo+1lGQhzwQOe+ai3qxUKuGLHOO3pRNtrltqbUazUeee5p7w6EHvnAHaoIfMOzBPGM47ip5WnzPc46s/b1bT2/InEgRcrnB4wOw96V0UMvcBxuHrWU43XOtWejOCpxUoqyXUcs7LjauQeDnsKr/NuJzgsCBn1PeqklKNmtTnq1/apNu177GiJQULcj5s5+lUBKwUA5yhxn1rnirz5EbwXLRstjSS82Zfr0A9/rWWZ+RvwADk4/pV1KTVkkY4fGypU3OG500M3mqSTlkPGO/HSucS4IdNjEF2PPrXHKglaUX8jbC45TqJtXsdBLeMp5xkZzj17VjlxIdxYeoHqappSStoj0pziveerNYSLIMjJGSSfT/69ZMLbV2scHBGfQ9qVXDpSST0M6OM53ySVmjYU4I244zz6VTEjbRgdVYkUTqWkkjR1nCErI6C1cHIycknBHvVOzkKhUycKcEjqKynSjT95bnQsdF0lGS0RpOCzffAKjketQ79xDKCBvwSO1RKCb13FRhZrm9RwwyOobBcDDDsfWmKQHCgfKeSfWqaSV5bhGck04vTUtxqVxg5APJNIJ1CKnJyMgHvUV1d6nZTmor3VqNlUSgq3XB/GqyykOO67jn2qI3grrZHK8NGo4xbIHiddoV8BTxnvT5ZNwy2SCCcelapvl5nuVOjOUVTjLVMytdkB0y7UAArCSx9OKq6qd9pcoGJMkLKP6VvguX2yZ5uJlOLcrX6HybdqhuSinLbiNx7VHfbVu5igJxIQAO3Ne04rW25yYuKlaMtU3oQFiZlQMRliBjvTADuQnAbJGB2rlhZRbe5x42HLJJrQ6uBi0S7cg5INRRBhs2uQeCRWFWnBpSb1OuL5ZXWux+Wf9nruUbPlBBP9RXYokT4MZBGQCK/QZwhrfdnyWDx1ajJ02rxezOfgs+EVQRyDj19q6uIRbvmQBEU4I7elefVotK7PeSjU5UpWtujmotJkJd2XAdyBkdM13sU1sI41fhQFB9hWqrciSkc2JjKviEoPXZHByaOEX5CTgg49K+wfCvwVtfFFhBfi5ZI3Tkdm9c14OI4rwsZXkz1aPC2JS9hJXS6nyPb6a2cDIwOSR+lfdafs6W0Gc3r7QwByOT+v9azXFuFb5ZPQ6MPw7iqUXKHQ+CtRtJY03fNliSM9q+7739mu1ucFr5lVicYxya0p8XYWDunYqWQYicoqav3+Z+cN+pisnVnKsxIOOxr7v1P9lWynjbOrSAMDk46fr2rSHGuDqTu5aES4SrOdo6XPy38Ta9FBpE+nOCXm3KG9K9P/aX+C934AsYryNzJaqmW29eD/Wvo8ozajXXtKDu0fKZnllR4p4evJ8uljwD4VD7PqdyrkkS5wR1BPel+EciahM88a4VG2sD3PfNOeKhOqoyXvM9jE4RwwTUH7qe/mfRUc27eSclWGc0+NFw/UbcgEd69CpiFGyjseHgcJOm26j5myzHkHYXwCQRiooxuc7Qcg8D0pQk7pmFWNOi1Np6HpHhzBmj3A7WYcjtXCv4hudJWEW2A7uPmIzjniuOph2tnqelgKrm3KK0ts/M+0fDciG2CMpY+WeB3FeMeGvF+tyWisZ1ClSCQvJz1FeZJtyV1qXVptqyWtj0nxVpmnPEXe1QsQ2SVGenavGPGXjbXIIJAsy7VRuo6ZxyP/wBdelGEpLmPK9hShNKTVjF1mxsIjLJt2GJThk4K47j3r5/1j4h+IppJbZzE0Uinc2Du5PX/ACamcJpqSWh6FKcU0oK70Z7z4F+NLaXqg06SzaaKBwvJ+b8DXifgXSTc3y3hclmYEj8eteHjsLByUWz6PCV5Rp+2lG6f4H7L/DLxja61pVtepA6+ccFT/DwK8R+E+sX+j6dBboqeWFwFPf3rwJ0ZKbXRHXjsRTVKKi9LH2xb3sJ3OzEBXGW7AV5va+Kb9oo90MeCmDj3Hp7VrU53CyPn6kY+xdSW72PZrHW9PkHlLdxn95gnPX/69eAGOaSczrIVAYNge/WuSph7Tsnc1wOJXJGo1r2PqS38qQxzI6kEgfWuJ8NXUj6dEpckhQCW7A1xx5m20e1DERp2Ts29T023uBIqgZHzEAGucs7mRZFHIIYkHsKdXDtSumbUKsFFya1Z6HbQCRVOR7k1SsL1VVC5A3MR7g+v0ryqtOS2e45YmMUnGN+/kassHlqcDoSRSm4yCcjgYwaxUOWSczN2hTcYbMyWuQz7SGHIBNZtw+JDJn+I8elbwpNQutTWhzTlbl0OggkB2kZG0jAPfFYEV1jLAEkEcentWLg4v8h1YKKSTOiu5crgdGzk1z9zqKRoTK+I1ILMaaouTTNYVfZxWt0yG6lUNksS2SSTXN/2ra3efIuVfZIR8p6V0QrwUvfZKwkpPnppu4+5nWVwXBCjIA/lVFzG5HznAfOT39K6FjqSXK3qeWstryupRaQh2K/yHPGcj0pqIMB84IbOPWmsygmmmaUsnqTTU1pbYgaIq6hRgEZz6mpXcKGIcHDkbR2x613Uszg2k2cVLKqkG5TTSV9xgiZiWDZ3IePWrETOig9+CB6cV0VcS0uWGxhTjFNV3v8A5DIraQsQM4IIBq/bSBWaPkYBBPofelWxM1FJ6GsMDCpLmn138iW3sZpecd1BPrXUWkhdF24AJAyO1c1fMJud0go5dSjDmTvZnN3WmyW8e7IYHnmuxezS7XBfIUGinmkk7yZMsEqskoKyPO/kHXIBOAK6W90yOMMVBzkAA1s8WuVNanAsHNVmktF+Zh20IJG5iGGCBV23tmkmCA4Y5x6e1DxbcLvudH1GrGacwCquccgMPxNWp7cwAk4JHAFcsZNT913N5YTmam9EjLeMMC27OOox1pxLKCxzwe3eupVZJWW50znFxU1pccsYK7TjORgjtTomZiDuGRgEUlKTV2TUtFKEWJycZAyjg8dqtRoHk8zkgKRj0rG7TUnuaUFKrDlno0RxcjgckkVbWPB4XPzYIFTKTUvdWtglDlpuU9m9vQq+XtQBcluhJ+laJgZFLNxg7jjtS51e0mVhGnpHV/oZ4jLEgfw4JJ/lU7KcjaSM5OR3B6URm5u6CrK65FokRpIFbdklgAOPenjll4IGScH2NNqXI+Yr6q7XhLVWJ45C5Ge5C4Pb3qvlQ/y5+UkZ9qwjJtKyOmlaEWpPVl8MqgfMTwCappKSuADkMMn1pOm1a5jTqppRg9zYSYHbjJxn8elZ0QLOAGxzz7Uo04cnM3rc1rTcUqaXU6OF84BIyAWGO9Vo/kX1xg89gBWPs+RXub08RFycI7oklkYN1PBAI9aoySMzEgkgsMj0rRQco6Iy5YJcyerFebcVYkjqCTUDAsqjkY6+3pQpJtpo5684qKkndsjPvnhgAT3FQyv0yTySB7e9VRqNy5ktzoxPL7NQ303GPGu5TnAD5B7j0NVnmAPDZOTnNbck72uRGaaTmrj3jjZecbt2SB3qLd8wPQkAEDtU0ZJLmvsZY2UWvc+ZUa32HaASwkJOf5VeDgEO5yeV+ua6ZVm7NmFKk4TST03Kn2RioyeBnj+daBl2leRjccf1rBTbu10ZpUjGyktP+CYrwAEDng8e1XrgrICQCNpIB9eetCqqbVxYinOMkpbPRGVtK7igLHGdvr7VdACYzjuK2p4i7UWip0VSTi3v1HWktxGmFbBJ6jtVyIpuQHAJz+HpWN23zRWg8DQinzJ3aEuSs0QDgmQggNnpn1rRPlKvb5gM+1XSqvm5nozLH1KjTpyVzkzKY2ByTgjI+lac1pCWZlByTwPUiuhtpOS6nLTjGSi9ncqwSkscZKryD604hEAQMT0Bb+lYJqT5Wes+eCSWtzpbO+UwqJGJAIwT6VziSSRnHJGcHFYvCWV09DBYhKah11OqeTzYwIWPQ4Jrl/tjYX5zkqQcdjWcaEoy5Xudf1mKpuRuTSJGmQ2MZ5rCkneXaucq3BNdsaTi03sZe2Uo8i0v+BZeTc6FtwK4AHYiqiSfKpbkjgD8aqc2o6omnh6fK2hXYEBv9oMR61XfsysSCSBWdCvGL5Ujjd5e+nonoSecN3lnIZ/85qsTuOcncxAPsKp2bbWhrN3V3q3uxJY2IYkkq3Q+laEULSL1GA3IPb3pNtR5mYzwsWowT0Zh/Zl2nk7duAK2jGfMIAyjA5z2FVDE297udP1aMJeyaurbnPSWoZlyTuVhgitiRBkEAjnBJ70e0fJyy6k04xp1HorGF9kcNuxxkkj1rWwwXpyWy1FJRSdhxmk1z6amWbVyuTnjjA71qk5IUBsFhk1tSk788TCrBtuS13ME2jLy/Jcg59K2pEGVbJ2tgEe9aQxj5uWNgdJ3SW9jm5IGAaNQSARuA9q3kt9xdw2QOPr9KEoprXUwo15xlKKXT7znDAy4BGTg4zXVx2kZAyQWyTk9/aoq1YxlYzp4OpUXtIv3WcxHHKuACducknvXSC3VHz2yDx2pVa7layN1g3CChB6v8DnjbyMGO0kE4FdG8OVOCBn0rTC1Wo2tqZzoKFSydzm2RxjOT5ZY/wC9xV+WNiCdn+zkd/WrjNxjYqrTVSV0tdzK2bsgtyCCPetERlE37cDJBB/nUe2bjZmt4q1/tbFEKQMk5IzkeuatGNWByoADBuO9VSrWg9B+ykrKP3lYqxwoGCCCc/yqRtrNhhkcYA7VnCMktCMbWVSoueWq/IZgFecgcH8acNxPy5OcgD1olOXTdmtWjGSSewwIX6HABBPv6VYjHADA/M2D6HHahO8kkilUirpS6IYiAnbyNpBz61NtJbBUggfMfT0oqNJpsdarFxUHoiRJNjLkZII6dqiEbkKAQfQmknFybbChjEoqLWhpG5XdggfNkVlshZ42GdyqRk/hmnSjGOqZyc1OpK1To7k0kypJvAzzkD1x0FVlt58JkADcQRnp710Tpxum3c55YydV3pqzWhYS4AKYyBt5z3zUfkMZB7EE1nKlF3tomehCg0k5rY20ljmQMDgpnIPf0rMgG1NrOWDgn61k4NO3ULSUbqzT2NkyALtyR82Rjt9aoNKQgOQCrcj1rKMXaxtP942k9R85wy475NVXlAOCSeMY9KqnSbT5tWZVJKUlzK3kATrkknI59aj8wZXOTkgA1cU5bqyOmMox0te5fhxjaeNzbc+lRKxJKhztdiSfTPb8KXMoTcYrQ3anT9yRM0mYhGOSCVPXmqm5WI5PDAcd6zcoVHzpanLVnUhFQgtWTPsHIOGZznHQ/SqUrhW+Yk5YE/jW8GpLnZ5vtUpOD6boerFjjJGOKos53A7jhckg966PZybVtxwaWl3YstGQuccN1J7VFG+9VG/IJwAe1ZTqNNtboFQipJu/KyHzMOoyQXyCB0GMVJKuwkFvlYZBpqTlG9rM9BRcHZe9f+rEXnA7uCAQuAOgx1qrISI8DqOlN025KL7nEsTOcZTktlaw8ORIoOQcAY7/AI1UDbnwxORgc+uK7Pei7NmdKSUeWOyNLfskVgQQOtZDu2R8/XpjtXI4KLs3dG1GM5LlbtqdHHdJtBzgliAa54OSUXJA3YPv9aqVJzblHodEZSprlStf9DpPtgeQ8kE4GCelYkbkBDjIOVBPauecZUrJbow+tKVK7W+5s+ersAGO4HPPr6GsqOQKoOSCuQR6Y6VpOVo8r3Zlia1XnjKTuuhupNEwO/liSMkdPauc+1t8o3gjOAfSlPDSsn0Or2zpw5Hq2aEz5kIUk5Q8egrMjnUuzOxIkIAz24q40tIqL3ZzctouV7lwXTIVUMfmbIIqBgRzkHPc1tOjFRbSuzzsPVftNVobMVwuPLJ5PA9qyVkwAdxHIAzXJRgm9XqerQrwjGUoxuuhsNN93kccnNZKPu/iLZbAI70qkLttF0KlKcrPRo3Yptzg7jgNge1c9d6zaaZCJLmQImcAnv7VE4XjZCjek2v5mds7hVHlscZGffmvLX+IujoYwWclsZ4+XPrV+wfIlLc2vD2nMno9/U9ktZCyZ5AJAxXkC/FHTbf5ViZsknj+lcjwrb0VzroYmUG7q76HtAmVSpYADOCD29a8Nn+Lds43R2bE5BOc8570PBSS5nuTDGK1l3PcjIoYLuwGYHI7V89yfFKVh8loN3BGT09KVLD1HG6QVc2oxku70Pf3dCQATn2r51f4p6gHOyBBkA5B6GtFhGoNpFvFRjJRZ9IKAYkI6HIIPfHrXzcnxZ1pUKqseATgnkH+VcNXDTUk0dNKvGNS0lrZWZ7tqcGLeYFzkwH5fTPSvmy4+Jut3KybnCb8/Lxk+mK9bDYaalGTPKqY2UeaMnqc/foI72fAyFmY/TmsiXUDcyvMxw7ZPtzXVXqKTSSOOhGNO04fiSM7mQY5OQMCs9rllMZzghiAfWpqU3vFGdGca3uyO2tX+QLkB5D1Pf0zXDtfzbcrI3cAe9c0sPOUrvY7qNflXs2rt/gfBaSqFdQDuI42/wAOaqRyhgCCAXODjsa97697ybWpx/2XFxVGnpJl0TyKjESkMuSSe9VC/mbm34GcfWu145pc1ReSCOCUY8j1t18y/pz3moatZWCx7mlkAJB6D2+vevQPhBo/9teLbaQrkW7An3Ar4ni3iNYfDOml7zPv+BuHqdWvLFVZXUNtOp+hXw3tJNO0GyidSAsSHH4Cu40u2jgtLeMLg7VB+tfgtStKU3N7M/RMZUjUk7/8MXhLuzyflGBn9akwvODnacYprFN2kjkpuTg4yexED8o2MD1OR3z3NCouN3QK3UVcsXOMveeppDCXTSIbrHkSMRjPIPp7027J8tgjHLEnHpW1Os2uV6eZzVMOtOV+p+en7bmnN/whEko++VIB9eO1eiftd2yX/wAML0uQxiYgY6rkda/V/DPMVGq4N6H5JxtgZUsVGqnu7f8ABPx7+CjLB9u+U5eU546H3p/wmeW3jvFRAwF26knvg9TX6tGEZYjmS13M8ZR9phY0Xte/qfRi3EG0NyCx5Fc/9rbaAIySSANp6e9drpzc7xex4rqRimnozq7d4JHABIy3Ud65izvhFKVKsFJHJHv2rOUXFKXUww8VNOK2vrfzNDW0VbqyUNwDkY781S1G5EmpWWDxEAGHpk8Vs3OdLnfcxwlsJWlGmrp6f8E9k0EypYxiMhSFyCe1M0yOR9PiEYJUAHAPX1zXkVaaa51uVjW4Pk6P9Tz3xvrM1v58TkFgpYEH0rI8cq6287fYyhYEZOMmvdwdBOMYtanzrxr5X0S/U+dNX1uUsL07Soc7tvQ1iaolwzfZ4osBn5JHTPpWUrNtte6fRNVZcjk0pRWvofQXwm1ZtQnj8tD5Oep7+lZ3wigms5BEyAFQMEdz614mOacrxWp9Kp01Bta7adz9GfAd9gQwAEkkHPoO4rO+HsV0LeKZ0IG4Egda8mtFpJo5sQlKXs5abH0bp93MWWNkzjkY7UzTFlaQZX5SAuRXNiJJpW1OSNRJuDVl/kdPkiJsjGQScd6kZSEySWOec9qmTvZpann4fCz57xejZ7N4WQf2dEX4zGMj3qp4dnCabbgkg9yfSvHpxcptvTU+irz5ZpO10rHYBMSBuATwPYZ5NVUucuo6gYJI6DBq6sbxV0a0qjTlCL2/M3IJnjMeSeF5I/SslJQqZ7AkgelRVpJx5bHPhZzk+ZLXqddDdlty5POCT/WuZS92cK5XoB71jHCJtNHpyqrm1/4B07KjKrLkuCD9D2rES82FsMSMDj045okpSbmyPbXiqcWT3BMeCH4KnJHb6Vk3V0pH3hg5AI7U6UYyV72McZTlTa5NUcz4t1J4tE1Fkkb5IWAP071zfjS5CeHdTOefsrgk+3pXo4SlFVVDqfPZi6vIpN9UeH/B7XtQvLrVPPuHZFvXAUk8AY6VznwNmMj6i5cHzL9yQeozzivyDi/EJYqSXQ/oTKYpZfTUtGz6z+2s/l/Kc4OSe1ZjSfe25OMgGvlqWIm9U9TetqlDp3NqK8IBKnJ7AdBWIruuMg8MM7f51dGvUTab8zOrGP8ACluzZeYnaSMnfnI71lhiGVWY/LIAcd69vLMTKdRWPIzJKNJxidLHdZ+XnGAB+PpWdC/YHuMD2r9cwcGqSbPyWvzRk2/hZ0CMpBzJktnJHc1mpICoA7Dp6128sd5nn1a7g1GCv+h1On3DqoCsRg8Y/pWPaS4ILMThwcenvXG04ttdTqc4zjddDt4pWwMnAwNoHYAd6yI51XaA5GTgk9q4nSiotRO6M51HHm20LF/ej5Qx64wR1965vUbkgKeMkEn2rrgo/Ct0clkpqL0JBfmOQsGIcAkHtXOvcHHygjJ5J/WuxUFUVpfMFmHKm7Xa2O1gu1uy28E7sjA/nWBpl0Yz5bNksxPT9K8+qlGSUdh4dPldSSudFj5dhyCwPSmLPGSWJJJI49MVTrvmujaooJJW7D4bJziRlxxnH9KuwTIqruJAVga2UuZp2LcFGLTerKyo8SqCDjeCffmia9t5SNj/ACq2SB3rB3k25bGVKn7O3MtiwpDOuwgFssc9vas5Lkbh82BuJwe9U4ytdbHXXnGKVtLlySacjGAAuFFLFeQ3RHlOGCtwAen1qlTSumcuGnTTUkrK4hR2jwGI2g5J78cCudg8QiXVbuzmZVjtWXBP8XsK35FFpyJqSc05QfXTzNxYXKqHYAjHNZP9uWst5dWzgqsRBLEjBz1pWXNztmtHnVO8v6sbCR9XLHJIIB7ccVxbeMrKO7S0LEoGA3nt6UqkZxi2Z0uSq1KO/X9DtEUL8zAjcT8vpUcc6uEdfu4UAe3GKKM+b3kE8JKnJx7GnHgE455AOO1LbYYYLZyTnPvXJPeyfmdV1FXkrlhVLBuTwu0gd6mDMoQAE7hyRWsuaT5l0FRpxcLt6sYobcqHG08dOlW4jlQ2MjOawjFxjq9Cp1lPW239Iz5EO1WzyWwQO+K0xHuHLZK5OD2pyq3Vmc1OhF1LNbbnLTgsVOCF5P0rXuLTL4AIGCAR06VtSrJO61CpFyko2scywGCWHOCc1caPnaxyFYL9PSumWJTfMmRHAtS5JLR9TJB34UORgdaVvv8Ay/xZyT+mK3pQ926Jly1Jc0to6DvMyFyxPJ6d6qtMquoLDjgDuazVlJJ9TkxNKUnzRduxN9pEH715MCNt2T2ri/Gt08fhzVpI5NrJaO24dsVrh8FGrNRTsLH4mWHhzyWrtc66DU7O4yIrhHP+wQcV8h/s861d6nFrL3V077NRkChieee/4V8FxHxIsFiHh1H3kfpOXcKurRp1ak9Ja7bH2AbhG3BZOrEEHtWEJBgs7ZxzgfSvIhxhOLUlHV+f/AOmXCdOd4xex0Szqo3ByN2Rj8Kwo5mIHJw5z9K1nxZJOKS/EUeE4NOz903vtmVKliAWAUH6VkbiSoJyuelb4bil1JqEVrc48dw1FUW4yvY3IZWZFIJJDYJNVosJEoGcKSDjvX28KznFOx+e001NRYwkjcByCQcnsaQwO+/BwJFIyO1d8Uo6nSqc1NOGxF5mCXBPOcj0+lRTIUEeTlsZB9PWicItO2pU48k3zPfZkJbbhgScMCRUDPy4yQWAOfT3rWhyyjrv1PPqzjCerbXQek7RvncSCT+FV2Ys+c4Axn3pTwznG0djTB1nF2k+5pLKXO/PzoRg1ViZXUMDwSAc/wBa5rSTSeqL9vBrnhoti/GwYr0PzED2pPKZCrsCBuI/Xmq92SulZs2aTUovRLUOQ455xnnvUkY3kMeNrAk+tQ5pWg9yaGKcbqGq0PMfH/xL/wCEDuNGieESjUpkQk9E3HGfwryD9oeMDV/Bqs4EY1KIfX5j1rmzqfscG6sT6DhbDQxOYezr/DY+rdP1D+0LOG6HAmQED1rD0KRl0PTAABmDAP8AjX47RzurOTlKVkfqE8opwfJBG9JKBtG4jIPSstgzNhwThc57HNdFXPatlZ7kU+H6V1CSL5kDoSCMAEiqqgRgfMDuzU0uIq8Z8t9O4T4foJOLXyF+bewGSOgz/OhQSS65POQDX3nDmYzqxtNn55nmBjGu4wVlYRpCAQSSM4NAVlIBAO9sEHsK+v5UpcyR87R5opxb2FRiMgHATqPrSbSEXeQCkhIx15pezTlyWu2ZSquK5ntcupIroDwCSMgVXQNtGMHHP1rnm7LQ9CnKPKktEO34DfMeTyarvvXJyM5Jx6U/ZOSjbY4qOPpwcoRXUlLhsZJyGJFVosEg+pwD611xvs2c0K3PWUOWxMDvQNghn5I9CavRqqqrJ1bHy+1cTknUu9zohiuVOKWhQnG5lwMEnGPWp3IbnoxyoJ7Y6100ZJPliQ2p3nHcyWj8sNkZfqCO/oK05MOGGOWwOe+K0q1nolsVSUlFuG3UxfLOcseA4Jq7cQmMFeccniueSUtYseJoytHnd7/gZjN5YYAkujDk+9RSNJtUY69MdvrXXTaT98wm4tezp6skEm4cggZ4z6+tU2ZkIHOQeT/hTjRuubsc86sY1FSmaatwu1+dx5/oaoq7AgdSxyfYVWsbNal1ainN02aCs3QkgFxgevpmqySZGCTwOc9qwjK2kla461JOXtKb2STRo8Ahuck4PvVPziduM4JFa08OrWkdMK11dkxO0ruz94YFR+aGyc9Sck9qUW2uVlT5aLUlsyfeMBYxkbgMnvmqJdlAOSMN17muZUuWVm7sVLEXdpde/QtmRSVA4wMn8fSqXmIzEkHbkZ9q7Gnyc7MqkWkot3XkTSSFVABBJJBz2waq+aNwyCVzx7VlTqcj9otbCnZ8sNmWPOx+7x97Gc1QFx8rgkjbkfStVVlza79DKE6dWTqW23/rzLzSbcjIyn6+9UUnUEHHJxkVajZOV9Rczik6b3/A0km+XPJCggj04rL88LIN3IA9ePpXPToSeqZcsbzOME720+8143Dd8kHJ9qyo7lE3AklSoyPStal+a6LwtGK0cvv6F2eTIHY9ye+aoPcx7Qp6HDCn7RJrTRsxpUJQnJpXHSyn5eevB9qqK5Z2MgzliQaU6KUr3NYvmg1FfMvQOicsSQmeneoFZRgZOSAR7Zq5Wi047PcdO06d3utEXrq68/YEwPkyQe3pWQ7btu0kfOcY/rWkJRSbXQublKPM9H+ZO3zD5SfmwCKhRmV8DgnJOO9FOd1zM5aNJtummOZHQBsg8kHP9KryXIZmjMgO3sPenUrJNMMFR5XyzdkNJUkcA4IJz3rFm1e0hbCykhDh8dqcYOorJ6o44xcKtkt+xuIxDEg5YKMVxM/irawaJCYwxGVH3ie9TCMnF8u25rUqqNVRSujuGmdEUL0brnt6V5x/wmEiuvmKSFUkA+1cta6XNM75TTSUFoz0JpxyWOCxxkdK4A+MIZwwaFlZscnHJrojBzd3siKabjz3O3lkAyV4HJwO1ZFpcCeKOUE4kAIB7AiqiuWN2zhoy56jkumhoySqGUq5Ic4AHWo0ty43HJ5xn0rWNRRXI3c0d5RvFWLX2rYjO5JUcj2xVS8idIJM5KlGJPpx1q6cueSijCcPZpzlsYukePtC1m+u9PsLkvcWMhSRf7pxXyh8IJpv+Fg+LIS7HF+y5PbJ6V8VxZmc8NWUaaP0rh7IqVbCqaeh9ZeJPEs2kwI1uhZnbg/5xXI+N5/3drbhsjGfpXyFXi2uqbktj28Dwjh5VeZx1Zz+q+LrzVQsdygCowyfWuPmbDD5wCM4z2xXj0+OMSouT0PUlwlhm+RRsXXvyxQkkfNwD3xWcxU8EHCkHjvXVheMq86ijLY4sVwlQeHbfQ6BJhkEkktgkHsKpRkkkdwFJzX6zl+K5qacj8jx3NCryQV0i2sgVQoZgvTnt7VAskjryuMZwTXrTglJtPc5qWLaiotaXRdTewLDA2n5ce/eogQwC9FZlNcymk7LS5m8PCouVPe+pHI+1l6lmYDHr70spDDqQW4BFbwnJK1hVcPZKFKXw7iR5Me48Dd0H86aC5X5cld2SPWlXp2nzHThcVeGnp/wSCbdIucHPOPansxLbWjITPOPSpjKTaSReKVJQvJ6odHH+6XcepJPvTwCFC+pPSniKbcrvYjDUYVpKL2IM9CCfkYH8af0QjnAzyavkndN9DN8sJuNNXS1K+8oflUHHJ9qcIzkEnOWByPanUlzR1FhaadW8V8XQ+HH0prZhhsru4J6k10E91H5YVW4Axz39K6qFL3eW+ltDt+tydT2jVkmYXlBA2B8gYsR61ZkKyhRwXZlAA+tdk6Kg+aeyRzUaksX+6o7yf4H0r+zloWbia/Yffl2k/lXtHwP0P8As7w9ayOAZJIwxwOpxX87cVZm8Vi5Rjsj+h8swywOXwoLfqfQyINoGflBAA+lNVcAL1yQSR2zXzFpJcr1OJ0W7yb1ZHNMlupkdyFVic+tcp4wvF03Rb24Mh+WMsD/AIVtgMNKtNKOhx47GKjaDV9kdNa30d7GxjORxgivMvhjqranp4dpNy+YQTnpzxVYmmqdZxktj1vZunSTk/eaPUnXKqPwPvmrAAAOf9YCc57YrmxFOzVtznw1VN8yR8vftKaNDffD7Vo1jBc28hAHfcOa7n4zwLdeFNQgK58y2YfXivouE8dKhik1ufH8Z5VCrQkpPZXPws8B2EtpPqa7iAL1jgdueK7ux042Wq6xCFwPt7EZ7AGv6Qy3GOrPmXY+DxtKnDC0ot3e/wCBsKziNd2Scnp6VK/yryccnk9D9a9mlVanfdM+foqLUE5apskihLFCAQcZ57Zqa3liDq/JJ4yOxrNVZSm01qiJ4fmqXjOyfSxQugF1G1LgEFgM+vpUVzMv9rW24kKXGAa2q1JuHLsjowOBhSlOc5ava5734fk/0XrgtGMH8KboUf8AoKZyAAOT3rzKFNaSZw4yurTVr22OF+ILxraSBuWb5gD/AJ71xnxV1a505C8YycEqGGa9jBUpt87Pn+eFScYP5nhl2wF8mTwWyQexz0ryi98ZakL5g9vud3yGAOPrRmFPldk92fR5dRVSN5aW2R9h+Abq3huIDM+H3BgfUVwHw61W41B7QyRAAyKCxH3s4zXz+YQntF3aPfwybkqs0tNF5n6l/D2SKW1gKENwBj/CuN+F1zJCtqgz1HBrwazvyyl9xrXwrquUoS33PrGyQKiHg5OcHtUVgzNEr5IyBgf3annXL7pz8ic3T303NofPhQTt6EVENq7SWP3jk+lee8XTg2pS1NsPlNaUkkvQ9S0OOVrOLBxlQCfUGtjSTGum25T7oQAEd6+fnxFQiuVM+h/1Yq1ZqpLf9Q8tyyjcSgI6d/rVgSHG9iSVGQKh8TUNYp7meF4SrVJ3l2YiswIOSdrZx/SmLMCo2rzjJHr7VdHibDyXK3qya/C+JhVUqbuuwryPwxJyueR3qu0zE7MctkjHau/C5zRaundHBXyPEyjZqzRM1yyAHJHcE9qrF+Blj97j2rqpzhOV4mVTDzhFJ7jHuJZAc9Bk/WpFiVjvOMcgH611qML8q0MISqS97Y868e3Ei+GtVABIFsTz2HrUnxEmiTwvqhGQGtmHP866MPGLmnJank1sTVjJUnLQ+cvgJKZLe6kwQftkjA+vNbnwHS3/ALMllJAVrlyCeh5/rX4HxjUU8dKMVsf0fgFKWCpJPSx9DpcMMAA9TkGpo7iyUriZDhxyT09a8CM5U4pbmzouMlGfUsLK7eWp/i6e9UPEWpQW9iJbCVRKWBJU9c1dCrKcW5KzM8TQippLboWpJsE5zgkHNcZ4e1ye9uWS7mXbkYDYHfrXtZLiaf1hRR5uf5e44ZTT16o9EidhtK5IIP60qXlkdqidASzAZI6V+0YKp+55ZbH4/iKUbtxV7FyKQ9ATkAAj0NQfbNP3FTcJlDluR8uPWtp46EVdvU56WUV+ZRprQ145XRVxkkt+ZqCK4tpF3b8rkHI/SuF5lRk/e3OqrkuJXuJaGh9sYnBJBwCQO3tVQSKW3HgZOQe9WsRSkkjCtgp023JNhcSvIUzk7WyST0qeF1LkMQcckDt6V10qqgrtXMqkJu0Yb/kZUokwfmwAMADvXRGKKRMjGFJ4Pf2renjGm5LodEMvailJ2u7nPQSTRndydzDI9BWxcmGC1eUsFYEn6VhLFxkuWKtqZqCvzWuPjmK8s5xnJqshtbq2VvOUO65UE8k1nGzfLezM3KahzJaGmmoqR5bMAHbaCTXkmpTX00stgXZUiLEE/wAQ75rp9mouzepFLmdPmkdfc6m+nXd07ENaswYMp7gYrx+WaSJHja5cZ425POKxlVhF2m15HSsNXnDlW7PYbzxHElibuFiwOMEdsjj8q8Vh1Jki8lnJiYnCnpTp5lRpqzkb/wBj4iq0pLXqdnpnjK/spLlYSGil3FgRyvuP/wBVcAk5Vn2MQWyK56uPoztLZkf2fWg3TSfLHbTfyOxm1M3Lm6eQrcyy8kZ4x0NcetwzBCCQCckVrLF05bS3MqWBq0W5qNrndf2pJcXkf73H2jYkjeoHr7CuLjuWDjBIZGJJHalCq5rljuZ1F7KSlNb3OpvZrW1vbcq+5QwwT35rkfO3bNxJw2D7V3tPaaODDVITiop2erPdtO8Z2YMFsybY25Vh0HtXiUcrnALnAGRWNSlGDXL0OjDVKlSTUtmfVNtqcFyqSW0ylQ2cqeteB6P4il00y8kxnOF7Z7V59Si5NK2/4HfUxaoxU462/E+j49Q2LhyT9e/HBr50i8U6kNwMzbTKG5/lW1PCpRvJ6kvEOTVlrLqfSjX4SE7WPCjH19fxrwuTxzLC9ogyV2qTnue4NYwpwVpJhedV8sXqj2xdRlUlweQcADv6CvKtJ8Xpf3ckTAKnGDnrWcoQi+ZnYpzaUoR73Z69FqTSIzOMdQVP864/7S2S6MeP1FV7CDkpdX0K9tWcFKS22Nq6uRIGAyGBOcdq58ztJIWTI8wnI+tdkaTi1Kx5866jJT1TGy3cwcjnaMbT6D0/OmSxglWOQm0ZBrqjXinZsxq0J1GoqO5SMhLYORk9fahomQllYhhggjqatYiM0rE0sNKim5PbY5HxvLs8K6yc5P2NySe9ReO0kPhTWSqkt9kbGR3FdeErqM7JanBi6bqySXkz5o/ZmmD2equDy2pTHPrk4o/Zts7mGw1MyIQzalKxOPU1+GcaVKbzCSluz+h8DGUsDRjHtofXIlVWxgnaOcVCIJF3NkgknOK+bVZSio/iaexlFO6+RpRzqFCsR8xJ+h71nqjEDAIViAcVjKotJdUa4WClBJPqzRecrswDhTgf1rMeF8R4JPPQnp717OXRcqifW55+cVY+y5WjqbS6RlVXyTkNk+1Y0Ucmza3cAACv17DU04xaZ+NOsoTcVG61OlkvYQSA2CGyAO1c40UoJABI3k5PevRhTbSTd2XOvZWiuW5bvLtDgjGMkA+/tWa1vIAmSTlz170UKCaak9Eeaqrq3t5kpnJw7MFJJIxTTbzOyqF+6wB9q3jOMYXSK5JJpRWvcHICrye5x70yRCRgnG04Oe9bUW7JTYlFtPlRLaSTNLlD8jcgDv6VYsniiYBiCRtGew5qMTBO/kTFTjO6ej6WOugIlhUTDD45NZCXqO8caSgE5AyevvXixjJu60R60aM5pKW5prDCinHAOQcdqpNOgWMFySWO4jvW0pOM7vdGCpxpxVL+mfJ37SUMv9reEBEpYyahbqNvfLcn8B/Krf7QN3FFrHhDL4/06Dn0y1cmf12sundas+r4Ji55jzR0UUfQPhqOV9Isg2SoQAZ78dRVvw5dRPpFjhwN0CkEHpX4LSlKCSSvqfrFbm9t7R6LsaRiC5LYB5H5VXmuV45O1jjPpTxNJykpN6mFObUm9k+hMqROcZHU49qoR3cZDFVJO7BJ/lVU6U01boFdqcrIvAxx/d4AyPrWSbnLurEjBBAPcd8V+l8JRvFs/OeL6vK0o9SxLqVjA7LLcKrE4IY9MdK8V8UTF9TlwWI35IzX6JKjaKlc+JVdTbjPS+h7hCy3QUxSjaxHI7j2rH8E39vPZW8RmBmjXAU9SfSuNYmyd9weAUpR5m2n+h2KWxjQKAMsQOf0rRaaPy2AGSQCD61zxxTuoPVnqVacab5vwOYmTbLkg9enrT7iXDOxHOOPbNerCXPT5U9TwaVCm68pJW0KmWiHOF+YDI7Z6VXklySwJ2KRgHvRytNNm0JxguTz1L29hjaxI6/SsprhiVC5w+44Pp7fjVKknG0jOFXmnz9i5Lc7d7Z6449KzGkY8EjAx17VpKlZWaBUYyg5KVmXRcj72T82Cp9vasrDsrANhi3BHb6VEacV7vUc3WjHmesTba7XYA/JIOKxhuJ2sc7hgj0rNJRXZmtKrpeWrLrvGx6jCuQcd6pNHKSXzj5jknv70W54uLZrHkg1JLV7EUjRl0HIODnHajY6PsbDADAPrW0J2jyJ6HFRi51LVFZoEGCOpwwOR/FxTs7VVQCx4A/xpTqvlukdGHpQT5Xt08x65K7Od23OT0yegozjnkbsAAe1EJRb5Uc86TTT3JACWjUcsBgD1NRAnq2QyEED19jVOcpQbR2/VrOOun5BJGxbAJHJAHp71OGJBLZHGcU3WV1C2plDBxk3Nu5CVYhMn2Ge+KjdjzgnbwRnoM04UdE1qOT3itktSIqWC9Rhs5PfNWNy+WMkcfMT+FZTxF20tjz/AGnKrpXIFidiMAjnOBUwcRKxYkA5yadWolHkjub4XlrSut2QS20oUnIGCM+9WY7uGXYqSbjycjtV0K7WrRtiqUJxVGOjvuZ5tpACwPEgwMfw+taL3KKAvXGSD6VzquvaWiJYKELOT17mLJbSEFSSQVzx39K0RcZXnJ7j3rolKMWpI56spJJU1oZ6wylNrZByDkd6uCYAAEEZOSKipiGmpR2Ihgo1E4VnqygkLtzyASavCVd645CnJPrW1aLilJGkZ3fsr6bDCnkBXIwytx7f5NY2oeILe2kEMuchiWB6gHuPrVYeUmry2LjQkko0yS41WCGIH7rhsZPYA85ryrWNUe4lcxPlBKR/vCpmk5XT2M6DWsJLdnXXPiiKNZpYJsyhgEU/SvLfMy5BY7GIJ/2fWtG7NPe5ddXSg38PY9B/4TRw8blMrjDqO4HX8a85JJIU9Bk1lTs077CcryUXpsrnWnV7u5kuZo3LCUggZOQPX/CsbTrmKFzJIARjAU9/rR7e+klojoqRj7K8ddeh0NlawyMJruUGEghs981z95qTzQsg+VBuKkfpmn7WVkmzzFNxSm1pL9DVlu4oI5LTTl3RcnHHHPFYllfRwbMoWG75sdqhYzlfuo9N4LngpRem42Q3Esilk+XgA/zrpIL/AE+8urfzEKo2UCr1B9TTnOKdn1OL3JyShLXe3oUrXSg8G+MEuXBIA616xZWEMUQ+UEkYUkcgVjG7laT0ZrGyi2kYmlXO0wW32c/dHJ6D2NSXet2+kXHkeSWIxk9xWlkumh5aoSSvFaJps6mO3J4c4TGWFeZ3fi+cXAlhYm3YcAeop05ySV3sd8qSSbe76HpVxYGS3mgikO6QFRn3HSsjS9dhudPWe5nClUDMT2qsNiZKomkbVrKjaav1sfJPwu0l4PiZ4pCOAonZgo75PWrfw41CGX4m+KlWUjZdpnHTBPUV8Bx9XcKi6tn63w1TccHBNabnpHjV8ag20nEQAYHtx2rK8RXLXepXbMxYGUgEV+T4yu24o+zwvJFczenQ5nG0jcSQAT9RQiZYnB64NeTz3bgh+404yleT3JEVWwDnkZHt6UqN5YAZcKoyM9668HWaqcltWzzsZh1GhKzvZG2gXAJzgNyBUccgkCYPHUV/ReT1EqKj2PxHH0ZOvzR3JoYM7iCTtYEg1YhZkY9wQCPevcS5kpN2seLSrJTfOvRCpbkfdOdpBBq0pOxnIwGOTjt6VeqdnqzWnSnZu1ovoU3iU5CkbcDOKnkmRPvnODgYraEYLVGPvU249FYYsJDIpwTxgjtkU8TowX5sO6YHt71k4pxbvY2qOPuuNr7kbW4XI6sOpHepRMgAy+NzkKT1+hqqSbV5Mxn+9vKGyauVvKJI2jaNwB9/WrxmTao5OeM1hFpRcEzlxVGLSlYpmAN8uOFHfvVpplVwh5BxmlBuzbeh6MMPzRhJaozWtgM4YhSe1XZLhNwKgbc5A9cVak5WTMuZRTUVq+vY/NhtdLJtBJyxPHtXnK3RWQDeSEOSB619NGLhJNkrCuopSWrtr5HtvhXOta5YWycl5VHHfNb37Pemtqfiu2nYFktyDk9+ea+A46zxYeg6cep+h8AZHF1IYyaty/cfqP4H0cWehWUOQpWJQPbgYrf0uZLa0giBztQAY9q/C4WTc29T9HxeIqqq5LYu+U6jIGSeKcLtW6ZAJIxVTqxaTsc8ZPmcpLXoeJfG69fTvCkqISPMjZBjtnrXnH7R/iEW+ki1yA+G6nrX2PCuBdVe0XXY+D4jxDhXilq002aH7OWqm60IBmJZJmB/Dpg+/wBK479mK8M2nTxqePtBBx26Z/WvlM8pOnjJJn6jiIOphKTa3SPsgyMmwDOeCM04QOwDDIOcD3xXnurG2r16HnSwaUbNHmvxGjE+kSQEEKyMD/tZq342RxaqhbIKYz6e9dmFxLg1bQ8nF4aNRyha9kfkd4n0oWGv6ngkBrliB+PSvTvivows9TlujGMyOenbNfvXCGOjUpKV9j8i4hpNyVLqjwe5uFt0eWUYjXBLAdeOaZq6hdOuSQQTEQPyr9Fw84VJRi1ofPcs4Qmk7NLY4v8A4TFbid4NJspppEcgkL8v1zV7wTvW0IWIbGlZgT1z6VjXrKnV5EtUd2GymUIRnTlra5HZXWpzaxD/AGhAqDflVBz+ddY3h7VbvVIbyzQtggEZxtJPWul8k6KlezPIw1KccS3J3vrqe4aNIBYxsoO3yccjrxU+iaJrq2Mcb2Z7EAEenFcOGpqNT3jHMU61NtvS9jx34h7JkdWUMCRgMOlXPHuheIpEkWDT2Y5Ygg8D/PevbpUFZJbHk89alNN6rQ+SrmC2N4R5ajbNyMe9Wtc03W9KkN3qGnlLcsMuO/vWVeF3ZK7R7cJW5ajS1dtz23wDaS3EttDCiLEkgII659Kq/C7xFBPPaoFJJZR9PSvCrw9m+Z7o+rpYiVVpSj7r/Cx+hfgJItKtI7m5IVY0JJPevPbOTxDrupaT4f02ykeCVleZkPKgc/kK+SzXGRw9N1ar0O7LcrljcUqVK/L1fY+rtD1a41ZvMiUrbKQV9W9a67wx4W1LTtPgQ6exIjVWb04r8gzXjGrWnyUo2SP0nAcI0cLCUVLm87GhEpwgfnc4OT2x0raTStRLCNLVhzgMa+YrZjUrLnm9D6DL8DCjKNt7np2juxsLdQSCqg49MdDS2cBtbGPeWOxAGA7EV5mFpqTSe/Q6cXOMW29yw4ZTjJ2jnHqa8o8TfE7+wGlzoNzJHE/zSbTtx6168cDVlZKJ89ha8FJ1JPXY9TDtnGOvGT2rybwj8WvDvjOX7PYXG26hch4W++p9x/8AWrKrTcElUVj1JTcGrK7Z62GCl/MbI5OT2qgXbLZYg7wDnvXN7WVorqbunGEXGe71LZ2EAKMdvr7VQklIOdxC4ySDXp4fNKtGTcXc8+rllOq71EaCyfIRnkHA9/esKS9ETKysdryAY9a+9yLiJza5lqj83znIXQqyVJ7u5wPxUuxD4W1QtkfuMAepxxXJ/GzUUi8JahKXIUxsPYcda++y5uceeLPj8VSUq0IzV9V+Z5h8KJyPDEfluSvnykH1zjNc98GrpZPCkZ3E77hsZr8C4lxFsVOy6n9GQUJ06SWjSX4HswvZ1wu9htHUGqyuBhsfMTjA7Yr5mtiU5aIuCqODm9r6Gil0xwJ2JCDcoPbNU2mXa43ZHAwepyKzo3c+dysh+zbgpRe7Oe8R60dKjSdFdpWYhVQdTnircyQzhDKoOxs8+letg8zjSqKcVqePj8HLEz5OiG6Bqep3MPn3LsPOYHaeo9qv29xBbrsQ/ICDgV6suLMRK3Ns+hlRyChBNRNEXMyEknAm6+/1qFZQwCjGAD8x6CvMrYqdW8ru/wCR6MIulFKKPTvDWuxra+VeOFdMHLHrXmIutrguSE4APoa5IYuUJcyYV3zRi4rudZrHiO8a4MSXDGJckMveuIeYgltxJBJB9BWqzWXtL02xrARlGN4+p3SeLtQiVJBckN8o6dfrXCM6mMDksrE5NfZ5ZxLUpVFSqu8e58pxDkVOopSoaM9z8N+JJpQYbl8l2BUg9TXnPha/htbkyzy/uwnftiv0yliY1IKotz8/qJuLoyfw6ep2/i7V7sXAj3OkRUngVwPjbxdBDaz3ZmC20QLHceletCiuS8FufO80uZTl9nYsa941t9NFn5dywbaAqg8se9fLPg7VLzxp4ivNduGY6fBM0cCNngA8mvlc74loYJcr1kffZVwpicbBV6nuQf8AX4n1Fa+Kb2/tVklGwsCCT1Nc1Fu8sbeMADB7+9fA4ji2vVStoj7KjwvhaDVloa8jNO4/eYIJJFZqTY6nlCM575rwK2ZVazakz3sHh6VKScPQsunltjGNwOSPXtUbSeYQXkxhuAK5XUUY++22ehVhdc8bWRKq/KSzfORkkd/aovNUclhkHgf41Eas4rllqcT5KrunZliOPdn5gNxGPwqHdjEjEbTkjHah1XJq0rM2qxjShzTSNNLGbCMj5LckDvVeG9dDEAxwEAA9Md69TB5ziaTcVK7PLqZZQrw5nFF0W7ksigEngj1qu1+4xJkg5zx39K+4yviZtpT3Ph814YSk1T0iaS2UjFPnJJfj3z2rNi1JztdSSQ2fpX3NKpKa9onqfB16CirL5s534hard+G/DmpapZkG5s03KrdDjrXnXx91yWy+HviCZQDtgJUD075+tethoOTTlscNKrJ1IU5aK+z67HQfCXxbq/jjQYdWvlHmSEYC9BivKf2XtenuPANlKrEpvYD36Zr8Hz3NqqxEoqT0Z/R0cooU4U5JK7R9YtaykjLHIIIz3rOXU5GbMbE/MDz2rzHmtblau/vOaOVUqbUlFamna29xFKsschDJIOB3rLOr3MCsFJ4JyDThmFeS5nJkfUqMZ81OO35nqKeLIbOHdeuFVEyST04r5q1aTW9W1uBZCF01FAx/e56Gvrssz6NGmpVndnyGYZJLE11UjaPc+o9O8XRXgVoojs3gKf73vXPeDLRpLJDLGFjGFDHq3TNcuN4wqTTjBfie7S4VoU4qf2kd7LrSsgLAHOcA9/Y1Vks4FUkHjBGewrycPm2IlK838jteCpR1S0PGPid8XZvAqadJHEHNzOiYY+px+fpXkf7SlrbPD4fU4ydQQZHbnj8a/ScHNxwLq9T87wlB4jNlSavFn01pPiaDxFotvcTRlluYwWB75xwayPA1pCnhzTFOCTapkfQV+exzqu5OVz9AxeV0acnCEdTc0y103Skb+z7NYopHyVQda2RFEAGCk4G4Dpn2r57GVZ1ZqUnc9KjCUKN3v27EX9qgtuKkL1we1SGGByPlwOpPpVOyglETTS13uKdTPCLjb1Pv6inR2tuMA4Pzk/Wqovl0bsayV5akT6oWQBQMnptpz28Ctheig5x3pyr3anDe4Tw1OUeVrcjXWrgMoUkAnoKX7PC0eDGM4I+o9K9CnmeKjH2cpbHJUy/DRb5Y3Q6LxBcK5zkgsASeprgNc1yWxuHtLa2G0AAH+7719pw9Vq1qlpSPgeJZU1B8kdD0KTWpUbOcDcCCe+K8WfWryRRukO/BwfSv0KCkkovU+BTpppN2R7NLr8w24P3mIJ9K8WfWL7CgyEs2R9f8/StKNCcotM6cVi1FJNa20O+1XxFOigGYkO+c+leXz3zS/KXOc4I/vV0qChFc+541OhWUuZyOlbxHqCyB45zt3AAH9TXHb2QgZOCW5NZuHtZ3lodVGo4K7eiO4h8R3iTifzCSNuOTzXIW7fvAXyAsgx71liKCU4u5nh8Q41Lp3u/uPV7Txbqd5KkUKDDsoAOeAOua4m21VtLMhiQM2VOT1A9qzqx5oKMUd1ZxlVsvkcP+0VMG1XwQpYqZbyBmA7YbJryX9oDx/BN4q8B2Unyyvcx8t3O7gCuDPoS/sxysfS8B4l1MznCOkoqzR94eGmUaNYu4yfIVRn2HNc74Zvs6JYneT+4XGfpX4A1Fy5ZI/YIRk6lpu53D3cTBlZTzwM1gSzA5JLAkgcd60WDTlzmmrbSXqbazAJsQ4IXJz3rE88qhIY4UYA7GuinNOXvLUweHnGygRXuuwWjqsrHzC4CqO/4VgPpkFzqEWpNktHgAHt619hlWaQw8bRV2fJ5hw8sTVVSb0OW13UC13MYwNrlTk9z603XxtndigAJAU9+lcWY8Q4itonY9HD8NYejTTirlnwddXA1y1zMQofcRk8mqHh5ymqwOMjOcEdq+dr5piJyi3I9TB5ZSi3GSV0fRr3pACoxwQBx1Ga5Nrr92uSc7gc+telgswrr3VLU5sRgaCle2jNhronG8nB4571hNMc/O2MEkAV9JhM8q0rXdz5zG5BSqSbho1r6mq83IO4ltxGPSseObflSxySQv5V91lea068OV7nw2aZY6EuaW7uaTT7SPQcHPbNVBKfNVOhZxj2zXsVIqUU3HQ8GWGs1CL1/yOQh+Ifh2412bwyLof2rDgPH/AHR618d6Xc5/aD1ZAMRvbhip6sSx5P0/nXhcVYyWAinDqfYcIZDTxlB1aj+R96tdLt3Kf3e7AI7Vgxy4RRnIYA/pX53/AK0V4PmTuj7V5Hh/dilqdCt6FAwmfnJBx1xWEsucYY/KMgDvSpcS1py0RFTIKLl7rtc6NtSUqEOCGbBz3riNb1X+zLSe8AJWNAcDufau7AcR1a1SMXscWa8OU6UU47XOvkvbdPlkkALNgAV5PoVzqOrSHUNQyFJGxGH3RX1VbiCnRV3qfO4DherJ+87J3PWBcIy4XOQeCew9qwUnbIBJC7MADv618vX4rq1WmlofVwyCjSioyV0tTY+1M0oBPy4DAislZSlwjckbQpB7+hr0slzKrXnaWx42eZfQw8Y1Fszp4irDO4jPIJrImvUgRmaTAjXkkj8q+8owSimtj4ytVs076G8JIWQqWPOcH0rxi38XS+IdUktdMYiytXKvIOjHuB+NcuY42lh6fNOWp6eWYOriG7Rsu/Q9kYxlQMhvmBwK5u3kZYo1kYkr8pz3r4zEcVuD9xXTPqMHwnGMvaVJG1JPuCmJcLyOKzhc4zkDHb1FeOuIq1nJLQ9WGQUI2c46kk6tPC8bOQGUrx2qubkBGAPAbPFebLPK7nyX0PTjleHpRuo6s5/SLdrP7SnnsxSQLgnpVa0uG/tG9V2yqzYGPpUQx2IjJuUgrZdRlFcysuhum4ldgSCcn8qgS8i3bBKC4IHPf2rqWb1Yte9qzjrZPQdvd1Ln2ojG8AIGxkmsLXrgLYyGMc5BAHrXo4TiKvBJ2ujjqcOU+Zcu7NmS9t40eR5h8oANeOnU5pVMUjlleVNwHoD3r38s4vp1G4z0Plcz4Sq06jqU9WepX2qxWdpHcgjbKTgDqB615frF3NJtiDnyioKke1faYfGxklJapnylTD8k+Vxs0x+sas2ozF2IDAkCue3MWyeSCCMd62cmtX1JpKMG4wY6UjcpySDgEDtnvXCeMfFtr4YtULyF7u4dRFGvVj24rnvCnB3dkdtDBzrNSg/e/M7UMgxG0gyznJ9RXn/h+bUrqJLzUJDumw21f4QfSvjc04so05NU3do+ty7gurKDnV0f+Z3M1wiN0y2MZHtWaxyM8kZA57mvjMRx3WlU5Kat8z6ajwlSjBOT5uiLDXz+WypxuJBz3+lVZMKu3GGyCT6V5FbiPFTblCR6+EyPCwbajb+tR/2iaRR85GBjFVGcxsmBnLD8D3rmqcQYuTSctOptLJ6MZc7joy5Hctt2sQr7iAR3FVywIGAM5Iz6Vy0OIMQ225aDWS4dx5UtT0Dw9eaTbiO4vHzcq2MHoBXn6N/tZBUZA6CumlxPiW733OOHCeDUee1n6Hv8PjLS5v3EcxEinAPavAIrhopiyPliwXA9692lx3WpSVonJW4PpVndHpOt6s1xdIzIBMrAEevNeetqE0s+d+STtJbtXu5X4hwqS5Jxsm/66HzGbcG1KUbU3c6eS5+0um/AVSQMDr/n6ViJdgKq8gA4z65r9AwOOVZJRZ8PXws6STktb6mlc3UsdrMFkbYFJIB61Sco8UowSiQFyB345Fd2F0qpvqcuMTnTai9T5a+CPie7uvij8Q7a8lAitJcRgfwgivHvhJrMth+0P4xt0P8Aoc7P5kZ7gn+dfn3iRy0cQpS6n65wlgatXAQmnezs/wAD71mkaQtJvOc5JPetC+jsR5U2nSZEgLFG/hGfWvx6vJyXMkfZU6VOE7LVdigiMY93fcOfTirHmxKgU5IyCSKjmg2lazNbuN5WKU67BGRg9Rz2ouJoism0EAZyD9K6sJGVKUU9W2cuKSlScupZhjdlG7PGCcd6v2iF1RUwQqrjHf3r98ympaipdT8Mzem4V24O6ZbtUwd7ycBTwe9cF8QfEx8P6ULWxkLatqLCKFR1y3f8K+gkk4c8mkkefhcLUxM404R1Z29lrmmX089ra3CvJA2GVT932NcD4A8ONpGlxNMxN9cHzJ5COXY18JmvGEac3TorTufomVcIWXJiJa6HZXE6ANgg4Y4B71VuFQOvAPJ4rw63GFeLfL0PXxHCeHacZbj47oLtcgnaMDHaqG8nbtY+Xvx/9avP/wBeMS1aUfxOSnwNhm09uXU0DepjgHd/L3rPtEbdvkUAZOAK+pyXN8ZikptWR4eeZbg8NBqErtmzHc58v5icgcfWqLgoQOfvA59f/wBVfoWEsocr3PhK+HjGClJ3eyNF2B2gEE981Bk+UGJPBA4odRNuKWhng4zpxVRq1hMneVJJxnJqDewBUk5OSMdq1rUnK0UbRk6uqXz9T8kI5i5Dno4GAOp9K5/wtPNqLWsQYsrsgU9/avdrYxU4Xm9EbZZgJVpKmla+5+k37K+gSG1N9NEVeWX5T3IIHWvcvgHoSaV4Y00jh3QOT6ZxX808TZxHFYqTi9Ef0JDALC4KGGb0W59CjfGo2g/LtAx3qznaUz2YHPpjpXzrnyxu3dnBSox5/dehXeVoo5GJJIB4B6VnaxMtvZTyZIYITn6U6NJzqRcnZGWMxS5Xfc/P/wDaa8S79Sks1lJRAOh/OvE/jpqzX/iO52knbKQc/Wv6C4SytRoJxPxbFZhGWLc0tFc9/wD2UNczJNCckCRic+v615n+yxqDRa9NAz7QHAIXvX5b4gYJwxC03P3fh6sq+V+2W60P1Vtr0cZJGGyM96wIZc4Zclhg5P8AOvhJ2TUUtDNU6tSnGKdkYXjS4DlEBOOuD7Vj+KpQblfMycYAB/h9ajGV1TprlepOEUlWcLXZ8nfGqzCWcF1swr5BY9sV1nxrsJJfCa3IGVVWLHsa/U/DXGqsnDr3PzrjSmsNiVOaun8j4M8S3SDSLna+CYSMj+LjiuR8UzsLC4hJP7vK896/fcmoyqVk49D8xzHGUYQUILd7DfBl3/xL4clid2F9iDWV4KwmnQOeT5vOe2adamlXlJ63PYhVlUhC/Q+l/B0onkRnAbLgk46e1V/BbsZogcBSwwR3rkrpxSTKptS5rWbR9Maagaz4xujjJP0qTSnVrRSDkDAB9c1NLlc+ZfcfP5q/sxei7HmvjCOPyvmUqqgkgd6PGeCsi+YQcEGvWhXTkmtjz8NhHJc/NeR8Z/FuDbpTbWJG/IFN+L0i/wBnvyB84AA6k11YeUuZyibQwMnKMZSvrexyfwtQxTxShjuyCPqO9Hw1ysoPlknjr2rw8RNtuT0PqXBwTpLd2Z+nX7OTz6nrxuZW3CNFUe2OtUP2YNXht9Zltnch2YYB6D6V/PviHiZyqKmlpc/c+E8IqeA9qldn6UQO/kKuwBCyggdz2NZMetQNuiQ/Mq5B7Hnv9K/OaeIk5xitD0J6U22/kbJlMaBmXpkHFccPFkIVgyjcHIAHQfWpji4uTT0sJ0ZRjGfc7N7oJs25w5GPrXEXHiO1uGgigmBkZhwvavWyjEUY1YyqdNjxs5w9ad1S0b3OluoLW8jeCeNGWQEEMAQc1QF7DIwiyd64JIr9owWMw9Wmordn5Di8HXoyak3Z7nxL4n0uPwN8VrC80oiKDULgLIF6NzXrPxX+HWq+K761v9FnWO8tcNGWHQjv2o4ryynjcGo0laaPpOBuIVg5So4iV6b2v3PedO1GK7s7d2bcwjBBPc4618u2Vl8ZtPhis0vLVniwpIBG8dvWvyGnw5jFNpqx+h085wiipJ38z6bmnwdof5SSR7Zr5kuZfjWnmBxaGRQd3XA9Mf1rreQYpxacdzzY5vRlVVSUkl6n0LfyoUhZX+ZcnivNPCx8V38IbxP5S3O8ACLOD9elTlmSYuFTmtaw82zKhOi43TvfU5349TI3gC9IJHmxHJ9OOn1rI+OUuPBGoRbiUILMh/iAHNftmR4iUIOM1rY/F8Xl8Z4unVpzvqjzP4IZXwfZ/PuX5iCD1J71P8Gyi+CLBlwA7vhR/DgCv504jbqYubm9mf03KlBQpRguiPXlkYH5mIHp61UEgJHXBxkmvlIV4ylc0r03GShBasvh87uDjAA+tVvM/dBgchsjPceldftrOyWgVIJU3KW6K9xKAV5IwSQB7+tZ88xchFJLM5Gf6V35dgp4mpGnfU8jMcV9Wg6stb2PHfiP4r+I+h28t74V0KK6ghG5gzEOQOpxg17iluJoJInXKspUg9wRyPxr9ey3gihKKdV6n5jmPG+IinOlHTsz5n+Cf7RR8f3914e16wNnrtmcPC/p6jpxXz+LBPD37SMxtV2wX0YDqo7Buo/pXzPGXCiy+Ma1OV4yPueCeIKOb4OTlT5akfO/6I/S2S4V8HghsY+lZFvcCS3gKqf9WDz16V+evEKdpNbHuwowdqMXd/maLkFgQ20Dgg96zBKxO0jBLDn2rGGL191FywzjNQTNJpBkqCfkAOD796y2diGxwzAnJ7/Wt8PiHSlGL7k4mklSairs27C4Iw2CUyQc981lWzHZgEjjPHev3fheu5UYo/Eczm41ZRS1V2eH/tDeKnstGtNGsZyl3rNwkK88gE4Jrxb4tahLr/xj8O+Hw5ZdPxM4PfPQ/oa+r4gzKGXYB129XscXA2XQzPM3KtG0aevq+h9UfDDRE03QLJNo3eUGJ9ema6zQ4TBp1rGowPLXgduK/mXFY2pUrOc92f0W5e2kqeyR0YZRHhQfnJA9qrg+WMMScEAE9h3rnWIcXGUdQq4dUo2bu7lkRhs4YjIAJHb3qDei524AyCAO9dcZJtXe7POq1eSXtF1T0OO8YnxK9kB4YukivACQ7gnH8q6+28reTKCVduAtfo3DnD8cQvaVD84zbiadOry09kfnxdfH/wCJ/wANfHlr4d+I+mRHStRnVI7uInZgng/5Ndj+2L4Zt7vwhBrSri60q8R1cdQAc4zX2WacEUauHdSk7SSPL4U42lPHPC4mOknuj7M0HWI9X020v4HHl3UasuDxyBXkfwG1VtS8B6JM8pbNlGCT24HWvwN1XGXLLoz9uxOFUXytaHuxYkqycnOMikidW3DgjOcentW8ZxWiOTCyUYObWnQc7uIQOO+TS5BXK+4Ip0sQk7N6nJTXMuaorLoipE7Q71fJPt6UcLLjBK1+p8H5rKrFKerR+W8V5W1PmpaPseC/tHTkfDPXTuPNm68fSqv7S8+34X60BwxgYk+mB2r9XwMlJyi1bQ/PacnLGUYykrp/5GJ+yqCPh3pDHO3ygCR3NS/suKE+HOkLznyQcenv+Nfy3nNWTxlSPdn9RZhg7U4Sl2R9SR/ISxbgHj3xVf5jgZIXPHvXDFtRvJnJGlGUFbS1y5u80nzHI4Oc96rFWIGT8m4A+/Nb/WGno9h1YuMUujNbTdMeZ94jOzJDMT0qol5cwwtBFKVR3ySf1NYRqc0nJ7djOeDUW1Hd63PXdP12wsoBbuyh0UAgd/p9a+YvEXxG0vw7LHDO00sxJDGNSQh9TXo4aFRQso6FRnSk0py1Pq/T9VOpLKFjKqrHG7v9a8a+G/xi8KeJ5V0XT2k/tOFQZVfqoPSvRwtKuppPocOKVPlknL3Tz79pTT9Sng0GazspZlt71XcRjJAzX1gbS0u0VbuFJApAw4zge1fsOTuUsK6Ml8R+PVcQsJmHt4O7Wx81eG/jToWi6LZW+o2F7HJb26By0TYGBySeMV6p8TdD0dPBetOljFkWjnO0fhXh0uDYym0pb67Hr/67JyjGUd33L3hPxtpHjKwGoaSWNq4IU+teM/s3RonhghGwoncr7c9q/M86oPDYh04PRH6pQkpU4Sjs+59KJuIb5iAAfxonnjtLeS4mOUjUkj1rlU1dJGqrpT5vQePM+QlcoxAI9PWuQ/4S+yIkRyVbaSAepqo1Iu8U9TTFVPeTcdO5r63q8Gg6fPql5n7JbLlynJGPavLNb8SXWrRtYyEi3mJQqBwa6cslCdVUp6a2PCzvGThR5lG1tjzm4/a3+Hv20abZvcm6M3lgPGwyc4H/ANap/wDhCtBkYOdLh3qwIfaMn3r9CpcIxklKEtvI+LpcYReko3WvU7ZvE76zbCdEBiuIw24jkZ71mw28NrEsUSYWPGFFe/kmTuguZa6ngZpmEcVdpWQ4EArxjk5Pqe9JJkgYJOCBgds9a+kjJRnZHyWJpxlyuK/4cmjLEIpOQuSSf51Cr7QxOQCMcdvpWlNSlK+x0zqNRUZK7CaNWZVXI2MCR60jMWcMpO/Cg+jY6V2qMZaS3MZV6kXpst0R4b5UbOQADnt71IGViGOSTwQO1ZRuo3juKtFO0G9HqIpKhMvlicAnvUc6LgHccnBx6YrLkUm2ZSgoycokkszFfL3H5MAkd8UxLcS7zuIIbOfXipgm2lLc3VSNOlzPc+D/ANqZbi48cfDWK2fD/wBrwEse2TyKg/az1CWy8Z/DeO1IVl1iEsQOWya5+L+anlM3LY+p8K6sVmsnS1Vnf9T9Mvh+kkXh7TvtU7PJ9kTex78cmvNfBniS7j0PTRvIX7LGCG6ngV/MmExatzPc/apQtWlNaLqe/SzwQwtJcNhCCCDjivILvW7u8ZUklAhOMD0zXc80hrJLQzUJxi2z2W1nt50VoZcowyPeuX8NyLHbBAyjauck9cd6yo4lSbminBvlZ04aONS7cRq5Bz71j6jLYaoDpjXRUTIQShOR/KvpcswjxUmoK1jxs0ziVDlctfM4DX9Z006jcQm+iMucKgcZJH418DftT/B/xR4TF38QPh/4mvo7rTZDJJA0jFGA55BJr6jHcDV5UlOk7+R4+S8U4WvWVKU7O/5n6CaAjG+tJHRwHYEMRwQeleVfss/Eyf4ifDbQNT1Uj+1Y7YJMPRh1/WvzuVGSnyVFZp7H21am6dd04vdXv5H1XkttH8IIyPQ1Ck/yMRyc4+lds6soJKO7ODD297n2JJfmZQCDhTmqzynCHOCDzjvWcKkkmtmKnJyfM9R6uEdevJAyKi3jIA4AIxnvXv5HmfJVVzw+IcvdaEm3dotSurEru4GRketVm+dQrE8sQCO2RX7ZgsStE3q9T8PxOGq0Yy7Hwhp5C/tF6ugJysBBA75aodLwf2jNVVXYg2gDg+7cY+vevmPE9KNKDfU/VPC+ang5Qjokz7ot3xGo5OQOahtX2ohLE/IST+FfjF0tnofoUOVXk+pd27iSOCF61CJuGYHoDwO9EK6kt9jilS5JOcVp1I7y3juYfLkG5ZFI2nv9aVptoZRkttz+ddMMRJX5FoxuarRvJaldEFuAijCcAADpzQ0oALO2CBgkmpnL2jUWzRwSSgl0LG5jgcksxBHr6VmR6xp6HBvYvMDAEFhk1ai4+7IzeJ57RubSAlw28kk9v61XguEZi6uGDLgbTwcV9fwxiG6vkfIcT0IOKk3qjy34xeKZND0aPTrNiL/VZ44YwOo3Hr+VeNfFHVW1v4u+GdDEhMFgplZT0J6Aj6Cv1DNMb9UwLqX957HyHDWTRxuJlWn8MPxPfvh7o6abo1oWYmWRNzserE811OmbY7WCEjAEYH4e1fg2MzSdSo+be5+y4anSp2kna6VkbqnO5AScKMe9Z01yIkwhxngE0lUvaKQvYSXMum5oebGXzkYUkZ9q4+e8ZY/vlSW5PpURrOMeVGroKokmrFrxF4gOlWTzW9o08pyBGnU1kG4Bj3sSSDwPWvsssyZYhKpJnw2Z5zDCzdJ6nzFqP7Tf/CI+ILu18WeGLmztfOXbPIPkxjrmu1+L/grS/G3hfWdNu7ZXleyYpJgbkOOMV9K+D6VZq0rX8v8AgnnUuNvYctOpC6vvf/gHXeGPH+ieMYYtZ0K8EtpdKWQqc9K/Nn9kDxJqWi+IPFXgu5u3aHRtWlEStnKgnkfT0r8t4jwlTAVuSa0R+l4b2WIpwr03dM/U+710zIBLGQpyGI7H1rhp7xnGcnDdQK8f+03KWmxpTUW20rdCU3AYlkbI3E5rNUgZBz84IGPbvWE8TokdEoSUrrZGtHdtMoicnIbIz3rJSVUdTyB0HvX3vC+eTUvYN6bpfofnHF+Spz5o723NaaZYQSW2hQQx/uj1rhfHWqPpXhXWtTWXb9mspDuP04NfsGAi67Ubn5m6VWlHRXlsfM+l63L8RfizqEzSb9K8PMsSjsr55I/CuY/ZVJ1GLxBrLtuF7rErbvx7fjX5hx7n6dRYeLtGP4n7HwrkSw2FVV6zktfI+2Ix5aKiLkDHA9+woVlRgA+WznB6ivyeFVSab3PpsPGpfni/UlBLMRuIVTgD1qPfGSxV+B1FZVKzTba/4B10pJ632/EduKqWHzDaSc96ibbIVXqoIyD2rbDfvZezW/QMdVVGl7Wep5n4v+K3hzwduXUYLl3ABPkxlvyxmvTLrQ9I1BGS7sY5NwwS6g5r9HwHAylTTnPX0/4J+fY/jxQapxjp5P8A4B4F4S/aO+G3i6+fTNN1URagrgCGbhj6jmvlf9rv4TaT4Pk0j4heDbdbTVbfUFMhi4DHIyTiqzTw8qU6LrUHdb2senkvFlHEzVKd1NfP5n6NwTJcqrowKSLlSvcYry34Sa3cav4J0O8uyWuHskZie3Ar8jnjGvdatY+wb9m1dXXc9Z2D5GV8ZwcHv6VAHd1wSdygde1c6xCmlBG7qc07p2SJWb5lZiQMjA9T61ExACqScnJ+tdrrQkrLYVOnUi7xVy3byN53zfMpwB6Cq8IxINrnkDBPfNffcHZvJVPYw2Pg+L8upxpe0ktXc6BZxHFNGT96NgW98YFUt6xRHcxKkYbPcdCK/a8DFupGUT8kx+A5cPzxlqfnh4MVYv2ivFMsbYdn+YDtz1xWd4OkEf7S/iWPDEtGVB9iwyK+J8W5tKM29D9a4Fg/qSaex+isDvJCHPpkj6AZqezt2WH55Bh0JAHb/wCvX4XTcptNdT7rmUlZvUAr7ATghAQARz9aQSAAJuyQSSR9a2qVrSs+hlKi07SenYE3Z+YA8g5Pb60yOQcndkbsfTFbYbEqNVOXyJxelByeiNqe+tdHsJtQu5AkMMRJJ7/SvE/Gutt4p1iz8G6a5NlGVe8lXpgfwj3r90oY6lh8Mq1eWnRH488ir4uq3DRLdlfw5bXfjTxC3i2/VjaRyNHZRt0VeMsQfWvYtC0u306xgt4UAEKADHfivgs74yniZcsVaPRH6Fk2S0qFLlhH/gm9bjyYACV+UEAelNRw2/HGOpbvXyHO5z5pH0CwvJBNdTFuSTKeoUPwPWpWV5JdqcE4AB7V6dKMqr9lTV7mGIrRoR9rJ62sUIoyzqFJ2eZk1vx2ke0JnMhIDAdT7195kXCNqntq2p+ZZ7xVLldGm7eZlblB4BC8qCO1dKdDd49xmKknoR0xX6VhsHGKUYqx+fVuWUr1JNttHPnDYOScE4B7ZqSaIwOUL4wTkiu2NGSTRvUcZS529FsRtMoQJkkp1HpVJv3gOOOSAaccNKEkm9TCWKVOLmldkm444bHcGq7k7BjIOSST3oSTd29iZyco8kd2fkL8ALWXxBqOjQGMkRzocZ5r1P8AYx8NT3mtQ3Ui/uoFXhh0z0NfD8d8QOjSdKO7P2XhHIY1U8XVVrH7E+B7NLDRrSJBjy4Vz6V0GmR+XbQRgKAIgpAr8N9tKOsup9JiqblJq5sh3C4JBG5smolck45KkdadaooS0RFbDqMYpOyOM8d6j/ZuiXcu8DZGxO7vkc1h/EXR7/xBo1xp1mwWa4UgEnp9a+g4flGVZSqOyPleLZVZUOWEbp6H5L/ETUPtuuXkiyk4kfBHeve9e/Zp8W3Ms9wZFHUnA44PUV+85bn2GpRUVI+Bw2Q1XqodDyn4B+J10HxeqNljMoCr6561p+HPg14w0HxlaahKVFnbuASvVvevzrxLzWh7KNSm7y7H6zwBCU4VadT3V08z9T/Des2+oW8TqwDBVJX1rxHQ7q9soogs7iRVIJB61+K1MxqSbb2PrVh6Ulywdv8AM9N8WXCSXRCyAhW5IrjXuJLhszOSzHqe9YzzFTXItVY58JhvZxlUb1T2PLvjt4gubX4f3sVrCDNCu5Wbof8AP0pnxTs/7R8K6rA5ztgYgenFfa+H2aujilF9Wfn3G9BVaftZrRH5PN4pvtY0/Uzqs6GfzHG1D90Z6GvnLxpf3vh/xHq1rFM4imuGXb6c1/XmWYmKkpw2sfilaq3FSitbn2L4EljbTrX96Ad2Rk9a+Qfh5rWuT+IbGCK+laJnUGPJ24B9KrEPlhKaZ2YROrVjJrRpn6seC4DLJEOqowIPpxVL4fPIVtS8hBdVB9uK5Kspum5rRnZhJxgnGXvWfofU2lqgsvLGAcDJqnp8u23bB/hCkHvWNKbm1Jo8PFKE247I8z8ZvsZ9wO09CO9N8YS71dCvDKRz+tehCceXlS3OaOXKnV5pT7WPiX4xTslqvHy+aMZ7+1UfjNIPLt4iCWMpAAr18K+Sna5k6DWIvDdfqO+E6ma5t48naWGP9nJqx8HOb624wqSKAT6Z718xjZurK76H22X0PZwcuW6XU+orbxYnws8T6Re3UxjtdQlVGbkLkn+la/xi8E3HjjwSsOmKov7aAtGwA+XA6/Wvgs+4fhjsK3F2mj3eF+NPqOMeFxOtOXXsfdvh7xemr6dDqFpICk0O4EHp/wDrr82f2bvjvcadO/w48cSCDWrGUxIzkjzAuORnFfzjm1Gvha7p1otSP3OCpVqca9H3oO2q/U/SRLlpN7vIQJZOR61jw3cd3GksUgaHqCvQ8dR9a8KU2rSZ0RwEJwuu50Fo3lT+ckhOzuc81no3AZSeMge1bSxCcVNIU8M4UrR3PRdBv2vLmTcScAcelcvpOpxWSE5Id+CRWkMfOCi4u1jxsRhFZKS3PXvMEZDDJXgkHtiud02+e6tWcklVbAz196+mwfE9eLVpbdDxavD1FwalHuN1O/jt5BMAWXdk49RWDcXauzx+U2CSSSPevr8L4i8kkqkLpdb/APAPmq3BkqfvUZaPyL41cXgJK/fyCT2rh1vUtXKHcIS2QfT1r6vL+McNiXaOjPk8fwnWhJOT072Oie+eAqmTgsRkdgOtZLOl0RIsmQq7lPp/+uvsadWlNXifM1aNaEnJ6I8q+O10YvBGoSsSc4X8D3rG+Ps1vB4AvDKTiWUqSO2RgV3UIJRk30RwYGbljKUObdnH/BZ2bwxa28cpZCwKA9ge9QfBnTbmHwtZshYwpGDuNfyJxVWccfO+zZ/XHuxp031SR7u2l3SRRyK4YNwADzVe3vrmFfKD5VjyDXhUpqKc5Pc4qmIlBpWuugea0JaPbkMSR6UxyCAzjDFgT9K6cJVVnFDq0HUaclqUyC0oYHHOcDtTo5F89SvI3Akd8V97wdiE66jY+Q4thFYbllLV7muVMURL5GGJYjuMVK9wstuUkiB4yMd/av3/AA8IuEYy0PxbGxbi3T1Wh+c2vSyyftHQlePLiyCPr6VDeOp/aUmLMS6RRkewzzXxvjE1HBUlFn6P4K4apHC4mpUd7tpeR9+2ZItYcNz5S4Pvio7VkFtFkYHl5Pvmv51VZpJM/VKbgoKKRdXcmWP1Ge9EW3aGLk4IPPehK3wP1FLEpSu9lsTKfu5YldpyBSyMAFXPVScmu+FVOcb7GEoRqwlUm9kOh+WGV0fBw2QOx9KgDKlo5GcEMSP71f0NwfGMqMIx2P574rxtSEpQgrHwzZ51n9oe+eVcx2VuMKPXd0z9KzfhncvffHbxRJI5JjlCj8+K8jxYlyclHofp/g9gVTymeIa1kz9D7JfLt4hkYEYGPSo7dgIlB6huo71+JS5aSva+p9dXk4SUm9X0L7sHPUnAABPeoUPO0gYyAMVnRxEVNR7HQqjqK7WnYkblWUEg7QcjqDSu6rGQzEFSDgdTXoqfLNOLvqeTU9pyynBWSRHahwV2gkuxBJ96linUSKw5+YDHav6A4anfDxTWtj8SzarFYl8rPm/9qePzvhlqwOMqykk984H6Vc/ahkWT4a6m752AHIHYCvucLT5qcpdkz5/C4qDx1KMV7zktfmU/2bGx8PNHTcTiAZx/n8qf+zcoi8AaSg5V4xgnvX8mZyrYudN7Nn9V4/Eyp1Ipq7sfR0ZOQ3TcwGR7U0MFIAzhTkj19a8+MLR51LYmhG0LSW97FuOVv4lJ2kkk9qqeaeFXJUdT61vKTlG6PPUp3bluhHb96A2Sy5JIqpIwEyLyTgsAvfnpX2XBWIk6t4s+J4silGTb1PAv2nZ2i+F+rMhAIHG7/P51nftTTMPhXqCscbmLEdzjqDX9EZYnySu+lz8epYhPH0IxXVXLP7MT7fh1onGf3JJB7ZAxVn9mxUHw80fbnP2RSffgV/KGZV74ybir+8z+q8bOUakVJdEj6RJOzK8MqgEnt71GMtgknaXwT61zVKt5crV2zhcFFcz6FnJwjlsEkBh600EAbmByABkd8VPtFz8z3MoTcpezhqrXHzynOw5wWAGPSotxdl2cfxAmvouHsuhiKyTeiPn+J8yeEp80XdMgl0mxuijy2yFiTkkD9atHKRoTknP51+64DLKcIqFrn4pisxnUk6kno3ZG74T0Hw1pV39uFvFFeSY+dVGT6DispLhIk+8SUwQT3rSphlKabWi28zfA1pRV5Ssme6xTCUKynGSB9M1483ia/kZDbuVSIAAf3sdc13NyivcdvI81YRTqXfw33Oh+K90LXwJr9xK4EUVs24nsMfy9a8w+K3io3Hw28TLfuqiPTXO0D7x7V6OUVbyUJvVnl5rVjTqxny35WvzR5V+yr4rl1e0mRJC1qLhwCvTrXm/7GWqR23h0PDGUhkupCwHru5r+aeOarWYzitkz+sMLSjLBUp9bJo/QnxEsz2YCTgFiflb+L8f/AK1V9Tjh1nT1NvchWTLEk/nXhqSlTUr6Hk4OpFYrmmrXPKZVdWw+BIG6fXpVm4tJkdsSB06Ej9K8ypNxk3J3Pcp1koOMX7pSCxny9zHIkyBUcrBJYlIIIJBB7+9ezw9JyxCmnsz57iHEr2XIuxpgkfKOSdowPemIy7fmbHIwa/o3BTUqab3SPwWNV3m49wRwynHscHtk1EXGNvJxxx3r0Y3jO97o1pU4qg3bUQZzkHHzHj1qN3ByMEFRgf40QrO/NsVDDppOK26EpO8FBghcbiO2KjVwoPYsQePWsI1FBqwqtN1rxeiIznCL0YEkEf1qTduU8EcYIH612wkpO72ZFRwVqKfvdxv3dnP3gPwoZsjYQRgg0pYdfEnoYVqajOMZT/AeF6AnOWHFObCqq4IGenrSU0mopnS1zS9o37vT1ANtD4zjaRx2Paoi4TywM9eR/epuCabuc2IpKpTs9D88v2uSW8afDhZGIB1WEZHfk4zR+11IzeOvhwgXI/tWMH25OK5uLKTeSTa3R9R4VYmEM2fKtLOx9o+E5I10XThlirWqYJ6njvVbwv8AJoenJklhAo57cdK/larUbldrY/dKkpSm5bp/gd4oQhcHDZyT61XtJI3+8xBHOfr2rzo4qSfI1uU1KMFJbI2oYZmeMCdk80gKVJGT2/zipLFZHliJYhY2yCO30r0aMeSHM/uM44ipdytodNpekKJZLiWQssRBAJPB9q6HT/IjUsuDuYEZr9i4F5J01Jxsfi3GdWftHSvvrc8b+JlkmseHPEFjcqGFxZSjae/HGK2PG80TJqaRnObdkweMEjnNfrWHvGcWtUfAvCRlHnTtbVM+V/2N7iTT4df0nhY7LVGVcds45NcH+zH4iez8c+OLJmyq35IA7dua/FOP4KjjrxVro/oXKJPEZTSne76v7j9QhKpAIIwQMY7V55Br8i73LEoAAM/w18DUrqLS3Z2JcyipbO56GxKjOTtAyMdq5Oy1kT4UyHO4DJPTNU68KjaudMqUlFQe3Q6gu7ID06EfSsC91u2iQqrnzFQEEevvXo5ZXUZxgzzc0oRhTbb1OmVwo2DJ5Jx6ZrhrTxKmW8xwTtJUHue/5V+55TX91XV2fh2aYdTqNJ8t+h8h6ZL5P7R2qOzEkQEhT3APNcFD4m3ftFajEj7t9qVIbv8AN+nNeZ4qVkqVO/Q+88OMNUeBm0tLn6N2sg8tOR85yAOlclpmvW8dqkTkiRkAXPY1+FrGRk1JdT7+OHlFJLZHYeafM4zjJBx/DWXZXwvJGEecL1960jiE4JQ1Zu6KTs9UaMk6r67gMf4VSumVkPzfNk8ntXRCu20pKzOepGNNqcNtjN1a2/ta2e1S4aNSBllPP0zxWf8AaWjTduJy4BAr9O4ayGlOCnNan5zxDnlZTag9O55ZqHwR0vUpHuhrl9HeSPndHKw2/TmvXbe7C7DvP3sE9wK+s+oUZe7KN7HztPOMRGLm57o1vDuljQ9Ot7NrmSZoIwgkl6n3NX2uYntGG4k449TjrXTQy2ipJQVjhzLMa6pqUpXTPii5v1vv2gb9eSlnakID2Jbk/pXC6Bftc/tGeJF3hhChHPfJ4r53xMq+zpwitj73w/gquDdR/FfY++4L7yoo9xJyMZ9a5h5JNke0kBCOK/FlW5puF9D76rQVozaOo+1x3KsjYwvQj1zWLp6MGLtKSpIwDSnj1JqDN1OnBXi9WXHbcdsgIUDgn271Yu1WdCFBV40AyO9dEZNK6YqtGMpJSKqOojfkGTcSSO3FcvLctbvJE7Etk4Ir63AcXRw8FGpHbqfGYzhGpXrNwlovIg1WRfKnWRuRGefT61gXlz5i/MSfMXr656V7tPxHpRSahe3n/wAA8b/UGtOTip77abfifnr8FfD+pad8bvHV5JZPHayXjbWZcBxnnFfc9tpOnwXJuIbdUncEOwHLfWvieL+KlmVRSjGyR9/kmXvB4eNCb5mmb0RDRLuBIwRmm7dqj5yVxwB396+RtJt00evShGjNOfUjLEkkHoRkHtmkwDgqflBGQe9Qvdd477CpuXO3J312IDI3mruzuEpGc8H/APVTpXwUBXAJJB+or6PhubWKi73ex4nFVo4dpaNnOeONGm8S+GdW0S3cpJf2rIrdsmujR0YKckBcAn19K/oLK686EVNbn4fTjOpXU2tF08z4E8FfBj47fDOOaz8OeJrVdPmlZwHQlhuPfnFffUsmc/KSvJrzsw4fw+IqOpUWrPTp8VYunBqNm0fJa6b+0oTGja7ZNtONxU8k+nNfVZljIjDg5QNjP615a4JwqlzKJ6MOO8XKjaKV92fKv9l/tJEgNrenkk4BVTkke1fV0IGGPIPQE96cuEsJTk2+qIwnFuJk/eWq1scB4Di8ZxWQHjK6STUFYfNF0b3rv5Hj2gEAtkEZ/pXmQyjLsNPmb1O/Msbj8TBShGyZeDMNg5JGOnes43UhGEyqDoM9a2r8b4HDLlWticNwVjK1m3Zb7HhXxy8I3HxBh0nwzCoFq+oJJcOR91VNe1mFWKued7ZJPevncx8UOehKhRjZyVm7n1eRcGww2K+sSfM1sc14S0KPQNGtNNjGEt4QPpgYrqmAIwmVZcjI7+1fjNXEyqyba6n6BGKn7kduxBydvzE5wGI7/wD6qkjRkAGe4ABHSuZxlCScTonFXUWtdgG9htBw27g+1OCMG4BJ6cd62ippKDfzNIUORNrcfGxEkJYE/NnHvU7I4WOU527gMetfZ8H64lNI+E4pko4f3n3LW4yI4XGMtgHsTVJ7opE/yHBVh9OK/ofCRbUYo/CsRVcqjSejPzs8MEL+014gV2+UxZDDvzz+VV9KZ/8Ahp3WDHG4Q26jjoeeTXxfi5SUqdOT3R+v8ETj9V5FvofobazkxRAM2dxOPX61BZpJsTKE8DA9K/n+bcXY/RaNNSbk3e6NL7p6k7iQKhkhkIjdEfr3zxXFGUuZcvQzjQ5nzSe/6CfvWzsHIYFR6mp7eG4DxNtOA4BB7c124es171tncMVQpum1HZ7mT4b8H2uhNczg7p7y4aR3bqxJru0jPOWGQwwPWvQqZjUrRTkzl9jSpSi/skkWIwFGcKQQfX2pydfmU8kDHpXPHmklrojpoU1Juben6CxvtG4jqcYpmNkhYE/IOAa93LIKtWUXKyPJzDGSpwc6a0Q2BNs0jlgQmARUGZDNuJ+TkgV+4ZHktOlBKG/c/Fs1zqvVqupJ2XYvQTFJ8knapyTUah1IkwADjINfXyiox5TxHTVWrzvqdIuqRzRNC8hDDADgdK5tnZcuBknIHt9Kqm5KKkncVZxU+R6IpXAxK3zFuM5PapCyny8gGQEcevNdDbm7R6HJHno3m0ndFANhSAcn1HvWiCm08qCQM47etOtF1HFN2M3WUoc8nqjGZsFQcnJwR6VaupIITgqp4AI9axnRUVYzp4qTnGm1dP8AA+bP2PPDUVtpseoCPaSwAJHXpXu/wK0RdH8IaekahZHtV6dzgV/NnEuZvF4mUm9Fsf1LOnHCYeOHp9lc+k/tcNtGvmOMDABOOtecX1rrFwxjHMQIJya+eeId0ktUcHI2mpM72TxDp8cakyjILZ/2uK8ams7lX2O2MZGD2rllXqTjaas2bPDxdNWZ2uoeM1WXbboGU4zntj868/a1mAxgFm457+tE8RUbtewlhoOKU3dG1eeIbq+HDlRknGeuawpLKc4G3A5GRjn0rkljsRyqTeiOjD4Ok2+V2vpYjkAMm4kFmAJ/+tSiC4BwQeRgY7VzOc5NNvc3p0FFuVrxQijaASTtyM461KIJjhcEqMEk1yuN4qJ1QpRkvapWXQnhVvKTPBcHBH86kQFVC8lBk/lV04uWm1iJ1Y0lyxV2cp4ltjd6beQEA+bGVOa2r2MSJKzKTuUkZ716+VYvklGqt7nk53hlWwzjJ9z+fT496O+meN9RRs7WuWIB7c16t+1voUtj42urgKyrIxIA79ea/sLhHGSrYaMl6H824+UIylQtqjwj4TmVfEdo6Mu8SD5nwAfrXA6Rd3cFwgi3g8YK5yK+qxNKUk47Jk5XiFTj7y1sfsd4ACTC1+YCQ7SAMYJzXyd8H/GOt29xYwC9ZolZMI+T+dcmLoShFcjudWX2nFpNRb0P1IsYlNkrHlh0NZvhm9Go6PFLJ8rtGCSfpzXJRqN6Nnk5pgHTntd/ccD40zh2VwGLEAD3FR+NJlBcDhtzEE9xXqJOKbbujiVKEXCaXvJnwr8aJS3k7T84yQO7HNZ/xikzdQdmckD2Fe7QtCgm2clJzr4qUn1Oj+ELgTWzHIJxj3o+D5UTWyn7+Rz+PWvkMbZVOZaI/QKSnToeydm+5+jPhGUXljBHIowQAx7mpPBW4W9vlTgFe1eZV5Vs7HkSrtw5pRuzyP4ufs26b4znXX/Dpa08S27b0li4JbtnGPxr6+sWbd82djHn29a87MKVDFU1SrJS7XNMsxOY4GrGvgptRd7rofDHgn4yeKvhVeW/hT4pWUogEgjivVB2v2Gc+1fYfi/wfoni2xktNVsY54mjK4kUZA9jya/NMw8PMJWk50Z8r+9fmfouF8T8VTapYmjzX3s7W87WNLw14w8PeK9Ph1DRtXjmiuACFVgSvNfF+tfA/wAT+Ar6TWfhnrVxDDlmNkWOwg9QBk18fj/DvEU1enJSXkfb5bxthKsruTT7P/M+797I3Dk4Yk+/PFfBGgftO3nhXVYdA+I9hcW1w5CCdgdp+pwB+tfCZhkGIw0rzg0fRYDFUsRL3XzN9D9M9A1aRYo7fqdwAPr71wPwu8U6N4rhivdMvlmhkCkEds/nXnYSrKnJJo68VhFKKlLZf1Y9ZuJREzmVD8wJOO4NN125nhhWWIAoudyn0Feg6kopOe1zyowi7xb0OK1S5tpGYxjhiRkdjXN384kZmQ4J7Dvx2rDEYpwaUHdbm2Coyk3z/iLFqPkOI2kJDZGKxbmXy9jhhwxIPvX3/B3FcoTVOe1z4LibIY1o6ep5h+0Tqsdt4Ac3G4W5ukLH0wRXk/7UmqM/gU26ykh2UYHcnr/9ev6Dy6u54apNLSx+NYNQec0YWs29D6R/Z2ls7vwPYTytiKSMlA3cADAFea/Ai8mTwLpA8wgC0RjnoDgV/ImZYuP12o5a63P65zLDNxjGEtbJH03qmnPJI8kdsq+awKlemBWNF4huAsYfLbHxgdBXl/WfbRTjocv1RRleLu0ZtzvV/LbA65xVy/lhuszRLtcnLH1NdHNGmlrc5/aycHOW5gBilyqE/KoH459arStsuI1bGW5OeufavveB+aVbma0Pz7i/Eyg+aS2X4HQCT926jtxnsM1nS3CLCyscKcgHuK/fqV2lZH5NjK8XCUktH0Pz6aZbr9o66L87LcMx9DnArP0Zxc/tFa0zNk+WuAvpu618D4xyhTo04tn6f4JuTwFVNWd/wP0Hhm3xR8YXapGf0osoS8MRByoUD6V/PtTWMXvqfqFOScrxXzNKNhkKecgde1KIjuUEZ2kjPoa56FF+1ckzaE4wpyb1LU2CoKkkgEnND/6vJ4wDgDvivcw+Gm5pI+fxdSVOjeOmpTcqtlJKc5RGPHriqsz+XbSh2JVkYc96/onhGMnTg4/M/BuL68FJxnv2PhD4MtE3xo8WyMuXa6YNnvzVH4O3Cw/HTxjESfMSUMB6ZJzXyXjHd14NH7B4WU4yyNVI6O5+kse3y094wcmoIXDwhhzkLgf1r8a9vyyV9z7GtTjJJvVoso+VUYxg5x9KjBHQEZySD61PtVJt7IxUJKKk9GTSbzEcpliCMGmyzMsbbs4CnI9DxXpYFz9pGMnoYY6jTpU5J9VdjbYEBQQAS4z7n1FZsd0AuATkMa/pLIOb2CbP55zzDqNZ1WvdPCP2n3m/4Vpq0RwoYgEnqc9MVgftTX6D4d6hCGOZ5VGPXPHFfV4f3KM526M8jATVbNKEG0tdNDrv2c4hH8PdDPJcwAsD24FT/s/EJ4A0U4O77LGCT347f1r+RsyjF4yck+p/VmYQ9nNQn5Hu25kcKTnc3A9KciluDzhsZHevLpVYSvCRniLWi0tv1EJOMsecgkjvUJJycMMBu/arlJuKXZnQoqNNzX/BGlk85GUnO0E+1UJpgsyjcQCDkfyr9L4NpJ1OaL0Py3i+UlFSWj0/E+eP2rZsfC/UgpxuYnnuRWH+1feY+G9ztc5WccD6jP8AnFfvGW01LD1HN7Jn5Fl15ZpRco3947v9m4A/DjRN+CTZoWK9uKk/Z2UD4eaKSwGbQdfpX8m5hUi8XJxdlc/rXMWpSlFvVWPoiNlCkZ4GTzUIyVG0gkHk5rL43zxeqPMlRU5RlHUsq3XHPOQD7VAWxt4Oemawq4mTkuU6YYWkrtu7Y/zY2mVcncF6etZN1cLG6Ek55AI781+icERUq7g2fmXHdLloOb2NuRn2Ej2PPesIaiGVVLEN1z2Fft9OjyS0PyWdSE6cXeyW/wDmWZGfyyC53MBgnt9apG+RUGMD5jkGumDTfM1qjllSUVam7pmlBKhK4YkEg5HasSS9KMpGApBbjtRDDxlFtbmmIc4wTg97fgc18abtbPwBr87gGM2TLg9Dn1rz74+6u4+GeukOTm2O4H3r0Mnwl25PSyPJx9STnCMndXXzOH/ZKmi/4Q9ZSMK11IxA7Emsr9j6QP4AtGIYjzGY/wCFfyRxxVTzCq5Pqf2FRw0nhqSekeVfkfb8WrTRK0ZdjE3AArFY7Wyo+QgbQe1fNUKzSujCphI+zUk9jSMhOAkpBc9BnAz0NVY8lQxb5uwrqgnBNy3OedWNrQVub9Bk7ZKHJOXOTjknvVK/m8uNGDFSGwfXmvoOGJKeLjFadWeBxQpRw6uawmUqnOFzkZ7VyUWoqwARwAhI5Nf0dglL2akl6H4diMY41JJxumdUbn+EE8YIA71yjagAUIfkMRn1r1VFxSnFamKupq+2h0nm/vA5k53D8PrXJnUvnbknJIINX9XnKN2tjnqY6UK3KtUup1QuMg4b5nYnjtXJm9ICqGKlQDVvCyUbM5qtaE71JrV7HYC9jHXJAUDnt9K4tNQBAG4j5jyetYVaThaT1uZ4Zqbc4q7R14vD8wVjuOMH0rkUvWJC7iMkgc8mt2kop28zslGU4qTjaSOve6dVjIY4wR+tckt6QBuclQwxURpuMbp6HVDEe0hr8zrhdjaoOT8xBJ71xw1IgBGGFd+T6CtvYyUVGe5y4mk5U7xd0z4q/asmSXx/8OAshydUiBAGQMk4FVf2gZItQ+Jnw7hcgRw3qOV79ePzrxeMJyWTzVvQ+t8IYJZjUpzetn/wD7j8NqP7H08AkH7MoBHfA/rWjo0MUenWnlnMSxKCPTHTFfyT7GVNNLVn79Fw5OT1NSJSMIi5QkEk9q17Jrdo8uSNrZJP8qmlG7dRrXYftoqEYp3WxYsJ1iUeYSCvIHr71nXkgDHY3GCMetdkZ8lRJu6MqlOc4tw3SOns9YluFnHCvHJlMn73rmvKZNRlgnzG5LBs81+7cDtzw6jJH4hxTXlOtzvS97nQeIrt5ra8aQ7ZBbyHI7ECuR1e/MtnfSyNgLbscjscda/UMFTbnHlW/wCB8Bi6XLBxTul+J8b/ALONys3xT8cAqNv9o7G9CQelRfszpb3Hj7x3LDgXbarlwD1Hb8etfini5CU8WovSy1P6F4Iqe0yilCLtfb8D9I7ZbHais/LKM56VzRPyjYxJxgj0r8utCEVFo+gwVGVRuTesTs0t7Ao0YmABYEgHriuLEzqBlsFVJyT61hPGOaaitDdU5QV09UdqbC1kjd2lB4xnPWuKubuQRMPMYbQeRXZgK0p1IqJ5uZZdN03KctNzS1BoLf5YXJ3YxntXAz6oz+Z5jHYq4BP0r+mMmgpUoX0P54ztOnUclq0fEei3cUn7UWsRuxCPEW5P3ctzXJ6BKJv2o9UkJxG1qCcdzu5x/WvmPF+m/YU0mfrnhvi08vqXXVPQ/Uy3tbeVArOQdgIYHr+NczbyzeSpEhUBQeD09K/nqhzQk21qz7ylXjOpZvQ9F08/2coZHG12IOTXENdTnbiZiu04GehqFiJX5mhOhCfuN/M9ClvPNX5n6DABNebS3U/lMxc5RWyM9fevap13KVurMakIOHI3c7HzYjtUvhtx4B614p/wkNzHN80rZTkAdv8AJr+iOGUvYxm9z8N4gpyVTkiuup7ZG0OVHmEEPkY7Y6V5JFrs5QsJmDccCvpnTT0b1Pn6qUUrq57O+oLGn3ztbAJHUe9eKy63d4XbOwyeo/hrSlSTkmncyx9ZOEqSj0Pm3wNcrL+0X4oB4EilSD1U7uc14t8N9fvZP2l/FMMlwxBiyvvz1/GvzfxfnKKhJPU/YfDqpUqZcoRiuXQ/WKGUNGu7AUc/U1xlteXJii3SHlMtmvwxVOSKUkfYSw6lK17Xt8jvUlj2EAAFfTtXCi4nIUCQjkkkd6VOS5m3uW8K05OL/pHeSTNJtCNtfb8xBPpXBS31wUfbKQ2Dgn6cVrTxF0uVbs0dR0UpVFfS5vz2UUpYSSgygnAJr418W+DPHOralcXOnfEa9s7d3ZhFGchc/XNfb4XgyvXgpx2Pmv8AXDDxqcjfK3ufXL6XbBVDvkKhC89a+Dz8O/io4Zn+LGotkgAZHy8VT4BxMWm3ucz42wk/glrc+7/7KtThN+JDgAZ/+vXwQ3gD4qRfKPixqIRR8zMQQQfw7VL8PMVKbaR1Q42wVKN5yPvRdLtX5Eh2qSQAf0NfAcngn4uRq3l/Fm/CkYwp6+taPgLGSa5Va5lDi7Cwqc85XW5+gH9l2ijJcYY569fpX5xt4a+LUMqgfFm+2jO5QBx9KUeBMUqei0OirxZhqjUOfX9D9D7vTrNUjCyAgyEAE9a+T/BN34n0ywSDW9dlvLhWBMkhOTXr5FwJiKVVVpbrofP53xJhVaClc+oFgswQWbDFhnNeQvrsyJ50lwQkYJ3E9MetfruGwLjStJ67n5JVr1HiW6d+V30PWJfsESqXlVQCSdxHHpXyPaeLr/x34kn0ywun/sjTpAsrg/6wjsK8riDN8PgaT9uz6LIcjxGMSa91XPrWyGnXT+Ym0qnAJ9fWuIsAbWCOKNiCiABR0JFfjmc+Kc6i9nSjZX3ufpWC8PaMJKvzXkrHprW9mdqOy4OAP/r1wTTyHhJD1BwM8V8bX4kr1nectD6vAZRSptQS111O6aHT8qARgFSOn41wbzvErM8hbgnB7V4jxspytLY7Jcicot3S3+fU7vyrI8blwQTg9vevENb1zUFXytPkxISQXJ+76nvXsYLKMTipJ04aHl1c2wtKF5zta57U1xpFvs+0XUSrwTuIAHvX5gftM33inRfC8WrWXiK5S6N6i4QkIAT35r7jD+HOIlRnVlokrnhYXirDutGlTd5Nn6ixS6bMhlSaN1UlgVI4HrXzd8GL+e/8C6FcXk7vJJYIXZifnyOc1+YYm1Oo1JH2VecnUUabuj6cX+zzyHUjoenpXA+aQqsr4yemevtWUKyumlrex6FGrKb9m9dD0DNierLlOcjHNcIJ2+XDHB45NW6ynKyWxy1ZVHZxfkdVqF9YWsUeXUJ1JFea+Jpf9ByrHjBIBr7Hg+rF4pNK3Q+Q4r9o6XK9dDqV17SpMqZ1DFiMfX0rwhNR4Y5YqM5HrX9K4KmmoyW5+IVakZRaSsl18zwrS9X0hf2ktThR1Mr2xYgd+e1eOaJcSSftPXZLEK9gTtHYZ5r4rxfqOGGpu2tj9M8OIReGnp1P1etNTsDbQMhGeOP61xFoV+zQgbiGUDAr+Z/rjTvOJ+oUcv5ZtQe56G2rWa8CTJJJJx0rhRIy7VIJXGCT3qIYhpSjIn2F6t0dt/bFmMbVY4JJB71xfm9eCd7dPQVnHGSSutzonBQSjbQ7b+3LXP3WPqT3+lcXJcW6eWpAVpD8oY/eNb0cRPZ7BKlCTUovRdDtf7et2wWBAwTz3rlU5KgxkjAJPrXTHGK3LFESkmuZrc6N9aiZkKxbgVJx9a54GQY/0Y4LHByKWHzCUJ3T0M8SoSgpN77jrvxV5EpjMRwB0XtXNa1AzL5xjJZTgAdsdzX7JwhxdzuNCtv3PynibIoxUsRSenY2h4vyNuMAN0PUZrzaGR/O2tyo44r9rwyp1IqSep+Y08ZUpylC290juJfGsoyF2k7gMHt6Vwd8wRFZc5ZsDj0rsoxgpto8qGLlK0amh0h8b3iNhNpXO45H8q80muR55iBIcE4Hp61t7C6sz0aNSM4pxdnf+rnpsPi+7kJJYDnHNcVbzq0aYX+IEiolOLkoJbHNRdSFOU5PS71O4n1y5uNpEmFPX1Nco0qqpKsdmNoA7GulNtJpBWxlpqEex7j4Hv7iw0ewiZP3QiUEHqOB0q3pyKlpCir8oX5Qf4a/iihJTTk+p/VuMqL2smtkdgPEDkKGiO0scEHsa5qSTA+Y/dYYx3qsPGVR2jokcVSpBNTl1Lt7eW8yvNtZQMkkdq5fWb6Kx0m4nmYBURiSO31p4WM8RNU1oZ5hj4UKDqQWp89+NP2mvCfgrUJ9O1C3uGkikIBVT1r4g+KvjXw/ceJbp3PmHziORnoa/b8n8KI1qSqc+62t/wAE/KF4rqg3GrSuk+9v0PqsftsfDuJR9ot7ldqgklTk56A1+YHi3U9MvQDYgnn5iR/Kvbn4GwlHndXTtbb8SZ+LNObSlTs/Xp9x+pemftn/AAz1G6gs0uJkmlcBQR0Jr8arCRodTsrlSQVu1JHryMV81nPhSsPTdSFS7Xl/wT7bhbjmnj8RDDyhyqTte/8AwD+kTw3r9nrthBqNrNmC4VWXPfNeUfAN49R8DaNM8pLfZEJHqSK/BZUpKd+qZ+m4ulCjOVK2iPcJHyQRzjNQsAnyhy2TxnrUYqs1NRe543sote4tepI5DRKucdcg05bASIjCYgZwR65rWjXcbqKHiLyg4zVz8uv2yNBn+1JfYUoQAScV7H+2B4Xjm8Ntf+aT5CEknqOK/orwszrngqctD+f+LMG6Fb2kfhe6PyStrO684skaFgwyvpXY6Ja+YFkSVd6Nkg96/e4U21dM+Tp4mN3KcND2H4brdJLCRbhVTBDHGT710ngSzlM0ZVwcEZxWNeTUeVWb7m+X4iEouajaP46n1bo3iHWLOw/0edhxgLzgg+tRafbSNZIz4YbTgjtXDTnGSUqkTLF1VGbqQd7/AKHk3j/x94mTeBISvKnOMj0xXLfEkTRw3RbAHIJHtXq0HF2SR5UqirVGqi1S0R8weJPE+raxfKdQkyY5OD657Vy1+8n2tVb5lZgQzeh7/WqxOKi3Z6W/E2wuDm4OLjd9z3Xw74quPDWmpqNsu6SEggHtjHWucsNPv7/w1dLaAMwiJwR0wK8DGp1ItS3sfT4PFLD1KNKUdL6+Z+uHwH8Wf8JZ4R06+urcCd4xuKjpXj/7HXiG+vvCsOnTRkTWUjRsp7DsBX8mcS57iqWMnTvbof0dmGT4SFKnKEF7yufcANtGAFiwPMCkD36U1Gmb78JCgjPtXjT4gxLSjKWpw0sjocjSWjIJGwcgnaMgA1ZNqoCOZj82CQf4fpWUs9xDShztsuOX0Oa3Kk0cJc3D+fsbJUYAHoK0dW0piUlt5SMsSwI461+n8HcQqpL2VXfvc/OeJMnUKllHVPoeUeNvBPhXxnplxaaxpccxZGCuyjcvHGDXey2kjx8KdpzyBX6/h5UKi5ZNNWPzKSrxqynC6aZ8IfBvX9V+E3xXn8HRXszaNcDdDExyIgT0HtX074Y+Eraj4/m8VavagKrKsJI5wO5r8V8TMvwDinhl+86n9C+HOY4qpg5LH7P4T6mXxA97BEJpmaOQDKnoM9aqXNlBaBYYkyVAAPY1+NUJVY2U3oe/UoQlK6XXQz57ZJ/mglxzwD2prqqbdrH5uOO9TO03rsPDOUUrrqYOpRS20JYnKoRkjvmk16fyrZFZyTI2Oele1w1g5VcWorY8zifERhh3bdHxb+0/qx/4RWCHjP2pT9CSOtcj+1FIX0K3j5KSXijJ784Nf1lg8LGnl05OWtj+d+G6tTE57TUo6J3Pp/4JKf8AhCtITJBNqgIPbim/BpvL8HaPwRiyjIz34HWv4pzGrBV5zXxXZ/V2PqSc1rpZ6ntJyuDG5BHJA7+9Z4lLSANnBPUd64qc5RXOlucVGKhJST3NaKRwv7yXjeSSO2KZCwKbASN0n59OK6+dVOWb6nNUhUjFyhq7ozr+5MM8bLw55B9KwdflmhuIyvICEgjvnpX634dYePtXJI/MuPJTT95k1zqB8mRmJJVGKk/pXKXN032WQN1ETcmv6MpUowtI/GK1dSpTc3c+MvBkgu/2gdbIIBaJDj0+Y1W+Gsyz/HvxA/3nxgk+meK/HfG6XNCEUj+gfByjNZRP2ism/wDhj9J7TCW6kMQSAcDofamWhLwIeyIOD3r+e42jpPex9/RlBzbT8rGrDPuwvI5GfaqkaN94yHntXXTiuZNGEsPFczW3UuTzL5bMeNqk1UuvltZvmIbYRXtZfd1eVPc8nMZwVFt6I4q81bykdmbI5JH0rgNQutk80fmMTzx9a/pvhOkqdCKex/P/ABBQhVqyS36Hyb8O9TW0/aJ12Akg3ZBUnq3Pf6d64jWr6Twv+0Fot/JlYtRcx7j/ABEn+lfMeLmURq0oYiHQ/TfBfNva4KphKis77H63WhL20ZVsDYDk1l6Dei40y0lUg+ZGvJ+nWv53pzTTm9T9Lpwk52S0R0CkgpwPkJUg/oRTFJBDAn5hj863oSjFpxRy1H7N8zle+w28f924DHJ/SiRVI5PJQgk1vRnGNRTTM8XNSi421e5x7XWwlVPQnJPeqF5BKlyyYOxnJBFf0hwbi41aEZN9NT8C4p541uTlur6HzP8AtSXslz4Rjt4nObi5RAfTnin/ABd0bUfGPiDQPD1lGzLBdJLOyg4Cg19fnmb0sBl9SUtXI87hDI62KzuFeOkaaV/ke+/Be0e08GaTG6EKtomAfp1ruPC+mnStGsbIZDRRKMEdMCv46xNBVpym3q2f01jcReai1vY6mEYyQx2jBA9KakgKblPIYA571n7RwSjuxVFd3aH7SNxHcnINMJChi2QGzuyevFds2uS7IqVYyjpschrV2YLhl3EgxhSB3xWTqjiW5lAYtvbAzX7PwBlVoKcmfjHGeLhVk6dLY+UP2qtXJ8APEHJbz0wO3UcfjV79pzTrGDwFJLLh5TOm1T3Jr9jlCnDDVFHezPjeGJVKmaUIfZT6nt37PJ2fDzQgc7fsgAB6jGOK0vgVaqvgLQ0iGF+yJgDtkDmv4+zBp4qUGtLn9P5xVg63u+h7isi7euOcVGIpA4XgpkYIrhVSzbk9EcSp8uqHj5tvzZ3MOfSlWGXIO0YGACe9ZzrOcbW1Gm1BtdDm9XlMLoBkYHODVPxEsiyxkkhSwxn071+meH9NyqNrWx+d8XzmqXK30Mh79nVQHOA5IPr7ViF2GA6gZYAY96/oOnH2bUW9z8QcfbUZVKj26dzZkvXQrlhwRWEXAwWkIKggg/zqoycVzPcMO7pNadTae8aQHc+M4Az+tc2t1nasjksPWqjGcW1cdbFKVo1N+nzPNvjxdBfhzrql8xm2YsCeoxyKxvjs7P8AD3WdhyVt2bH0FdeXU3GUm30NIpvEUoT6yRD+yG+34d2LqWBYnP0zxVX9jy5874e2cQ5Kk5A6Dpmv4x4xknmNRvoz+v5OKo04y2srfcfbsYEqou8KTjINZ6jO3aSSXxxXzkZSgkovU86LlN3krImy0GQHL/NgY7U6dAqqGwDnIK9sV6NOTceZrUqcZTp+7pZnP+IJ8WhdM/KSRjtUmqQtc27LGuO+PWve4aqxp4qE56anj8S4ecsPyN9PuOChuidpOQMgsTVNIpFkaNgwwSMkda/qLBVITop3P57lCpTqtxjd6o3DNwdrk8gAHvms0MVcbzjGR+VddFqEb9gxDU0ozly3Lcl0S6kMQMfMPXms3zASw46AGvVowik0nozxajqQlFwV2jQFy4J5O0sSBWR5/VckAYxn3rOUbSSWx1V04w5mrp627Gokw2MRklQckd/asp7lAqhHPBBx2OK0cIzaT2PBiqso8kXr/mbkVyV4YncSOnfFYYuGYZLYzk5/rXNVhFat6H0tGrdcj3VkbBu0IwWJJYgA9sVlecoOGOSCGOew7V0x5V70VoYYinKNPkejLc1wwCBWJ+Yg4PX3rIa5yxGT8pByO9So80ro5YSlCClB3SPi74/3VwvxN8AxxNjdfRg4+vWqnx9ljf4p/DyPcwMmqxAAdCff8K8HxBp8uTyUT7zwmbebznLV2enqfpH4ULtodgpcnMK5J74FTeHrcxaNp58zLLboeO/FfyBUmqd5Lofv1eLlPnno+h0sDMAQCSN2CKh88gLnpuA/GuWlNVE5SWhX1Rayv/SHyvgNg8nt6VEGTC7c7gevrmtZVIxin3ZUaco1VzvocLqsvl3Y5Iw4wPWpvESPkSInRiM+hBr9n8O8yhKSpzdj8c4yy+VOTqJHPatd+Xpl0dwUrbPz2Xjg1wfjTVTZeHNXnkc7vsjgD+8cdq/oHLaalJSg9Ln5Hifh5Wve8/U+dv2U97+O/Htwhwr6w65PfGPeu7/ZU8KTWFlquu3cBWbV9QlnXPUg1/Mnirm1OtmLjTfwn9TcL0pUMrpUW03u/wAD7dR93l5XPHIPc1BDlthBwAxNfnLk03OTPQhGSSinZFqRWYhNwJYAYPb0pGYKVzkvjgnvisKsEp3T1ZU7pxjFWf5la8YrA5bjKkA+lUdTmY2jAthcE/nXq5PGXtYxi99zzs2m40JOWt9Dh5ronemcgEghunNYl3IMttc5bcBnsa/q3IKClQirn80Z63CpOMtWfEXhN9/7T2pnnLWykD23VV8GEyftP6sUI/48gpPrg84r4XxoUpUYOPQ/X/CelVjls4yd0fqDbuREpzkMoY+g6U2KR/JjGQAyqDmv50+sKMVJrY/SY2gkktyyJvuhVO3cQSfaokJCopY7Q4IB9TUS91uaeo5zikkyS5kPkyEAEBCcHvmmXD5jlGflxgY7eorswlXmqQRhmNpQ5l2PG7q5ZLyYBSMPnn+L6VialcsL6QYBwxxzyOa/qvhOnagpI/n/AIkxtqvLFXbOwt753iBUAEZGK5W3u/KXJcnDcAV9UqL5rx2Pm3jJQUfaPRaOx15uHZSzICFUkj19q5mXVwQ43jPXA7VuqLg7I5ZV1dy1sz4w8DyPZ/tP6+r4BuLY/KOv3jjFc9Jf/wBlftS2FwCAt/Cqhj33dvzFfm3jDhorDwrRP3HwpxF8vqU7Ws/vP1htpGaFDIQPlGR68VlWl2r2kLqSPlUZ/rX84YetdqNvmfpVCKnCXM9H0N7zi20MwG3BIHes1bgFRkn7w49aiVZqo4y37kS5HTUV0Ls7sVYjgAYHvVGW4Z4m545HXqKzwteSqRU9rmWJoqVFq++iOGvJcS/eJ3OelZOrXDRXDqf4eoHb0r+puDMRB4ZKOqP544owNT60uXQnubmOC2eSWTbFGpJbHI9a43xBqATSbkNwjW5Yk9q+0hQ9pUs1o/wPAco042m0nsa3h/xJoPimae10vU45pbSQq6oRkfWvkf8AZQs72bxL441EyMbefWXAB6DB6ivy3j7jCWWYhYeir26n6tw1wLCvhI4uTvfpb/gn3I3hyR0Y+YQxBIPt2FdfG4aJIyxHJGMda+Ep+KeL6L8T6b/iH2FjD3tnY84bwbLK25mPzKMY7GvSjheADv27s1T8S8ZLRrd9zKlwTg1Ust/Q8h1Dw8+lRiYuTuYZB7emK6HxteLbaeVYnJYgE9/pX0OQ8a4rE1o05xujwOKuF6NKn7Sm9T54+LnixfDXgrUr2ObZKyFEJ6kn0r52/aY1x4/D2m2Xm4S51GMsexOR/jX7X7ZYfCyxLV9D8wyXBPH42FGo+Xkd/U+nv2e9EMPg+x1CQE3N7iWV26sW55ruvhAif8IToe0AKbGPAB64Hev4z4izWWKxUlV2Z/TVHBKCjC+x6mFj+QEkEEk4/SnlQ5jYH5gGBHpXyy5pXjLpsd9GHuyk1ZKwNjK7WJHA46tTkX7u/G4MMAds1tKnOEdXrc19rKUEl0Of1u7MUCxqxzwcetZ3ipGjRXBIUkcjsfSv03gLJaOIxH77dH5Vx1ja1Kk1C+qOdFxv6rnk5BrHguVEn38jIJB96/pjCYCnRppwR+NTqSnUg5Jt9fI+bv2sTu8Dqo4UX0Yx2BJGfyrT+PkTa8fDPh6JS01/q0RAxwMHNb5njYU8vm57WPc4NwUo5qpJXV18j6M+B0Uy+AtBSRSMWKEEduK9M8HaNZ6P4W0+0tpSXitkDqRjafQetfxTmdNVKspR0V9D+kKcIOpLlWpsKhOAACBnr2qRDtYKWJJOMnv7V5NODhJtPR9TrhOCautWSoMlAVAViAc+9CRlNvZA3B+lbKlFX5XqZuilUklu+pzPillh01iX55JGOvtTvGcW7R5GBxg5JPcCvteC6kXiYxl0e58/xPCbouMOiPGY7tIiGcjZvbK98VzUTgTPvkAGTyf0zX9UZfD3U07XP5uxzfPK2q6nzPolxt/abYJkCSxPBA5Of61n6TMR+04qB8SfZF2kHIyCec/WvgPGKm5YaLsfrXhu4rCOSex+nVoxaCLK/LsXOO3oaWx+S1iy2CUAB/nX8vVKkoVXzLfY/UY1VOkpR3RYDEKcg4I7UEknPGOAB6VNSgptNM6edQaUt7CK4Uhs/KuQBjr6U1ydgx0BAJHf1oVNOpy20sclbEKnG6Wnc+Pf2iPG3ifwlr/hnWLeUroUV6okCA8e5rvvjX4cg8U+GdTtSAbmFS8XHcCv6J4Z4ToYrLVF6SsfmVLi6WHxEozj7reh7v8AD/xPbeKNC07UopQy3NsjEjoCRXxn+yZ47mCX3grVbk/atJu2WME8sueCBX4/xDkEsDU5JH6RgMcp0lN636n6BAhWIfJIJ5NU1l3HIz8zLgmvOpQUWtdC3a15dDM1JUkLBshSuSR2ovic5OAjdAe1TGq6MtX6HNXwqnFJbSPOJpv7NvVnbkAtgH0qXxHbeZbtMmSI88DqSK/ZeCeMk5KhWPzHibhWdnUgUbzxVbqjglSeMZAyQeuPpXz5resvbXBUkhlbABPT1r95o4qFSPPHU/MMNl8k1OWj1udtqGqLLdCaBgSxA4ryZtdR54gshLZDED+tdKqXXIzkxMrtyvqz3q0uDIVBI2hRwe9cHYawRHG+8bTtBHr61ywpcyvfU2eKV1Tmuh6vHMrLjzAMKAB2riYNbjIZg+dhOM961quSXNsznw9CnWk3UvppY+wIJGjVCEJLYJI7gV8X2v7aXw02q39puYzwQB/Ov4kjl9aMHZPc/rHFYWLgpJH2fdTDkBSCeOPavjv/AIbA+FMwLvqxAcYy4xj1xXcqVXSMYs4qGFTinze7fY9t+K+s/wBm+D79mIVjEQoHU18b/GT9pLwd4l8NyW/h/UVkcgYIPTj0r7XgnKJyxUZtHxfGuKdSCow26/I+D/F+oSXWt3crKxIuGJxnnJrm77xZPdSzSFYyzsQCV7Zr+p8ByQpKMmfimJyOupN0Vpe5nXV4m5opGAYZGD29MVhz3Iu5xcSDB5JVv5V2KvGMfcV+5v8A2XVr2lN8tv0LT3Kr9lYg/LKuSe2D1qzJ4jitYAHso2wgByK8jN+SpRkk7XPo+GqNSjmFOpbXT5WP2/8A2YNQSX4f6OFcHMCgkdq+Zv2af2hvAml+EbbTda1SC2uoVAIY8rwPUiv4y4gy2ccTOEVZXP6Yz3nnKFdSvddD9JZJgXJBwGPB9K8Fg/aG+FUq5Hiy3LsQMlhgH86+dxWGqppJa7HPQqqKSv8AM+hYpy0YHmYYgDHpzXjcX7QfwmUBG8S2Zl2nneMjGOvNVhqNWSu46nLUk5SdKa07nMftJaV/aPgm8AJIEZPPfA4rE+JXxT+HniPw3f2tr4ktpGktm2oGHP61+icFY6pSxUYqJ+fcY5YlT9pN3S0PyIS2EV7LCkpEqTEHPY5qrqOq6ZaeIr9NjNA1yxVkPUZr+tsFjYqkpNH4vhMDUlUc1Jf8MfR/w+jkWa3YzcZBbHes/wCG2p6JLJEAkoZiAAGODV4hqUVLoa4V1ITajG+ur9T68sLmX7COflVRjHf2qPT5NGNk6CWZDtUgNyD9elc6pxnJOb0PJxdd03JOOiPnv4pXAMU/Ub9wwO/1q78QrLRb4PGupEM7HAJ7172HjTUdHqc9HHuTVo6WfzPjrUQWvIQACAwI9uea2tf01bC/igSUsrsMn0+lcVWklJRlud2WY51INKPKnovKx758LLOO6s5IOSzxsoX0zXQfBS0805ExQlgQB3A/xrxcVFxmke/iZS9klfXudl8EfGV38N/iJJoeqOUsdSuTsz0HsK9C+InweuPFmnRanod8YtbtCskciryCPyzX5hxjwJHNE6uGdqnbufc8G+IEMJh3gMyXux2fVXP0UsdVhv7CKeN9yThW47+9fn58IvjR4g8ImHwf8RZhE9tIIo7iTID+4r+fM2yXFYZqlUi0117n6th506r56M1KNtPmfoMTCSBvyS2cVzOka9pes2kd5pt5HKjgNlWFeA8PKLcpbjq8yiuffodFMoZWWPADHoapRX4diFxx1z3+lZ0q04y54PYWKpqUYuavcma3hQqSo+bHFVZp5C4ZFDdcH0r1I5rWgtJOzMaWDpJ+5FXZv6e0aPlv4SAMdqp2M4jw0mFJQ5A9e1cKrudW7baNqseRNvbsO1aQj1A5JPc1h6rq1jGxae4C4PAJFdlKnKcXNLVGWHxUIVYychJLhFUSEdAc+wrznxD4nt5A8FrKMKoGR3r1sp4VxOLVoxsn5Hk5lntGE23LXyK+u659puFiQkosmAQfzriIHaWTeZSGZ8k+oNfuHDPBv1JKU/iZ+R55xM8TUlGGluvc+Y/2pbjZY6dGuDvuIyoHc5HSn/tKaVdajb6GLQhtl0oKjv6Cvvs093LKjSs0eTwBB/6w0nJb217H1X8Ix/xR2kHoxtEAI7ECtr4X6HfR+E9LUptZYEBHHJwMiv4dxFN+1k2r6s/qfNKyp1ZNao7qNScHJJYBgP8ACtWPS7vaCIwCD0B59qzpYWUklJWdzx5VbSS3uMhwq8thzkKO5pXikt3UTDBblc9q76NGVN6o0eJTm5yVrfocP4klK3KDnO05A9hTfEUc8kqvGhYgHG3uK/YfDeTjJxS6n494g4mM37WK17HIXcyraXJIJLRsCPXjmqGpW9+LaQGJtzQuwA7ccYr+hqEU2pPR3PxzMK9qXJGOvVnyF8G18343+KSWJUTLgjqPXH9a3vgP4a1qT4t+I764smWN5OHOOD2H+NfivjZUXtIRSu0f0l4S6ZK0pbs/RC3A8uPqdw61pw6ZfeWuLZztGCPT1r8BnGUUk1r3PtqajJ897x2I42Tb6sSMgVoR6RexlRJbMQ/ANXGLkkpdCJVnD95HYz79gbaUnGRGTj0qfVdOulsbgiEhVVgGHYCvay+hKNSL8zzs2xSqUGkfNOqtuvnVWP3yM/U02/tbwXDMts5QykEAfma/qLhmdqCUVqfgufe9adR2V9D4/wD2k/D88H9leKrIN9o0ydGZxnjB4r6U8XeEz4l0K80i5tWYXcTqCeo44x9PrX0WKwdLGYV4Wton1PPy7Nq2V42GPw7vHqu56X8A/HVh4z8FaRdQz75Psyq4zypAHWvgP4V+JfFfwF8bt4c8Q2kw8LXlyRFMQdqZPH5V/L/EvBOJwFRwWsHs7H9JZdxDhs0ofWMNJXe8ex+vCvgIEfpnn19K5zwzrdp4lsoL/T5fNidByn86+Mlh5xleOxSwqVO8nqdRncAScnOfrTltLkSRgxtslYHJHSueu29VsdFCDi1F/cQ+RHIQZEDZJwB2rrrbQnZBIZCTuyB6V6OBzCvBJ020cOZYSkqq5lvucZFoemQXX2uO2UTlQNwHOK66TR5QSNwCjAPHQV14rNK+Ih7OvJt9Aw2Co0pS9krIxyqnOM4VTWtbaRdXQyoAAwuR3x+VeZRlOaUUuux6MYu8Wt1+JkgqNqsuCQSQK35dCuLeLz5pVCbiQSR2ropYSTahFanNicVCN03v+ByGrXKWtrIxY8AYHrXn3i67uBMI1nXyt5C4P3q/ReGuCquIl7WppE+A4h4zhhqSpQV2zKkvleYbecyEk/Sua+zXO5JcYRiScnp71+8YPLaeHpJUz8clj61SrKc1Y8L/AGqLoHwRbjcWxqEYwT1yRXHftRaiv/CJW0RbKjU4sj8RmuqrBRwtWT7HscN4mVXN8Omup9yfBFRH8P8AQ2BJB09CpPXBApfgx8ngHQnPIexTH5V/G9XFt1JJbpn9G5iorFvm+49WVzwcnKuDj1qGNinLjawOQPQdqwqO1oPcqpXaTUI7l4Oyquc4D5Oe/NV3lLAbycEZH/162p2UuV6ROelUc3qtepw/jCdkdPm7YGKwPHuo/Z/LDEBnwQfT2r9a8OIv27knofmHHtROn7KC1Mj7WGJ3McJjrXmL+I3PmsrjjGQT/wDrr98pRjC0kfk9OUqkVSUbcu51uo6lHE+RJ3ycHtXktzrJu7tYISS2eVPenXcVLmWxtRw7rJ8myPTodQR+53MeDXGWdnqrGInAJY5Cnp6D8auVWLjyrYzqYVKpzS6JEPxYH2vwNrcZz81q546jirev6bqN7o97ZuAUuIyrAnPB64rfL8TCM+XucOaYSpKMHFap3X4Hnf7EuswTeGr3TTJiSxvJI2B9jXgHwC1fWfhp8W9W0HUoCmjavdsYpCeFLev/AOuv5V8S+H54bHSrRWjP6r4ZzqlmGAptP3oqzXofr9GV+8Dzn5TUWn2N/c21vchcwyRqVKkfNX5hUTaUmtD2PdhNST8yW43yRA7sYyeaWVJY3WKQENkgg11up7NK+zFaVSDqKNkiGzTepXBIHGTVmJBBHg55JOa5oYmUpWjrYmtyRg3J7lG40mzchvLXfwCR3pWuWUybcgcD/wDVXt4DiPF004xbPE/sjCyVpI828SslldLGABGCCQv61zvxFv2t7sbeFCYz/e4r9r4AzSrWpp13dn5nxpl9NVFGKtb8ShLqIXLKeWxjHavK5dadRIFkI2j5gT044r9mTi7M/PK1Oc1yxep6C2rqrgFjnvnpXjV54h2su1yRjBP0rRqDjaW6MuaqnZPTZnrMmuKHx5gGAeD2rws+Iw0yES5YuAQT+VS0m79RUoOL9nKGnc+hYNVEmG3YG3p6V4lD4pKsF83AypPPf1rGrODSc9kdFCHPJqGr2PcH1NGDFDyMZz3rxb/hLYWLbZgcHseprVzjGCaZwVIzV4rVs9gfUl3byxCDGT26d68cfxGsny+dleM4PHSlBttJ7GFWjKnFRmjxP40Txz/Fb4fb3GV1FNp9BXH/ABCv21X4veAILTMhGox7B6+v5V854lY6MclknvsfqHhThlSzG7ldOLP1n8NzhtHsQuTmFdpPp71J4etJ7fR7IyqRtgUZHfiv489rzU00rH7bWrqMnTgrtmsNzBVwxBbH50z7S4XCsQcYPvWNaLinNPQajJTjBbvqKplU5CkkHGD2qCe8uI4Z5Uc/JGWAPfAp0Ze0knFWSDEucmnJfMW5ga4Ro5EY7kOBj9K4Lwr8Q7DxLc3VtbXaG4s7hkdNw3Ljrmu+jiKlKaa0sOGVwqRu9UaOreDdN1G0a0vIC8DsNyv/AFrr/Mco25icsASa96hxhjkuVS07Hz9fh3DQmpON2tbmXoWjW+iwJBZQBIYwANo4+n41tx+aowjfLuBIPevl6lV4ibc97n0Tw692SeltSdFcKhCEZAOP6mmtLMNnzYHI4PT0rtpw1bk9F0OXEUFKEWpWu9PkTLFK2wMCGJIGfeqZuZFVCz4OSDg9KK0Zcz5UdFCLqQcm9EZviEPFYOVAPDEg+ua8j+JnjhLFRaxXZEhyGwf0r7HgnJ51qsZ9j4nimpGCcKbu2tTPnunywkAXJzgHpXh0vjJRgfajuySAT1+tf01l1qUFyn4fLAU6rcZLU8p8C208n7TWoyqhAktQoB785OP61yHwf1Sa7/aP1V/PZy1vk89Bu5NfnHjTjFOjBSR+0+HOUToYKdOm9ND9a1WSKKIMpyQMgUzzXECFmJOF4H0r+b4Vbw1WqP0CEIxilMtRgynCtnkEH0NVrZ1dgV3A4P50qdSztIzhh4UV7Rvct3FvK0EpYDBUkDjPvRc7jbSc4+RiT6cV10JzVX3TnxXJKna+h8za3KYdRkXeAN55JH615v4y1M22t3qeZnEjA5PvX9V8It+wU5rc/AM8yiKqOcdt/uO5e+Mcca+aqls4IPH41462sFiieadxbDAE8V9e8U5Xsj5qWAhCKqruelrey5UicEkk9fSvL0vlEjuk4ZgQBz6Vc8ZKMUkbf2TGPvTlePax4D8cvM8N/EXwZ4wjmUCC+TzST1BOP5Vv/Gvw8ni3whKI5Q93aI0iA/eGOwrx+J8GsxwUsPJapH1fAc1gqspOXuyd7dj9MfBV9DrOgabdw3CMstrG4ZehyK+Iv2OfjNb6zoY8E6rdrHreinyysjcyoCACP61/ImPy2phcQ6NVW6XP6CpckoqdN3VtH+h+h32ZtgxOFfdkn1xSxAMgk3grIoK4NeVySi79hOcHHm2ZDJDswdy7Bkk08cNyxPIyD0zWSrOK99ajVNN3vZnIaz4cN4/m28+1yhLEV1yKuWGRk8k9q+qyTi6vhIWp6o8TM+EcNXSlUep4drvgXWNV02SwtboI1whUsR0HtXvaiLZsLchcZHYGvtY+KuLd5QjZev8AwD5ulwNhac7yd3ddDx34a/Dex8B6ebG2w007F5ZMcsx7166VBDKpwQMZHbFfE4vH1MTU56iu2fX0qKpuMY6p6eg6GCLy2LSHduAxino6RAgN8zMMH09a8nFQWkpLTyO90ItOFte/oMaCPj94SFwcDsayNc1Ww0iynvLq4WNUjJwe59K3o0nUajTjqcMq9OnBSqs8e+K2q2sESW/nneQTgV8wfEDx/Fq+rzutyfKUsqgdsGv23gLhv6rarUdm9bH5nxFmUMYlTS62+R8+/tISR3fhe3uhMxawvFkBB44PIPv6VT+I7R6/4XvLFss2xmX8K/XMVFVcPOi0fL5F7PDYxJq7ufoZ+zzrFprfw58O3dtMGBsUDY/hPevjL9h34uW0MWoeANTuit3p858tHPVe2K/jfibJ54HFNNddD+hIYinOlGonoz9UEt0JDFsZXofrUMNws8QkXJ3gDHp7187TqSaslqJxco8qehNH5Ktt67icH3HagBMA5BXGBiuqjU5I3erudlOUOTlpoq6jYwX1uYnX73TjnParmQCo3EgvjPrXfDH1aT9rCVmmeZXwNKvFxqq6Z5fP4NmVyI5VCNktx69MV6i4Q4PIGec9/pX1+C8SMdShq7pHzeK4Kwkp8kXa+54/Z/DGxfXrPWtQfzp7ND5QfomT2969eeRAgOCBuBFeXnXGmMx0OSb0PSwGTYbBwUaS1b3LESpHCiKmPkIAHasa31rT7ySa2tLpJJoG2sEOdpr5VRUZK60Z7VOi6e71LyKd4OTuHBz2+lMjdlYk5wMED04qK09uxpQm5RdNo01bABfOc4+tJHKhywB3kAEHpxWkXJtRRE6Mow5TkPHTsmg3Mu7BVTgelSeN/wDSfD+oRgEZiJBXHUV9TwpiIU8VCMn1PBz1zdJKC17nxnNrCLPKplIKucEnr6ivJPEGqvaXtyikqwkc89q/qHLZNwUk9z8QxMJOo6ajpqziPCt2Zf2kLW4TkS2+0EdATVz4KT2118c7OWdAxlQKpPf6V8L4uSdbBwaex994d1I0ac4Ti7XP1Tsldre3OCVaMEexxzXZxQ24+yKqjHGcdDiv5xqYabavpc/QaeIg+adJXOb8s5w3AzkV6RHZ2bAF4hwB+FdFPDtq09DOrilNN/eebSREDaCTjJ47V6TJaWgiLrGA20k5A4pUoqDutWjGtj00luuh8YeLtXCXd1bOxyXbIP8AEDXnfxcvhaeIb9Ecr5cxAFf1LwRKX1aMkz8S4ooRnUcZLTU+Xr3WG+G/xgsPENqwTT9UnVJcDg5P19azPipbHW9DeSIE3NsFcFevvXXxllMMyw9mrSR0cJcRToR9hUVj9aPCeuQ63plneQSBo5Y1YEdxXx9+yB8UF8R+GI9EvZCdS06VoiCeQBgA1/L+a5dPC1HSmtT9no1qc6UZwdj7buldnxjjjkVLI6vEWLkcMQD3rzoRk9JPqdlWrCMlSeun5nNXVvHJG0R6OrZz2zWmVV2jG75t3Huazli5RrRcdGjCeFU4uM9j4a+LNjNo2pO0e7y2GVI757V9N/FvwR/begzSQWwNxbIzDHU8etfuHBfHibVCpvsflue8O8suZH5+wa0Y2BkJJXBAz1rC1tk029liuV2ujlQD1Br9qw+IVWKm2fBV5VHFcsdro9VtPEIS3jVmO5uh9a8bPiOOGNc7uoAPat3Xaqc0HqaU8sUqXKrep7fH4q4PznAOeO9eEx+Il+XLEq7AHHarninypHlVMNJRba01Pk6C2uNhbgBlHXGDXOJeXYYKZSqB+M+nau5YKi3flRrLNMTBczm7tmzPFdPJsAGxWAUA+vWqlvJeyvE9sxIJPJ70U8FQUWkkazx2ITU3Uu30LZtNQZtvzFc5J9xWpHBrAR8FlO/IHet8JhKW0VZI8+vmdSErz1kzGuUntjGspKqQQM+uOTXRT6TqF3GxmBLBQMt/FXSsOpSsjjxGbuKUlqm0vmc2rA7Cq5OSBnucVqNps9sUIySpBIHbpUcjTZ6ccc4NKV7lK6heQhRATnaAfp1q2+pXURZZlILZAU9s+lKGEXJq7oeIzlVJ8jjaz0MZbdIVG4lHbPA6gUklzJI7fLlRjk9QfSuCpk9Cacmlf0PToZ7iab5LvlfmXl/eBI1djjBC89exqsssisHJOI1z9PSudZFhmlJxVw/trERqc3M7LoSyzzRyxwhypLjIBOT7darTak0siMUAkjIAPpn0reGTYS2kV9x2U+IcfGNnL3WasF5e24YJcuvmPjBY8EVnCd5W3scEg9e1Z0cnoU581NK4sRmVfEUm6snY29P33Myuzl5XcjJpfDNwIrtG4PqB39a9aULe6zxFQpypupBan058OLOaO4iPlnGM5xwMdDXSeANUQ+QWjzvUDI6is6tNySS2RwutONJxSvJ6n0LbyubBHRWDqBnHXirNpfqmnbSnJyOO1SqrjLlR5VaUpUlOcvevt5Hzx40lzd43YYOQf/rVR+IVykEry5wFLEjHWvaj71O8S8urxdTlVvuPJPE0i/2hbpkn7pye9YNxqg1K8Bzh0YKM9OKxq1L8qb1Enyxk0rrX/hz7G+BBXejKARtHB7VyXwq8QJowjLEkllBAHHbFfNZlzKr7R6n0uHrQnR9hb5n6MafqVtBZqshUfKCMmvmiX4hwSCFmdtkeCQe9bcsYx5up41LEOVSzWi3bPX/FHg7w14yQvrFqjdQhAGRXlf8AwtKyCBPNKleCK8nEyhVVpr5GsnVpNeybSb3RRu/BPibwcJW8CeJbmFFLmONiSAMdOv8AI1Be/EVJYgkLsSWz9Md6+azDhvB13aUVsfXYXiDMqUEpyvFbXLXhrxz+0BYSGG+ns7mzR89SGPueDWXpvjWCDe80nzAZBU/er5arwBg3pDToexgOOcVKKdSNmnc9etvi78TUYQPpFvjdksXOTnqTxXlU3jeFoZZN5LFSFz9OlaR8PsIkoX1e5yYzj7FUXzwimup61c/E/wAe3zrYi7hgmkyAYl5Vf0rwKHx1YWk/2ma4CyyYwDnIFb1uAsFCPK1fuejh+KauIipbdUfR9lqM2Fn1K+ea7cYZnPAP0r5zHxS0kMPMvQAG4x3+nNfQ4ThfCUVzKJ4mLzXF1Kri2rWPpWbVrYOAEGOQR3JNfN0XxH0yZyz6gFTcMMc4Ne3QrU4x5YI8OpgW5OKlva59HW+tQm4ERh4LjBOOK8Bj8faSJUuBfgFc5UnqO9TVb5UosiWBhBuDblLoeleO9FsPFois5b4wGCQOjr2PrXmM/jDTbiXzV1IKr44J7etbym5w9lU2ZrlmGnTre3p3VTp8jvtJtvGOkQpb2Pj+XyI8LGr9Fx0/CvO5vE+n+Xsj1Rd3BVifXvXyP+quDnVacNT6etxDjIxfPLXqemT618QI93/Fcy7u5XvivKR4ntiNv9oxkqu0gGs48M4KMkuTVHPh+IsbOk4p+h02s+J/igLu28jxnK0UTDIbjPr3rynVvFMiM4M6GIZIZTyfrUf6pYJxUJQ36nS+KsZTjzN67PsfX/hfxjeXWmLJf3JedQAzZ68etfMPhnxvbRQYe6Cl0PDHr0ruy7JaOGaVGNkcGYUalaulWle66eZ9X3HiT7VHLFuAd0KqQema+fbLxVZIS/2tS8nXJ619HHGOm7pXsePUyb2ml0tfuLFpp/izwvr91reh60sa3MmWRhx161j674oi+zr5FyC7vg4PSvMzjL8Pj5c9ZantZXmuIwdJUaUvdTPUbH4n/GqecRW2vQJZxnjCnc3PXrXm+j+IoII4/NuFVwAScjivnq/CGEUFGK0Pa/1qxCgnBrS79T3K2+JXxajdSdWheQdCwOB615Uniy3Tc/2pcKjMuSO341NTgzBNL3Tmw/GVeUrWWp7db/GLxuySWGtTo7zIQgQ4z7kV812niVZ52vZLgEvIAAT0FdsOE8LRkpwWxz4zN61e8WuVvY+l7fW5HbdcTli4+7nr614TL4tSDAM4GCSQDz+NfRYeKjDlSsfN1sCpPmbu+q7nu9z4gsrT/SJpCuFwAOi18w6h4vF5LBarcHYWJbH8q61UjyuT1LhhmpctrI9L8Z6Ho/xFtJbfVAUiDEI6nDH0Oa4IeKoYYRGkoEa4Iyfu4pSrqpFRktDmVD6vO9N280M8HT/ED4L3EieHNRkvdEDkG2mckhSf4etLJ40g8p2MwGzBAB6ntXyWO4KwlefOo2fkfaYXjLG0aSpytNfj959A6P8Ati6Wl3Dpmv8Ah+7iv0wPMCkonrnGa+cNKv8AT583l2iNJcuSC2MjNfJYnw3oyuozs/Q9WhxnOcuadPp0f/AP0B039pz4cXMCNcao8buASpTBHqK+GHXSXKnylICgk8VFPw2goq09PT/gkYrj6Ps+ZQd15/8AAPt/U/2lvhnshtbfVJGlfIYKDub1BxX5o6j4gtbLUpZbSBC28gDjt61cPDCnSqJKd7+X/BOSlx1GtFSUWfpQP2g9JeGNNItHKAjDPx+OK/NtfiVexqirEgPAJUcCu3BcA0YyacvwN58V1qtOLpq0tba9j731b4u6lqikSShY+QVBr4Ak+JOqeSVIADnBYdvQV9XgOF8NRnote587mmb4qVRKo9HbbofVK+LH1S/kneQ+TbsVAJ6+pFfKMHjrU7SA7LVim8MSP4s9a+hptctobHHiFGNO0n1tfqfYU/inZACZWzg5B7elfH6/ELVruWON7dgrtghugroj7sXzaI4YqMk1AtfHa41TxDoUdtp8Xmzx3YfaenXJ9ay9U1gvbxu2Q3mEZrzqzlVoypSW5phMRPCYynVi9Y6nsHgj9p7XfC/hrT9IufBM0slpbLGCrY6DrXjR1hvs5I2guq5PrX5x/wAQ4w6fPFn3D44r4mUpunZvz/4B9HH9sq6fan/CF3Q6bgB09cV8zJqCnaYyeW5I71dDwyw381/kdsOOajo+/Cz236L5H1Gn7ZscsybvBV55YALkH7or5T/tSLJITBZzgDv61yy8NaSkouV/kZQ4+STk4e76/wDAPrrxL8XLTxlDbXFpujHlglT1XPY18jW+sTICoyCXI+XvX0+U8NQy9Jwd0fOYnMnjnyxXme1r4jYmdTKcBhgDvXksOsNnBZt2TnPQ+9fVKTlZrY8aChTbcX7z2XY9RtfELLrlsSxG5TyfXtmvG59ceyvopwSVjO5QT1qpTTgrdzooU4NOMlrZn2JB4gMawlpSWbaFC9jXyiPiVcsFJTbIDkDPA57V0xqKMNVucEaEouSS5na9/wBD6X1rxfL/AKPYQuRJKx3Few96+VpPHd2919rKEkDI9cD/ADxUwrN3ktzGWBlKSXTT+vkexeMPDEGuQRXdrIIdStl3JKnXI6eleYw/FIuhWS2YyJyAO+K5sRThXp8k1dM9HAwqYaTr05Wku35nvXw3/aR8XfD0W+ieL7Oa706AKEnAOQB3I5/SvnSf4gJeM0c9vuQ4C56jPb/Jr88zDgPC1ajnTbR9jg+LMRGKVWF7ve//AAD9ELL9qb4UeIGYDxAkV1zlJOMEHpzjpX5bNZaDfSSNcadH508uQ4XnPrXzGZeGClUUoVPw/wCCfRYbjWlGi4yi7+v/AAD9dofjb8N54Qy+K7YjgEhhjp0r8qoNGsLWGNLWDKdQCOhPWvPoeF81K7qaen/BNKvFsGnFrX9D9Ob39oT4ZWBFtFriSyOduF//AF1+Wdx5UbrsjOxc5yOp9a66XhYpp1HU2fb/AIJz43juNOMYU6ektD7d8b/EbTPFV4X0u7IhVQQT3r5K8KX9w8s+5iYwgUY7V+gcO8PLBNKLuj4vN82li1e1r6HrU+rSMcSTsSxGT6+1cFcXxD53HLMRk9q+0c03zroeRzKCUU7tHaS3CSRmLzmBDAZ/rXDfblUtuZiCQcD2rrpTjJKUWRj5OKTT3OneGJczC6YvxkHv71zJvnkA8tjhDzj0rCVScXbdI5a1ODfNLZ7mnPqsFq4ie4Y7sZ9a4vULWe4uBJvAWTBBJ5NbTSjHm6DwzjK6irNfibs2seRcBY5GKvz9a4qcuJQMlmUAg+lZVarSUXsdGEw6nNSjo0/+GPQU11zCuWJYsBgVwiuwwPMPLEAnsa5XiubV7HXRwUXOSe6MttVW0+KXhbW78ONP02cPIw52+uK7bT9R0i2iP2y0WS42gbyBx/OvJ4jwazCgsPeyOzh/FQyybqKN+bfyR+g037S3wus9Cs2m19U2RqGDDpx/Ovzs1a90HULRok04DHQkDH4V+df8Qrg1yzqfh/wT6vD8fwvaMLr1PuVv2qfg9yv/AAk6GTrgZz/n8a/NOPSdFWR3lsIxhxgEDvXJPwkTah7T8P8Agmq8QacmuSLVn3/4B+m9n+0Z8NdcEttpuvRvNLEwKE8jjjmvzSsbKwtJPPs7ZI5CSDsAGBSw/haoS5JT0T7f8E0x3iBSWHblHXbcl8UfEbxj8JPipeeMvDkslx4fvbotcRqeGyeSOvatYLbahF5F9CrxynDKwzj619hieBcJXpKlJWkup4OUcZ43Ctyk1Knul5H6GfB/9pj4ffErRoZYtZig1aTarW8pAKt+P+Fflfqfw10sXJ1DQrmWwnDh1MDEYP4Yr4XMPCeqpN0ql16W/U+kXHGGaSqRcVv33P3Yt9Xspog8NwjB+AQw49+v5V+J+i6l8SNHSOCDx9fPBkgBmJz7V4cfDvGxV42PSXFGDdO7lo9j9qrrWrK0iV57yNU65Zhzj8a/H1PE3i24SIal4iup1U5wWODj1966MH4a4pzblLfyOOXGWGilbpufo746+Meh6JazRWV4r3BVgrKwOSR0r80pL+eV2SSV2HLZYk4x1r7DKvDGnStVrT5muljyMw4xVXD+yoaNs9G8R+OtR1y6kuJZ2ALEjceleYzOwiwibnbqB0PFfpWX4GjSXJTifF4ivWTjKpK9/wADoJ9cmYMfNKjBOVP51y6GYqQ2AxB6dq9DCyVNKNtzixWKhUd42uupn/BLxdovh3433Wpa9qH2eC4iAMsnQnPA+n41DceHNLvHWS4tEaZWJLYGT9K+N4y4WWbNJStbyPsOHOLHg6boyi2mt7n6yL8dvhSkIc+MbYqQACWHP15r8om8K6F5QU2YK4GVP6gV+fR8LHZc0/w/4J9Lh+NqNNXqJtrU/WSx+O/wrlmjVvGFnhuhDjj61+R9r4I0aK5EnkYjIym3qB3FFbwmaipup+H/AASJcdxqP2ai+5+yi/Fj4aXG+G28V20spjyyhxuwegHNfkJa6PaabOtzp6lJywyxJyfSuvBeGDa5nPX0/wCCcdbi6lOm4rdaH1J451HTrnWru5gvi8TTMQV6Hnivnxr2eZV3zsNvUV+u5NgZYeHs5PQ+BzvGRny1WtddD1GO/gYFhKwIwAT3+teZpeyxgqHJIwSB3+ldNObvo9Oh5jnKpFql01PTLW7tkHlvLhOTkd+ea84N0GwTI2COT3AFa4uU5tQk/UnDRkpKT+Lt38j0e+ubBrOWN5Qy7SDz+leVXFxmLajsRKSWHc1hVqOUlK9rHdPAKDU7atPQ8Z8SaBrPhLxEPHHgm7Md/bSbpFjP3lHUcfrXp32Z5U8knI8zJz6HtXlZtlGGzCdqy0senlefV8tpJ09btaH0h8FP25fDepLaeH/iHG2n6vCFRpZD8rn1ycV8ea74E0XWdz3Fku+OQlXA5Oa/Ocb4W0km6NTfXVf8E+1occqov3sdb7Jn7a6L488Ja+iXOkazb3ELjKskgO7I9M1+Fln4T8QaDIk3hrxdf2aoQFSNztH05r5iv4ZYmMmotNeh6VHjChFpVJaH9AKzW0mxkIJwOhHOK/EjSvH3x30zMMHjyZ1QqilwSePx715s+AMWo8yWh3/60Ya11Lc/bkSoM4YkA847egr8bE+KnxydSk3jNlY5BKry2OxOamnwFjpTUUtDepxdgoRabV1Y/YqfULK3LvNOiIFzkkf41+NV54u8faiwfV/FN1KdoBVXYZ+uDXp0PD7Gc2srHlVOL8P7NSS1bP1L8TfFrwhoMZabVI5J4sgRowyD9a/Jb7VdTn95MzszMSWYljjvzX1WC8MHJL2k9PQ8fGcZRTfs9ZH1D8SvjdJ4nElrbvstskHaffpXyncRyyKV3srqScjsTX2WV8I0MNrT6HyOYZ3VrLlmt/M15dSDXJ3Oeck5Oc1yk0EyAKWLOwOWHUelfaVKTcVFdDxKThSvZHSTXdtK2zzCUbKnP8XqPwrnkt3+U7sFsYQ9zWcZSpxsnrsawxFO6qxV1t+h5brunX3gvxJb+NvB8kkdzaTiR1TPzYPOa9ZubHfGUnIK9wR1rwMyyLD5hTvWR35RxRWwc3GKvHpqfZXwG/a+8H+NNNttM8SXosfEVuEjdJjgS+4PFfnjqvwv0e/uTdxM0F4AGV4cgg1+YZh4WRUvaYefyt/wT7yjxpGtNU5qz/A/eKy13TbyKN7S7jmimwQVYHr+NfhlosvxP8MsqaP48vYrfgbC5JAHbnNfHV/C/GKTcXdnsUeMsLycqejep+8sl5bxqCWXYcgEEc5r8XYfHvxakTy73xvduhUkhTgr2GOetZU/DjGuCjJ6nQ+LMOryifsNqPjDw9pkRe91KJPLYnaWGT9K/G/+0NevRv1LVrmZhk5kc8/rXsYLwjxKipVJ2XoeXU8QKcbOMdXofd3xT/aIsLKxvLbwzPm4SFwJVPftivg5rd5laN2YliRz3r9Ayjw6wuHkuZ3Z8tmPFVSUZNM9W/ZO+NT3ni/xZZeKdbEcs960itO+AxyM45r5suPhxpctxJeJ5kc5kDFoyRk9e2K83iTw+eLmp0JKK9P+CexgOMoxpwjVV2tj9vl8deFBsJ161LMAzASL26d6/Er/AIQ1FBT+0bli/IzK/wDjXyS8JqtuTn1Z6z49o8t0j9xE8beFGjDDxBabSwJJkXIz+NfiXH4VLBQ+qXe5BhCJX44571dPwuqX5ef8Dh/16oOSblqftJe+K/DF5bz28et2rebGVXEinOeOOa/HDS9GvtIvFuLXVbkP1BMrYI9xmnT8NMTTnGSqfgaf6z0JrkmnzHsvxKRbTxFqUMUoaJJSQQcgjPSvNLj7deEGeRmfJLMf4q/Ycsoyo0Y06nQ+TqVoTqpRWrvr3t0GfBjxDZWXxu0w392kaFiPnIAAyBnmuL1L4faZq9wdQk8xLzbtDxkgkV5vFuRVMfTVODt1OvLc5pYaPs5rVuy8vU/ce28ceFGFkB4htTyACJF4/Wvw4j8G3cQEcer3ijGPlmfp6da/N6/htidG5LQ97B8TYVUpRm9WfvmPG3hcAEa/aEDgkSLx6Zr8FV8L3wZEGtX23J6zPyD+NVT8M66XtHPQP9bcNTaa1sfvSvjTww8boniC1J548xfm/Wvwq0nSNT02+juo9Xu96SAgNKxAHfPNdS8NK7XO5K/p/wAE4HxthajsnZn2L8XLtZvFF8YZ1kUzM24HIOK8ktzd3dtC0zsxbAJz0xX6pkmWyw9NQm9UfE4vM6WJqN0un4mLcRC4ilV/mVl2kdj7GtaSzdBt/vkYNfTTxNOycFojijhXKLdd2f8AVjxT4S+NJfhT8YIjNceXo+rXIVlPQEnvXSeIfAul61dK91ExljJIdeq59K+D4n4WpY+PNTdpH12QcQvDRjGor9Ez9YbHx34au7OOVtctg0sYYbpF4yPrX446j4GmtPLS21a8UIBgCV8HHtmvzip4aV4yV56+h9jLjnDQTqNXP2Rh8X+H/PiZ9atwivnd5i4wPxr8UP8AhFtSfZjW70Ro+GxK+P51zT8MMXLmtJa9SKHFOG0qS+F9D90brxZ4WubKSE65aussZGPMXkY+tfiJbeFdRtnjmh1W9+TDZMz8Y6d6KPhziaUk4s4cTxPhJNrXl/I+ivj1pllZ+ILi402ZJIJW3gp3zXkEr6jc26xXN1JJjCnfkk1+rZDh69CPJUdz5PG46k4udLZmVGjPbq7bvvAMD2rsLTTXFn/qzkpwPQ19TSqNzcdz5PBU6qfNJ212OA/eKcR7iz5yB2rsl00xogc4BcnGOSPSsJ1XKVrHdJTjK1R6Jnxl/HsyTwQQevNbEmlyxy71gweCcd6+1rUop2PjaM6jSVRPX8DY8Ox8rwQN4Az2pdMgvI50dkKIGGAfr0qI0+WXNI9WcZPljDdfie26DoS3pjRRlsnJbtiuk8DX0YMRmJ7KR6V2LFbKKPDxWVpXUp6ya/pHUv4CRbIN5e53xgete1adJDdQRJkE8Zz396IYyXPeS0OTE5VCNLkei/rU+Utc8G+VG7vCwiGSQB1INfU2teHIryEBVB2tgD19q39rTqXbRTjOjCLoptvr2aPz61jRLhD5hBCqDjI6V9MeI/B0pQlYgevGOgraph4pckNzmwGYVYL2lZaL8z46axYM2ScKCc+vpXr2qeEJYt/7vgscY7Vw16ElK6dkexgc79vK0ou76HjMgSOPIcAnAye/tXR3+hGA5II3NnGOlZzprS+52QruEpRe/wCRxUkqs64YLtYD61pzWsMS8ryQcH1rBKpZKWiLoxgnzR1uVVcRgSZxnGPpVMgq23azAuAM+vtWMnyKy37nvRUZQS/A6DR59t2rxlhhsAen0qnpTu1zGuANsgGR2rT6wopNq5M6ElNQT1Prf4eeYxi3OcZGPb2NVvh0yxyQsXJXCnj+LpWVbGOcLo8qOUxjCSlOzvofUERP2WMbjkoMg98UKh+wH5ju24yKWFnGcry2PDzPKalKUKkHddfmfN3xJlffJkHekhJPanfEFgC+58q2Vye2a96VdKKjFHn0qcvbOLd4yPBLRjLf4GAVlGR2IJptu6rdqokKkOSB/exXmYid1aJ9Jgr0oOdRr0PoTwZOIIkQIN5IJHYVkeGncpGFJ2sq5B/SvOxVGyTfUqnjVCcVM9MutYSCE71xtblTXKXpwrE5JPAB71x4jma5UdtONGTcUx8OrRPefNgIGyffFcyY5BJhQd/J3HtivHqVOZauyR31cTGEVCMdNLHUtr4MnlIgVAxUEVxEXmeYoLH5WJAHeuaEr6Lc7akopR7S/A9O0zVIyXEiDI4Unt9K5XT1lKB24IJKk9jWVm3poy3FpNS95Pb0O/n1OERvuQN0wR3rhnad0kLFgmcrjrz1rRxcWpJasiFGE4unK3KVdZ1GKQRxxKVYyYyO1Yd/aMGVwzHLBiAK6q1dyjdLYyyugpzbT0Seg26e1WIs0ZGSASKzL0XUrpAqEJkZz3NZJqmubmMpqcvcS/pCDUIpJNvnMVCKAD0rLTTrouYxn5ic46j3rOVWUbNLdm2Ac6km5OyWy72O0ttR0+Qpbjd5gAHPTp2/rWDY6bOt0jnJCPkH0rphUVON9ycdHmrc0Xq9X8jorq8iicLvJzgKp7+lZVxFN57ZG5AQBjtms4R5oJWIp4jmg4Re7H/2nK8pjJO1uxPU55xVSG0ZmyylsvjA7HsafJJ6dhvE01TanG99C819JuzubIbgk9T71E9nIdhKnCkZ9TV3Sim0ZuHsaV3Jv8PkWFuZHjx5jMN+GJP3qWG0kZkzkbiQVp04px9o2dGJpSThGPa5A0zhVeNjsRiSPWtCGyUeYnrgYA7+tUpO1m73Kw+Iq1Iqo1ZlSC/uVdcXDhcjHJ4NWYbOQTjAJxjIb1om+SN+p4denVU3Vk2k2Wjfz52id2XA+8Tx7VM+nkJGy5+ZiCT2q6bVk0z0IYVwjGvJ3uSrcXI2kTtlVO3PbNX105m2bmIUMC2e9YwqtvyNaqc21Hr+pSluLvaSZn3LjJJ61rHTJWY4HysV61s5xS5pM4I16kF7GL0ZjrNfM0eydwsWG4PJrchsCZDHtPDDn+9UU53p3b0Z14ijOnKM1qzFvbi9KM5vXZ9xJJJ4/Gti40p3kYkEgspA9MVpQpqLi5MMTOrGCqNJtnHPdX5kUPO7M2AGBPHtXUPpH79GcHcR1qIzjNJ22OiblRlqrpr7jnvM1AxqondgvUEnk13NvpKGI5BAUAgNQ4qL16nOo1qkPa32ezOPaHVUjjl+0tt4DAnr9a7+TS5BZfMCQ2Bn05rTDuTbUtSo1El7y944kz6rHGjR3kgRc4AJwPQV2R0tmhij2ldo4yOvoaUZWlyM58dXqRjGUY9e5zUOsawGUm9cbSeATj61vHR9pIDfMMZHp6VVWMJJLZGM27vS7OXeeeeYs8hMm44Na8WlOt4VZjhSMY7+tKVoyUUdFGbqQ5oaIpeVK8QIAZXbnPaur+wM0YUnaAwAAH61nGq1PlktDpwNODTnB2epx5gnCOd2QDnI+vFddNZSLGEZCctnI7VvOrK97aHPClFVVKUtHoY0esXMcIi+zKVZSCx7+lXptMlVNwO4bACPr3rGpRbi+XRnFVmqVTlqaorW2uTIIrdbJCrMQzH+H0xV2DTJHliHKgsOPWubX4r6HturdxT1RBqe4W8JyTukOR6Y6Zrp77SyYI+M7nBB9KpXs5S2M6eLpOqlazelzkohvWPLDa2Dg9D6VtTWjQvGgQsSMDA+7TcFytx0bJoY5x0numUo7c5TCAopGMdvWthI5QmHj53cEdBSoynzOKejMcbWpVYptXa2/wAjEjs4NshccqSRjufWtn7EXkbJOJG5A7CtsXFcyd9DGjiYTw6ptdepjm3hVkSNyFzkse2K2m0MEAxSYAYkgdqzhT5W4pneswcYO0en4djFMACt8wPBbA/irattGPnhdxJGQGPvU1q04tNmdGtSnT53Gz6f8OcJfozvEMAHg8dh6V3V3pDNKpZMY4zWkppPbQhzhOacpWaVzzxrX92CBjDHaGr0P+yo3UlFyysDz2qMO1N3d7HY8bKNNzl+BwiaeyooOQxIBzXfyaZvQBsoc9u/StoSbimmedGtCc0oRa1t9554NOwpby9wMZBx3r0JdO3hFyQkjqOPTNPn5opNFYdzlKXs+m55y2mLu87BJYAY/lXpqaWVGxeSSSAR09qUpRsot6FuSnVSiv8ALQ4LStMlM4kYkrHICRjp6GvY7DQEt7cbsBpTkg9zXJisQ5Wilex30oOEuWG7OKDhRgglgQcetd+dIs4sFwd3GSPSuZ+7HlSO2MHB6vVnm8kEMqyb4xkg5I7V3s9hYvkRIPlyM/411wrzkrPRHmVqkFNqMbtHD6BaIs108YKqV+YepFdvoulotxOU5EiA4PtRQs5ptjrS5qXItG9Tibi3IZiCQ+QQDXop0cEtzkg8cda6qdW109hSlFSjGG7seYizlOGZsbgMkd69DGlYxxlgeAfQ1kk7tsqtiIw5Ipczd9DgEtJEAZHIG5QQe9eixaQSwQkY5OPSlOXM+R6ox9tTjVTpK0n0Z5++n3DmErkIGBJNeiHSyNvQ4PJI6fStYxUZ8snoaRkptySWmh5NeWEgu+VIPXGOleg3VkI5+VydxPPerrSc0kkaUK7U5Kb2Whwbaa3kLIRjBDAeteiLZJJCgkUbAQAfXNcMuVz5HsZYyNSNBVG/i3PKprMKc5IBByPQ13d1YDLDjk4P0HeuyKUrRirMieLjGEVUdlp8/wDI4AWGIGK4JVgQB3Jrt/7KHk7h1L4BHetqHKnqcrxSjU5ox/4Y81m0yZpMHAC4Jx39q9HGnZY4UlgCuT2FFKurNvY6a8aaSkndrVnno01x5TLwMncB7V6WNNAjBYEFQQcd6yhJRnyy1ucjxrpvmgvd00OKtNJkmQsBhgG5Nen6TpijaGXkk4Hp9a58TfdbHTgEouVRPV7fqeYNp0ohwSC3I57V6hdaWkbnABGep71pTqxclLddjmr01UptpWS1/wAzymPTGj8vCsFbg+3vXpz2BEQUIB0I/OtpTTdnsc1Os2uWKv1fkjzh9M+YgrtDPwT29zXfC2XaQybssMj0JrKNRKPI92enSqRjFypqy/rU88GlLuATg4xn0A616NbaLNdzGG0jZnY4Ax0Fb02oycIvTc82M4waqpXa2XkckNKJt92BlV4Ydq9OuPCmpWdpHJPCA5IBVe1ZUsNN1Pddj0q+bU+Ru2rPHpNEVHLA+hBPf1r1yLw9P5JleEhFBJz70owlflerMac4TTurRe55dF4f3rHvOEOc4rv7u2YfMsWQnBI6DFcsqSb03ueliIU4qLUtLHn82iyRRhVOSnTHauzEJfpnJGMHtXUqrhaUTzalaLUb/NHCRWO4oDkbHIyO3vXaJZpvwgyxyAT2rRxU/dh16mrzCSiqklblf4HLDTwcBgAAQSR39K7EWTfLxk46j29a5qkFZt9DtqYiEKXPBX5vwfdnESaV0BBV0BJFdsYkTIbnkDFdcU4pTi7p9D550PaTbl8Vrp37b/ecSlj90qmWGcH0rthZxKuEyOc81eGqRk7xVzonTdowk+VW+bucc+n7UVs7WzkH0HeuzNvHGxVhnaDgDoK5+eXtOZLV6HXha8ox5F9l/ecRJpOwrt5ZjuGB0Fdw0Srt2gE5FFPmUeaSuaVK0G+VPWVzhl0sR4zyS5yO4/8A112/2eNzuKDGVHNVUgnOzRxxxMqk+VtN9PI4j+zM8DBBZiW9PeuyFqCyjGIyBx2PtWbu3Z9D1VSULqL1/wAzhk0XcQQ4AyMDHJruGgwUUDBOQGx0NW05ax2PJpYh0abg3dnI2+mJGeAc5xg9q7W3tcg5wSoBOe/NaVovlSkb4F3+J36nHNpOc7ujMcgV3KWwJKKwLHOc96WFjHWNjy69Z1J8lPa+pwC6HKWIYEIvUj+H3r0CW1QBd/VSCKvlVuSJ3SbjFvm93oedroe1VK8h8jpy1ehJbKAoIDbM5A75/KtKsZSTUWecqsvifX+rnmp0jrG3zYHPHFd1PBCzIobAJJJHU+9YQalN3RtQVWUUm9Lr+vmecyaQSGOQCrE5x0ruHt+SFyF4GD3HrWqk42fyOuMPelBO3X/gHCQ6Sm1VJz82ST/SuzFsoLZJ46HHaplN2ST3Y5RlSh+8W5yr6UhxlMtk4J7eorsvsv7tOckgcnqPesqNJylysjRRUkcgukhpMnAEanaCPSu3WGNQCM8A5J9u9TTqqOiFjcW41Yt6rZeRwY0gD5j96QEADuDxzXczwAAFVAU9COq1au5WWqMMNJqTdTRy2ODfRRghiVLABce3Wu2liDOmxsgIScd/SnRs5N22Z6NebpwldrTt5nExacu1TxnoVPc11jwqiKTnryR29ap1XKpboebT5pQUlpc5mPTNoyxAUnkdxmujRMj5hlRgDHXHrTVSUndbGkLxtBq5zX9nKoyykgqAAP4q6RohJsxg7mwc9KiqlLW+xVGTirJXscqLBiFygGASue2e1dC0MSoqqD8hOcdqOVc1ntuZVcRSnL3d0Y0WnMRgYycda2VBG3LAgAkMe3pWEKrveOhtPBqpF1o6MzP7PQJmRcZAwBWxtUBctlgSST29Kfsk3eO1zpwkpUmova3xGRb2Ak4yDjoMetb9r8iuzKTg8EdamvBqSSR2QzOpdyT0Sf8AVjPFhHHGFIHfI9DWhEobt8zk5J7e1b+yUUmupx06tStT99GM9om9XEWO2PSugCqcjJO4jjuKzlDlklN7hSnFq6W19PQ5+PTUYmUfKxXnI6ZroWAWIKCDkEEn+tKEVUkoLYzUVCk51HvsjEjsmUKFQFiw59c1qrLzHtBC7zgn+KtnTcZpvZHk4XGKdJwgru+j9Dp7PTgYo8gKFGSK2LGRGhhXy/mIUgno1Z048ycnoenTrSw8lF66X+ZkXFkp2hlxgEgjvXQuqMwKABmwAPTFbRcJNuSLcqsqfu7M42XTwJY5OCwBwQOlas5CzMN+DkEg9/auXklGPuvc6cPS15nrbv5HH6lYoSrSqASxBz/FVzUDlgxwVLdQeh7cV10qUpNJuzRmsRGSV13/ABOGNhtkxglRJxx2zWzKUYoWkPGRn0pqo2m49Clh7uMIvdl02EDWryR4BQEEeucU0gMqjd8hUk5qrxgkpPQ41TaqOnF3buYhtEUA56uAPU1qpHhcggMXGAfTNYVIxUlZXKr4aXKm5aI1bKwBtctyzHt24rSsyfIY5OG+UgfzrKnFxalLc0oYfRrmutLGD9kj2himCMkkd8dK2FJbAZed2BRWgoS5b9biTlKfM1do+RPM0iaTzP7PZBHJggfw5rmh4rkYAgRZ83kMOCPavsKlWMmlF6ehdKLjG7i1LZ+ZpajLDanELkpKpKj0OK5LUtVW7YysRnhRj+GtXi7RUUiI4GV3zO1tvmeh+HPECwPGvmZzjr2NeTRXfksCHI3Dgjt7Vz067bbehr9Xlz6xTaPs7QfG48tQJQFXBIz1r5d03XpYSiiYjGMEegpxqRbuVLKnUcpNaNI++dL8WW92qh5AA7DJPavkvQ/GTRbXaYhdwOTWajF3lF6nJhsBONN0pO9z7Xb7FdLtZgwbnGOmeleDaJ423+SPPB3kggnoKzlTq3Ur7Hk1cnhTdm7fqejax4Vt5VMkKgs+cjHWrumeIob7y03Bhxgjv6mumhjXytvoP6lKk+aHxP8ADzPC9d8Glt2YzuBIz6V9C3enW9+oVgM7iQB3J713/WadRx9o7HyCnWjN+zjzSbPhfVvCTQNlISRuY8/wmvqfWPCAnU7Ax3HJJrOrCNWVoOx9Pg5TwsbVle9mfDF9p0kO7cMFBgnHWvfvEPg3YG+Qhc4JPrVRwLls9EKeatxbW72PnGxjMczLypyCD6V6MvheSKfcIznzOh/rXnYmnOm+Vs68qnHEtVJNxauj174bni3DEkK2Mnoa0PAunTWxj3KTyM4rlxKcHyRer3PWwtWm6dpx2bs/1Poya68izO1iF2gkntxWc6t9jyxYYTIwfu57V05dG0ffPls5xEp1vZUXd3Pn74hy53vuAGTgDvkVR8cEHzUcAgMWwepr23QUKTTdzlwdSrJ2itVq/PyPErSdmuvlwC7Ak+nPSpLPylulXgKrEEHvXlTu5crR7tBWpSqJau2nY998JRtOkR5G4ZGO/pUngo4jRkc9sZrGtzQdug60oxSk1vZ/NHoE1gZIoWbqoJ571uzMBHiXaFZQRnrXk1Wm+ZFuTaty69X6nAS2BTG4nBJzgV0ExdnVDyjsrFgeteZiKDmrt2O/BVYp+yUddjlLfT0WUADq27PrXVfZwAGHGCRgd815cou9uvc9p1XScVDVLoRw2kYRQQODnPrVtZo9giXOcgGuluKcbas5K+IlWjJSVrEsOlLccSA7QpORXQ2fl43Z4CkE+uazqzny2bIhVTiqLV77s5HU9IKxI6IdqZOSPSuxvGTySGO3A49xVJtJc0tToeGi6n7uNlynlE9ou9XCjzBgc9811Rs0eTnB5+U+maKcor3kee41nNQb905+y0pbmQPJguMnIGM11VlbM7lFkChQelaTi2uaT0OrBqEIOKeqd7Ef9kRRqgSMHoc+tazRSxou64w244PrWlKUYq6RwuaqNTW+px02lw+aQFxuxtrakicSKS4LZAAB61vOpFK7DDrmTcFa5z1tpkZkI2jnuB0xXQLbyhS+OXJHXoe9YSi5LmTOmdeMKsLq6RzZswXDMu5F5IH8q6BoD8wUEBQck98VbprlstiIOoqrSd1v95lJYxGIkDBUDI9c1qxo5D5Uq7MuQfbpilGSdkyp11R5k43voZzW9tDGrsTjAyfTFaUlsZThgCCAOa5+a6aZ1PDxmkoT1tr5FSytbeW4GSQhwCB3HrU7W7BmVVwqx8kdh6VVKLm+ZvQqGL9lJJJtJW9S+9jAJY1jAEYPfv05psJlC7trZXIA/ujtShDmknJ6HkuaTnFLf7jaisrQ4JUqcjA9agiuH2bDyVPUd6rE03ZJdzaVSpTim9bGkbS2XaAQfmOQO+euKpQzMV3SA/M/B+lKpFpJPVmkIua9onoie1s7cyIZuBuJAHr2qDznCHYvzdRnt71tyK3LLQp1uanzSRq3VjA6iRQAONx9ayBdS7cuTgnBU0KitrmEJtQTi9bj4rNHlCHqrZBPf2psc5OyRgRhsHFKq5LSJ3UanNVs1q/wN19ORLY7cFtpJ+tZr3z+WqbiBkEgd/c1phaqb1RyZjz04puV+/3l+WJTaqki8Rt8p9fesa4vHYLHg5DHGO9LDyjFNpajxWIfPGstXtp0NIPGygIgwvGTWMt46fuixLHkA9hVTcItQewsW5VJRknqaLbcgbQDgZY1CtxsAJALMck44p0qrqQ0MJ4d0qri/e0HJZkSg7cpjoTViKbe6/NtAYEk1U3JRbktTSgoNXTstkMFpsXbuypbGR254q8Z0DjqSXLAnvWUK7Wsuhs6kY0udKzGrbv5OCMKFAye9XFk+UfOfnJOPSlKpFStt1MJ0pKCnU3fQzvs27ywc/MoJP8Ad9RVySTaxwMnBOfeorPmp3hogpUak6ijLdK5Sgs/LnQg5IYYX0q/aSK08YAYbZSSfU1zziowSkdlJNzdWLtfRs2L6APawqqkMHXPvWjdsDFGByrOAT6VEKanJ2djllN0oqEY8zZyl1ahHVjyZMA47Y6Vo3vEqFCRGMDnv711xalDR6GNOCpzcZayII4MgqQAWQDA7cVbsb6DEiNhmDHBB6jtWTqunVj3OnEUpxgobLqUns0zgIVIXI9z61dmuQr+Y5IUgA/hXS6ikrSWpMcNSheV/iKC2xTIUkBjhgO9XI7yB4RjJcMcD1rjdWN1GT1RtgoSpxk29H3Q2G1CSDaFAKnBPYf41a3QkBg5J3EgntXTBttJu7Mq+FcYOVV6XRnyoBOo4+UAHPbiq19ckzAITluPY+9bSim2728hVMBTjTcea97WZI8EYQtvAwScEc8daz7eVZlwNzDeRz29a0rWprmk7kSoP2d4yva2hrm1hdYwsigMnJHY/wD16hg06+u9i29uzMSMjsfeuPVvfqedGCT53dAbVBgo6ttbJUdfrXWWHgfVZEWSedVBJ+Ue1azgm20erGEYr2kfQx7GxSSeFi+SHGQe30rtbrR7LTII5PMY3IG0kng1xUmleC3Ot01Gzn8JlzhYkDqBhAME9/asbWL9fLx5uYwCcE+lVCOnLfc7sHGMm6zjv59jHu7gyFiOQMkD1+lZL3UUZ3ZLA8HHv6UQinJRTuZTpTjUdRPUvW8gQ/OowxXpWXHcrI3m5O1SMg/xYqZYVJaM541qk5cvR7P9Dv8AQY43nlIGFAwc1S0HVIIll8w4PJBPejVTcGikrRbkv66m9IibnEHCoCQD29ayDqsEjHy2A3sxA/lXo8qjBRl1PMhCbqcy2RqJbxAD5st157Vki/SJg0jEbeR7VU6lk20aVcNUpV4yb0f4GuIeeoAzkZ7+1Y66lFL1nAQtgDPNc1aLuvyMZ15SnaLb1Wpp7sAhAMOAMnt61j3l+qEhZACQST29hSjJSSkz2KlBU4qKd0OubZJJd3mANniuaOpxiRBIcOSdpJ5I74rOVa700KhTpqSrQjq/6ub8UAX923GWBweh9K5o64gZVIP3icmsm5RbnLRHYuWMLVNVI3f7O8yNiCOXPXqc1mDV1dYxHJjHJA75qZYmVm3oef8A2fSmoyvr/WhdkszAqlnG1l6CsqTVmkkKyODjIBz1966va+6pPucMKUYOUUrOxaUop2opD7jkjtWN9rUODkhlIyfXNU6iScYo9DEUG4Rk9jome32ReXkjqxPb1rKgu97DbxhgR71nOSUXJ7ip4KMoqondX2O6tRbJbwsqEvtwSO9YcN08GHL/AHjyF7e1ZqiuazdzKrhYpcyVl0Jbtg0mAuAZCAT2pskok8w4OY+o7DNdmGcY03BL0PLrSq0q3tFquq/UjZVES4YcsAcetMMmQqkYIZmOKmDcG4takyUW3VTs9PuKklrKrR7OeMHA611mlzQLHG8iA5ckg9veso1ZRaTR7FDAyqv2lO2mx2Hg/SUtbNricDz35Ge47VrWn+nW8XlzFfKJGF7/AFrpw8Ept8xhUg6jbkrNfj6FuSeG8kNu6nOcgnsfeoZbTyAXW5Yys3zMewHTNelyuUbpnIsXGceVq7Qy8s4BayQlcMckEe1Z95eEJh3IbYST6/ShV1H3krJ6Hlz5p1IpLbU83utOlZpFSNsrkEk9Tnit2W+VWZ2YkBwCR+lcywcbNLe50VXOtJNqyWnqcsdKuYojM6gouRn+tbWpamn2N1Zyy7SMZ6e1bU8M6iSk7WHUlCF1F6u3yOTEJIjwMEnt2HrVG0v4vtCF2ARiBmuPlUJNR3PQr0ZSpxUvh3+ZspGEwNwJOetVLm+j3N5YJVSACO/pXLWi3dSidOFwdqas9ZIjZFM2FwB2BrNm1GIbC0mMfeI7VSrXhyxRxwy5QaTls/vN2CxfzlaYHymYHC9/WoxfmK2SSBndpTwR/D71ye2d+SB31FzxU5rW4aosabRCpCvx83YCsSXUneZBMCU3Zx611zlJRvHojKUrvke5biSaRtscJLgAkr3qml9FDceeCxjQjAz71E68+XnRnXy5yqJNMt+XMd0SKd8fY9j70z+1opNQZhKBG6kEVM67iozjt1O94OM6MqUVaSLyWlyhCSp87AgKO59qVtXjK2zgkSQzEMSecetbQc2nOSOCMVTcWt0hy2s/nJbiMhiec0Sa5C8qzNJhkBCkkZPpWUpuUHKC1YUYwjUUamqZE0bxMYiSGLAZPvVS41eOS6gmaQFAQGGaI1mlzNbHbhcJTpp3epoTW8tvJG7sRt6YqpeatazWxU3WJEGUA789K2hUSTT66HLKpF1OSat1HXJeCRBJysnKk9/euI1XxBuWJWO50Xbx2FdOFi2rdTDFuKkowenXTodvZSeex2uM5wS1cBY6skpZY5mzuyCO9LE811Z2Z2YbDJ0Gnqr6Hd3lu8BRnQBWY4I6VmtqkC2AhlnPmFyxweg7YNYYeaU7SZMHB1FyvbSwmD1IzuUHPpWIms2bOf3vygHb7VpKjJyTix1PZVKkoJdOn5m0iqDhmJPoe9Y0ur2Xy7ZAfm6Ht6VMVd+9ua0W4rVaW+83WKqQASdxB+nsa586vbLtYygMCBjs3tVyhUcXF9TlU6UanInb/gnRsQgzuJ3gkY71y7atZsIw1y2Dnn61z0oqUrLcmq5KLinqdORCSDlgxxkj+tcq2t22z5bhQS2Bk9AK2k2m7I0p0qbivavVLY6OUqvGcZOM+tcg2twMfmuQMYAz3qJwkrNas1wsoSlyyVkzpGlT5vlwpXj29a42bXLcoqi4Jboc9jToU5yd3vcVShCFRuLumrfM6w3EKBV3MTuCgjtXDya3BGqkXGCV6A96mSSba3ZjQotpzctEvvOvluUCDkhVyD78V5+NdiZcGYHrkCqpJWtPqctO0pPlV79DszdINrYygBAz3xXm7+IoUbAmyMkDnpW/sbR5ZLRnNCU3V5U7RWnkenLLFIm8SAByAAen4V53F4hiEakSgjj8PSpptpqS1Wx6tGtSlFwtd9z0SW5SNUTAAY9scV5jeeJImO1ZcYPJJrWEoxjy2ONVJc9krLsemi5OCxcgDGQD1rzSLxJE6k+YflJPBom46aGiw0vatJ6HqUN0OQSMggEDvn0rzeLxDEH3eby8gGM0ckb2b+Q6WHanKrJWWiPTo76HG0sMhjkCvNl8QQSo4Mm1lY4bPb0pzjFSuzOs5TXItVfoejTTQhS5ZgNp5HfFedya7FhV+0fIuSQe9YUOeTbb1HiMMoqK5dGmd19rBEW05LSYB9jjFecnX4FdGNyBlvmA7Ct6z5LuSudDwvs4R9lona59DabdqLSJeo4AI615fp/iaJLVVjkyNvJBHQ1xwhKaSi+pz04uqmpR2/E9ZNyobII35wcHrXlzeJo1cESgKOpHaumuoqN10MZ4eLlFU9/1O0u5k85jnPIIx2PpXmV14ngEoQTAHk7h3qFJtXZ1qrOTjG15RWp1upTl2TbgANk5PSvLtV8Ukso3Ebc5A6mipCSSjF2ucc5c0nNre1jppLpY2VHbAPJAFeO3Pi2Pzni8w4D4BJro5nCSd9z0IUby5Iq/Kj2yKRnjJLgJnOM/yrx+PxLMyROJiqdSprmqQbSfU5aVRQj7SUfevoewbnYb9+WJ+UD615E3iSVWUrcYycFc9Kzp15K0ovQ9GhTVWbhNeZ77pt+sdvslkB2tyc14bb+JnKqDOQvmEgD+tTVcXZ31POoxlQlKmo3TZ73DOGYk5ADA4HevGYvFMwI2Tn5sAA9jQ4KbUl0OmONm0o8ttG/uPi+S7fZhXPynk+hNUMcs/PLZOa95zcmpRIq1GouL6mmsjIoBkLEMGIPesZ5mLBsn73GO475q6ddp7HLPnjNOT16G5FdbWILZAPQ9vpWKso3oApy7jCmt5RV00OMqsp6vc6pbpo4t6SZ64Y/yrNiJzsZ8gqOR61jUqRb5ke3ChVcFGo7L8zftdWniC5kJUnBx29KxyCBuDEDggD+tT05iZOSaUkei6V4gliYFpmz1571waThdp8wB1K8nv9Kv2knKydhVaEpS9q97fcfTfhzxq4ZNspwmBj1z3r57sNVlgYHzfmVyDg1uuRK0tbniVcNJTupeW3c+9tC8YI4hEspLvgAGvkzRvF0kbqXkYCNQck+9XOCnH3djzlh1TTcvi/qx95Q6lFOmNwPIOPWvm7QfG4Lx7bslSRkHt7itGlGnZLU3o4apOqrytFdD6LvNDtL+FtygnOQRXNaB4qt5fKWaYbcnODnGR1rndWpG0onJWy+nKSV+/wAjKn8FRNKJFiBVm5X1x3FemWN9aXL7S+4nlWP8qutiG7JrQ4MIoqTjJ7M5jRPDJtWLKDncMjHT+Ver2cabEOMjIBX19jXNG17WOmfNupWRyd9Z+VbMeoAOVHXmt7X0j8mQdAU6emK6aTckmjy60o03zR18z498f4j83ofvZI7UnxDkKtNjAXLDBr1ZycVyvU4sNUc25R0vseGQt/phXqUZWBPb1qnbyt9rV8nlyCB3rypy5Umu59jg8Sk1J6O1mfR/g6Y+UjDOAF4PU1j+F7toreDLH5cHPpUVKkpJSXQ5qMKVS9JX959T2qW8UoiseY2JHFecX2tKoyJCNqgnJry6zbTdtz0pVJNunF+7E61b6DeWZwWBJAryeXxHF5nlpLnkEsDXhVnF2Tdj28PUbSk3ZrXzseyG7iCq2/HzAlRXk6eIVdkAc5VQeT0rk5Unp1OmMIu8IO3W/fyPRLm8US/JnB5B7CvO5tfjEZ/eck4Bz09a0oNRkoSetyMS+eMasto3+Z6lY6opkCpLkAAAevua8htfE8X2lIopMc4OO9XUrv4rehzUPZuSqRj/AF3PepbgvGu5wTtBBNeYx+JcxkBgX2kE54xWUJu+quzm9vKnK023FnbfakL7ucAlcV5nN4xWDf2ckYz3NaLDqSfLp3PQoY50488o6PY9NS6MMZkAI2gnJ7V5JP4zllQK7gB1HA7Cto04Ti09ypqScrK90j1C51cP+7MpDNkDnr9K8nPiq0VosnMoHGaqEkkorc8qjTl7T2afuvf5Hpn213KoCd+4DcD0ry4+NgJcEhQzA4/rV0Zt++36k4+zrckVZaWPaYNSCWwjkIDcgE14unjISAiVsqMgZ71FeUb3g/iOvC0ozqcrSTiepS6gyFgsxZQwJAPSvLH8XLlxGFCgAnPQ4op1E4qN9AxNOpGpKLSb7nrA1QtFE+cSA8lvQ15IfFIdN0jchycDoRRUtFKTW5zObpwbk/ePYTqXzqofcG+8F6n2ryH/AITCNIAAQs2OSOoHpSoSco8i3OiFTSNVRvF/gz2A3bk7gGwBgqepryK18eOkmTOBhgQWwa0Uot2fR6nVGq44i0Huj2A6hMu35iG4Bz79BXk1z8R4ZMBwmclSV/Sop4hxXvqxy4i3OoLXfQ9ch1PbtYsMNyCO30rxNvG8U3CMM8EEdvWprSjNWkzalhp0U2o3bt/wx7aurMVVd2fmOPx6145b+NLeKRS2CzAghucVlOo3LmW3Y3+pRa9mrK57N/bkcaMDIQ5HI9K8Tn8YWRO8oWOdpKdq7sPh4KTmn5nmyjWVH2NtL/M9lj1lmbeXyXACgc45/wAK8eg8Y2sMQTftVgMDB4NZQlGTUnsmd2JozSgqcb6HtsepTBVO4FUwc+p968afx0jIUWQbQCCR1NE6kJtRelx0strUYqbd0vzPXZNay3yyDcTgA9ya8L/4SkPlvOyQQcnua0oVoKKjc4sRSbV3HQ9yfWQ7LyN6r831rwkeKomXMkpVl5yvXrWvsVFXTOSVWcYuS2R7tBqay/Mr8H5SxryS18RhkEQkA+bIIPWuV2bs1dHo4XDtR9tJ7Lbqe0xar8xQsDlgDmvKYNckQrIj5OR97oMV01Ic8bx01IqYyMUoPV/5ntCarENu5QVBxkdRXkieJmV9g4w5BbH3s+tTF2ajLU5J0pzhKnDRp79j1G/8YaXo80H25wscsyoDjJ56V8w/EHXZbmbS4gx5vo8kHggGubG4hUcM6i3PW4eyuOLzOGFqS9zRN+Z+rXhX4Uaf4i0Wz1NbkBbyNHJHUA+leo/BhgPA+iZyf9Aj6d+BX80Zl4kYyU3Tp6Wfc/aMZwZQoyalstNjj5fgZay4ZbvDLgAEdfrX0Wz7mBIIAIAPrXLHxFx0EpSd0+hzLhelUjp08j5xi+BMAMYW62/NwQOlfTcJUsjYyVbn2HatP+InY6UrWt8yMNwph7Wa16nwt8UfCB8EQ2oe6LoXBDHHIPTNaX7XWtQ2FnYhXAPJIHfvX6nwPn2IzCLlW0Z+dcTYNYaoqVNbapHznea4CoXzQW3YBPQ/zrwOfxSGCbbjjeCDX6bTUYNQ6s+ao05Tm5zdlt8z3Ox1RI5N2f3fGQf1rwpPFzMw23HyrkbSepradFyS52tDCrVlTi0ve/Q97udbSVxHuI3ckDv7VxnhRZb5k1K5IKRklUJ4ODWbspuUd30OadCpUjesvdVrfI9Q0nT7q/jFwQEB4Ut3/rVZvEBgMYVj5WBhR/Cfar+rScea/XY78LWUpSg1ZJL5nYQaTbGNYxfY5OQvbivPotekS+xuYLK4BH8xTVBwXtjab5n7Nrqep21joMLqJkLsoIO/ufU15jda55Nwkm/cG64PWlKgmlJ7M2xFHmhZbxPdNIj0J7630+JY1uLxwAWxgE9xXgOg6vcXXj3w0BKR/pqEgHjGea87O8a8Ng3Xtc9Dg/h6lXrOm5a/gffVp8ItUaOI25QB85dcc+mK+qPDKJ/ZFgSc4hU5I65Ar8Qq+JGJT0j+J+gT4NpRi1LVo+Ym+E+uqrHzWOAfxr64nQJE7McsCcH0rKfifiW7cv4nNT4NpTi1PRHwP4h+E3ieUlY2XYCME8/nX11f7GySoJ5OBXnV/FDFc3MorTzPRwvBWHhR5ZPbU/KHx/pOpeEbr7NqTgEk4A6Gt79ru+ay1WNlOAwwMdR6V+k8KcVVMdR5qsbM+EzLL/ZVk6fwp7HhkniAb2XzABgEH096+eX8RXG4uJSVOCffFfoKxSik47nnTy51pRcHtv6H0IuvhQzLJwGBJzXz+PEM4VcORuAP1FbXTTbNK1KlSakkfRyeJVACCQDcSSc9K+aW8RzsSWdggbgc8VnSeii3q9hNKTTho2fUEXi20hcbnG7qCe9fMEfiW6dFVWJIbJJ/yazqWta+p0Uq8Pei1d2sfSN143R/uSgFmI57e9fMM2uSn7+QBzx9elVhPd91PY82o+TSKtf5n0Wvi9UYnzTtQEg5r5sk1+dZFCOxY4AB7VrLEWSUV8zKrFxtBrc+m/8AhMY5GUGf5Occ9DXzgmpzpEZHJ4Oee/vUSTe7OyclZN9D6NbxUiSK6EMBJjB9K+bU8RXBDRhiWTBye2KmNaKaT6nHGdSrGUoR0PpW48QWM6rJHMEmwQFP8VfNzeIJiqMWYZ4Ge1RGvBv2dtSquHtFNbHvf/CT+Qyhm+Y4xz0r56n1md8OXZs8kmnOUb2KjCVOEZVEfQK+LhNy0gADgcHkV83Jqt0WwxO0YBA71VSd2ubYdGMoQuo3k7n1Da+IprqURwOpl4BUnrXh2hX959tt2WQnkBgc5PrUqaunE2p12qSlP3b6JdrH1bpc1yNnmrhsAjJ4/CvOLHxDcwLlyxYAYJ/hroeGbVpasVKFOmvaR+F3s/M9R+3XUDTedE6opBUkHn3NcXaeLr2VzG5JjJHDDr9a0WAnFKUnY5aFWE3ZO+v3HayeIYliKlyGJAIPVhXGanPaahGxcmO4ZgE2960hhkla92i8bBTpONPbudSvii3I2mZVGQA3p+tfNGt6jqmk3jxS5ETElGB4IrCu42UkwyyMpU3TqL0PqjTPFdrudGnBUMQPfNfH1j4ru4Loq8xCHIB7kjpXLXxMVDmvoduFy+EpqUnZrofoP4T8WWjxzgSZAkxgn9a+M/DnjC/t7nyfMdhMrYA6AnrWn1qEq3LbQ5J0YwjzJ6/5n3BqXi212DypcEHpnrXyBf6/dyxSq8jEgMCAemRX0VOMYxs2eUsPzQ5oR0k9z6G1DxrbMgzcBygIBU8V8jw6tf7HXgYkwck5x2xXLdW5YvQ5sXRVKtHmV0uvY+hbvxlnJEwDZxj1r5tlvdWLsGYGE4GF7+taSrxb5EtELD4dtOUXdbnt2oeMU8p03HOCSR64r54vrnUoonAlOQDjPvUX5I+pGETc7y2Wp6mvjSIOCCfvgCvAov7QdguG5JzjPUd682dZcyZ7UqtGF09Hvc+kF8ZA7VM5JBJUE/pXgMf25nT5WB8w5HdfTms1Wd7vY25fbyi09D2mXxf84Bk+ViBjt+NeMTW98XCKWG1s4z1PvWc8WqiulY7KuWRhDnvsnp3PpK28XRLbqROFDtgAHrgcd68NsYbsxKXcnbzgZ79q6qdWM1otkeX9dnGKjJab38ux7bdeJLYYk88EquSB0FeB3cF6Q/kl1Ltxz19a5lNRklLRM6fryqTSirrQ9Qn8a9/PAViMKK8Ul07VDGCSxfqAK1VZRly20FXozlT9rSl8j1S48VsZExcZ6lcnqa8mjgu/LAIJcNkE9vaicpO7aKw+FdSUm5Weh60/jmd4WDT9VAJJ6/SvHRp18VBZWP7zPOflqPbKMk0tTSpg0k4vTTc9ZfxrKVLrcfvCvy5PT0ryf+z751jAjYsz4PXjHej2snJSjsbUaUIT55PVo9KTxnNxun+YEd+v0rzP+zb1xw7EBuoH6Vo6zk01ocU8stJyqPe1j0yfxozBQs7YGCRnkf8A1q8w/svUCyJh8s2cnt9aVHENXcj0MZg4VE5NK1kdpeeNGZV3SElmOP8AGuCuNG1COKNipI8zk4PeooYh2cUjzpVdEktD0Cx8YzROu2ZWEqcgn7o9f8K88t9H1HcWjUkqhYLz82DWVRWag99zbAz5Z2qK6PVR4wm+VjcMFQ/1rzmPRdSkKqEfO4EgfzrdVnF2vp1CvhFVlKbS8vkd2PFhRm/enJkJGD61xLaLfugUROcMSWx0+tZ+2ktW9iIVKcHzU1fVL/gnVS+MJS6ruP8Arex6/WuJl8P37Fdyt98BgRW9LFyd+VHXFwknJ+7H82dtL4zkXC+adoxz6Yrjl8K3+HXy3O9jgnqMVyxrSfQ5Ks43tTZ1Z8WyFQVuDk5xg9RmuQfwtqA2lIWHBGMdK2hLmVoiq0JU05yetjoj4tnZkBkIPmFSD3HtXLf8I7qQYCWJtuRnGe/pWbqTk213PUoez5VUeqSSOlfxcyum6Q85OR3rmj4cvg6bIXIXIBI6etZuq5O7ZlhoLk97o7o1n8VlQCZCXLkg/wAqop4T1B9jmFjjJBx1qqFZKd77nHNubmmrNLQl/wCEolJADbWOCMk80n/CH3xK4iYbgckjpjtTq87TsrIWAnR9j7N/FYqjxPcluHJTJzj9avJ4K1CSVNsTBQxBIHXNL6zzJNBHBwjK97qxzUviWQOy7iSCSMnqa07jwFemU4iIy4BIHJrWnObd5HFKjCLly7vchtPE8rx+UJiCWBwPWtG18A30UZPlEPv4IHaiE3fmhux01TSi5df0Mk+IJ9xlaQlWOee2K2v+EC1DAbysfMcZHHFTXrTTWhosDGpDlg+VGVD4ilAJ3kKckgd62IvAl+GLeWRnBOBW7k5WtuWlRpU1FbmV/wAJJOzphm2ggZ789K30+H+oEHEZADAnFU4yjJRS9TnSjOCTlZmD/wAJBcJsAmYgtkjuc12lv8Pb392Ps7Fc5JP8PFdEeZtWWxzRnCnZp6X1OPHiG6cnfKwDEjnvXoUHw0uJOWhJYAEA5wRiuepzQjzSRrFKrUUaclr1PNJNbvCMKzH5iee9ekS/DO7O0pETucAjnisak5Rj76ujshjE5eykrcuvrYzNM1q6S1V5HYxFPmI/hxXqulfDi5azgja3zEMgkdTn1rGhNpOXmXKtCtyuC1OCl1ySVIwhOzbxz1r0BPhpe2+UEZ8tmPGOR9K663PH3mro8+lKDbm1Z6qx5BNq915xGSMqSMdq9WPwxuWl3pEwIwAeck+9RWlJtSRvl1KE6ipLQ8M1LU7jhy7FsE49a9uufhPczbN0RDMRk46YrNqpzWS2OrGckYqElr3R8rX+o3RZhk/fGM9/Wver34QXIuiFiYMzgDA61o8LPn5k+hnHExlTTe62R5Xpl7dy20TFSU4HPX2xXv2kfCm6FvGGiYOCRuPelSo1ErLS5E8RFVOSe7WnzPDzcXDs52NkkcjvX0c/wqlhGTEc5JyBUvBzSs5Gn1mFKXsJP4j5tN9dR4UMwO/rnivY7/4dmyWVnib5lJB9D3pTw7g077k886kXG3wnlFvqMzyL87YGB9T71t3GjfYph0GW+Y46VkoTcWm9iqT5qyjJW8z5silZmzg/MQMev1roYNJixnByrYDeoHavo4tN2TOWFSKjJpfNnNtkZbJD4A4rqP7CiCswkO4nIz2rojSlLVmEJqmrNanMRukbq0hLdACOxrbfRFwQZCcAsw9RS5ZpWkZKt7SVm7MpJfRqwZIzyep9ulTf2QQ3+twN5wccfjTjRlonszapiZUvep9LISLVIRzsIdWOQKcdIZC2ZBgKT9ac4pRvYujjZRWq1IGv0dA5LdRwR+VV3sXYsS5G7GPb6VE4yT5rBTxTsot6K5fhvdxClsqxAOe9UUt2TO8HIKheevvUxqNrlexVStCDutX3Ohj1MqFZckDHB6H0rAZmQoM/MOQO1aTumpXMsLOKi5NX5j0HTPEEkTBdwGfmAHce9cHFcOrZViAxOc9q2deTaRm+XmlGe3Q+i9C8Z+UFBc7nwpwa8EtdVeLpkMAAD2+tazr3ab1OOeEbaaWqPujw343RhHvuCSMZx29K+WvD3iCZWGJTtIGQKmvJOSi3ozKjgHJcyj7yezP0m8O+IlvIY2Vsgtkc8n2rwn4f63M3kKXYphQB6Z71nWoqLvHVkuMG2qitbX/gH0hq1wZLMtnKlSeeo9qzJA0lnuUkgqSB6cVvh6nLa/U8nEclSnyyVkz5R+Ikpzcb2wVyT/jXV+K/CWv6zLLFpmnSTSS/MAFOBz616GOzCjFczaT9RZNltfljFK8Vd7a2Pk62bF0uzO1pBuz/AEr3fTPgD8R7uYT/ANhOqyEHntXy+KzzDRbTkj67B5VVmk3B2/zMfTbkRWqOGP7sYwO+BXq0HwM8ew248zRpAkYIwvbPQmuChnuHbu5pIMRk2Ibb5Hp2PAtf1+VGcBgFyCAe9dj4m+D/AIygL+bo8nlpjDAHnPUVzYvN6U17kk7HdgcJVg/a1I2T+/Q8In19wSBKQS2cg9BWzdfD/VUkJns5EbIyrA5znpXl1JymuZPU9mhiMM1rEoReJnRolaUlnUKOelXYPBF+eZICFJPIHeslKfKotalwhRnonoivN4lkaJkEvR8nnr9Kvt4FvlChYiSdzHI+9xV3TbaWpzVYQhyxT0voZWl6xJLe/K7AHIznpW3Y+CtRWSM+SQFYHKjrn1qasZSSex1TpUZS9k1qzo/7U3RYZhtyMgfzrrIPBl6YIswk7gOD3FNwV79DgjhpU5tN3l/meV6prEySHBJ6kA9RXeXngK9mZCLcEFsE4rqpufLyrbqZSoNJVb6HmH9sXL9WI9DnpXpUXw4vGOBAxJUZBH8qSjPmbS0HTxNKcbxje2x5qdVu9yuzkkHAI/i9q9ng+EGqTqhj0+RmBJA2nnPrXO6iTtNkRoRqzc6a16HiLX8tw6h3fnofTmvoQ/BLX4wSNKlEY24O08Hv61k8ZTkkr6s7ngJN3mr9z55jvb0yhVLbQCCSegr6KX4K66oDS6e6/NzweR2rVYhN8qkYTwUYR50rtdPU+fxf3RJUM3qQO/tX0TN8Ir6IDdaMu4A4xyT7VrhZSnHli9RYvCQjT5m7frc+enu7ogqSw4Azmvof/hU88YDPEcNg5x3raDm48rV0cvNTTUJLV9T5smu7rnJYkADI7n3r6aj+ENxIpf7Ofl4BI+8a0dOT0WjOOjjZUJunCNz5df7UwG0sOgAHevqqP4OXHyfuSdrZXA6elJ86acpGtH2c5ybVnp5nyi7XSRxsQ3mKQAPT619e2/wZlkkBe0YgE5Izx/nvSrQlH3n1NKeYwm/YpWS1bPj+K61NGCocrknBByK+yJPgyQ6LHaspzjAHSohhZRs7m1XEJR5EtJHyVFPdsWHzEuoBJz8vFfW6fBmVc/uWyzKM44FYuHv+zQ4UfaUm5uz6M+U0+3Ki4LGMMCT2A9a+vovg/KrkSQNtAyMCt5QkkpNmXPF0fYy1fc+P5X1DZlQ5xyDzz7V9oRfBjfgfZcqpBIYU4tL3o7GlF1Iy5HKyWv8AwD4zt47+Qs6oegBJzxX2uvwazn9wSCMEgdPWsrOpLmW44Y6c6Xs3tc+Mltb5W3IzE4zg5wfavtJfgu8iqpgO0HKnHSuibaVmZ1Kyak5PRHx1a2V2zmR24JBGO2K+wh8IJoiW+zEByTyOhrR0W0tdNzHB4+EpSdtdlc+XrOzuGx5hIJbkHuPevoXUPActnlipUqGzx1PpU1JLVJG9FaKpUd2/wPJrSCV4yisBhsEE9K6x7L7AvkmMlickntW9OEuSykOrVjFOMo77M5qO1ufnGSccA/3vWtofaLiNsrhgSAR35omlFrrI5f3ig1Td4fmzyjxZYypd6MzTLzqsRAHbBqz41gdbzRcZ2nVIuB1PzDNeTxDTksHNvXRndwXKEc1p0Vpqn95+3/whIi8EaLhuRYREg9sgZFS/CWHHgvRgFP8Ax4wk57cCv4mquTqNvuf0pmlS1eSk20j1EOrZVWIJA49KCoAIUYboM98Vi5tS5l6HFUw7clKO2gRSsjl2Y7QQAP61CY8hiCQVAH0PalGm3q92ayc+flpvRfifnN+2xqbQRWYLttKkk+ua579ut5MWSJ/zzBwOhzX794WWVN2Z+LcXTcMYoz3/AMz84JNeviD5cpKKcqD3+lc6EkclDlSCCR68V+0qo46bnzbox5+VbnZeH7291DUoLbeSryDOfXium8AaUX1WybHLTrkjt71g6kppRvp3Kh7Np2Wx9T+GILm1sIoHRj0GR34r6B8FeEI9QgtwRkhQee54zXdRrKKWhx16fNNxTPKpNPvJUV0hJXAyD2r7FtPhdGyAiMksoJHpXsU8Utoni1pOlNWvc+LJ9EvDhkVmLNuyK+2h8L1BEckDBhtAOK5IzfNzPfY9COKgp26SR8Sz6ReSRI4jIKuSQO1faz/DFRuCwg9wCOg9qaldWk9S6mKjUqxTVrJ7HxZ4Xsprf4ieGPMGf9KXt717P4i8Mf2F8TfCDeWQHukAz/npXy/G0Jwy+VR7H6B4fzjWxDhezit+5+p3h7J0qyQYAFunI+lRaDII9KtAcqUiUH8q/ladZxk7H6W8K4y5U731L2q3BS3/ANornjvWFql35jgK33cDjt9K8rF4pNOmtDqw+FaXtXqlqYdzIXbCjOARz1NMmYq6/MDubAHcV5dCvJ6xWtzujHnptS66n5sfta6DPqGrwmLLARAcDgZNfS/xI8JQ+Ir8yvHkqDjPtX9D+G0m8Nyy3PxbiaSp1nOT16H4+P4FunztjYgMSc+tfptD8H45TtjtgeNucV+yRh7ybR8r/aDhTtzeZ+aK+ArzClomDEAjNfqbafA+2Z1Z4gFAwRjrW0cMnZvYwWaQd03e+5+Ylr8LtSu4lfBAZhkkH5q/VpfhLbxRKsduMLg5YenpTw+DjFNv5HPiM2lTjGMV7p+Ur/DPU7Zigt2PJwcfrX6pSfCqzB/1APzZ5HT2orYWUmmlsc8cfCmnUT1f3n5WD4X325SYSWZvzr9Sm+FsKRswtRxwOB+lE8ule1yq+d0koqXVH5Y3Hw0uoVM/2ZgQQcKOuK/UOf4TQToHMAKkgYx0ojhIptMqtnElCM6SvY/Mg/D67mgLLAQNoPfg1+kcfwytI0MSwAkuQeK6quFTioxexlgswppyc1dy/A/Mhfh3emQx+QQr4+Yd6/TEfCm28xT5AOXAAArgeHcXaW521s0k1CFJ2jqrn5oN8Nr5VISJ+eRgenpX6er8L7feitagdsYoo0HCTc1oc8cyUrU6jsz8zYfhndYGYmwoPAHSv02PwvtY1JS3AO880o4GTk4p9C3mkIxcWru+zPzYj+Fs2Plidmbnce9fpnD8M7UgARAZYDBHQ0lhZqaTexE84pwkmr2dvkfnR4f+Gd99ujXymJVzn2Br9SdM+F9rEgK2yh2xkjHaumGFc52T2LxObqU4unG+u58Av8O7pFVEhYg8HrxX6Lf8K5t+Q0IDknHArspxcH77u7nFiM2U5ulax+d9r8OruJCwRiyA8NnA96/RT/hXVtHBIDEMyDPI9Oxrbn5mqbd7mGHzT2UJqET86pPA14kiNKrNIrALgcAHrX6GL8OrVTGTAN+zP1NEnaTb2PTo47lpJq2mvzPzt1T4ZzarYsj25LxLuBI5OK/Rj/hX1msRYxDcEJH4VzSpSnJOOxFLOHSpubS7fefku3wlnCYMLfIxAJB4r9M7nwFb+cw+zAkuScDrXLUpOM7JXE81lVgqjVrbf8E/ObSfhtdJdWTNEQY2PIHSv0ctPh7aptcwqM4wce/WsK9JJWW48JmUpu09/wBD4mT4X3gJYwlkkIOSDz619423g9dyqikMegOMe4rtdVuCutjOVRNtxlpZ6Hwo/wAKYpI/+Pc4dQSAO/evvs+BLXlivzbicemetdUZqGsd+55s4xq0eZPsrf8ABPz+b4QLsDRwOCp4Cjk19/P4It9w+QgZG0j0ohBTd5MjHZpKmkoRu1ZI/Py4+DQaJmeNi4TJBB5r9C08GwqAjqM4Jx61pLEOGiJg1ir8/Q/Nix+Ec/2lP3JKhjkEV+lEHgmzR1ZYwMHmsKknNXitzsw+IjBRU9eU/PpPhC8U/wDqztIyMjrX6KN4Os3fHkjG3A9jXLTo8mj1Vzvp4uXP7ZaI/Olfg+xZsQHLYB45NfomvhC1VmBXAJwMDtRUspKTCOZqVZqOt2fAGnfCForeQ+U2WOCSOTgV+g8XhS08r5IgcsDkjpVKLbu3ruTisxqSnzQirbW7H54TfCN2dkeFgOCCB1zX6GSeEbbehEakkgAjHat1Wap86Wt7nLUg/aRpxfun57f8KcbagEDYIHUdB3zX6GDwpa85jxhSCT2NYQvL94l1BVXGdm9Nz85V+C5IbdbMpJwVx19DX6Kr4ZsTglFOGGMDufWumq3ZLubYaulJzk730PzzT4O+Wu37IctISSR1r9Ej4UtAq4QH5gea4FRTumdazPmvFP7z890+DKbYn8ggK5wAOvfmv0Mj8MWq4zGuQSSB0NS272Wwp5k3GLStb8T89R8GBs3fZskyHIAr9DV8K2eM+WCFfJU10xdkoy2Od49VHKTV2fn2Pg1tWLFuQEDEED+dfoEvhq1KoduNrEA1kqKs6aXzKlnE5pLtrY/P9/gyhVUW3zuUhlIr7/Ph61wCsSjgg+9dcMPazT0ObE45zilJWT/A+AofgwI12tbgZPHHX1r76/sC1ZvnQfKdoA71nPDJLnt1KoY6rSqRjSen5nwWnwaji2hbcKd2CSOtfeR8P27DHljrwfQ1jOEpavY2xOcuhSV43bZ8JxfCEBmX7MqjdgkDqPU193Dw9ZgKdoLbjuB7YqKsJRbptXZy1MfGajU5bW3PhiL4NRyFcWwO1wSMV91Q6HaKCY1Ay3AHrXRKq6bUfkNVZT5Yp3W58QD4PQlxm2AbcABjpmvuY6LZgbggPzEcjpVRlFaR3PPqVko3rR1u9T4Sb4Pxg72tifLfA46190nQrY4bYOTkZ7/Sp5kleex6FfHWpKcep8Gy/B2I7D9nxucnp0zX3TJotoWU4UhiRjHT3rSPLNOxzvG3aUn0uvkfEA+DEYCE2+Uz2HSvuL+zLeNY1KAjkYPfNZNTtZHThMZKpDmWif4HxLD8IIwxbyMgMCRivtgaTaqAdoABIOO+KmUedJtGjzCSvTUr9j4zX4OW7Yxb7SxHbp719nRaXCrKQoB3AkEdK2lTaioxZyrEykpOb2tofGafCSGIKPshJ3licV9qf2Rb/KVUH5xkY4x2qakYykuZDhmE21KDsz4ob4Q2u/cLf5sggY4r7PfSLbc2Y1yCRgdq6VCKja5wrFynOTqxu7M+QIPg7E0HmG3GFwcY796+0dP0qFopMqOScZ7VjCMoyUTpp5q6clUpxuktD4u/4VLagf8AHsuASeR0xX2RPpkKMVCAAEg46mmtryKnmE3TjUkrXbuj42i+E1rkgW2WyTuA64r69j02FAzbQAxBINOnQvVsuxhPHOVNqPw3ufJ8HwmhUIRbg5zxjrX1wNOt0YsAAMEgjtmpna6bZU6kmlK2mlz5htvhVbQoX+zjlSMEDnPWvqVrODgYBPAGPeto0UleT1JVSdSzp7nzAvwytY2CC2B5BGB1r6e+xRDklRjGCO1E6alH39TOtjnJ2glzI+Yn+GVswAktxkkHGOvtX041rE+PlB2sAWPf6VnGKirrXyOv63NtSqbs8Q0r4Z262sYWADlgAa+j9PtYREMEAcZJ7fWpw9P945WPNlWai4ptN6feeCr8NrdigNucqD2GK+jjbxq4YY3KRn3Fb1LzlodUqShCMm9tD5nb4a2qOQLfLFOuBX0ZNBGsgBHy8cDtS5JRXO1rsLEUk5RjzWS1Pnab4b248o+SvUAHHX617/cRRK0GAMM2QT+lXRinotjfGSVGKu7t9O/zPmef4ZWSyAvADk8dK9+uo0abZxzk5A6VanGUeZKyMo03LW92eIWfw0sHRCkACht2f7pr3+xhTyyCB1xgVkp2dktGKvSck5J+8eHXHw7tI08x4gQvOMcivcdQQGJgq4ypBNdUY80PZp2QnGHNFSd5HwZ8QvCEMEEgjAznt2r0z4lIGif5sncQcjpTjSV9tjuhi1GPK+ux+cfiew8m5c7zwTjjsK3fGahLx8ANmU5z2FcsqXLJ3R9HRkpU4tK9j5MjcsfLByMkknse1UIgTkDhmwTn6VoqzTXKeViIKVNezeptAEbgXIC4Jz3qvEGIHUjjcD3FddOo+VXZw1lzzs7XHSFmTcj5UZGCP5UwBkKnadgbjNaOMrNpbGdCNONS8pWbIZYyxUbyMYHHc96mCnLu2eSowO1KKikm3Y0UKsJc61j3M6S2mGGEhLFiMdj6VpogZw25vlBOB0z70nKUY3aPSbVVJJGQttMSzsx5UgitRowHwCxIbcR6g1MpymmnsZui1PkTMcwmQlnAUIDgd6vXETruZFIGCdpPA9q0dmrI5JxnTk1PZHKXTBJCDncMc+tMuUZpcrwcAkHoK53KTXMy6EYPrqVyzDaCw5OPoPekQMSpIB3ODj0xWibadztq1k3GMehIMHYu4+YpAAH8qdCjgkFiWLEgjt7VKmlrbUMVQqSajHqddoEh3Rc5IkII9AD3qLR3Mc+5hjA3An+VaKLT5ww+I95xno7bn178NZQZYPMJ25Ref6V3P7MHg6bxZq8dxcITp1lMpx6sPT/9VfMcUcY4XL6fv6yfS57HDXCOIxj9q3aCejtufbHw68BR6nZw3Oo2paJ8EBxxjtX0zo+mpYWUUEXAQAEfTrX8/wCe+JuMrSapR5V6n6nh+FcNSVmrt9TFsvCWjacqeXZRqVYDIUc118iMdo5PGc+lfn+M4hxFeXNObuerhcuoqShSS0MhtNtlBWOJFHso4FaTRlVVmJ45PvivFr1armuZ6np1sI1JQ0MkaXbP8rIBnOAP4fetUHOGJ4ZQSPUe1Ko601dS1HXp0lJU3uc9N4c0y6jcTWyNlQDuUfnXTBPm9NwUkEdBWtDEVIyT5mclTLotO61R4V4p+DPhfW49yWEccwyVcf1r3B1yD8uNxA59K+lwvFmNw8VGLPIxnD1CTUqa16nwVqnwRi06eVRAGVWJDAfe+lfa2raXFcQOWYGRFBHrX3/DniXOrJU68ba9z47PeDq0G6lKXu27Hwb/AMKogUf8e+BnsORX1NdR28JVCAGBJbI61+5YerSxCU6eq7n5dLFOlL2Mk+bY+ZYPhTbLIv7j90cdR/Kvos39qiIuRtjOAeODXXUwrcrS2OuGKnGKa3PHP+FaWscAygARcKBjivTNV12zigSKJwbhnwFHvXFiKkIpt7LVjw1OtVqKEfivZHmtn8ObC5njgCKXOCFx0r6E8HaMkccd3MMyTncWavy3O/EGjhb0qUbv1P0bKuCq02niJ69rGJoPwf8AD1tGj3dokjjnLAcH2+le08qFRM46DHevy/NfETGV42g+U+3wnDlKlq1dnN2Hg/RbVAItOiG1cKSo4rrlDFTkndgZx/OvkcRn2JrTVTnZ6iy2jCFox2/ExB4e05UYLaRjK5JwOtdKoKj1rgp5nXm01LUX9m0m22tGcsfC+kyKEuLNGGTgbRiuryrEdPnAAx2r0aWYYmFT2nPZ9jmeV0qkbuPl6nn938PdAuPv2ajByCBXfM2SoLMVwRXdhOIsbQd6ctDmq5BRm1GpbmueEan8NbKNgUhHlk5GQK9rkiWZPnBx0+lfdZZ4l4mlUXtVzJnzOa8DRceeErO/Y8F/4QC03IqQDjHBxzXswxA4RwCMgEiv2Hhzi3D4uK6SPzbNuH6+HnZSvbdnlUPgC2O4tGoHQHHSvYI1iLE5BHBC+lfa0YpWl0PmI0m5csb3e54J4mk8I+AoLe412MiG4lCZXHOemK4H9rFtujaEqZVpNRiDY68sMflXNiZxeHqVnujbhig8TnFPC/Zelz3XSPCXh3WrOK/s4wI7hVdCwHAPStT4ZE/8Irpa5JC2iHPrx0r+b8b4gY2bcqaskf0ZPgrC0cR7OWq7sbH8PdIV8eUAxOSCBya9HUnOSp2kDr2ry/8AiI2Ok7LRIzqcLYSDU0tbnAHwDpY2kRg5YDBA5+leh7WIBB+82AaT8R8wUkkrChwnhnGU7aHlcvgyxSZYlgHGRx1r0VgPtIyxO0jGe9fo3CXEeIxk06r8z4XifJ4YaKjS0sedxeDLFAWaEc5IHr7V3906RwyO2SFUkDuK/YVTVo23PyipjKqhJz0ijx/SJ/BeoajPosN6janAw3Rgfdr5u+HEzv8AHHxOpclFnUKMdMk5xXxHiLxDPKXGNNXv8rH6TwHwlSzDAvH1Oultz7Hk8CWEygKi7GUYIHevQLKVRGisDu3KBn9K/G14k41q2lj7L/U3COqo01tqfPut/BFNSJKXIAYEBMda+kIxhiCpLZ3EmtpeIONUeZHdHgzCyS5no+h8Kav+zJMsM9wNTyIo2cg9+M4Br7U8RBI9Jv2UfL5DEitsF4hY2vWjTtZXPOzfhnC06TUFqkfjrrWiHRb2ayyCYpSAR3rZ8d3X/FSagqMwH2kg/nX75lc5VYqc2fk9TlpRVGD11PAvHMC/b/DmTlpNViXjv8wpPHUhbVvDSqCT/aUYJ9eRmseJKcnl06ilrqj6Xw7w6lm0FFaq2p+3XwmiJ8G6Mc8/Y4yfXGBVj4WDHg7RxzlbCPIH0FfxvWoNyu3onuf0DjJKFWaerPQ2i3vnIyB+VIMAE5Jznr0xWVakrOD69TiSaSad2yvIuwEMwIAJ4qZyh5OO351nHDRnNWewoVJU06s1qfmJ+27ESbRtwO5AAPTFSftslDcW7LyUiJOO/pX754d0ZQptrbsfjHEFCFTFOUm0z8wIYS1ygJySwyfWr1sv71XVsgyEAntX626dlotDwlhJU2+Z+j/Q9p+G9oP7Us1LZXeCR3OD2rpfg9pdzrfifTNJskLTTyLhh/Dz3rzMZiKdOPNJ2SOrKlKtWlSpxdnb7+p+lfwi0q5v3h8hC1vkZPZSO1fWPww8EWvhbQra38vEroGcnqT39a+IzTxAhCKjh4X6b/8AAPpqfCFnKNSV3a+h02l6Dbw20e4AuSDj04711q2pXLK2CAMgV4FTxGxSSXJ+J6FPgrDzp81R2ehzs+kWzMGEfzZwcV0WDkMMBtygj1561lLxExbtyrzOmrwbQnFtr8Dh/wCyoAD+7xwc12E8KEFV6oc5r1cH4l1ZVE5x09f+AfPY3guj7Hkpzs9tu58EfGe1it/iZ4MK8bLpOB2Hc17F8Tvhvf654p0DxBZ/csr2MspHGB1r3+IeNaGNyyVJqzOngTh+WX4qSqSve+6Pc7CR49Es2By3lKaTb9n061h3YdIEBDd+Oa/nbGxvFzT0/M/TIU3eTnv0MWeVyxyx4JLY70pRmcsMAbsA187iaTlZrc9FU5QUal9/0M95PunJ4BIJ6ipivQkAbtwJNdWBw94pLqzjxVaUUpNaGJ9jS5uCpXLMwHNdBpMImujkYCkkEd6/oHwxk4rln3PxDj6vKMlVjHd7GjaaBbwJECuGbBz6VvOdvlruPyN0Pev3OnUbg3HfofnXI68k6isnozIFigHlsij5iPc1baUkFlz94nJ/hNdcYSlq1qzmrUo0k4xd0Z8tnGQEwOG6nufSrZA2hTzggjPvWTiptJbIKdZW5ZPfQyo9NiO/5RjJOfXjk1ojcDu5CnAwe3rSr0G487ZpQa51SavZ6GK+mwKfujOThR0HpWpKgByBzgfjVwppx5ovUc3HWM9jG+yRCNhtAIx17VoMwGAMbyRxUyqJyujPB1f3fJN7nK3OiRoxljTIYgketdFIGEZ3MeQcZ6DFNucpWbB4eg2lC/M/0OWSzQspwAAcEY6Vk61rdto00ccsm5pfuoOpPbisZJQpuTejPSp4dSqRTTbNlraEPgKD0b3PrVG0vZZoY5GUjdgj/aHvXweb8eYTCxvN8z8j77L+D8RiYqCVupZNqh2ebgL5gGB2piMxZgXPUZzXxOJ8YIKXNSpfj/wD1cL4bqpJuvPReX/BNSw0+3dt7DKBxkgdM1taYii3UqASMjjvXA/FbEVE5U4W+f8AwDqqeHOFUklJten/AASdYrdAFAIAxjA5NWo0VzkjgYyB3rb/AIihiorlUF9//AOel4fYdyTUmuxE6QsC4HcnHc0kq/vRGMDGcntiu6l4pV4tJ07/AD/4AS8O6FROpGXK1o9BZ/KMaAE4zgiqssQLghjgYJx0NepgfFDDyqctWFnfv/wDyn4f1FTtCenp/wAEFjX7zY4J59KgR/nwCQnIAPev0jKuIsNilywep8ZmuV16M3F7d/Ql8tJCc5AI4xU0Q25zgk5I9q95TnZKL3PkpR5uact00cTeW4Fwd3QcgnvU96P9JZM5DE4Hp6UUrRi0evimqcYtLfcrwwAEcYXPQ1lz65b28osoyz3RwrKpHH1rmxGMpUot1WkTg8vrVaidJXXY6Wzt4zMhH30fGT2qKzd32nkfLk47Zr4DMOOsJRiuR3+Z9xguCMTUgqLdlvsaUnlK5UsMDgZ6k1XZCAW6ndyT3r5LHeKV5WjT/H/gH1cfDCnKko+0/D/glfdEWXJJAIBA707aN6k8Hg4HbPSvEr+K9eD5XT38/wDgEUfD/CqMVObfL5Em6BVRihAJIBNRLl9o3ABDnB71zVfFjEOVp019/wDwD0KXA9BJyi/wJYnjGRtJI4ye1KibQQfvEkAjt710YXxdrt+9T09f+AKHh1ScVeWr8tgEoVGUgjJ6+tV1CPKUbq3BJ7V7K8XouSU6enr/AMA8ep4S1KkHGnVsvT/gkRndcMvO4EAH+KpZYCSNrggIfl/wr6DBeJGCrSUZq1/M+bx/AGKoU3FO9vkRxTY5PUNyKqmQRqTkfO+CPTFffYfGUq1nTdz5WODeF/d1VdsuLMhOQoALgY9q+Xv2hPiV4o+GGh6dr+g7Gja7CzLIDhVJGT+VdtWjKMHUT2RrkkYV6yoxet/w7H1I27gAcliPrmvNfh14uPi/w3pustIGe8t1c+xxX5XivFbD0Jum6Tb23/4B+jz8M6k586qemn/BO/MLLsCZABLZ/wAKmEkTrnABxjjqK4qXi5QcbTp3fr/wDHHeG03KMefS/YaiSYDcnDdT3q3GN5Bz856E9qdXxcw1N39np6/8ApeGs5pJztZ9v+CM8thk4BbnA9TTzJtYEkk7sZHc19Fw5xtTx8+WEbHzHEPClTCNPmurlYq/mR4zk5JB7VamZSzEEndkHHUV95GS9nZLU+Wp0JTq819NV8zOBlIAOdpJOf6V86eLvizrOlfFTSfBFhsazuoTJMT94ew/z1rmzzH08DReJrbM9fJciq49qjResXq+x9DFJcl34DtwfTHWoo5jcwxPkjIHDds1+XYrxewySSh17/8AAPvsL4YVKcHCVRN+n/BJh8xKFiMJkZ71XRlU7SCWIGMdaheL+HqWag737/8AAOfE+GuIilaenp/wS7DHNuyRwOBjuamUqxUJuBySDWcPFjDzkmo6+pjPw4mkuad/kQrEd2CMtkbie9SW7sS5IJGT1PSv0LJuIVj6SnBW9T4/NMueEq+ylq+6KnlyLIFXBGR9KszXEcKFy21QCW9B719Cnf3LXZ5tGcKiV9Olut/MqSFhgBsgMCSe1V7PVLa5Enk5bJIz2JHavLxuc4XDNOo9TsocN4jETVLlZa2TMVyM5PI9eKeJ5SFBz3yK+IzHxMwdCVoq/bU+4w/AdepFRnKyXkQCFipPAIbBz2GKmDOedvYbj6etfO43xljzPkp/j/wDry/wrhFrmqa9NOn3lXy8BeuNxHNTvubarRk4JIA7D1ryn4wVYyvCl+P/AAD0ZeGlJqUYz0ZWVQ4ZTNk7hkGlZJA64XOFB471VXxjqdaW3n/wDOl4VU4p8tTX0/4Iq2+F3bwSH3A9x7UN5hf7hXocnvXqYTxcpVH+8p2+f/APNxvhyrqUZX/r1JI4zhBz8jYwO1NiM0bKuwiPIJI7exr6/LuPsJinzRdvU+brcD18OnZ3jv6CXX7p1BJORziqV3LKXyf4s43V97g1CrFOEj5SrF0Kqil73YuwTlI2wxG3ge1Z8BZioCjAUAkd66PZptyT2/EmvWjUSUVqi7JJ8zMxPmZAA/xqOPGDkdGAyeuKmUrNNvdEYbDVeRp99BFi3KxySSeSe4pxDIgZgRk5Ge9VGDb916ETSt7Nq8mJEys+1iCQAQB2FVomd3JQ429AO2auNPkV4vcwqTptKD1a39TXJiUA7STuHXsKiVZF8sHJYdz3rOErpu2mxrRhCL1W+vp5EpkhIyFJAOSfU+lVhFcO6x4CqXOT/dHr9a0pxlGKT2RrSqRnLmS17dyeNlUcRAjGcnt6io2hnVOcgbskA9KhJSlytHHGKU007bpo2bIiVS2AASAwHf1qnZyrHiPIO3AB9ale69djvThBKKf9dDaYgHaFy23Iz3poKAM6sMHAAPY0U4ySsu5vOShZS2KE8ihwTn5FwR6VXumVpiPVACD0Ga6d4cq0VzzU06iUld9CC5fcoOeBkZ/u0xypVQv3QQSB3qKSXMlHZnU8POWjfu/eZ8xO9WZvu8ZPfnimzMoGBjvk+lbUXFJqxFNTnLmva2ho2Umdy9m4BFVtPkSQOEXDbsH2z1xXFGlGMrJ6m1VxnJvmu7Fm/Qm3Yqw5yTz0FPuXj8kK4AxnB9a6qFRp69TkxOCbh7RT8vvPmL4jwkxTDkjaST/WtP4kxhoZjk5UMSfbsK7+RuPK/vO3AUXTkoQ1eh+dnjNCtzMm3jzicnv61f8AHjeVNKQpJbJAx0xXn4ui5RcUz38Ri6tKDio7HyzB4ckLNuVlG8AEfrmvoeLQIVVFMY2L9OSK7p4OPKmmfPYXMqlR3nH5HgP9iuqtnn5yAR3+te63Xh9IwZRGBuBA9/eurC0El5nFjM0l7RRnC2vc8NOmEDy+BkjAIr1uXSLdCfNUkDDAgdKiMEm4rc6pZtGNNxcb6O3keR/2OAMBQSSCSOxr1aLToGxj74JAI9Kr2cVK0dzOEa06MX28jypNGd3AB4BIwP1r2KDTYI8KApJyST2+tS4RS5JM2o46cFzTVrrRHjx0Vgw2g8Ek8dea9o/s21IcFAS5BUDpiuikqbdm9OpdbGS5Lta6Wf8AmeG3ehytA2Ac7hgmva73SoPJ2oQD2x71PJSlLlTOetmE6Vk1e/8AWx8zLocziRWiHmDIXHevfhosCkSlQSOgPeuadJRipPU2w+ZzVSVOMT58OgyKcGLPO0EV7p/ZUPmZIAAYHjt710ww6bt1OTF5xFQSmtH2PD7fw7MrAhCGJBJIr3xNLhH8IION30oxGHildal4DPrOy3R4sNHntiu3G99qgY65r1+HTEvfEejWQXK3F0gIA7A189nuPWDwrqtn2HCOBq5pjFTasr773P0+/ZW8EReHPB2mXEqDz7mMSMR6kA17t8NNMjsfDOl26pgLbIPpwMCv40zfMquMxLrVHuf0di6tOK+qRXuwVj01JGAwMdQR71WBCbDyHOcEdq+drySi2kSqMeRQW6/UuiTB69uc1n7gI2fJOQePXHesaWH50mxcihByl0sed/Ev4l2PgfTDc7PMuTkrGT97618b/tEa3Jca4bVpSUg3KuPc81+ucG8CxxS9tVfpofnmbcWyhVaS91DbH9taWHXo7DXfDogspbgqkobqM96+EfHb20lm033XhcYI7nt/9evr848LKCpupRm4u3b/AIJy5Bx86uIWHr09G976/kfvH4X8TWfirSLXVLSTdHNFuCjsOwr5h/ZH1641P4faak8pLQx7ASc4A6V+F4vDToVXQnut2fsuPwdOk421i1dH187ADOSeFIB756VE043EMMsACMd65YySSTPGqzaqRjLVMaWD7gVGCMH8qhkkWJdzHJ4JJHOM9KxcE2uUvFqcklFXPn34j3smj3O5GIWTkE1zX7Q2oNaaOLlCSRnBFftvh1m9SUvZSeh+O8RZNThXdWa1Z4/f+OxFI6tKQA3y89a+Nde8a3A89vOIRWPXtX7tPEKcVLsfI1IRg5Qhuz7g+Hl6fF/iCNzKXhtnxkdPcVT/AGUoBe6Yl++T58u4HH0r8G434mk5PD03r1P2jhzhuGGpQrS1k9T7o0q0ENvGgztCbSD2rWtkxjJ4cHA9Pevw7EXk1VlufX4nFSUlFIcY1GAGPykED1qy8QODkjAwCK1inUptLocrnKpNKb8gM8MYEkzgIM59q4fx3q/9l6FdXKsFKqwB9eK3yjJpVp+z6s4s2xyoRvHXXY4fx3+0F4Y8DT+Tf2s8sUbgM8KkgDPfrXxt4k8S2er/AGiO62uj7lYEDmv3PI/Cym6XtJT19P8Agn5fjuPpwqtKnzej2/A+7vh98XvCfxHhFxoF4PlXLRsRu96/MX9nrXH8M/GCXSbOUpYX8jNsHTJ9Pwr4PjXg+WWzUnrF9T9X4XzWGZ4NypvllHo9fxP2VG141IBO2Q8VVtpg9vBIrEsygkn6d6+NglTfM1r2OyvhYWU2x0inYVHGeATTJpmJZs/Nxwe3NcM5Sk7pjnBNXWuhk3SZQOhyVyWJ61cnVWTccj5SD717OVZpKhWVt0zyM2y2OIoJPRdTPsp1K5YgbCMk9yPSvKbrxClne3EEkjEeYVA9B2r+quHszjiMNFT3Z/PeZZXUo1m4O8b/AHHkP7Uz/b7bRbZXw8t9GAR255NcB+0VrxuH8OpFIAX1GIHHTGR/k17+dUFDK6km/X0Ofw6VR8SQp21fX07n258OIVtvC2lq2CRbr+PA4qt8PWd/C2lEMTugTOfpX8W4qUnVagz+pcylGVWUm7STPSYnUjdjq2OKpRMyjLEBiOg7+tctSzSaepy+zgkpQ+ZbnZEZQBghevr6VXlIeReSCeQPQVVBNqyHUouLUkzImk2zglMbhkD0xVK7uCtxwwPHT1r9a8M4ScnGTPynjmrKDcmrmneSxG2kOM/Ick9CD61j3lwospQDhvKYgfyzX75gYTc4pI/Ic0xUYwlXnG+lreZ8PfCvbcfHLxS5kI3zqCoHoeoqP4KqZfjV4ty24q5IA7HPOPwr8k8bpt4iEX2P3nwpqqfD7aWt9j9H7RVEabEAYAHJ7Uy1AAU7mwUI56H6V+DU4RWqZ9xRnpFPRo044o+A5JB5B96jaTpjOOCT71muZys9ux0VIuWiVn3MzxAkcWm3aHGDauM+hIqn4iLf2LqDkk/6O5IHevocqjy1o2dtTws4Tlh2n95+S/xMhgh8T3ckeOJiSPXB6VhfESbf4g1FS7F/PbJPfmv6hyZKGHS6H4xON6rs9Ujxnxk9qdY8LvGoEx1eAY7feHB9jXM+IJJG8TeGIpN2P7XiBB6EbhXDxbUlHLai8nqe1wBhIf2pCcXr1P37+GEMA8IaQSwDGxjJHfoKq/DXa3hHR2PB+woMHtwOlfydCk5ST3fU/bMfalJy7s9KSO3PcHr9Kph1ClOeSeKMRXUWm1c48OnKOrsmTLHbKxGCBxk+1VWkyrYBHzgg+o4p0JKdRKK2NqPs+WSW76n5rftqJa/a7ZXC7UhIyegrI/bYdzfxAMT+6G0HsR1r9/8AD2nBUVKS1PxriKLlXlTevofnRbC1S9IKfuBztPQUtzGYrNpRg7YiSR61+mwk46dDwatKTSjJb6XPvj9hHwqNf8aanrdxGDb2rBIi3QEck/5Fe5/8E9NDNv4R/tGTBe8mdt3cc1/PfH+dVK2L9hF2S/E/bMoyiGEwCcY3ckrs/Ta0jWJEjPKoBz61ovEGTOSOAT7Gvj4OSuluaqLmvefoNXoSCQA3IPemj5FBB3LjI/xrXDRk1zrV7GEvcjZbdhSDk7sk5OD7VHJOQPMkzhl59a3eHu+W+p2xqKNJTT0W5A8YXcykYIwfrXgfxD+LmreDDJcW/hia4somBeVMHA7nFelS4fxM5+7DTyOCWOoVmoRaT6HtpYBsyqCQcjd614P8Pfjj4Z+I0JSxZo72BgssEh+ZG9+n8q8nE4GrTTU1ax1wjUi2qi07nrd/MJioGMDIYisuWUPICpJJyMDpn1r57EvnXMtD06UIRjq9SORgq7ASOAMCqkzFuRx8pBzXDToyvyyFRnaCu9ew59u0bmJKHH1qGOMM2S24ZwCa6nzU53huiKlaSk00bGlQ7FD9CxBGKtWvybUdeevHpX754aUvaUrz0TZ+Kcc4mLxaiuhfd9wYliCOCfSow6FSWYna4Jz3PFft0bUop9D87h+9bktGr69xC24YcZTbjJ70xlZWUscdeneqgnJ82xyzm/aKNTZrQjQ8FsYAYA+1NZwsYUZ+bOSO1KpTlOeuh0e2cab7rqEhBHy9yAAe9UN+4sNxAxxjtV+ycEm3oYUMQ3NQd32+ZM8mDtPHU4P61V3sCQeRwMnt61DaumkXi6LTdRbt2IyTuUlcMD17Ypjt93DE8nk9q6JSk46GTw0ac4w3638zK1jVYNI0u6vbmQLDaoWZm714D+0X4gn07w/Z6VaORNqt6sR2nkAkdKwlGKoyrtWSR6GWZdUxOKjhYvd6vshnhE3vjHUrzxJf5+xvcEWyE8KgPBH1r1PwVpMVj4X0yGFNoW2AyB3Ir+W+N+L8RiqrhT0gn3P6GynJaWEoqlBarqaGxodoUDCkYJ9K1HUMQFGSOeO2K/MKkpSWvQ+ooNzVo7lW35dSygEkDI9B2NXo0CKWfnnINaU7pKT2OKvBwe+hoLq9lYQZurlI0BILMeFriNV8Pab4hzBqcbSQMQNoJHJr9ByDgrEYqm5Rdos+Lzfi+lTrJTT6bHa2XjDwvc3BtrXWbeScsMqGHNfFPxm+CS+ENKfxj4Dv7i1vbHMjxxsfmx9Sa+0/4hTiIw9rTlzNdLHLgOPMDXqKhVvF3VmfdplimJdJARyAR2r50/Z68eXfjjwfYS30gbUIl2S47FcZ/OvyzMqcsNUdGS1T2P0GdGSs4fC9T6FQtIcgEJkqR6iryQhUwOi8DHUVwwoym1KKMpS96yKkyRojIowwGeO1XvKWQhmwdvOT3r0cvlUw8/aQdpHBWwMKtOVKWxmxOSobGRyPpTHfy5wikkckgd6/ojg3iOWJpqM1rsfh/E2TyoVLp2ieX/EzxPb+C9CutUcgzuCsa9yTwK+e/j34ibUPiR4P8GRsWgDrPKp6Hk4r9DzvMYYHCvFVldLZeZ5HCGQPM8Q1KXLFb6dEeu/DaxvJ7BNV1MFr+9YuxPYMOBXeaNGlrYWkUa/6tFAA78Cv5K4l4rq4utJzenTsf0Pl2X0qFFQoL3UbUBKSNkkIMEY6jHampuJ5PLPyK+Lq1ZNK0T1aFKMm5LoXmwTzkMWByehpkjFVBOTtyee9b0tXroEqqVJQkMkO5mK4ztxgf0rj/EcOq31v5Gk3n2a4OT5o5246Y6V7uXcM18RO1FaHHjs8w9CPJJ2Z1uUyoxnJ5X1z618H/E/Tf2gPAlpceKfD3jR7+1tSXkt5V7e//wCqvdreHWYKnzwhddTw6HGWWuSoyqLmZ94gkN97OMcHuP8A61fNP7Pnxpl+KGik6hEses2LiK4iB+44xmvjcXh3h6nJVVn27H19CMnDlUj6b82Eg4UjtzVSQeZtABG08mvMxFJNpTfocuEq2k4z0JmniO35TgkAEe1VMgkoOTuHHtWNKTUORamuLUOa0XuQ3SoCsij/AJaAHHc0k7KVwASV5Ar7PhriOrQrJxfu32ufIZ/kdKpRbW66ngv7RWh23iL4Y6/bmMMYYvMBHX/PrXpPirTl1bw7rFgQG+02Uq4PQ8V/WmQY+FakozWj0Z+AYqCw1d1oP3ovY+bf2RfEY1XwNDYO582wneLB6gKcc/hXjf7LWpPoXjvxr4SuHKta6mZFU9SGODj8q/mDxJyJ4PMJcuz1R/UGUY/63gac4vdbf5n6TQPGisZMF92AR+lUxIjMGwQCQAfWvziEpwlea0R6FZpRUY79TcS7jxwmG7Z61mq7MoU4HU8UUtHdoVPlb5k9WW5bpFZSEwME4HeqUq5RSD83IP4195wTmUqGKjzbN/cfGcW4KdWhKCLpvoAPuYKpuz6CsC9k8u2uJAcCKJuD9K/qzLqqq000fzxUk6c5RkrI+KotR/t79pXUJSikabZ7AR2yeTWT8EojrPxb8c642X8q/aHee+D/AEr8u8ace4uGEWyR/QPhrhYQwPt3Gzm/yPvyKYGONCgACAAioYFwiIOQOAwr+Xp04e0TT1P0Spy8mq06k8W5ZUk4yr96tEFWHlMSFALZronTco2prVsyjRjH3W2k+hK1wixYQELkms65cqmM5YEkj1r3uH8FUniI0Yaps8jN69OlRbRaW+jWMZQ4HB96888a68vhzw5fazJJtFnbO2D644r+tOHcpVOCpx3P5xzvF81bmS303OO8U+Om13xSng7RciG1Ae7lA+6D/D9a8q/Z/t5tYt9Q8W3kjtNrWoSS5ccgdAB7cV8Nx1x4sHfDYd69WfpnCXBUKKVavrJ2drWt5n1NpItrK3iijQ7IwAAO3vUe5IwQAcZGQPWv52x+cVq9Zyk9z9SoYSMeVx3Rstdop+VGHfrWMhaUqwDAh+AfevJ9tyySe5vTw0pz902o9QBAB7klQe9YNyXWJgCFkdTgjsa7cJGeImoUo63OXFVqdC8pOyR0Casq4XChdpySR+VfKXj/AOH3jzxAJrjR/H95a3O5miSPAVcdAa/QsN4d46rSTjpc+Snxpg4VFGcrH1YNUVvmwMgnBHpX5geA/jf8R/A3xGi+HnxNnM6XEqxwXJ6Mc8Zr5bPeGMXl6Trx0ufU5fmVLFUnKjJNeR+oP29vlfAAORj+tYGnXK39pDMGG14wyk9+K+ZpYhRlz3+RtWqRbSktehvS6jIoG0Z4Ocd6oP0BUHO7gnt6V0KsvZJ3I+rxm3Ff1che4Lum8kgtxntmmyJlAeSASTntX3nC3GFXCVI073R8rnXD9GvTae6IY5nSRVzhWyCPXFREbjvyQGycDoK/p/J8zhiKKmtD8GzLLnhq9pO6v6E/2pkR2C5PYHvVdyFB2knaCeP6V6yp3mkzzk5ql7RStqWGv5pFUF2KBTgHsKqA4QkEAE4HtWr5YP2cdyIKpNqtNf8ABLaTMm11HGOffHTNVg7vHGzsRjqo70pU05WfQvC13Km6qW72L8d67ctITnjg5xVBXDcggbsYx24pypuyJoybk3029C558hIO9htBJOevtVIyCMkrgEDJJ70vZrluOOIjH3Y6mk1yxVVWRgxyOT0rJ8wBsn+Igg+laU6cVrfc1eKjXUozjotjVE7Md6sepAHrVFG2gneflIII7UvZNK/YPrEZLlS9/T5F43U20fOc4PPpVUyLIFKkkEYPtWkbOV33KrVEpJtatW+ZIssrPtMhJYDDZ6e1UTnfwchWBI9M0q9NzTafyOLD49N2lGyLizOp5Y7TgHNU2mJ+oGAfYelVUouUE10OinXgpcq0TJQ+7IwcFuc/XpUeSpJUEHdgA/0rFztPux1sMqcUlLV6GrZuVfABGMAEd6qWkzqepPygn2Nc/sndpsqdOcGpS2tY2Lk7o9hYkseRgVTmmyoYAnaxJropRt78TSFOKpKC73PF/iEqi0mUk7sE59cU7x2PMtrhjkEqeB2ruou0oylux4WM6k3GnsurPzz+IhY3tyPlwhKgj1NWPiKNstw5OQ0mMjqaeKkoRSlqz2adOc4ySlrcsW8SfL0A9B/Wm6fCZPm3HzAoAPrXiLFSirz0OTEYGMKPNFaXv95Q1FyItu7D4IGO1SavBLjdk8EjA6Cu6ji6jfMl7tjwqdGlJpydptnmGo3vlK4BYhODjqfrVbVbfEg2dWyGPrWTxDhqma1aLqtULcr7lFNTKBGjJOTlie1ZS2ku7AQjZyR6+9cksVJtzZ62CU4y5HLpY2hq7giUsxTaOD2rDnhcqAgxjJyfXFczzCUm4vY9WhlqkrzldxOiXWdjo24k7QMGuHkEqqPMZs5GCD69KKeMqpOLE8BTmord9PTqdjda42MM5AwAuD6djXmV7cTI/G4qoyfQmulYipKCkmefiMn5aqTjdfkdv/wke2JyXIC45J6H0rylryQEJklSxDDPSonmcrpsqnlcXB0Xo77npLeIFOCzAMwAJHbPrXlxvZs9TgsQPwrVY5pp9WVSyigny1I7aHq8euxgKWlJIOCR6dq8vWeXg9BjdgdsdazeOlKNl0OpZNSpVGktX2PbvhpMda+Jej224sq3A4/uiqn7NsT3/wAU7GTONjoQD9a/MfEzNZRwfK92frPhXl9OlUqVUtkz91/DKG20awRc7RboAPoKuaRHtsLcA5+QAA9sCv56pydr7H3NaEJ8zas/8zZXHBznd0A7e9M3IcNzkEAkds1lOcX8O1xxpezglHoitduY0dyxxGhJA75qlqUgFnO5Y/IjHPpx0owlB1KqpdL7nnYjGONCatuflR8fdelXxReIshAWVvy9q85+P98X8WX+XKos7ZP41/VHC1NQw8V2PxWphXUqSmlu9T5+8VX0k9lK0jHDksff2qhcKt9F5BJMZYAjsa+hdZTTUtjmoU6ka0Ulqmfpb+x74+8KaT4Kt4NR1uCG6RypjkYDrjFfmZa2S2OPsxZMHGVJAr8gznw+nXryqxlo3c/YKnHtKvThQqwcXBW3/E/oIX4i+CWG7/hJLRnZdx2yDj0AGa/n/F1eROrw306Sqedrt+XWvLl4a14faR51Hi/DKXuyd/8AI/f5vH/hNxg6/akFlAYSLxn1r8DY77UCVI1K4CDJcB2wR+dZf8QvrTSamkjownGeGm3y3Xc/VP8AaM8TaReeGG+wahFK7ZwEYHtX5ktrmom3SJ76Z4QpADsTivpeG+C6uCqOc5XPkuIM1WJm40ehgX8kl3OUJK+ZJggnrzSRlZJ7fjcWulJB781+g4/93Tu+x5WQYeNeqrb3V/kfrx+zVoQ07wVpTpwZIFIJ6mut+AqSnwjpJcY2WyAH8BX8sZrXdSu3UfU/oHGU5NJJWSSR9GxMFjjBz0wR65pkMgC7CM/MMV4tSnGM2mtzy3CcoqV9EWJJGIRzwBkAZ6/WkKk43uDj9a29i0lKxLm5StHSx4J+0BqJsvCM5DYOCMDvxXKftOM//CKbAxUZycd8V+j8CYZyrJ1HsfAcYZkkrxWqPzfm112mbExKkndnqOa4iVnMzgE7fMJJPbPSv6NhTfsbQZ+QqUo1nNa36HWfC3UWHxo0MgsQ82CR254zVL4TIT8XNBcMQfPUc9/avy7xSpRlgb32P27wqqRjOorWsj92dIlJsbXLZBjHXuaNFCrptru6mJQPY4r+f4KMYu+59dzVKsmlqjQMQGOclgQc+mafISdqgkYHNOnHnk0tjVOSUVs/MrSQBgAHPztzjtVwBXjIBO7ack9qjDzTqXSua4yEpxcG7Kx8V/FLV10jxJIEkKBnxuHXGa87/aauxY+Igyv90gEjqPp9a/orgBSdBJ6n4vmtKMZyhJWWp4j8VvEH9q6t4Wt/OIYapGMH+Lkc14rqWuy6j4s8JoZSQdVjIJ7EEcV9hxdinTy2cGtLGfhhhEs7dRxvbY/bb4exH/hF9IQk/wDHsmMfStX4eqD4Z0wg8C3jIJ9hX8gTgnp1Z+3YyrGdacoKzT27nStFsYlVJAUAEd6tsW+6c4yTn0qsNTcU4yd2ctXmvGK+1pbsUCgGGfJPYirBIwTzncOvarhRsk0tEb16KUlCbPP9YmjgulVn5GC2f6VxPxI1ZdLvI8kqDzkHpmv3Hw2w7t7z6n4zxs1UnaC7nU3F2g0+chyGaGQjPbivGP8AhMQLGYmbgxnDE9MD+n0r9voUr1E2+p+UZpTqOg00eXfAuMTfF/xXIMFhdAEj0JPH5Vl/s2XY1L4l+K7mMjBmBJPBzmvxPxnqxeKit7H774WKMMmjOStr+J+lMMXyqCQeOPanwD5V5xk5Ar8TnQUkpR0Z90pxqRstxzR7dmCduSWp4yRycYPT8aU6MuZJs65JuLcjmvFB/wCJPflT1t2AxTfFZVNA1EEYKWsjD06V6uV4VqvG/c+Xzmu44az6H48ePQP+Eg1EHIdbtxk/XmovG0wfXNRYscmVj1+9z0r+qMmpOVCMWfjeKrRqytDbQ8R1eLzfFHhosANuqwZ9wTUuoN5nizwvG3CNqkOD6fN0rzeNqChgZuWl0z3fDmjKOZKLd9dz93PhyjnwppOW4+wx5z/u1d+HY8vwvpCMSQtknI78V/K1GiuWy3P2rF2dRtvZnWeUQULZ42454q0w3Lzj5WAAPcURw8mueREpc8Wktit5fyuVY4Jxz2qZmUYU545yOorooxUpKOzHSSkotvR6WPzE/bNjH9o2vXBjAIPfJ61b/bHDNqcMJbB8sEKe/wBa/duAqLjQve5+JcT3VSpQirO+/wAz82NeTZpjhSRlsA+pqfxKrGzVNoG6VBx655r7rGycKTkeZkXvYmFGW7/I/bT9iOwWy+GWk4X/AFkKY9M8V3H7INikHwq0A9JDYoTgdRgYr+XcS41sTObWre5/Qeat03Gne1kkfWqTKV2FssXxx3qBo/nVl4zgU5xnFNM4qUZRaaZaKnaOfwHaiN2VkVyQC2MntVUbSlZdSKGGk25vcoXzlI1UjcWPU96j1DOYzuzjOcH0r6/hrLVLFJS1sfFcWYv2VB3OU1XTrO/tXhuIVeGYEMCByO/6U3UZ9ilWOCQenev6IwVNUEp7M/Eq1V4hOla7WqZ+ZzWzfDf9oJLWyk8vT9aBGxfusQfw6VqfHmPyfi/4Ku48nfdg7u4z2/OvgvFTLo1sB7eKs0fsHg7xBUqxqYGtqkn52sfftlciaFJckEqDj+dZWisZNNtCckPboCW78V/LcKzcrpaH6ZCCUUluu/maUkhJTnIckEelVHJJAxjY5INVU96V5LRmrklBwS1Na0VXkQbs4cMcUmlAF2ypGMA1OFUWkmrs5ZQakpJWW3/BNdpsNkfdBAb2FZk8ypK5OcZyAO/tX9KeG8EqCifh/HkOSteLu7u5bM53kYICsG57+1ZD3O5mAznjdnuK/XI0uVJNH5rPEXqqMl1OgN0wABAwVz9D6VzT3e3kMQAcgHv7VrCi56LQ6sSuWKktjUlvPMONxHJA96whdxtg8jHAJ9ahJubaRjVkrWT7G4rr+7BOcPk7e9Y6z7BuLYOTkA0tZ2ppjo0VGXM3dGn5hb1IIxn0rLjuc7mjJI4x71tCktGjavNQg3U1Rrbhk5GF64Hc1ni44UEksWPI6U6ScmtTCmkpKD2lb7z48/aVu/s3iTwQN/7r+0oywPTryTVf9raxm/snR/EMAYnS7pGJx0UHOa4M/wALOpllRrc+04DxscNmjouzvt3PsHw0qv4dsCAMfZ1AI+lcb8HPElt4j8GaZcQSBm+yIC3pkV/HOM92XM1rc/oSlFOo+fc7MK6NwvTHXvV7aF6HJzyPX3rx61GTfNF27lOo1NUrblN85UYwCBx6VNJnLEADsM9qpJRepjXpqUOWXX8DKBZJORjJJGT6VbkAIw+CAQQfSv0rhzjpYaEaMo3S6nwmO4GqYhSlSna5i+MoE1bwbq9tjcfsjnHdjjgfhWuIVcGLOVZSCCOD6V+rZH4jYOVROTPh8y4JxKSUVZxa19P8z4L+AHjVvhpc61pXiDRb9Y5NVldHjiYqyk8HvX6BJoOnR4L2cZdiMAoOPfNeTnHDGDzXEOvGaV/67o+ho8dYmhQVCdK/LdXv/wAA8s/4aI8IxozSadqAt1BI/cvkn34r006HpbFnkskxyeVHJrKh4Z0YK6nden/BOWr4kJqNKNHV9eb/AIB5dB+0N4b1CaKG202/2yTBctCw5J+nSvS4tC0vcHjsog6kY2qPl9hW8/C+MtHU/D/gnJDxQjGPs3S6tXv/AMA0bS6F1Cl2gKo8RKhuvSnyMiiKKLG3dj6e1fS8PcFxy+Laldb/ANangcRZ3PGJJLTZNdz8zfiH4qsrP9paK68Qztb6dbWxSORh8uc9K+1PE/w68Ka1ftfalo0M1zJJkyOASOOtdvGmVrMsLChB8qXXc7+DOIHlVOcKq5nO/wAjnbf40fDCO3gV/FMC7cYwRyR2pp+FXgCRTG3hq1JGEYlB+FfktLwlmkm6mj8v+CfT1PFDD0mpezfZ6/8AANCD42fDLII8VW5yCBhh85H41Sj+D3gGONI4/DdqCXIHyDvWq8JpJul7Xz2/4JpX8S6fInCm9fM67Tvin4I167Wx0XX7e4usghIzyMcfrXPaX8PfCmhXi32m6JBFdxgqJEQZA7iump4WSiknPT0/4J4z8QeaNowbfr3+R6MjJnJOcPnnvRawytGchiAcgAe3NfoWTZTRwVFU5y2PlcbWxGLqylBGRr9tb3Wj6lFcKGhe1dWB6HI6Vp6ro51KxltfMdUuAFcr/dr1nxPhcM+aUlYzw3B2JxlqclbzPh79mHwxeaV4u8Z3sKsthday5jH8Jx1x+Nfanhvwrpfhm2Ftp0CogO5iBySep+tfzXx/nNPMcbKtCOh/RmRYVYTA08I9eXqbysdp5O5iASKkGAflAICkketfETim1KWx0cslHmT6/eRA9Av3hyfr6UxwTjBwTgkf3c1yw593sdNWlGEVPqVXLBZCzHJB4Hb1p83yhiDksSAa2hC04yjvc5MTzKhJpdDLLh1fZncFYADvxVXeVdfmPqAPev6z4UqTWFhffQ/mjMKcFiZSa3f5H5tgv4D/AGn3Uhlt9cBBz/EScmtP9qq1bw98QfBXjaJCPLvE3kdznH61zeKeTrGZasTTXvRPvPDDOlUrzwlfbofo9aOJre3YDczhTnsPWsPwNqS6toWm3gO5Z7ZHU+2K/k2NCcJc7Z+xKDjJ2e10dXGN44IOHIzV7yV+UgY3HGRSqc2jivkaU6KU71JXbRRmUgfLyQckGrUqybCmCTsIBPevUy+pKE4t7nFmeCc6MoQepwPi++Nh4b1e5LcxWMhyO3Fed/G/WxpPw98STtIyOlmy5/Div6+4GxLqU4zeyR/NOeZfD6x7CUrNtHiH7LFqxHiHWpCT/aOszE5+oFdz+y3p32XwHYzEYkuneViep3Gv578S8ynjsznKPw9j+jMny+WHwdOhHol/w59VwAsh3KT1GT2qRcL1yFHP1r82qUGqmh3zsoRgtbMm5+bBHAOT3pvGQFz8ynBq6cHGSTepq6biua97mZeXWHUEH5QfqfrWLe3QE5U5+UAE+tfsXh/w97Soq0tj8h474mu1hoqzXU+ef2n9cbTvhnqMaSlJrxliUjtkc4rzL9rvUGl8I6TaqWDTakmQO/Iwa/ouNsPg6le2qR+d5BQeIzKnRk9n957t8B9PWx8C6DGqgf6KrEehOK6X4TQrb+ENGUk/LYxDj/dGa/h/PMwliMTOUluf1BVop2lzWseiSISRjlQDkVYK7ywRiQWIX39K8qdNwtFas2hUunG/u9RseCeMkkjGKspHsVQG5ViQPfHNcssOtG+hz5fW5ql4sxNVk8kJgEjnGe9P1e2kuYsRE4QYGOtfpHALowxKdXRnyPG9KtOhaC1fY537SQ/U7SMYNOfS7jKgqSOOfQg1/StDOsC6STkkfhb4fx1OpdRufA37W2jQ2l/4Q8U22Fu4tTQFwOQQwr3j45/CHxD8Q7PTLTTZkRLW+SWR36gcZI965uKs3y/E5dOMpK/Y+i4DpY3D4tKcLK+57x8PL77f4Y0qdwR/oURIPc4HSrvg3SLjRdIsLCZSDbWqIR6EDmv47nRpyfurRs/feVuacWdr1UDBKsSPoaaMqjhnIwckntmuSVBqScmKVScrwjshm4jCAfJ3qf8AgGCVYOSSO9dlCg5O5jCo3LkmrXOfyAy+YSCJOSO2TUF5JhztwDuJAFf074eSlLDJS3PwHjWUMPiJKoiYyKNrbzjfjp0rEa8AQk8bc5Nfp8aE4LXdnxeHruvT9+KSTNOSdQ6xq+OTnPQcVykuoHI2HLEYJz1966oUGpczWpjHESldLSKOqa6VVAXgZHNcX/aGCFLEY5O6nTotO7D6yqi5YqzT0Oy+0Rkg8DY2RjvXIJeNuVckq5Aye4rRQinyLc1tzxVWUdnp2udh50RThyfkyQa5uO/zlA+ScEEdqw9g07ruZuq0rSj5HRKWc+uOOO2KyY7wYTDk/IScevrWuslzJaHY5ulSbbNcTkYyxw2CcVlLcK7Lhsq0hAx3FQqMrXezMKOPg4SlbV6G1HOQm44JwDj09arIYkXa2SxYnOaiUnzXsOlW9pTSjZyWmpI0iuGCFgcDBPvTdsWc7iXJwDW9moc6epwOrKLdNra9yUydOQSBz70m6NScdSVB9vWopualeGzO2cfaOLk9Y2sO81mjVlb7pJPHOaYrx4JY9D1Hb61jUj7ObkjSVZ1NXsnr8yaGYRMrMx2jOcdzVMsh+QtgZ4PpUNWSclowquajeK1f5GnNdBVXa4Afkj0NY7PGSR06YHYVqoNxTexx88lKMHvqzz3xpMBbzb3zvU8etUfGTRi3kL8sc8ntXdSupJs7sJVhUnKDv5vufDHxIaNJpwX/AIjjPas/4nNGzzBjgMxJb+7TxFGbXNKWp6+AUIJqGxe0icEJjJIOGJ/pVTQ2JiB2kM4APtXyVNSb5UjTMMXUqJxb1jbQ2L9gsZ2cnkADtVe8VxGepxgKR3r1YUrwt0PFrtwlF21fyOAvYUeVuMu/UGlvAwkLggZbBI7msaraiklsduGoRqOzdjDa2cHdgFmGAD29qvMwACuScuTz61lG7kk46HXTwEKc5cur7mS1sAMOwOV5HcmrkuSTGWAGAcjtU/FK72Zk6znFQirNaHPzWyM3lbQyspxkdK1miRRvGTwQB6HsaTdOLUYbsuniOWCTVknueeapZkhwXIUMCMdfqK6S8tlYZkB3I5JI/iz/AIVlKCTTa1NqeLneUlJI8jltGEpUMdoYgE9812U1oO6nIJAA9+lc8uVy95nbha8pVPeV2cHskyCEzlgDjtXXtZMjjC/IeGHpVOCclOOxrCvK7lN7GFFAo3bueFJJ7VtxwFFLHogIXPcVrJWVpblUJucbSfmeq/svQ/8AFz4uoTofXOetXP2W2CfFFd7Dc0ihQewz1r8Y8U5WpRuup+2+GPLDCVqjevT1P3D0twbaBQCV8pQAO5xSaa5NlH6LGMY7dK/JYYWMkubex7CxF03PU0NpVThyNw7dqcwG0jg5bH4GoajL3Ion6vdqUH6/MwNaYGyueoGwnnvVfX5Num3uc58tgB61vlOGtWjF7Nnn5xU5KUpQWysfi18eHLeLNQ3OMiZiAe+DWf8AHJnPjDUGI+QXLgAd8Gv6ZymLdBOK0PxlzqQlyuV1/meO27IzL1GMAY71BbSebMiRhgxcYB9c17M9Yc9x4evKc+72saAXcwBJz157V65oHwY8d6/axahp+kiW0lw24E5JPaud5jTguVtXR6dPLqspXkvv7Hjk0R+QgnIHbvX0dD+z18RV/wBZoMjEYAA/h+tRTzHDctpyR5uLoyc1GMX622PnWIpkbshc4PHWvoJ/2fPiAQvl6E465B7/AEpfX8PGN1JWMf7OlTk3GLseCRS5GACQOQDXsGr/AAt8R+G4Vn1fTHijOCrHp15HatYY6lNrlNvauEbNdjye1tidR04qCCbhAR681t3I+y31lJGBvN0gAb1FcOdNyoTkux6vCUKSx8eWWjZ+znwSjX/hEdMUx7SlugI9T2qP4H3IufCOn55zbpgjsQODX8r4rlq1Ly01P3XM6qVT2cdz3WKIZ+ZiAHGT6in8mNV4z7d+aypK65l0OL2Uo0+RPzHrGmSSchWGQfWm5JG/gnBIzUVqEk733MPbK6mnqfJf7UUoi8M7SSDkEH14qH9qJBJ4ZUgfeyeTX6nwHZzcHufmvF8b1Ywi7vsflzKRI7HdzuLEnuO1QyKPNbe7ERsQSO9fuqXLBX2PgMVRUFGUN77f10Oy+DskR+KehqAN/m5DH61W+CmyX4vaRHztWZdv51+a+I1RLDc9j9d8MqMpym5vQ/dXRW/4ltrvOf3akj14qLSxmxtQxHyqoBP0r8Iw87yumfb0qvJKSXW5oyPt3EkH0FVmBG/JJXIBz1OahTjFczM6WGla0paF7LfIcgZU/magDqI1OcAkgk9uK6MLNRldojETTTTe39I/NP8Aayl/4n8aR8soOSe9ZX7V1yn/AAkrruzJHgZ7kV+/8EOSw6lF2Px3MlF15OTvfp6HxfprmTx34VDYA/tKPhu2Omar6O27x/4VDYwNTjyOxGeSfpXrcdwk8umm7Hu+Gd45jHqtT+gHwR+78N6bGVIY2aE4HA4qTwNhPDWmxq52taJhvUYFfzPThHnT6n6LipSdSUYrRnWkchT/AHevrTspkksScdR2ojSuvNEu1KKnJXZXZuAhwQXPX+tDDJcdcqMEep61tRpc8uXa41W5qbc3o9j4o/aL1iWxvbfazY4zz/OuN/atnlhvoVXOQnGK/dPDuiqcPaWPxbihydfkgzxX/hM3SzmHmk4jJzmvB7vUGis5cuSwUnA9a/XFbnUos+SxNKlOPJJdNT6n/Y1uZL7xj4lui2R9rOM9wMVm/sLu0ut67NyQt0w57ZAr+fPFHEznjVdaH73whgoLJ6cIqyT/AMj9bEYsq4JJLKSPUe9RROm0FCR8gyK/OpaXTWjPVilzqy1JGOeAeBnIpp5JYEnGDn8Ky9jFR53si8RUlFOMdWzk/GRx4c1J+SxtXAx2FHjN/wDim9U6lTaOc+nvXt5BJvEwclpfY+cz9pYZpb6H4z+NJCNc1HKkAzMQR1Wq/jVmGvXrDOftDnA781/UGWcypKM1ofjHtIupywdrfieVSys3jTwmsjYI1SE4P1FIIxJ468I5cFhq0eSe/NeDxw5PL5XfQ+v8LqUY5m3J3XU/ffwBz4W0kg/MLNckd+KPAeV8M6SCSf8ARozkd+Oa/mmlBciUnoftuYStUcoanahFIGSR83PHao/n2hWOSDk+1V9XUVZvQ8mL5pcsd2Mk2HZyR1GT3wOppnmAEIeQDx+NRBpq9tzb2bik5PU/Mz9sZl/tuFsgFkXJHfHao/2v236xGuCCIiSD14r924DkoUIpn43xFhVWnOd/U/PHxIA0VuScCS5jIJ/hJPFJ4nQCGzQO21rpQQO4yK+xzSmlhpqL+RycO0WsdTlF9kf0C/stW/lfC7w/tICvZIOPUAVq/sxoY/hd4cRV/wCXGNjn1wMflX8wYKkpTnJ6NM/ds6rpVkp6+Z9EpHuweQozkfjUN/qENjGC2GkYDA+leh7K71Z5UaqUW0rstyLGqAnACoQffNcTcajPdEMXKpngA9K5qGIpRlyp7lU6U4xtP7zT1q7t4vLDOMkcAd64PXHYKhJKls4PpxX33A1ZuvZI/O+LqKjSunoyjfXvmlsAfLkDP6VzU1wUY5JJwAM9Ca/fLqSUras/H2/ZNzpq9lZep8S/Ht3f4oeBsHB+2gADvyeTVD42XG/4seCVyRvu1BA7H1/Kvl/EdqGUuW5+g+DddrHzquHQ++fD6O+k2IbgGFOe4IHWptBc/wBlWqDAcW4GR2yK/k2NOUlyLS5+818QqkueXmXJIwpBJyTkZ9KkZT0OcK4AJ71NaSguWRhQblJue1tPkaGlpkO31OfQ1NpqssW4jA3nGfcVvgsPonHoY411HJXdorVfqYF/KYbkgsdpYZxXP+INQWG8kUNnaxIz0r+jPDumvYps/A+O4ThVdRPf8Sd7vGXLkAEAY7VxFzqh25zlQx79q/WuRyV0j4inJRStvbU6JtR69eOme+a4f7YXyEbCD5QD1rdYZpXbsmedDGPmcUtUdkl+xAU53cEH0NclDe/6tjIw5B571FDDp+9bVM0ddKTpz2S3O3S+JCoxPzZ59a5WO8yQzMxUMTj096idBR1T1XQxoVJKajLWLf4M7KC5VAiJkZzwO3Nc/He4G4ttxwdvrSnC6533Omv703RjpFrc65LkhnAYknt6Vzwv0QHkjaQQR6mlTUm02hwg6UlCTvpr/mYvxL8Lw+MPCeoaRLzJNbsELDoccVv/ANoeaPLOApIwfXNaUasot32uU8PGMVNXU09/mfEn7O/xDm+Hviq8+G/ia4ZClyfs0j8K47AfSuv+Ofwb/wCEqi/4SHw2xg8SaexdHT+IjoeK/LuK/DqlipfWMNK0u1tD9S4b8UKD/cY2FuWyUu7fyPuc3MN2sdxEQY5FDZHevzy+Ef7Sdx4fubfwT8T1ktdQtHWJLiQYWXHAyfU1+G5nw1isLUbqqyR+rZfUp1o+3pvmi9rH6Bs3AXBG8ng9qx9N1jT9XgjvLG5WSBwCrKQevTpmvEVNqN47bno4nmSs+hfYZIBJBGM/T0pBjcSoyMjI/wAK4qlNwjeRvhqnM7Q3HIgRlG/J3gk9zilBQgEAA5P5mow6Uk5pG8JQnB8+6OqtJI7mIb8eYox9KxrKXypRkE4wDjvXrYbGypK8XY5cRhoVFqldmxNZllO1gBzwPcVd+0QhB84BK8j09q+wy7jbFUHFPVHx2YcGYOtHmfxehy0knkbQnO59pI7mte6tknAK4MignAr9Pybj+nXXsqsde9z8zzLgqpQlKdF3Odik3MHyTk4J9OetDMIvlA+pHav0nCV6c4pw1Phnh6lNNPRtszdRboccDJwKxtf1OGztRcTOUSEHcx6H0rsp04R0auXFSk4wbvZ/mV+SRtOfmwCO9Y/hqe41thelHSx3gKeQH96+XzfinCYSVpO7R72WcI4jFRakrXe7OztLWSQx78lXwMHtW/DEoVOpMSnB96/M8z8S0ptUY69D9FwHh1GKSrSv/wAAr/YYztRFHy8jHerSNhgcnlhwK+VxfGuMqv2kup9JheD8LSouFNa+hDHatGrqOBu5PpWmSsaEs2EHJz3zXz9XGYis+acnqelTwlKnDkhFIrrEI1+b5hxgelcN4o+JfhnwxBcG7uw8sKEssYyRWMMJWxEuWKuzqw9WlBOm2k0dNOy7yFzwCRjvXi/w4+Nnhz4n3d/FoQcLYXTRuXGCW4yMV5OZ4WVBqM1ZmqptpSb91nsCsuVIGd3Ix3oBjznJAVjn8OlcVSVppLY68RQjKlyN6CM28N8gyucj1pzD5dwz1Bz608VaSUlpY5lBOMae9inKMI3oQSSO1EyZR2zyASQP61OFoOUlKL0uTjptUfZrRo4mS5CzMAxyMgAf1rCvbnbcEBsYc5A74r+seEaSlhYRlukfzTxFCaxMpRemvQ+XP2vtJbUfAP8AacKMZ9OnDkjqcdhXqfxask1zwFr1gV3FrFyMjnNfcU8H7ajPDvqeFlebTwOKhiG0/wANDX/Zl8SDxH8OtBn35kFoqtnsQAMD6V4P+xJ4kzomoaBIzC50TVJECnpjIwf8iv414pympg8ZUpW0vof1hTr0q+HjiIuykv8Ahz9EQSwMfIIXketRLIdm1m5cnn0ryHgIzcWtGvxClNTbad7krEYKkknkVXLrJu4wc9fTNZ1KTjJQb+Z0T5nZrsfE/wC1rqzWfgm/sA2172ZI1A/iya5z9rdZLnUfCWkIx23+rQhlHfkV/QXCecRw2VynF2aVj8k/1ZlXzeNWo/dWvqfQ3wL0oWHgXQYCNu2xjGB24rvPAVoLTw5pUC/KVtoxz2OOa/A8xxHta7q9b3P2GjVdacoSenQ7ERrJtYE425x6VcCLkrjJGQR9KxeG5oqctzOvQg2oJ2st+5TmBSN2HAGSD6VX1uZbewlcE48sgY7V6GDyx1q0VFbs8/G5ioYZua1PML/UI1uZlLHdvIH1rirm7dp2yQSzMTntX9VcK5FGhhlFu5/Neb4/2taTa6s+Yv2rr0y6N4bi3/MNWUHHUAkVzf7UUzSWfh6PJO7WIirH13CvpeIpKnldRrqjo8NLLMYqptc+9/hup/4RXSG3EqLSIkj6dKf8ME2+DtHBkJV9PTbj+Hiv4krLnqPWyuf0xGryzdKburnfqcvleAMgAdzUqqNg25BViQK440IqTivvHKUqc1BD2X5VABDbuTSByoG4k7iAPesnSlGTg9jpoUk5uW1heAGI5zkjPc1geIvFnh7wrEt14g1KO3tmwN8h469a2w2DnOzS6nJCbjOSi7rTQ3PKfhjgxgnAHavLD8cvhQHA/wCE1sxvI5Djge/SvSnQqzioNE1KUG218z1IxqyAMoLHqD2B6V5a3xw+FeP+RzsxnoS4+YVFbCVUnJrQVCrT5OWCuz1NE9CSC2CPQdq8sX40/C4quzxjaMP98cY7nmuOlgai/dtWbDEOVlKOiXQ9WCgxse3fPevNY/jN8MmiUr4ysgCSAC44/WumOEm5WmtUYyqcsE299D0raCuSQWJGM1wdn8T/AIf6pPFbWPii0lu3cbIkcbm/ClSy+ro0jSpiIqUlN6In1GQxTP03BuMVX1K5inlZoz8snIJ7ZNf0V4eYdxwyc9z+f+NsTCpiJU3qlqc/fXe3Ozd82SfyrNv9ynKk5AOK/YMPTjypdT8/ji3BXeq7GTNcbJkBc4KnjPesi7coSS5O1gQT9a76VDmjyp6nn1se41buN1oaLXgb75JbJyB6dq5syshBOSZCcZp14Ky5Xqb4LFQquXNGyT+83WvsKXySFIJAPSub+0SHKgA55xn9DW3I5SVth/XIteyStJbHWW+oFed5J3AkmuIW6c5JJHzHg1NbCvnU0y4uSXtD0631MNgOxG0E8V55Hqj4LAsCcgg9qxlg5SfM9wxc6bUVVej6HqkF8jSL1G0gLjvmvObXVJN0bhyDuXjPWs6uHkrLqOdWmvdt7uy73Z6+t6rAlRwhIJPf6VxNvqYYFckgEZI7UoUpRjeRi6sKclBrdnbJc7vm77sgj2rnYr7eCUYjnBAPWuFwTa5dmehLE+zV+q/E6eK4JJDE7SAWBPftWElwM43EDbg475rVU1GV0/mck8XNx5Jxtf8ApI3hMF/dsdqjOMdBWN5u5flckDaAR39qXsnZRR1UMRCFTma+T7mmJWYkE5Bxj3zWZHOXbaTggjJP6VnOjaza1Rs8RTcnJbMvPJuLEjGCAuazpJgSMHhc8nvmmqSdpNW8jWq2ocu9+qOM8TMWhkRySzAk7u3H41V8RnfEfnwWBABPpXoUItystkcVOcqauup8S/FKFMXBZQQWYEDtir/xPiVvOmAO4ZB9/WssQ/dcU9T6LBVpOEWl7r69inpACqhVgEYAAetLpkZKAKMso4PYe1fMUHKyT6l1azm1WS1Tt6mjekYxnJI5x2+tPvVCw8A7mBx71200nFp6M46lNKqpyd+jPNtXYscA45J+tGqIXZQEICsCG9a53eCs/vO+ryNqPS5zQn3EO8x3MwBHpUZtpd0juQFLA+/HWuSrVkpRlcilhXUnyq631Edzv3eYcMBnPfHQVVkNuEiAkLckk+lZwrucmpaWO+WCjGMZT20+ZrROQAAAQp6nsOxFYv2w/LsbDgjp3A6VzK05e6i62KgmoSWn5XL0zjdhlyQGznt71d0/S31DDTbgpJIx15/wrrjFONpl4elTsk1e+3yObeJTIdqZ5HNeiDQLSOM4BIwQSf51rGjG6insU+RpuenkeXzWR/jyuG24A612mpWeCI1U4G5gc9eK0p4d8t5HL9YhzOD2b0PPzZK0U2GyAM5A7+laF1BJEcDczgHCjvWNeN0rbHa6MaMXKc7va3Y2v2frhbL4q2SjAJkGT681x/w+1M6T8StFnLFQ10oJPbnvX5V4lYBVcP7R/ZZ+w+FGIVV1MNLS6P6AtFmSXT7ZskAxKRjvxWP4MvFvNBsJlOfMgU5HTp2r8To0m1zNn0tecKLn0S0sdnGCEBOOTyTUSZYbZGypyVB7VnUbjJSkrJioqE0lt/wTntdG7T7gKpH7tsmtO/RZbdo2yNy4J9PU12YKpCM1JvqefmuGk6VSnB3Vj8QfjrbzDxXqLBim65IDD616r+0T4XmtvEU8nlsVmnYhj0Nf0jkGKVTDxjHY/EaeFqQcot6pnw1ey3Nu8IWVy/2kYY9zXbf2BLqGqadpscZLTXqKoA5JzTzTFKFKVaeiPqMjp1Hi6dG13e5+wf7MdkJvh7ok1wA2YUCsR0yBzXpfwT8MzaH4K0ewOQ0dqnB7HFfzZWlVnXdaT0Z+zZrGNWsuWNkkerDT7Ur8q8EAkmtBlZSxdTwADisJVZtJxlueTLK6c4qD7mKbCBZMCMAsSeOgHpV6UqAjEEMM/N6VderUX7tPQ2WGpwbSWlrHx7+0zFBbeH0McS72YkZ6CuR/at12OK1gtBKC6khh6Yr9L8P6Mrtt3R+WcVVKUK0Ulbp6H5x6sjvf2WcELcqePrSXrMTBMxwyyhjjtX6Xj6fPRkrnJkFeFLFwklrdH7E/AJG/4QzS9p6QKSPWsP8AZm1mG+8G6cu8s0aYY+h7Cv5mzChKFWcWtb7H7zmNaKqRmmfTqeYpBU/KEJINW12YCk4OAR7V59ailG7ep57qOqlJqyIt3ysgBBCjHtTnIUhgOB1I71MYJpRiyKNFO9Tqj5K/ahhaTw0MJ8ysQMd+K6b9oTSbnUvCVyVUs0RLADvxX6b4e1fZYjkktj8p41im1OS0PyJnRImZs5B3cetal9aGCV45EKvvcHP8PtX71Ts5Ox8G8bUjR9+7UdjpP2fbU3PxgtEVS3lYxjquTXov7JXh2a9+JN5qbRN9ntGUFx3r8l8T8Ry8tOLTbZ+2+GdSVLCzxNvdasfsDYKI7G2QgghBkevFWIOYowWOVQAE9xX4zUoyT5HsfRSm5OU47sgJBfGT1yfcUhO0jcoY7uAe1S6HLZLoc0lJRjT7u5JIV8skkhXBXnoKr38sdpYzTyEbEjZjn6VpRwvNUSvp2MsfWp0otte9bfufk5+09qL3fjGdTnzI5gp29sVw3xr1D+1PGupzByUjmYAg9s1/SHCuFjh6MVHW6PyPFyhXTqS91rX7zxDw6v8AxcPwoSOG1GNQD356GpPDqeX8RPCu/Jxfxke+ehpcdTk8DJt+R9D4XKP11qL7+ux+/wB4OOPDumqGwy2sYPp06VF4PCroGmZJJWCPgfSv56wrT1gj9Tx9BQk5OR14UjknJzgk0jM38J5B6eop87Seh5cqS5E07ojkkKsFXJXofSmlxwyDawyB7Y706VOLjzJam65nHXZH54/tXky6jEcE4TOT2rf/AGp9KkkkguVBMIQAn1PvX7fwDXU6Shc/JuI1GNZzabffsfnfdRyG1YqxPykcd/rWrrSi3tZ1CksEIVV6scdBX6thq65HN6JHwWMws6tVcqu3ZH1B+wbZyi6166XJ3XrKSewGK94/Y38CXHhzwdDfXkBW61Bi7Ajpmv5n44xMa+Yt09Uj+kcpnChltLDPST3/AAPuSEADuNwAFKG24GARwAe4r5GpRd1dHZ9adlFDg5+Y84Lrwe2PSlV2IwepBIx2rajh+d3ZNWpBSSvdHIeOX2+GNW3Z+ezcA+/aj4gsP+EV1Rt2C9q447V7fDlBPFwb7nz/ABG19Vajo+5+LvjEmTXbt0wT57AgHqfSpfFceNaviswCrKWII6nPNf1RhZxVFJLU/DMVVk6tpK77+p5fBx8QfB6dGk1VAT9TUlllfiP4PAXI/tOPg/WvjePk3l0m2fVeGE5wzKXV/wDAP308EK3/AAj2lKQfktY1HtxTPBTldA07dkkwpkn6V/NeEw817iP26rVftLyWp15yxGQB1ORTQ4JUHJAXgentVeydtzlnQhzXi9SJ9pDAkggHH4d6fLsIba2cYyPWssPh1UnzN7GPtZKm2j8xf2u0c69Hzw6gc9sdKl/aymH9vxIQdoIAz29c1/QXANNSoJLofjXEFaSqSqT1W5+evi2BlgseS26+jUY75Iq74wIjtYWQ8idCuO/NfV5vCTw0mt2rHFwtGE8fCpDS7XU/f39n6/isvhf4cQsPN/s2MEL647157+z7cPdfD3w5LvYgWMY2/gK/mWnCVJtbs/es+i44hxW2/qfQ0lxcXcrNNIWTcQAe1VbVHOTuJ+bGD3rCtCUpczOejTlGCjHqzYtLdppIlDE4cZq/oqldztnHGSO3rUU4KTTS1OytWnTvCWpxPja4WBljDY2AjIrkvinem3gkuV7PyR3r7/g6py4nmjsfmvGNODo2cdji7nVxsYO+WQ5HNeH3XipSSjSFmIYkehBr+gcPKLcWj8TrzlTjKMlp3PGPiTqK6j8bPBUAcnZcBifTjmuW06R/E/x/0xUYsljbCQnsMnmvjPFXHQo5ZGnL7R+qeEVGcZVa6Vk9Ln6oaHtjsLZRyFjUA+oxxSaZuitoFUfdhUAfhX8z03zxs/kfslWquZSvdPc0ZBnDAkKCQAe5GKfv754Ocg1xU6Cg/Zvr1Jp4pxblTNO0cmEKR94tnHQU2E7I2HHAJB9a68LdRt5mNWuoyl1Vjwnx3deVqTgEjJ4I71zHxGvGj1eUuchWBCjtntX9N+HNNSoKK3P518QKsXUUorZ/cZS37/3iehIbuRXKR3QzkOeAct2Ga/U4RTu7nxmG5VKNNb7nVpdsGXJGS+cD0Nc/DIMKS/JcZ56fWqrW9pyNXscMak5TU1HlSep1kd5u/jOFYEgHpiubjuDF1PykkZz1qpUrRTRFPDOrieWpoui7+p2aXcexWz8o4JPeuQ/tBVjxuIGSMHvWMYWqWaO+UVODcn7y0R2g1FIg4UnPJ/SvPbnVfLXcXJIPH+FXCm5a3DmjGdnG11Znc/2vKA5WYY469q8sk1d9rFpCMHBAPWtKyaaa3LwlOEISlJ3b09D1BdbCKPnyFXJweRXl2jaxa6vq8ekLexpeEqQjHlga87MJU6dp1ZWX5np4bAVqsf3GqPVodaZztMhDOOvt3FaUfgC/ZRIk/wDrMAe2eleK+JcEo83MrHfPh+ulGm4u66niPxH+GfhP4hWUy6laBbsq2yaMfMh9cjFe5n4eaku5fO5DNkH/ABrkxec4CtFKUk12Ly7Kszw9Xnp3jbt1Pzog1D44/AW6MuhXr6t4ShkyIHY70H6/hX3NrngC7S1mnklUhFDHA6+tfG43IslxFRKDtJn3cuI89o0uavFTieffC/8Aa+8E+LTHpuvyHTdcLBXiuDgBsc8nFfOfjz4UeFvEzyGa2EV+jNtniADKfXjrXz+L8JJVF7ShVuuzX63PSy/xFpqShiqfK+rTvv8AI/UfTdWsdSijubSdZIpMFXUjBHHNfjDpHxD+L/wBvonj1ibUvCMU4ykxJZE9uvGOlfFZjwBjsImpxvF9UfX5dxDhMU1UpT12sft0rr8hK4+c5I7Y6ivGvg78VdJ+Knhuw1vTZCTMql0J5Rscg+9fGVcIpNpq1me7TlKnJQe7PblCuXyTu659KZE6EDHUt1Pf61kqSg0n8ghB1ZNp2Q/MgDhXKqQSR9aR3BUDOScgV2ylOKcl0MYOPM5TRwniHV30uQM5zAfmPtXI/Fy8TTtHlu5BxDE7A+uBX6/4aZ1Vc1TnqfkfG+XSmvaU1Z32PKdU8TN4/wDFkHhbTrlvsVk6yXQHRh02nnrXmX7I7PrWueK9elbcbrUpFXPbB4FfS+IHGLoyWFw+ja1Z7PBHC6oUViaiTlLoz700ewj0+ztraMBdgUDPb1NbccSgDjJD9fSv55xVNym5Xd9z9NScY8sWghRmJBIIXHNTB0iDOx5JGAD1rWeGbsn8zljBK0U/MeypCu93xGoyc1yvijVJLTS7uaIkbI2YEdq7suwTrVI0m9Wc+OzGVClKajojzbx98QUtRJZWMg3KdrYP518yaxqMtxqc07uW3SE4PcGv37hTgLDKmqtR3fofhXEfG2JdbkiuVX1ZZ1+7FxpupNNICZLeRiSehxXL6/fRR6ResSAVtpAfbiv0fLsmpUJ3SR8fPH1atRKUm0318zB/Y2aRNW8YScnGtu2PXpgVpfsVWkkjeJrznZNrDsPfpX8w+K8ufMm47I/pnh2aeX0233/Q/QyNd0a/7TcD19qvxxAkBsAKSMe/tX5zUipL2ie3Q9V1J1JWeif6GeRyCHYpgEj+laRiAPAweOnSuqNBxgpyV2cdV1IyjKO3XyMqb5omPYREce9WLqJhA49UGCT09zSwkL1VGCtqGL5Z03Ob3R86a3fbLuRQ7BQ7A471z3iKdl1Ob5gdsxIIPSv624ITWFi3skfzdxJG2IkoPqW7q4jurSe2fLLJEVYH+LiufinWReWIYMCAe+O1fZUIKEvaJnzGJjFxXOtVr6nyv+zlff8ACJfHHxf4aeUpDe3AkRe3XtWBrf8AxSX7RPh7WFISHVp0icnuWPFfjHjHkbSjjOm5++eGGZQxWFdFvbS1z9gIE82GNvvZ4Oe4xUOizC7063kQkhoVOR3wBX881KMoySi9D9O5pcuqWmxa8na27PTt6Y61f2kMgyckHI9frVU6bUW2ty5VruMk7HyV8d/CP9t+JPAl2qE/Z9VBY9iB0r6U1jQLTU5bW4kAJtJiyg+tezTzGSw7ox0ueJhsNOGLeIv30K+i24hsLaMZISNSAe2K34YhCNiAbRGDXhKmnFtdz1qUdPaN6DU53AHGCGB75FTCNGCuWJYknFaU6CmnE6XWi6b5VscJ42ujFp5QMRnJJ9q5v4kXzwvDBgBBgEZ61+peHOTqtXVV7H49xzmipUHHld3+h5JJKrzNIM5CkZPf6VQkuEIODjdkgjv7Gv6Sw1H2cVC10fhdSTryvLdanyv+1C23TvD7hsFdVi6emQMio/2nombw7p06uD5V+hB9TkdaOIKUpZbUjHQ+i4CxFOGbU3LZbn6GfChVfwnozBiVNnEcHtwKzPgrdm98BaDKGGWsIyCO/Ar+G8bTlCTXmf1dicRFzairroeyPgfu+cjHNKu50BIIORgnua45UpxbS3M6MuZ3bvLoRjgqSAFGBn1qQJkHOQoOMnv7VonJ1EktH0MvaNQU57o8Y+KmladqtrBBqNqs0aZwjjIOetaHxK3xwwsGIHev1rw7w0atZqorpdD8u43xzpNuldX3PlKf4b+Dm66BCMORkKM/hXVTXWAQWJbqT/Ov6Nw2SYd2agtfI/EJ5riZuSlOXL01OXi+GvgsspfQ7cu3yoCo4NYniX4mW/g/WNHsbqxaVNTukjDKfuEnv+FYZjlmFoUZV6sVZHr5Rjcdi6yoUW7rzOoi+FXg6TrotsXQ5Pyj5T9a+qPD/h/StV022u1TC3ESvn6ivzvEcX5TBpOH9fcfbYPh3M5TlJ1Wr6W7fifL0Pwm8GLHn+wIMsSCdow1fYEfhHTo1wIsgAEY7Yo/1wyhJT5NP68ipcNZnOn7N1XZeup806H8MPCOj3cd9YaNFHdQuCkkYwUr6ZXw3YxEADBYEgVyPi7K20+Xb+uw58I5jCnyxqOz7/8ADnnYuCqIC5LRtxz1FZfiSZNPvHto2Iw5A96/QMixmHxUeeirI/P86ymvhkoVpXd7/d0JrmXzVQpkHJ4PeuROp70Rg4IMhyDnOa+po0HGTu9GeJHEuUdIap7k1wCwyuDnue3NZ096ZE6kcHkd6uS5mlYmtGEUpydosrTbkDMWIJYHIPQVQu3DbFMhB5Ax2+tdEUlaS22OepXlZU1G7etyKSRMo29gruQcdSazJJcBFJ4wOfr1xWkJxSakduKwzcE4u0ixNKX8oI3O7FYclx1Cvg9M9iadKk5RtH7zl9pB1FCb1S26NmoLwo20kkZyx9q5yfUAgBycICGNTh6SaUXujkw2HhRqupN3k2dZDcLvLeYTjGAa8/bWBCQN/Jwee1ZqLceVa2PVnCLqKq3Z9FY9htr8gj5jgnBI7V5rDr6uAPMwu7JzVypSnF8ysDpOMlJe9zOz7HsMOpqrLyeXBz615YusnG3eTjkY7Vy1sJFxSYoRUZNqN2nr/me0RakhkwxO0kAkdga8ot9eZJtrAlN46H+dKpg5Ja7MxjXlWmqcdFc9jjuVEgIztwcgV5zb6yWYDccHtnoKU6LUeXub1EnNRe8T0r7UnMhYkrxgV58dZMfyqwJB5HrWMsOnBpO5ph6jc3CovmdrLqYQNnJHI5rzG61hyxKygHJPB5NXGHupGrpxg03pa/3G9rN5HOjDOcqVPvmvONS1vaD85yMkn1qlDlio9DaMXUTcdH6/iePfEX5vtAwSoJwD2rF8ZaorJJkbnYkHntU8l9j2qThGmpp2b0/zR02lWbIqhnG3AAB9RVDTLg7f9YSzLj5e3vXxkKTjJpvc3xjcnHl27epq6iIY45PL3O2BkkVm3V18jKDwNwOe4r17unGJ4NaU3WlQjpzaXOI1iYDgcKhI+mar3rCRHYY7kA9xUTV5qK1FluI9lGpKCba01ORvS43YLfX1qS6Us+MnoT06Vy1HyWk0e5h8VdtJ6s5G7EgMbcnDgnHf2rVaxkkkjxkqSPlIrirSckpSVrmuDq+yTbXM9ivplrLcyplfkBA9wfSvV/Cvhl5AJXj2oSCP6isedxlyvbc9ynNuDtorff8A8MWNFsmjhQKgwVAJ9PSvS4dJEaKVT5QFU49qK03O1nZI3wtK6VWTv26HAXULgNGxxwcgd67G70cZViQCGJOe/SteWcmlEjlXPJy2Z45qRcgJggc59DXXalozddpC7yDkdfelS55O8hVkoRlbfovU8juWBKhlZiM5xxmunvdJYlhsJ64AHauiUrPbQ4qcrQUGve7+p4Xfs+maxY6qjEtBcoQD/Dg9K6/XNEluopYthBXLD8K8nNss9vQdOpsz0cjz+pgcZGcVrdfI/YL4BeLYvEXgrSJll3uIkUjuMCvgj9ln4tnwlqcfhbV5tkMs4WNmPH86/nHH5HVwNaVKfw9Gf0TXq0syprF0n6rzP2ARSo+YA4OQT6Viabq8GpWsEsEoaOVFIJ78cVyVIqKTktTyYVpQapyWhflLTMqDK7T19atxgBQOCFIGR3rkqYeL0iWqkY3lbTqeI+P/AIT6R42jMV7HtkZs7l7epr3UQZI6j5q97K80rUH7j1Z89iMtoV73j5nyX4L/AGXPC3h/W4dcmRpry3bMZk52/SvsSJdp3cAbeVNGMz3FYiDhVeh34TBxw1nQ0b6lSyt4tPto4kXCLhQF9attkbiXOBzivG+qNK0j06fLKEpSen6jzMjjcGyAT1rHnZiPv4HBye1YTwsYtKT1MYYp+zUkLfusMUsjZ2xpnA6CvE/in8RLfwto1xGtxm6mVgqA+o616+WcO1a8korQ8fMM3pwi531Phf8AaW1ePXdemtYZiUjdl256c8ivL9e1H+37+4vLgFnllYg+ua/ccmyV4eEYfofkWZ1fauUr2bex5Be2ZhhLAhmjjwB6jHHrXW6jYLJGyx8Lgjnqa9hUk1rszGU5U5KKekdvU+mv2N/iAsklzoMzkNBKSFY9fevkf4b+KZfhz4+tL5sJZXFwBIwOM81+QcbcOTjN4iktOp+78J8Q08XhVQqK1VLQ/eiK5dVViSQ+cYrlfBniLTfEmhWeoWN0kgnjU5B9hXwnslNXWmh01K04S5ZQ2OvZi2NzYIbPHf60jRh2A7sCCK86bu+XodWG5Lc0V7zMTXdLi1rTp7O4G6N1IIP866GK0YAJ/FyfrXRl1SdGTnSd2eNmGUxrw5Z2ufDfiD9lSbWb6S4tL9Y7W4kJbcPuk194xoEbaQTx+VfZx40xkIqFtH1PAw3DVKUlfeJ4F8IvglpXwwtBHYsHlmYtI5HLE9c19A7d5VycAY/H0FfOYypPF1eeo9T6XAYpUYcifurYrquBjOQrDPsPSrDRqo65djjjvWPsOVqPRmaqqXvx2MwuA4DKFCkgH1qK6lFsrSscogJOa55ULyUkPDV3BSUtWjgPin4hi0Dwjql3JIVzbsASeua+P/2kPifDqEh8P2ExaOIsGx0J9K/ReEeFnVqKrVWh8dxDmzdH2FJ7fqfGfiK6/tXWri4U5WSUklu31qtDGr4aUEeo9a/aqODjTiqR+bTx84ybktFY5CVl0rxX4dvlJ/c3yYb2zT/GenXEltDeQEr9imV1I68GvNz/AClV8LKD3PoOBs+WDx6q1FeLeh+8fw51CPUPCuj3CE7jbR5HY8DFeH/sr+NbfxT4C0pVn3T28KxlQemAM5r+apYWVKcoSVnsfu2OpqpVVVLR6p+p9XO3QA/dUkZ6mpSMhGVRtAIIPenDDrmTS1PFhWSqaPVFYAnHXvk/hUyQqSwyVXOSBQ6Nk5Sep0OaglJatnnnjTwLpXjGyNlqCFk/vAcjivT4rZNjk8q2evUDtXpZbja2F96nqeRi8sp11drU+Q9J/ZU8Fw6lFqNzunEUm5EYcH3OTX2RHBGARyFHAx2r2cbxTi50/ZuVkzHKshoYaft3vc5/RdEtNDtI7SxiVIYlAVR0AxVS48T6TBqyaIboHUGC/uxjj3NfNQwkpw9q/kfRYmtzSSik7as6AquVYkBt5BA6cU4LG4V9xLOQSBVRp80OZ6WMaeOaa08vvERkVeGGS4UE1ZVEVH9CRgDtTng+ZJth7jlZaJX+bOB+IMgXwtq2O1qwJPal+IkQfwtqjZIzaucetfScNUWsVFvRHx3FVVrDuLemp+MviZ/N1i+jVjxO+QepwaveJ40TVr5CuT9oIDCv6NwtZuMXFan5K6SajGT93p8jyqz3SfEjwgEyNupJkEeprQ0y2H/Cy/CDDJZ9RQnP16V8px2msHNt9D7vww5pY6Siv6sfvH4NRl8P6WWbJNvGc+pxVvwtADommAZC/ZI8gduK/nTDxc4OUfuP03GTlGs09rm2cMRjAGeSe1WxCigj7y7Tkn6c1LwjirRe5rHEJqy3KLAlgucEgk471qPCny44O3Ix611YfCyl7stLanFOvH2bU3qnsj8tf2ssnxHtTcMYDD19quftXW5PiVlByT8xHoCeK/d+EIOGGU0j8hz7EKNRwgr669D89/GMcz6YJgcLDKjE+vPNdT4l0n7To115ZySCcDsRX19ajOtRdtz5fA4yOEx8HFaN7n65/sp6mL/4XeHpVwf9HVQPXGP8mvGf2F/FMV34Lj0SSU+dp0pRlJ+705r+YczoVKeMqQl0Z/TuPqTqUqeIW0kfobEQWI4C8HApsaHKqv3mIAB7Htmub2Um7NHBh01TcoM7KxAWyPIAbkH1pwULZJnGDFnB7HsK1w9G7SvqjkxlRJpxR5R420cazpeoWqYExDbN3fit64+d2Urn5yee1duHzKWHrKVPdGGIy721KKktbn5qa/4Y8b6XqFzFb6TLIUkYIEzyPf2r9FZrK3d5GMSszAMSRyfavu8N4j1IpRdP8f8AgHydbhPmlL39fQ+H/gD8H9Y07xBd+MfE1oY9Ru5dqo3VEB4Br7i8lIwGRem0kDvXxXEnEFbManPUWi6H3WVYD6vhlhabSX5vzEjGwBU+6pGR9KcWPzFcAbePavmlQUYXS0KnPmST3QqhjIoXO0MG5oiHzZJGSxH0pyjGCilqzoUna0tmacrMqLtOdoOc96qzy/ugCSHDcbe9b0Yqm1dbnFVbcZRS0Wn3nyN8UtTSDXJFIwzNu57/AFryr45a1Ja+JpozIRgnrX9K+HPIsOn2Pwvi/D1eb3Xo7olj1mMYw37skAg9zXha+KSigLLnBJyO2a/R4yVS8Wj4KngfYKMpPU+hE1aNmXa/DMQSOvtXh8HiYkApLgBsnPb3pRppTdjsrUXaM5vTy8z3s6pHIcI5CnB57nvXiS+KQ2whzlSV3H071tCcoLmZy0MG6k7pnsc2qooypICnvXjB8R5ziQnLEDNbRbfvS6nHQqUoS5Xe6bTfY9QuNWJBXefr6V5imt+edonBjGcjvXNVik047pnqYCtFSlfW/U7lrxmj/wBYQWznPeuMW+j24ViWzkg9/TFZzqtzbOrCUlOm017t/nocDpOuTab8ddAZ2IW6lERbJwSOma4D4l3s2heJfD3ia34/s/UI3dx35718V4kYeeJwF6a2/M/QfDXMI08VLDTa128ux+32lzebY2s27OYlJPrxzXnPwr8T23ibwlo97b3CyLJbBmweeg61/LvvrSe6Z+uypSg5J9j1aSXzFAAB44I7VWTG3ByQCRz396qF4N2epnH2coKKMXV4FuLO6hHO+JgeOtaE4LcEYQ8gnvUvFShVVSKvYccLGrB0kt9j4E8Y2UunahdZQqxlBBPevqXxb4A0/wAQAuylZiR8yjjHvX7dwv4iUJRVOutvM/IM74LrKrOVL4n1Pz58a2dvfeHtRinjVg1u5O76V9dv8BtMv4hb38jG1aT5gv8AEOwxX1FbjzAwTqN8ytscWH4KxblzSdn3t2PDP2H9J1bS/D2oTzl1tLm/dog+fu56j+lfavhjwlp3hewisdNgWOCKMKAoxmv5sznFxxWLnXpK0Wfu+XzisLCjLVxW53QnC7SQcYGc+9U4lJBLOQGIH4Vw1+WErM096zk3ptY0d6gDrnBOfSs5nxF82Ttxk+gqcM5NpJFuq407ppNbHz/+0Xq32bwpeooJdrST5V65xwa8w+O/iCLVDf6bBKTiFkA9eOlfs/htlk1UVWSsmfiXG2ZRknJau+vkcl+w7dI2iawNw81NVlyfXNeT/sW+JE0rxj4g8LXUjK0l+8iBu4PXFfF+IWXVIZg3J6M/VuG8bCrl1OpDXSx+swmlx8jYyvBNSLGrIoAJGQA3rXyFSgnBWegQrNNqW7InRpR/rCPmz9KtquABk7e+KtSlKXLE6KFVxbVR7anPavYte6ddWhB2tEw475FdEqZD84GBgnvXVg6lWjJTitTlzCj9YWj03ufBHiPQ76w1K4R42+U4HofcV9q6p4Y0vUWD3VsG2vkYAzX7Jk/iVCFFUpx28/8AgH5pmXAc6s5JStd9v+Cfm/4vhvn0Se1srSSW9vGMUaKCckjpxX6I2/g7RbaRXgtI1IbILAHGfSvWxfixShQcqcLy23/4B5eX+GqdZSqPRO+29vmeLfs4/Dl/BHhOxgvYdt9csZJuxBcg19Hw2y24WNCRuwMDqPev5+zTEVMZXlXfVn7LSr8uHstIxVic4AAX5uSBnqKlP3uOOMH2qPZOm0mrs1w84yipX1IGxhQT0I6etAR/l4wqnGPXNaWlazOv20atPlTsV7tBJEwbAG0kD0xTnV3V0/hGCSe9Oim2otW1ODGYbmg3JbI+WPENlI2pTqBkPKcEe9egatpha8ff1Z2GR35r+neFK/LhlF7n898R074lps8mh01lbAXLAjA9PpXpUOk7C22MHcuAfrX11StZRTZ8jhHBxnFLQ+BP2mNJk06Tw94ogBSfTNRjYuB02sOa+gP2ifCi6r8O9UZELTWiGRQvfHWsc2wVPG4GeGnulofR8J4z6pmNOTdovofUfwk1tNa8G6PdQuGEtojFh64Ga8N/Y8159X+HOmWksgMlgXjYE9CuBX8d4nAOhXlSqa2Z/S9WL5FOn9qx9k7lAyyk8YOKkCsuMZxkg1rTioxcpPQwq39qqSK7KuAFGBvzwPX1q20O3bwfvZNR7JKN3uzrmoSV10epQWN9qr1AU8+oq/5eDECpAY5+lc88LOMbGdScr8qVl0KexEK9vlHXtUl6vkW082D8kZPFdWFpuUlBbnNisVKneo10sfKXxN1rfqssYb5Yh37V5743vmuNavJuCryMDjvjpX9K8AZIqNJSZ+F8XZzKTbluZ63kZHzEgNnP+zXJte7AAMkZP4V+qr3JaH5VWhB1lOorX/U8v/aIU3vgeaVBgwOr/XnrV/4jL/bXhm/0/AJkhbGOhx2rjqUFXo1KW10e9l1V0cXSqtaXtf0Pqj9lTXI9a+F/h2QSbjb2wjOfUYzXzV+wt46SO31bwZeSAXGm3zlUb+6cdq/jPiLKJ4TGzpvvdH9UUakatGNem9GvyP0+ULxuJGOAo7n1pyLujVj3+bFfPU8O3O3Rnfh8VCKcYrW1xCBsaQfdAPB7fSlI3YznPYeldUKMk9duhlTcXDn6o8v+JtjLcaK00CFvJycAcgYr0K4sor2NoZlJRuCD3z1r3+HM5ngqvtWrq54ed5Q8XRcotJ27H57XN5PFOwkJzkjAr6g1f4PaTf3T3MZZC5Jx2PpX7vhPETCyoxU9Gfj9XgjGe15uZW9D87fGtvd+K/HPgzRbNGaVb9ZXKDkKDzmv0T8MfBfw5oOof2tDbeZqO85lk5wPQf8A66+T438QqGIwzw2HjZ97n3nBPDLwlV1ams31PQ/CliLLSLG2UY8uFE2nouB1rpooVt9uH4xjH1r8IlU9/mlsfosWnOKW4/5SVUZJHPHbFNYk5HIJOdwroknJpN2ucNaqqcJNav8ArYhlYCMl2GEUn6Cud8SalHpWlXl1NJgJE2Ce/tXTgsLUnP2cerHiZKFFVIytdbeR8ufELxGi61deW4/dzEDnrg9a+dvFfiaW61e4ckkSXDED0Ga/qzhDL3h8PFNX01P544oqRqYptO6PT4vEe/5Gcg4PA714hFr2SpDsc4G4Hqa+zp0pWuj5fEU5U6aUpe6r7HvUGt+Yz7nZVAJAPavJbfVZSyFHYKDgk9/rXXFc0eaPQ5OZRqRjVj8XX/M9cl1MyYYn5cEk9685bVGCgM2EzggUXVuRBUy+cZqo3dHXy6omVVicA8k9688uL9i0YBYkMCQO2aU5rdIPZXnZvVa2Otn1FWTyjxtc7QOxrzi51WaOT/WYLMAB65qVKXKpRep2KDk3FrVdfJHSXWreUSC5O7pk9K4Ga6e72kOVOSD71rCop+89Gea5+zcoJXffsbEmqNICS4OOcA9q5ZA+5vnIYdAO9aVFyWS6mUcbObUXtsdOurMDHmT5C2CO9csGOY1Vskkk57V3U6LppzbvYnCVJSTdPvr8j0OPV3Z1CM3QnP1rm7MsybTjOB071ySrRimrasuVeU5KTbv1S6J9z0SHUHAz5hGMEHNclFK5H8QJIxntXPrCzkdMJwUpOKul+Z6Hb6wUCDcSSgJJrlfMfywCxJ5AI7VxzvLc6aeHVGtGtLZq9n+R17624ZiGK5yBjt7VxDvN8hbIUv09Pc1NGk5KyIrV1Gopt6vZG7cavIxyJMFc5Ga5aQvIN/zHaxyB3x6VpTrRm7NEuMpVIxm3b71c0NR1J3AOSX249q5y5ZtrMSx4IIHatKVNp83Q48bjKStfo9WefeJ7hiCScbicnP8A+qq3iVGZGByUwRg/rSrOMkuVWR7ycFT9m5N631NW21rytuHA24A2968olv5Y5CWn2K5Iyf1r4airRTktGd2JUr8r+Janqr60ZAEDZDMCSD0z1rzSzvT5iEyHCOucdxXdLEtNRtoTUpwt7d6t9D0SSQy4yuS7gDH9araZMsmcgn5iQfSohUSblF7kqvOrLlirJFh7UtIgIwWyFI6fjW3CYiw2k5ZgCPSsqdRKKutRUcdOVSdJK6WxBo2jrcXcZOSgkBOe1eiaNbpGvygDJOSf0rHG4lN8sVuerltCUpOU1Zqx1umWMVvEFC9wRinxXGwAAk9yQOPxry40m0uc9NxlOVoP5eprrEOicbXOCR+dMt5pGaNyeOc5py5ld2JrVpOKpSfz/QrXFsrBXViBgmllldyxYAIrFTj29K3oVGvQVOunONFfEjnrmwV3c7gc8nPStMoGXczfu2OSB6Vq4JOyepUMdJys1bscZc6XHx1DZBwK6SYpgAYOSSD9O1bwmlC0nuzNSnz8sXeR5de6IjO+UOGO1hjr7V6BLEroAygo7DGO9P2icknsW6aqO8ZWa3X/AAT571DwNMbhb/TQUuoW3K49jX0Lb2qoCJTkMcgY7V5WY4WlXfs6kbpnRSzyrg/fpSfMiX4Z/tC674HWLR/FtrI9lGQvnYOcDt/hWfqvh2yu4j5kYLcYB718jifDqhWfPTk438r/AKn12V+IteatWp81mr62f5H3b4T+OfgXxHDA1rrkKPJglJGAI9e9fmHfeDbOF3e1R45efmQkfljFfOYnw1rxbkpppeX/AAT3KXHGGqS9nGLWuzf/AAD9nrPxRolykbQapC/mHg7xg/rX4oRt4i0w+Xaa7dopIJAkb9Oa43wJXUdXojsw/EmEd5ylqfuCda07jF5Fg5BYMODX4jL4u8XxRsh127Ma7VA8xs8dT1p1eDcRzOV7XHT4iocv93ufsnq/jrwvpKNJea7bptJO1nGW+gzX4qnV9Sv2LX19I0hY4dmJ4P1NdtPgSoklUlv5HDTz2iouVLWzP0r8a/tGeGrGKeLQ7jz7nyyNy/wmvzXXUBC6oAZJBnnsfrXtUOCqFOSlV1d9EfP5hxXOranHS34HpXirxjr3i68kuLmYmN3J5J45rg0urmdkYgpGQeB2+lfZUqFOlFckbI+dlRnUqcvM23r5GpFGkTksytIBgDPTntWaPJgdFMh83bgE+tXGaclZ6GNWrOF+bVpaabEk0IRgdhPmcn2qC7uHMSngbGySO9dFnUi+ZaI741ITgqktzlda0C0vQXmUA9Qe5NaEYuLp9rg4yTzWFbDQacZnFKtVc1OjL3tzs/hF+0H4h+FOpJpWoLJNoSyABsk7Oev/AOquYfR4bhAI4g7gAHI9etfC5pwDh8RJypS5Zeh+h4Hj7EU4RhiqfPH9T9avAHxr8B+NLWG4tNciWd0BMbsAykjp1r8hk8H3NvMtxYXUttcIQwaJiCMd+DXy9fw8rWT5016HVgeLcLUTbTjd+vy6H7yWt5aXCrLFcI6t0Kkc1+LGleMfihoKKNO8bXRWPAUPkgg9c81564IxEFZbHdXzfC1pJKep+2gkVVUOQGZsAk9c1+Py/Gr4uRhPN8XSyAjOAOTx25qlwjikm0tDqwmZUI1Lqa1W5+wLTxLszKoQMeMjjFfjlc/F/wCIl1GqT+KLllkJBHTA9/pRh+CcU20+hyYjMcFCXvSWp+smseLvDujRSSX+rxR7AMAsM/zr8ar/AMTazf5e81OaSTac73JA/CvdwvAVZtJyseFmfEVOnFSp9D7U+L37RNgttc6X4anZ22lS4/i9xXwI7G6YFj8zkgt/d9cV9dlfB9Cik5as+exub1KlNcu0ut9h2r6tc6ldzXV87NJLISWPcn0qKS1LDDSDCgEZGSfevqKGFjCSSVkfO1q05RT6L9CO1dtyEAFVZQPp71JmOMqAcDBCkdq7YycmotHm08QqUr1N1qyS7jS9tpbc4wyYJPf6VH5zFCNwJVQcjvit5Uop8rX/AATnoY2clGo3davta5qfAv4v6j8GPFgtNRZz4fvJwGIzheef/rVzl1aWd9GvnIpByMntXwee8GU8ZJ1E+WR+k5Bx7Uwqjha6509ne1vwP3A8GfEbwx420q21DSNUiYTKCEDDIzjivw+0LU/EXha58zwzr1xbFCCEVjtyOoxXw1XgXFUnfex9bR4kwM5cinZ799ex+/8AHIcglySDkkd89K/HTSPjt8XrWGOGXxhIFON2eo/WuP8A1RxTjzNWZr/bFBy9m5I/Zb7XFbxiSZtq8k5ONv1r8gJ/jN471EkX/iSaReRknGc9jzXdg+BsROLUtDza3E9B1XGEr2P0v8c/FfSfD9hcC2uo5LnYQAp7+pr8vm8VX1+x8+5Yhxg7j+eK+oy/gCEVGUpX12sfO4ziOdW6p6WPS/hR8Sr7xT8dNUm1G9YW6DMYc8AAmvD7bwvY/wBpyapBfzQ3rnJkjcgj24PQ0+JeFqlZRp0NOU9bh7i6lRoyp1Ityk9z9p7fUtOaK3xeR52AAhxzn8a/H0za3Dt8jxPfqfugCZ8D9a+ajwXiHBcx6j4jw0JWhLVn7Ix3ln8jLdRkOx53DmvxsOreMYlIg8WXwRcYzKef1rR8F4qOskVPP8M9HLU/WD4i3MH/AAiuqhZVO63YDBHJr8qrfxt4yjtZbO81y4ntgP8Alq5O4kc/lXpZPwriKNdSmtD5zibNcNVo81OV3ez0OK8Sy/8AE4u3yMGdhj6d6o38s8rtJMEJlkYknOea/WI1W4RptWPgISqSTqWvbT5HEaPK3/C0fCKHDK2oxkH3zSXehzNqdlrFtfNFeWUwaNlHKkdMV8rxjhJ4rCeypvXufZ8F5hSwNd15x5W9Efvb4SkVtB02Pf1tkOT34FfkHpXxk+LmmwRW9p4wmMSIAVI61+T0eGq9OCTWrPu6mOhWlKpz6bn7Tq6KVYkktwD6A9a/H0fH/wCNsCssXiknPADKDk+9RPh3Eyailpc7nXoRabmktD9fhJuUOTjPAJ6D1r8ibT9pH40xTx/aNbikh3gFWXGT3xWseHsVdSUWkceJxeHceVzSZ6N+1O7N4kkIUBlO0g9TzxXhPjHxtq3jW6N7q8oad8HK9zX6rwxNUaap1Fc/MM4o+3nN0mubTX+u5wC2vnQyRStkOCOerZ7mtawg/egDkhs5r6WeJilZK6PnpZdUqv2cmn5dhnwG8czfCX4jGG6kZNH1SYBy33Rk9c561Drfhy31SIsy7Z05DKOQe1fnnEmQPG3qw0kfpnDmcLAUfq2Id4rz2P3C8N65YeINOtb60nV454lcFTwOBX42/Cr4++O/hBeR6ZqKvfeHo3wquTuQY7V+U47KcVSdqqa8z9Ews8PUip4eSa7dT9w3nfyCvmEbVAHoK+QvCv7YPwo1u2iXUtSe0u2UK6S4ypxXBRoVFFQ6HNXi+ZzkrO59SSSoCTtGdoGR1P1r53vv2mPhGqmWLxVHIFPIXtxz610wy6rODSVweKU1roe/l0PXqqnn1r4Q8e/theHLS3lg8Jq0k5G1ZCcFc9/8mvRwXDmJxCta2p4NfNlh4+zbXqe0fGz4zaZ8OdLiWO4DarcyKkcYIySxGM81+LPxb+JXiXxhrdvqc9y8xhu1k2AnHXPFfV0uCamHoOc9ZdjzsHxBGeMjTl8Ol2fvb4N1mTWNAsdRlcl7yINz16V+bngT9tyPQtDsdPvfCUjy2sCJhSDjbjJ5x1r4qOBrxcuaD3Ps1TpzneMla/Q/UxHGQAQB1JNfnXN+3tpB8oL4WnIJIYJgEexrjqZNVlUTinr5FU69OUHCU1pc/Q+SViAysRjnFfn1b/t0aDdhRN4cuI1YYDDt7V2xyus5cjWpyVcRSjFwjZ6dzhP2l76SHxXcMhYDceR6mvFvi38SbXx9rj6nbIyR3LkhT/CT2r914RhOjRSa1PxLOHKdZyvo9EcJHrLRFV8wlmyWCntXGzXIhlKrneYyCR2Fff0sbJq6Vz5WNOdrWV1v59meh22ubcYc/KCDk9a4EXqiLBbA6AjviieIUp2mc9OvKEHeOi69/I9JHiJo2Ub22nJ57Z615gb98+WjkLyMD17VssTptsYYii2lUpaRetuzPWo9fwVYzHaASQOteVw3xTyWbKhX59/eqjWclojz3FSqXivePZ7XWVJw0xAGBkd/WvLkvQrfK7eoBPWtpYpSSSOunCFGEZS3X3XZ7THrMgYMsxEYI49a8rh1d0yolJzjPtWX1hJJW3N6nspU5OLs09fM7bxjFF4i0eWzcjzNpZSe7dsVyC6u67QOWJyB6c1nUoxlGXY15PZwjJOz3XyPaf2VPjwfBWqf8IB4suzHbLLi3kfocnha+XfE2jQazILy1mMOoRHcrp3x71+RcRcAxqz9pRlb5H67kfGyjTjRxK+dz+g7T9UtNStIruCVWWWMMpXuDX4w/CD9qnx58MntdG8U20moaHBhUcZLgf8A1vrX5ljOHcTRrPmj87H2uExWHnBKlJNn7T3aFQJCTlwB9K+Y/C37Wfwq8UWkS3OtJZ3kgBEc/GDjoc15NfAVLJvc6q3MkpU1ZI+j+QRhiSSNxrz6z+K3w/vY1ki8U2ZBBJxIuD79a54YeUUotbms6qp3utT0JADjr+7J/GuMl+JXgOBN0nimyBYbgDIKVHBTk1KzM/ap0nd3OxddxBD4Xkc14hrX7Qvwv0WOQHxDDPNkFUiYEsT2FdSyWpUacEc0MXFp3Wh7aGiU/M54bcAB09K/P/x1+2BBNBJa+FrJx5m4CZjyMdK9zKuFMRXlytWXoeZjc9w9Fp82+59PfFT4o6V4N0qaNbtDqEkT7VBHy1+SHij4i614nvHuNQuTI0jZO7OBmvv8l8OoU6ntaz/A+JzLi5NunS3ex7Be+MJddvprqaZh5r9+vzH1rxTS9TbZlnJKsucdq/VcHhaVP3KaskfnWPdVy5qj1ZXfxJffCn4l6Z41s2ZrB5gJ1XoQTzWxqdlaeI7J7W7U7XUjLdiO9eTxRwzDMadp7n0fDXFUsukqU43p+p+zvwu+IGlePfDWmazpd0s0d1bqxCHOCegr8Xvhl8TPiP8AAbV45tJd7zw00wZrZmPy+46/hgV+G5hwjiMN+7a5l5H7BlWaYXFR9rQnyt9/8z99EXClwPnPCqO9fGHgH9tj4Z+IraKPX7qXT9QQhXSZSMnHr6V5UMC3K6VjurVHGPLJXS3PtBF4GOzAEeleP2/x/wDhNOiyReM7QggfKGyfasauXVG/aIIYpSXInZ2vY9jkhEifPklWxXiV/wDH/wACCMx6XePcybh8sanafqe1TTy6q5XS0ZyYqtBQi5PVPU9Md/J3tIw+UMeegr5P8R/Gi41CdoLaIQxP0UHoO2TX0OG4LxFePPLRHjYziOhRqKK3ev3HqGs/Gzw1pvjDTvBiTCTVr1S3B4T2+tflt8RdX1/RvixoPjWxsp7q2tLlGnWLqV9BXs5/wLLB4ZVqb5r62sRwvxNSxs3GquV69d/M/am2uTPCkrZO/BAHevh3Sv2ytCgsYY7jwRqoljTDcDk18PDJ8RJ86ifUYjExcfde3Q+6TLhVIck5wc/0r4oP7ZXholT/AMIfqfJJBC8D6VUMkqtJ8ooY2FH3X/wx9oyS5VuSOmMdq+Mof2vvDsrxj/hE9TVpWCqXjPHoTz0q5ZNXdRNLRHHLH0qidpXPb/EGoC1vCkjENnI/GvI/Evj/AE7xElveWMTxNKgLBvU1+z8IOpOkqc46n4pxTRg6zq03onqd7J4hMez5gFyMjPWvATrhkm2SO2VIA5r9Cpwg4KTR8fHmliOWDtf+rHqfjCaPW/D+p2TPkXFo6gfUVxmn6g048vfkElcjtW9CSU1OJ04rDtwUY7xe/U8q/Yz8SNpfibxX4Smfi31KQxqT0U9MfjXm2hReI/hP8bdQ8UWfhq8vdAvwARapnHOfavwnxH4alHGfWKKvc/fOE+I6WJyxU6mk49+p+x4k+RW3fexj2zXybbftSW32aNZvh5rBYDIIj618JHLqyilKOp6iqqVS7mfW4kdAoD5z1r5Vj/ag01sKfAWsFux8o81lDLasLTcbnSsTSgkr6n1UjtkbsgYOAe9fLR/aZtNyFvAWslDkA7Bx611wyqtGDfLcFiozldPRn0D4uvmtdHumjkI3fKCO9eU3vjpPFPh+GaGylgW5DOIpRhlzjg19Lwxw/UnXU5x2PlOIM9pQh7Gk7s+XPFEtwt7PL95S5UAnpzU3ihSs0gzliGxu7V/ReWRVOmoy6H4hxCpYlqcXt0PKtR1Z4GcHIJBxjtiuV8RysgZN5OW4x2r054hJpJaHNSy+NSmoz3j+pRvfELMhQn5Wzu3e/pXnNy8zXBG8lEkxj1FUsYrOUtDF4KNOao0V/wAOecW/izVvg/8AEy08aaVCRpVxMq3AUn5l7gj+VegX+h2ev2EtpfRkxPwwI5P0r4TinhSjmcLp2kz7ThrjCeWL6viFdH67/Cj4p6D8RPDGnaxpOoRTeZECyqeVOBkEeor8UPC+p/En4F6yuq+CdQeTSVnBa1kJ2kH25r8QzfgXGYVtpcyP2LLuLsJiIpxkk33P6CfOZm45G0gAdvrX50fDX9unwffm2s/HtnNp18oCu2CUPvmvmI5RUoq1RHqxqKspNrQ/RQzEqTnkPz715PoXxs+GPiGGGXTvF9kxmztVpACPQHNc0qU03Gw51FKmoJWat8z1WV93y5Afrkelcw3i7wxKikeILQjAyfMXofXmp9nJrmktR1FTSXPsdIX2qNuOSFJPpXF3fjrwpZxNNceILUIAOTIuT645rF4aTqRXLqjWu0qcXGV46nWvIECtg7sZ57V4hrXxz8CWKMLTVhcTxkgrEMj8TXRLJatWXurc4MViUmnJ7I9onvY4Yy0hVUUnPtXwH49+P19qyy2mlyG3t5OM5+Zh6Gvpst4ExWI5W1Zeh4WMz7D0JezlJa/kdp8cvipa7H0bT7gNHkqzKe/p/jXwzrGqzalNJK9y5aRyWY1+zcN8A08FFVJO8mfmefcW1K03RirRXZ7ktxqz3c/nHHmMxVSa55NsnHIYMcH0r9HoQVNctj4SEZVJe3qvTXTyR0UN4kbRo6kKcE/XNUIhGQA7k7cghu30qo43TlnuZYjAwk4zpvTc7qx1FleFuDtI47cVhWbKxk2MdqAAf1qZ1IuCstB4KM4OTS5kvlv1O3W7Qk7+SV4H1Nc2JGHljccEDGPelGhK15M9SpOKXPFXTWq9DcuboMW2g5JwMd8ViSzShc+Ydq+vpWfLGSVt2ddOjd80tF0Xr5kElw0jMWPGTx65rPlV2O9ckE5rSnJxik+h4+IwbVZt7XvZFvzTkBVC5w2R6VRjWR8NtO8ZJ+lXGrFvUJYWpUjJw0i7F3zwhYtnaeQB1zVWKNpHUEBkfjIzx7GrlUd7vZGTpyw6jy63/UtBAwSZSRuGeOv0rRitGQRqFJTcAAe30pxrSqNwi9DCs0lCFtPyZYtQyhF6EgnI7ZrctbIsq7QTk8iq548yu9UKNlN2jdO1y3bw+Ym1VyTtDAnqK2IrVY41c4ATBI9a85zUpXR7VLBRopNvrt5D1iKhM4wAN3qKsI3B3uR9R61VJOUrMIwU4ucNIplGYK2ew8sYJ7VbeA7WCNjOAOKyfNBWi/mKdSFSqk0rdDEeIK/7p8g5OefzrTSLdliQAD+f1rWqm48sXqcEqrw8+apG0d9DDnt1Ck7cg53Y7+ma1bqBcPhudoI9qiDfIotm06seaDpq97tnk3iKOPysEAlARnvzT/Ey/wCs+fqDkeldLShFykzoi2lyxj7x4hPCXEW7kFiCT2rf8pHxjOGOWB7CvkZtbo9LAwVJLnlrqZVlbgS4JIJbOfWugggVcYb1BBrFxd02RLMIJSi47fqbGnyGNd6nhWySe1Pt1CxYXBUggj+VOFVyk1sr2OGcfZU3Va5paP18jqdOuPPKhchf4v8Aa4p2k4jABUZUAlvWorU1DSLuz3MO3VpqpJcr7HdWlx5KIVJCqMkHtWP55cMEBy2RxWUowqxtN6mcIVYNNO+p1kd4hYsHO7tg8Vy0V4DgAkc457EVFSnaK5tkdEJqc3b4m7W6+p3cd4AQzEh+MnPWuWivgVLnq2B9B7VUZKMdVqzN1ZJ8yV90diLkNuDHrgDnrXMC6KgA7icHgd6Sgpe8nYrEwjyJX1f3nS/aBICCdqqSMetYC3O5c4xk85qpWaTa1QVmpU0m9Vt8jYc+ZtDAECQ4z2rLS54JLfLvOQPetnTahZI0WKjJc0pWa6GlksG93xgVFHIrJGQSFJOSe/sKqnSi3yN2PJ9vKp78/lYtwQ+ZIisSdoBA9CO5osnfLOM9AQa0rJxajY0wtaU25y2VtGaLwfK2WAboCO1NeVcqFz+8kO4D3rohT0XKEpTcm29G90YN5aozqq5ILHHsfetiVTnjnpg46YqkoW5okyxE4zipann99pMcnmsoGduBnPHrXXOiKWLHJdskd2xXn08NGUVFPdmlfFqc3NLle3zPKJdHwCgBDEg59K9Cu7RMLtUKcknHepqpcto7nrKpKlGNOpqur/zPJJtNA3biQrAA+x9a9En05HQ5AI4J989c1hQpqT1IxHtIpVIr3b/eeWNbQwLuRWJydwPfFddc6SrlWHy7WOT61fsZRev4ixU1XgnblknozlPNlkARARzkAdq6WPTPmVo+mQD7nvWHI5NNPQ7qlR03Go9JP9Dn0hk85XfJUEECuvGn/IVUAvwTntTppS0sQ6kXW5ou73+85mRF2/MnJwBmuiSweZ92BjBBJ74pxpqN5SZwUcVUm5JR0XnvcxrG0RAN6HLZOT0PpXcW2kfLFzkSDOR3qKik1ypnqYblUk5qysYtogVgFAHcg966ZNOVQxVergn3pcqs29Dojj70lCitDI8rPz8ABiMeua1pYUQg4JdegNVRpqVOzZz0nVU7r4fMwp4H4K8bj0HcVpfZprjliVQMSCOprWFN8rUlZnNQuq/NeyOWmtgMDoFIxiuwWwjADMuWDHIPb6VXKoqzW5thsJebUZ3d9VY85e3umk+RBs+7k9hXpH9nxshZUBI7fhWruoJJHmYubdTnUdI6I8pk0i4JUyyEkuM47j0NekvpLMGPlkEkgn8ODTjCUklc7KdRRpuVr7HmQ0+52/KpxvIJz09K9H/s9YlAC9ySKxqcrle2qNqUFVilPRnmMsFygLBmAOPmz0rsbm3Vlxn5gcYPYUJQT5Y7nHOlU5nG95Pc82uIbkvkZA2gDnqPWuzntkEobGTtIPHpWuHgpNpbGk4U5SipvVdzhPJuCm2MMysVIGTXbLZoiHk4YcDHfNdMXebTRzxUHJpP3dE/Q4cR3WdhRgQcAg967Sa1yrKqk7mBz3NKjJp3iTiqMFTdOlsvvscTCs8YYHcZmfIBrrV05UJLbxuGcDt7CsJVHU1fQmnCtTpKpyprVaHMG5vE5Rj8rA5PT2FdK1oiHncUbrgU5RfK1FanRGdSM4qor3OcF5qGIkAPmsxZgTWkyrmST5skgEDsPaiNRt81tTLmUJtrdF60v5IpIxPK4JAJHY1nGFQyyMWJ3KOTWD5otsiftZVYx72a8vM9CtdYVwMAlicBj3rhRdMpTDsFDdO4966KUbrV6nX7aTqNt3Xfb1PUor9HKs3Drz9fWvNUv5uGyy/OME9WI/pVcrnHlgzKc4QaqqO23mentekghMFBGQMdSa4aHUWZQASG4BI71apqUbNa/oZ0Kc5SUqm76djp1kAEivIWYnOPTPasGKdpZSuSFHJY1y1U5pS6bHpxlH2qw9ttb9PIW4clpFIYtgHk9KdcDdErj76A4PrXj06bc+VOx6eImvZ2irtLUhWTO35TsBHB79KgSRhKTkgHIBHasaUpte8tDTnVRqT2tovM3rZFxG64wxwQe1R20pxs3YPoRxjFEYtT01PQrTmqKS0b/AvnCgDdkDJOe9QeamfvAsvHHf1raFLW8Xozw6qcnGMnqIEVyCzg8Er7UqlCAxLBF6L79zW821qlp0NIKVNNvVJFQqwO5iQB0BqZQJOSDt6EHvmlCcYpprU6NPZqTW5tacwbhiQcnBqvabIz8xO1m3c9h6CoaafNB+pz0Vz1X7VWa/FF+e6LKwUkOcH8PrWReXKrG5IIQDkDt6ZrSnKTenfQWIo0qkedPW6v5nD61dCWYI6nPIBHcViX1yHuvM8wkbwQaxxvIm4vfsa4elzTU1pv1KGoG2ghBVMvlmHA46Vh61qAdSkZBDHBANeZh8JGppKOhpUxU8O0oVL76GM2olJUeMlSuCqjt71zzzx+dsGcgAE+gr0lgqUdLWRz0cdiZxTqS11Og/tSSSJjv4cnJrAS6QA4BK5GA3f1rsptK1tjyK7lUjKM36GoricowOdrggn+KqUV8oZN4HDEA9/xrStK6bR3YWMuSMep0KNGqq2RjpkjpWNJeoYnKyAnbkA9TiuNxcoaqw6MJ0ZOXNdvYs/bP3ibMHc5yfXHr/SsNb6IlBuABcAn14rGFk72OqpRlKHvO3c6s3WVj7ANk+9ZbX0Pk8Sj7oGR3zV024uyV7nDicvTmmno0baXLOqybsYb5SO1c5FfgOAMlSuB/s4r043bd2ZPDqlOMWtH07HRSzg5cSEh1AI9+1ZH2gHEqkjBAye1dNGKb5W7I82phVCpzqVrXLrXDgqnIYN0FVElJzIGO48DHb3Fdsk4pS3Zg2qs3FO0bfiW4pRs37iJDgsfUCqJ+UkBvmznP+NRG795iUZ8vso63aNeOd9mHl5ckjHf0rKMzrkDlchW9q1dZppo6Z0lTjKEV73fsb6Xbg5kYqVx+PtWOkp+YEAoSG59q6PbKVpP5nlQpJpu234m8L0yEgErnBJ/vGstXY5KMApUjHoT3rJzalzLobOKesl6G19rlYkFyM4BJ71hOVQp1Dkkk88jNSk1TfKtTerhJOKlJ+7v6G2t2FI35zyMjoRWPC5bDOuduQF9OetZU5Sk2qi1MaEaV1CL1VtTtrUQyMEkx5bMcZGcZ6c1W07dsO2RgqAMR656VbS5brc2rSduVay6/LqjP8QQ6cAqiNA4IACjp9azNduWMvyxgsoGfeuWWAw/LyzitzXBZvia0moSaSRiw2kduBJBPIpXOAjED+dRlykTKgIIyQK4K2UUE9II9XD53iW7KVy4jTB08y6kLAgjcxOf171liUsyrvxgbjT/ALKpJt8qsZzzive8pu3U6CO+8zGMgkkBj2rJgD7cZIwS27tXU8LSp2jGNkedTzOp7GTcm3fqaTTvIGcO3zgAsO+KRLb5UUHL4JB7mu+lyxjePQ8mtTlK/tNbgJWG9ckv0JHao5IJGZtkgAyACvXjrUwp83vtnXh67cFTgrtWfodRo9zIIyV6MRk+nSodLikWIDDHJBz6VzzTbSWh3ukqidWSu0drb3/EZZvl5+YdzWQgcqAGJ+c4Iroo125WZxYrALkcoPla/M6u2ulmcLIgKF8YYDFZtm2Cuc8nGKqpUTja1jswNOrJKUld6anc6doui3DLLcafG7B9wDKMEd/zqnpt0YtgyQ+4DB7ewrhr0KU3ZRTR3wnVhLWTT6HpWmeHdDgQSQ6fCgUZJCjp3qjbanKIgWkYruwCO3tUVMBR5UopGdLE4pfvK0r7o6ozxWcYjjTbHgfKP4vSuVur/e3LEEELkdcV2YaEGklBXOGpOpKSipNoW+1ecMSJDtBOc9/SuWuC9ySQScEgg5r1FGMYOSOKNSfM6Sjf8zVXWmmdcuC2/BPqPauTt42jlDs7Apxz3rlnKEoa7s6qlJJ3S1/M9JtJredTnHzsVxjkZ71n6N5EpgaWbAV8HPfNZwhFqzscrVWE1KO0tN9l1OsW3t0CExAlMc4HSldrNCfLuiUDdD0+hrso4aKlZrVmOPquVNzpyej/ACLkQt1VS0WRnaAw6VjnUI1I/eAkbjtBqnhoyfLJbnnrG1IQXsndr9Tqhcgx7FJULjn0rnor0EFhgquCQPeq+rpT91bGtCrOUHNy6q5vmRmkUjBbcMkd6LPLMrZBDPkD0rRTaglIuWHWIlzwWp6D4fRC0WRuBfII7VLoIQTR4J3bwzVxwlCem2h3Ymc6UOVa3PcdMtIpbWL/AGTuGO/FN0mVRHFjIG7aD2461lyOEby1R5MsUudUZPVm4um2yneqK3Tg9z6VfiVcnMoJDg49PanWpQ5U7bmWEoNzlGUtEtGV7bTrVX8woRnAwPbtWnAiAq3mrtPJHpWfsqaik1oa5dGcZqMZba3GmwtchDECu04XHTPap7qVEgQK+W3EkjtUrAwbcV6nVh61Xn5oN8u1v1OB14pawyhWOFU8D2rJ8TXBcP8AOVXJAJ7V20KMVJKxGInUipRg7PT53PC/E85M7qXJHUEds9qoa+olLnzBnp9M/wCNev7VSSi1qcTw9SLSkrrozxXXU81iqZK5yT647VvXdkJC+5M/KQR6+lTLlp25VdmlVySvF2cfxPK1sS8mcElSSAe9d1/ZeHUhCCGBPv7VVV83umcVNwi+a8r3MmysNqhpCMFSB9TW+sYjVQxAJXIA7VmqMpXjfREUatNN3e/V/kcZqdgJo8SKdh4U9cV1LW0kg2sxMXUp6Vq7NpJaHFRwE5R5lPZ7Hlk3hTTrxgJ7KNhkg8Dn0r0cWoj5RRhuAa43llKpryo9/EY+vShZSafkeY/8K70RFLx2xXe+cKSMn0HPH4V6XKjFV3KOW/l3rj/sLDzdqkFY7YZxjKFNVIVHd/0zhI9AgtQPLmn74Jkbg44712FxbOzEgEZIyT3NcsuHMFPSMEVW4mzBRlUhNpKxy8disQCfMzb8rvYkL+ZNbM9vLIgYxjDfLkdQfatqOQYaEk1BXRw187xztOpVbT1M6W/uNoUSHcGxheg7c06exlG8MSQygYr2KeBoQStFJs4VmuKrxbbbiu7ObuGuJGcGQl8nP/1qtz2z7g7Iwb5SdvQ13ScJLlWnoeNh6c4V1VlHvq+xglWJb1fAyP1rTltHDDbkhgRg9vWoopp3W6HWr1HOyk2pO/3FHLMAwfLAEEdyTU9vbyZLOCVyP8/hSqO8rvfsd1JOzjZly3TChsbtzgEfzra06yDlVBYNKwyQKOSMm7k4nEVJ0k6K1i1p37lq2gYKAoI3KAQO3rXV2WmuqhWIZece1cEafInd3Z1UasU0mrXMZYXXbuQ/LggjtXXCwdRtKlhgjI+la80mlc7J0W7OW+yOQFtLJvOPQgGu3bT3HzYLFsAAdq5eZySdup01E0owb5tfuOBkgZThEIAYA+2e9duNLRXYtGQrEEkd/rWsla0rGU53lNRtZ6/ccRb23zD5MHIBPr6Cuzj0siU5yNpB6dcd63lTi17z3PLw1dxi3J9TAtLWRm2hQCGPHpntmu3g00R7XYDazYIHf3rGpUglyp6noRwknH2q1cvwRnW1iflyvAwQDXTrAUAwgwBlTUxouFpPc5quLUPchH1K1tb+TCAHAGOCeo9a05Aot1Zs/MePYirjKVSShL1HVrypUVVtvdX/ACM+QL5ap1znn196fMA+QSQyAAEdDWjSjNS6m9RTqx+rxVtLv5lXcy8ODySMGlEbNzwFIJwfX1rOdKz5m/I5q9SnBxp9Oo0Fm+feQBkEDvSiMIu1AQxDHI7VlZppJaHTGlOrN62VtP8AMjlcKoj5ATHWs+7mwHYkkAk59K7oXUk3uzzK9aSmqUl7qKd5dtsI3MMAnI6iufvrkjaEyQxIOP4c+tayimrpHbCcqUoxVrN6HE+IrsSCRuSoJ+UdT61l6+mFdcnOCc/TtWFaShFJbM6I0p0ozp7t6mFBA33iSTgH6V6H/ZCkLkADJPTkivlaMXLVPQ3ni5Rp3qRu+hx9vYOzgK+fnAAx09q9JttFDBeoXCke9Q4Xik2ciqpTUX8kcnBayooGCSzEMcdK9Ft9IXLIGGd+TjNdU6UYxTWz/M5/bzrTdKGjjv52OctLZk2AhjuTIUdB9a9Ps9ERE3lsOSCcdxXn1YxclBn0uExDhTbvc8+EMkYyqN93G30969Dk0xW4K878FexrSVJptKJhiMRFNSUt/wAf+GPPHhkKxnac8Ake/rXavpiDO05bIJFRTw81Lm6Gf12GInGnCNrdTjFV40PJzuyM966M2GJCWBOCMEjpVPCOS5pmOJxTdRwgtXuYCTvKwYsQyAjj07VrJCIwA4xnIB7mt50o0rQjrcxw8uepzzdm7WKUbyYyGPzHLGrYRA47qZAcitIU0nzLodMcVOUoxlsm7skj+4gOcMwyD2oUhsnk7HJPrxWOIpzhLR2TOiVKjVaqra+xowM2FR3JBkHA7U6FlUrxx14rH2aTbbOqrTpTlyyWhuW3mEk87VJAPpUsEqlVKY5VR+JrSFOU0mtjmxfsvZuD7fcOuwI13nIEXUf1qK6lV1+6wKkkkdMeldkabaStozjpS9xKL+dupCrmbDZJ5OQf4uKo28q+W4Vj0OOeo71lKha0U9Caimnee46YbDjPPHJ7U5to2lieCSvvUTmqaSWpthcPGUnK5HtVwpJOwZIA7+1SxSqiqF2tyRzUzUnK0VuZzpKpSU3LW/3lWSEODgEq8ff1FXJJ08wZUhA2cnuT3q6mGSs4nZhalZJqWy6nPRWUjOVILBgTg9q6GNlZ1UYEm4EMO4qasXUkk18zvo2jByT5upjRaY4w+MDAJA711CqoAH3duOT2zWVTBLmtHoc/19zUYt7Jv/gHOTWgjiDrGNwG3610t2yeXtRVIxj61lCjeXvLciriL0lClKz/AMzkLe3LMEYbVxgZxzmtdfKyQxyQeM9jUPBqMuRPU2ljopOdrW7dSVLcKFVAxfJBAq9bAKvmZyBnk1E6KjJwRvSqvExjOG0SstsxUgnl2IAPbNWndXjWQH7jDk966vqza5epnPMk5RlJWTZnPaAZP3gMDnvx1q2+xgpBJxkH2Ncs8FKTST1Wp3xxMqdVyi/dM1LYltqEZAHy+9a1uqDkAg9QfSu10HKScd2YPFznFTho107le3snDBjy24DP9K2ICqjO4kBxyexFGIfIkrEYfEV5VOVLluQR2WSH8sAbiSKvtNyETJQbifTPetKMHOLlJ6HNKonLkpqz6mW+nSEAgHAbnPetESP1VgF5xn6VhWgqbS7nXTlCVPlW6/Q5m40ySbdjK8kkjuK6KSYKr4OCfTtUQoylLtYxq12oKpSWnU8/utKO0FSAwxg/3vY11Mx8zcCcsSSD6V1UsNyp31ZX9oRnNRjHW25wR09UYK6AOM4J9+1desGZRhh8rZOe/pUxpNu8dzKviowj7NLXucW2myMz5jJUMM47+g/ya7gwyLnkFWBIHrXTHDqUUuvc8qeKdOs2tE19554dOl6iPaQhxn+tegSWrOQQoOVIYflUvCPlTOqjWjSl7VtvbQ4AaTKMnBBwCcduK72FSpYMoIBABPaphSfNZ6o9GtWgk3J2vseftpEhX5unUZHWvSDEiRg5DOD3HShU/aVEloeVUxMqDVVLU8tOhMdwCYHB+ma9KeIMrscAscHHX6URpNSstzrwOGjUTm9XueRyaQbYHqQWAIA616VJbocjZ1UkA+1E6LlFNo3wsrU50pu99n2PLzpxVFKxnJAOT/D7V6A0cbIV2AMQcn0rOWEvJXWhhSx0ZQ5H00+Z5w2nSuVG0kZwoHY13siKpGVHIAyO9bU8LJ69C1yRpqFR67o4VLVkbb5RBzkkeldtDEF+bAXAOcdselZ1MG5zPWjWTS5VpbQ5+1sJvMjncERggqv09a6hJQoVShIAwT6itIYdxm4z26HDTdRRU4/E9Cu9hG8O9IgQy/MD3NbJVSu5T8gU4X1rwvqbTlFq76HbXn7SKfNy9Lb3OMubSIPgHDjoF6V0UsON7KM4AwB71xKi4xWup7NNQjC8H6nLLbO7rkkqr549K6HyET52JxwCPSroYbmjywWpGIrRglOb0ZjrHg4wCRkEj3rP1S5kt53VSdjEEnI4r2cNlsqsFKDW54KzNUZ2lHRfky5JPGuwE4yM4FcJeXzmY7mbGAeOhrqqcPySUk7FSz6E5KDW39I7Fb2OE7HYcycMD2rzuW7YAlpCN5JBFXS4ebiuaRks+p0U6ijd3Z6Wur22WDOwUYxnv615GNVcF4wwKlgAD0PqK1oZCuazkRWzzmjpDXc7bXNdhEbxxKd5UnIPtXmFzqILNyccdO1bxymnTV07nk1M5rSXtFCwzUdTlkLKgIHHJ/nWLLMjEo4JXI/DmsoYOm581j0Y4ivVhFS2Mu43ysrLMSSCSR0JFXR5TbgmAwBHHanPDR5tNjCVeo5pS3X3MwCkj7c5+Ukkn+L2rfhtdw24O1TyR396z/s+MnzMirjnF8ltXqznBHIMjec44IPA5rqUsVDKVjGDkDPeqnhlpyozVRX9nLfc4wxTMzFnIUDoO9d8uiuzmQgZYgj2IFSsEm7paHoU1Za7v8Dze5E0RVN7BtuR6EH1rvpdFdpCzrjccqB3p1MGnKzCDnhqPtIx5te55qsbt5eSeWw2M8Y716X/AMI5hiQDtPII7cVz/Vml5ESzOU5J1Fq+hwux2R8sxVcEE9TXcy6JJGjER4DqME9TXU6NopRB4tKClJ2u7I4aK4mjMZaQgbvzrfl0sqjhj8wzgkdK57Rs7rc1oxUp3U9UVItTbYUyTuYgn1pV0qVedpKuuRj9a5Y4dKN2hyqxjO61Zu286yRZJOcAgHv7Vp6Tp0rQqMAncAc/Sq5VdRZli7OV2V40kZcjG58EY7fWuut9IcrgjAGSo7/St1DmhzI5kpwiot6a3OPEXl7FySXY5Ydq7D+y2CbSmTjAz/Opcb6JXZUMwd/ZxZyqqRtYnjP58V1H9muChKDdkjOOgrSFOTfs2GKlaMXFe8mYMcblgQGGeua7CDSSWB3YBwD7+laQpNOy6GeJxilFuq99PmcfLFIv3CGJcAZrvToj44GAxIGelVCpzPQ4cNyQbk7tHHafaszKNxDcgV6bpvh1yEYjBA7dyPSsXFSneSszaUofBSVupn2dm0dq+AzLggnu30r0hdGcWOAuGGMn0rspwUKlpLQ5OeqqalB3tv8AM8EvdNeSVywIPUj2PpXsf/COrIA5BIOQT6VtiaUZO6+4KMpRg4t6PqeJPpcilZE/1aAbQO+K9mk8OjPCkhVGMDpXCqEElJO+prQnNOMWvdtueILpUifMEGXcfKe2a9kGhp+6HkjjJBHasHQtJtfcdleooqPKk79X0PL7fSmdFXGDxkAdc9a9tsdAtwB8pAcgA+uOxrSNBQnyrU2rTqSheyvoeZ2+jOzIEQ7kAXH94elfQmmeH4AqMYlMy8gDsO9a0HGK5WefiKNWcuenKy66djxIeFGkBd4/lA3AHvX0Y+iIY2+QKACNp7D1rmjJcya1R6uGiknUvbSx8/QaLHHGgTGGPQ/w17ImgRtvyoPzYII6+mK0nGKejM6GDU5qpfZo8ji0zawVieHyuK9afRl3opUjsSO/1rDljy6bnp4lzrNKa93oeXxaeVfKk5DYBr02LRflIwBnjJ96uc00m1ocdPDzbSStZqxxVtavEcsODyvsa7dNH2YPIUZxUuhdWjoOdSp7SSTuznImbaBvJVSQ2K6NdJcMAkhGCTg9x3oq04RvNbGsKslFRmtehgsZCiPjoQSOckV0a6Y7L94kOD171v8AAmnszOVRSdNrpf8ApmZZWaMM9Gc4GfpWls8hWIwdrHJ7ACuerOUlpuTSrqjUslfW/wAjl9UgjsizIw2s42g9K5nxZqhELujnccjB7Vck5NRm7vudcuWFP2lJbu+prWd6pAYOoZWIJJ5ArwVvE8isIySWZuSe2a5VJQq8rNZ01OPNCWstz6LttSVrkRySgxt15/WvBLTXZI33oPmkYcA8H617dHFJQUY7ngZnhYxm2j6XSWzbaVJKbyev04rwKLxNdxsNshCgE8dq7aeLSkm467HlSSlhry3fRHuk921pcY3ERn5ix7Yrya08S3EpxK5YL0z15ralL2fuyepn9U5mnTjZb69LH0fpepRP5Mu8gg8D2PWvKNM1tpdgR/mbBye2fSuNR95pHs0MWpwc5KzufT2m6iFdQsoIbjryK8Wj8QSQLEPOIxtyw7eorL6sk/eewShVqq62R9a6X4iijVA8oBLbee/0r5QT4g+SwDSj75Cgdx61i6E20lqZujFRTeiZ9sWnia38zbLNw54Oe3rXxrH8QZJCEE/GQSc9K0p0U3Z6WOOEFUbjGV09j7rh1yw6GUknbj2FfINj8RiE2PIxxgA/Sqp0ldcx0U6VSMeSfR7n2Fd63aRRDYwbCkk+tfJFx8RkZAshcMPukdKiFKDuluzSvQlVaVH4Vq/8j2zxFqEUseYZMndyAex618+r41M4kBLdcAjt711xkovUipgYqPs4P3u/qdVdqJJZOQDwQOOTWTZahHczrvRmDHJz3NYxrNq76HHSwUaVZxb1krEUtp5isUBBJBOe9dJNCspRYlwNwwO4q6NZuSvsazjCn+7nrLv5HBvZEZO4hi3T1rtJLVCAyLnaSCcfe9RW9eolLXcww9CdKKcbP1OBksgVUuM4YkHHWuuaxDnOBhXwB9aydacnzWsjRUKdb3b6nFR2ux8hcEsSc9xXamxYDJToTye/HQVtOzVmjClGVGHK9Xc4YWBdnAXCMAQfeu1/s3cy9T2GOwrKpJtRcHqisPCMIc27k3fy7HAS6aSS2wHuD6D1r0CPT3G/KgIAQeRznrSq1ZN7nT7Bum6aV0eevZbgAQQQc8/0r0X+ykMKtgiUyYAPQZrO6jL3d0RPEVFH2TenY87GloqmMD+ENz3ruRpjFxuUZXKg+pqq0tFJvqYPBKclTin/AJfI85udKY4OD6c9/SvRBYM8gDDJUgnPb6V1wxLgrtGtbAwqScebW33Hk7aVKhLSDKkjBI6Zr1g6SrowxkjByaynWUnZLR9S4ZfOFBS5r67HjkmjvnkZJyQMV682hE7JSh8xWIOOgFOlNxdk7o5cNSkpyltpseM/2E/HGcEkD1r1mTS9rqQuDgkZ9aVWrJSs9mW6sa0OWL1R5xaaYsZVn4YbfwxXT3kRjk4AB2nOe1RKVk2ncvBYaM3FydpakFnsQ5we+MVQjndGCMuNjHIU9RWUq7k+WS6m1egnRcYvWJ29qqBW3AbFUEEd8jrXOW944UBmO12AXnpUzjKUrx0ZjSUoQUKjvf8ApHW5jWMYC5VwAe5z61zpviSo2kkYwT1HrWtBJu7epvibRgoyWj6mhcTRAkEjcORiuanuzIQOoLd6uMlypNXuZToKdVSTsl17mzG4yHBJXcRxWRaF33YZgvAwOlRUblKMVojWEIKLkldxvp3OqimiXbhTvORj0qG2BGCN3y4BPr7Vo0k1fqVGtO6jFb7+RoMxwcKTjoT3zTnhICgMfnbn2FRGKaWt2jyVBxbk9L6fcQh/MQJ1Zc4IqxDEoXCklGO0ZHWtvbNTvB6nR7KNSEabd9dPUpPEGJGDtC9B+laPk7SG3E5yMVUpq6d7lRr+zvJr3tUZYAB2opJBHB7VfCJHnJ4JI96yV7OSZ2wSqWbVkzGnj2sByMMSTnrUWp3CxhuoYDkjv7V0RrPk97c86nSUXdv3U2jnb1gAUOQFBIHesTU9SRGXc5G1AMntU0XGcveZ20oOMfdV15k/kJJhCANyk/SsaDWoWI3SAYY9/wCdZV8Q07o1p0lKcYy0SMXXLAtGCeApxnH61qaleJcQSDduLqAAP0xW08Q3ZNWucVPCxU3V5r26eRulIy6PGwOw557VnWXLASvtGMbh15r5/D4hxTTd0aV8udRc8ZO6OjWRTjC4GQB7+1U2vbO2VEM+5m6Z69aKVSEm5JaDr5fKDjWlv08jqbBED+YVwWYDI7GuXh1gIW2MVVnO0nsfWs6yb6+6ejzKMXWcL/qeliWFTuQ7WZcn3x2rgF1hZSVEhK8YJ/XFY05XVnsy4YVVpe2aszuZ7iIKuSc4JB9fpXAPq8IwS23GScfyrqSUZXTMMbhYykoJaLt5nUNdxL1YEKTyO31rgp9YjyFJPzZx9a64QjOF763OSLlRnZLT8TrZr9ASDgAnPHcV5zdayqKAXyUyQR7U2k46CVCUZqMtpXOwNwhwzHIDZJNcQusxM4UuAqx4yehNc86zSba8vU7qeWRglXUk35nWXF5gHoAjEn3riLjVCR/rR0Iwvf6fSiMW5JIJ1Fyezt1vc6b+0QhTaRu3gHNcR/aW3OME5B561NaMFUUZMdHWLpX0s/8AgnocOrKxZWOSuMEe1eawaoN8fmOyh8EY7U6qg5JReqKwl3Rd3voj2a01NDEd2RlwAe5968ui1vEZSOQEhiVB6mslNU5qK6nLGk+WUZPR/wBM9Iv9TWON080dOmeteRX+u+ZnzdxHTaO/1rWdRpLnWzN6eWuEb0paPT0udv8A2wYmUJL8m7P0ryZ9ZaIkM+GDYGe+aKdZt6kKmqMXSinoe7Q6rDLCoWQk7uhPX1rw2HxCwMeyQhQScHufSpc+ZNy2XQ7aUY2jNbPQ95+3KEXBzsYEgd680sNeWUFd+0gAkg+tY0ORL2q+aCcHG6St2PQmv9+5y42qpAWvP5tVOSySDDYCmune1mY0aCqScqjdrOx6RbXwJRhIPlbk+lebWmrBTtZ8OxAwe3vVptttbGlLD01h7p6r+tD199TXBTeBI4BAJ615RJrwViJGG8MQB6ConUjFXW41hmm09Ej1F78FCFY5AYn0Oa8vGvb0U7yuOOe9c8pp3m9zShQSiuTbdnd/biJASwAyGOeprzAa3uuQN+FDDn2qYVFdTT3M6WGhVrScdUewJqYKIM4GSSfbArzGLWNxGZAUyAAe9V7KFS8onfKCpR5E7XPVxqKNGSGCp0UHoK8wOqsV4chgMgKeQPatVUUpJdjjx1Fwoxajdy/q56UmoJGD+8DfNzj6V5kmqMD8rEM7AgGrqU4ytNPVF4bnUVSltc9TjvA5iVXGC+GIPTNcFDqOAWjciQYpat36iliKUZtP+kegm/RHwsxxtJXPevOJ9UEa4LsTg8A1pHDKy5tbkfWfaJxjHlSaPSBqh2pg5VgAQD1JrytNWdmVfMI2sCSKhU5a2RhUrxSlGOrR60+pnG1HGeCc9q8xbVDuB80mRnI/AetbYaklFt6mNPD+9q+U9Am1NDkhzyAOOgrzJtWYuGLHkk4PtVSbi/NamyrUqt6Sdl1Z6N9vi5dZMnOAPX3rz4X5+8GJKjIGevsKamlMmVK/K4xs9Ff+u53jajGPk3kcZOe1efPqSkKGzvBJzWdXWagFChyQkote8/melRanFtViwIBAU56V5empTBMAqQxyVJ7VFTDuD5U9DrqxjGCqKOqT/wCHPTX1VdzMScqCQPWvL5L8rj94WI+9g9KISimoSPN9s9KiWjPSF1UN8zv8nAA9a8wGqsGARm2LnO7vTlibxtDf8zpWHUKiqzd0z0htUXaNzt97OfavKp9ZcKyqxI4BNJ0k3dqzOalWc05OOquennV/lYBsgPgEeleUDU5XzyQTgEA/lWe01OXU9Clh5tOalZHqP9tlPm3ncR1HYV5S2oFlYlipGRn0roq1IySsiqylQgop6b99TvJdXXdtSUh5MkkdvpXmn2yUuMHaNpII71PtVGKuebOFOsudOy6noR1dNqlmIZuBn261529zIyEhiQASM9vpTddyfMTQpxqUlFvXVJnobasm4YkyGyDzz9K4S0aZtshGUAI69c+tZPE2i4ra9z0atFypc6spJWO3h1bgHeQuSceuK5UysoGzAAIBBrNTjUa5Tky/2vs7pao78aqQq7WOSoIGf5VyVuZJiFwcsgzj+HFebUi1L3kfV4ChBRVSfxHbR3TSRr8+CGOSe3vXKB54htDHqCFbqeeteS7tpS26HZVxEuXlfTU3bq8iRDiQkhiTnv7VydwZcMTnGSSQema7KcXzJREqEKsU27vqU9e1HIXdjLgjI7YrldbMzxIqHC7yDnqfSvYyvERjJqLPHx+EikuR6J/kRyX9uwK7/l3Dg/qa4i4WUbmLEHaQuK9+pi3GKinqzy1go1ZyrNWt+ppXeoIrOPMwqnHH8I9q5xVcuA53OxAJHb61xvFOnHQ2jgacWox1dxk2rGNz8xEeSAaydQs5EZSNxjZmJIHAz1rP61K6TOueFpzfvx16DZtWYsBnI54PesCRJAqEnCqcAHvUV6t9XuZ0aKuofZRux6jtiYM5K5JJHqK58xShVjk3YIyMfzrCGIUI3QKT9rZLTodBb3wKgbchsA5rMtRIQoboSSMd/rVKsqkr7IHSdKyTu2drZT71VmPKhgfesm1kYMoOV5yR61tKb5X0PNhgISnKbeq0aO3t5Y3I2kYZsH2rF05WcsEmK5YFvf2FXSqy3MVhYuSk1ZroejWqROu1VBbBYMfes+B2VB5ZKluBjtXfRalHlWjuE6TVTnkrpm4tpGyKzYHlsT7H60sEyIY02lt6gEg9MdaxqRb95bEq8VJN77I1LfTFlwMjIYcitCzdGVAmc5Xk9D70tb2XU0l7kHUlvdaFS50VWRI9ueCNw7Yrq3AKg4OX6Ae3rUWTi0lZs6Kco1KSindJ7Hlcnh9Hl2MuVyMAd816itmFZXZRnJyPTPauBpp8iWpMKyaUFpLX/gHk40AnDLH8quQpHWvWYLEliSMIMHGOhrtrUEoRkmeYqVeE3KTOP0TQ1G1T91iG57+td9aQrAyZjyCxIA+tc9fCS5Wos9KliKlWMW9HrYgg0SM7MrkhsgY612kQiIO5SVfJ+maVKs3BNbBXy+pZRv7y1ONbQIgmeFDMTnFd9FArhCPul+/tWd3C7R0Rw0JTTbeu7POjoDbhsTK7gADjgV6W0O4HauCzEc9sd6dGo5StJmlfD04wlKm2upwEOgiMRr1G5iSe31r0i3twEX5c/P0I6etW60lNxR488HTajKo9XscLFoiZUMpyrMWGOufSvTY7SNpMMcANgACpeITjyPqztlgpKSUJXaOW07RgpXk8MCB616Ha2ccSq8kgVF5JNbUcPFRcV0M6tKcLKMe7/wAzm76wdVVFQHzGAwK9a0r4f6r4ogF7pjI8ak4K8g15k8ZTp2UpWZ2VMH7souLto/U8VSwPyqq4bOCD39K+iIfgp4oKkTQIcgA4PWtY5rQV25oqWVzny8is2u34HzlPYsWHyBXyFyO5A6mvpj/hSviFwW8hC+/BGT07Uqea4eC+IrFYHERUU436eiPln+zCCVwCwckHHWvonVvhJrulWrXt0qKkY5UdxThj6M2nCSug/smLpxlVdkfPtrZeXLgpllOQT2Fdwmm+U7An51YHB7111KknNSW5yOdGik73vey7WKVlCUi9GL8Ed66zw9Dpd9rEGhNqEa3lxghG6iuPG4mNH3pnXllOdWXLTjorfiZP8OGH3mAP9a+krb4HXDIJBfjJIILDgfhXmLPsLFvXRnTPh/FVm5RVmj5m+zuu6QRgEueB1Ir6mHwPl433oOCSCR1Paj+38NFXjI58NkWIhFOpFvU+UfsqDaSpyWJz6V9Tr8CZmXBvMuM8kcH1rGeeYaW7PVoZbiGpQasj5VW3gP3iVJICjFek+J/CD+H9Qa2L7sSAFjXr0nTrU1OEjw6aq4ao4z1SOA+xRy/wkDaARXQrZo67mJIZtpHp7VrGnK7T3KdduytuYP8AZsTAbR83Aye1dY1sEJVckjGD61DhzSjpobzk2lza2OSGlcbuPkAwPU11BtWY4XJAxkAda1rYZTdm9DgjinTjdRu76HmGqWJgD7SRnnp1r1pPA+s698lraP1+ViOGzS+t0uS02tCY4SrUqqLXLdp3326HxD4rt5GacEEqWyAPXvX2hJ+zD4j1py89zHAh5OedgxzjpXn1M2wqXNKR6lLLa0JyTV308j8wDp05uJFZeQ+CB2Ffpg37HV4RvGqpuYg7gv3setcVTN8NJ80ZG2Cy2vB8ko6LX5nwRoXh17sg5KxqxBx9P51953n7NOp+HrSS/W+V44uSFBy2O9b0cyoVbRhLUyxlKvBt1IadD40j8F4bIZgXkU4PevoR9EltX8kxqZAxy3XBr2nO8Go7nmww0HVTleyR4SnhK4t9rIQQ5xn+77GvZ7nSrp4h90YYg49K0i23Zy1OWGGnOLvdR9TytNNutNAbA2NyCDyea9Li0K7l2mYKyhsjHeumnZr94zeFOVOpGlT1TRwLC7+zkqGKtkhj7dq9ctvDDvGG2Agk8emcVm8RCWkmWqSgpTUteq72PBry3vH2tHkHkgj/AAr3f/hEgSJFjAKn5s9xThFpXTODFYqNaapS0tbT1PHNMsbnKuRywCknv617/Z+GUWSNjGMMAOBway+uNO7Vzqw2Cg5qLdkrfI81tdOuF8rglS4GfWvaYtGiUFVj+SJgScdPStaVS7bZeJqwnNU4v1ODt7Lz4ChjXdjoBjPvXdtYKGOxdu05yO59q1jKSTlY48LQhBypc1mzi7e1SFwJMFpHBCAda7AWrA5GCMZ3Y5FYNOclJaHZUkqUXFv3VY09IgMpQJFhwcgEfzq3pks8TpkBdzjkd6cqDtytar8jnp1KLaqN6Xv8zpoNPl4LqQ2DkitCDUpAMEAAkA1MHOSSWjMq8HJtNaMpi1jQKu0EbjknqfarRuPNaMMpILAsR2redJxTlPc44qUny83S1rFAacnzcAknOavGbZnqQeAD2q5ybglHoQ6c4Uly9zM+x4UFiC/BJA9OuK0vMzgBh8zDHtTp2i0ky5rkipTV12M5bAJ85z1yQe1Wnn/2s88e5pKmlG7OiU4VpuytdfcVvsSuETABlUrwOlWBciHawIHJJA6kd6ltNtwMaGBm6Kpyls/vKzWSgqFGQqjntTZ9Qj24UkPnBX8qxTcUlbU2eHsozXR7EMdqvzZbCgHIIpz6gF3kuGJyAPb3p1Iyau1uRCNWFVzi9F/X4FVYEG1j/EcH0HvTHvYfLCoCF6DFbe1jK0XsEqMo0PaQdm/xLqxoMPwQABkY5qiL9FALNy7cgY5qeTVKT0JU24WtZqyXmW2g2KSvKsxzWc2qYDJ94ck47cdqt2i1LsZV+VpuSfN+Yy4jV0LAEFcj61nT6gqKY0YbiTj29M0qzcVzR2Ko2rWpqPL+hzuoWsYzuQAbyR7+9OvJfMc/LncwJGfbpWaSnFST1PSalGd30scXPbOsx2gnLEHP6V0kkcTYGCFBzz3rm9pd8sjtqxd4uk7N3MKG1d2B5VRF0Fba+QiFcHLMSD/UVtK6SppdTyIUpV5OdRaR3XoZc0LAxkPhcgEkVohyXAYkqrZIPepWEnFuU3e5pQx1CU4qKt8znntnJICnqSSe4roo4dzLlySWBGe9bOmotSbOj6xGrQnBKzX59ynY2pKDb9wsQSa31ChWCgNtOSB2reklU95s51z0247ydvkWrS3RckqfUj1qb7QohGDjBJIPbiuao2qns47HRg26UHVqTu3psSSbchUwDkAZ71ky3mMMmBjpmtsPTUbqLPLni6c/eSL4kSMojkkMMn2rjdQ1vy/ldl5XOfT6VFWck01oezR5I0+enq/Q6qTUIVQ4fI7V4fqPilYW2+YwxnGP4q0qRVua5GAhGq+Wcdz1CbWYVYlZMsOAD3+leAXni2IZIYtlscHoKHXTXL1Jllj+BO1m7Ho+u+IocMzSEDaenc/rXz3rfiV2jwsmSwBPPT+dRCtGm2lqJUL2qS2RY8Q+LH4AnIHmHIJrwjxHq0jlmjlOC56etebWxfLJ23Paw+DVWlyPW7v6Ho8HjcBwPN5DZP09q+eBqsqHczNyeB6VwzzB2aRf9n82k9EfVtv4tE2397uXAOM8ivnrTtXuAQxcjgBQe9XTxzkve3POxOWxpybktLWR9fw6tdSyqA5CFlJOa4+G9aOTuQpzweTWcW4qxw1asalZVZLRbs7UXzMw3vuIfJHbntXLJcBiGSQ/M2AD60qmLjLSKszeVGSTvK8d0dM+qeSCokPy9cHg59K4S7uwJMJIQMgAHvWU8Q1selhJ8yUWly6anfRa4Y3XMmVA5z3ry86gytnzMRqSMev0raFRyV0rk1ZShU9nBvl6ux6lJrSyDhyMNnJrzQalI+Mngg5JpKo0uddzkqYWLaimdvc68hjO1ySpAB9K80u71tnykkk9adHEvnvfUzhQiocvTW//AA51k2sybQokySwzXnM946kNnAYAcdR61Uayk2l0JnQbpK666eR6AdXKfMH3dT7ivNRqTsBtBBfIA9azhjHGXK9jvx2TylCLXlY9Ng1YScsQAORjv61xEF2I4wxLDOBirdVznZHHQw1op1Fv+h1dxq5SSQgsC5AGT09a4S8vX3sFPPH410SqKVk0RUw8YT5477HSya1KWVhIdqfKF4yK8+ku3YoCxALAkg9a4oyak20epKDcIqnutf8AI9S0/VC29xJkgEAt2rkbWciBm5BIOMdhSlVbaSMa0XOzatqbuoas2Ww5VmyBj+lcZcCSZh85OCSDWr5eW1yJOovsLUu3OpOyqpc7l5Gazcjco2kh0IDevrmsHNRldbnRGT9km1do0or+UiPdI2MgE+9U47WQqrovOScHtUVZTi0k9zpVNThzp7HUWmsTxkbJOCf5Vz0QljAXblSOa0hiVBJpamTw06rdNs9Gg1kzoeSTySfw6VxlkZS2RuCAHj37VvUxF1aO7OKGBlGanJaPsdxDfM6giQ7hjANZUaSiMfIGUYOR9OlawxWjbWh14rLFOKqJ35ehau76QSq3mnczKB7GqqWE0uZm3bnfG0dvSsqmMbnZK9jGl8LjJ2TaNhLiR48hiUVSAM8itex0hnhTIODwSR0FcvtXq0tDrhTnKopxdk7fgc8s8zyujggZUZB6V3FtooJICjrjBH3q3p8sbIxSSqyhN2b6mRaO4UiQkDbgEd67qz0IBOAGUsRgjpmpliFGSsglhW6LVPucmZGU/KGJfaM967mTRMogEZLAnp3rod6juloZ0qU0k0/eX6HCJ5xZWLHKDJPpzwK72Lw8+BiInbEA2e2aSpyhK7d1c6MRJypKTdm1p8zmUuJAqgZDcZPpXYPoL7VZcjGeCPvYraGJVTdWsefOhKMI8yvfS5wkskjEp1P3iG711r6CxK7gcliV46+ldHtVJcq6EUqP7212np8zkbf5mLMxHzYJH6V3UGhOoIOP3jgFh2B6Vw1cSnpHY9TCU4U5uNSSfkcmR8vOV2tnJ712Euhuse7axdpCOR0HatKfMp3ZEqbkr26nn5V/OB3kKhAIHQ1266BM79MYUsT60Vb8qT3OKo405qKWmpzMaOyAKTuYEKf613EOgSZHBDnk47UJyilJ7mkaMVDkk9WcBNA6MpJILkAt3r0V9CcsFK5+fGQKunmDlBya1Ip5c41I01ovzPMfILTblLDKjJ9cV6aPDr7lG35jkkHv6GtKEpTi5roRWklN2Wj/ADPNnhKhAjHG4nJr1lPDII+VMhSM5Fc0dXddSniKigqc0mos8eEM0gA8tsb8E+tezxeFm3qWXHzDC461tDDqD5nuE8RFqLWjXc8Zey2w4Jw5GcY6fWvaX8JxuSVjO8gg5FXQiudcz1uc1eLcnOnpHR+rPEFsJGZMAjnDE9692i8IblAMX3VyCRwQaxqzi3yrZm8aNamnODu7/meJJpkkq52sVyBkDt617/F4UUYXyzjb+WKmEnGzaKeCtTbk7yZ4UmiORtQEBsjPtX0hF4Ui+UmPDcZzjB4rT2ym9YmMoSppO+h87w+H5RtGDngAEdMV9KDwwPlYR7cMAfenWruSbtYvBtKTSd2/I8Ah0GTymiCtgMSGx619BP4djV0O0lR0wOtSoSnJVFuRFJRkpbPqeEDw5L5RPl7sYIzX0CnhvdjcMBcbsdxUwTXvSVmiq2InGSV9Ho1/wTxmz8PukbFUAm3BSR3Fe7waAIwqrGCu3OT2rkxfuyvfVnrUcLGaVRLVWt8zwk6C7BVCdWzg/rXvw8PIMMyYJyCAOuelcNOCuoyWjPRc3SSa1fY+epfDZkD4Uq2QAB39K+hf7CQ8qoO0ZAPfFbt8iTLnWc4p/afRHypqXhCQxyOBgqBn3r6du/DCyKT5YZWwcsOprXASTldvqc+Kw1lGr0PiefwrcO0h8o5GMEjtX1U/hhFYh4/lPUHtX1jlCUU7HzSlGFVznN3bb8kj5Cj8LzRSblj+8BkgdfpX1tJ4NgKb1XLbeh7VnKnBrRjfMpJdNz5Hu/D8skZHlEO2TgDjFfVLeDYZtrGHawBAJ9BWMKELNX1QVcXONLmjH3fXU+Mn8ITucmElAQQMdjX2T/whUDiMbSNxwQR2rlnC7kn0Oahmrq04uUbSZ8cXPhK4JGyAjC/ifpX2JL4MgZlDLgD+LHUdqwhSdrI6445tyaVpLofHVt4TdZIlMbYGAcjoRX2F/wAIPGGJWMAknHvWtKl32HXq1IUl/PJ/gfK8PhBtxYoTgnHHTp1r6t/4RMKvMIBJBI9cVdOlKUVC5eIklT9re/f5HzXa+F2jwAmRkYz3zX0zb+FQMkxj5HByPSvQpUoRsnqRi6k5Urwdn+aPnyPQHCqpVgAcgDtX0E/hn94u2LGQRkV1VqSvdPRHBltdKXLbVngyaPNhMKQq84I6817p/wAI28jqhjO1BzjPHrXNaVuduyN8Q4y92ir9zyuysWBUFThUJx6V7BbeGViYMY8AqMD1rmm5Qd13KpVW6bVtEjgILVyitIn8QIz0r1AaEoATYF4BAPf0rRxSl7y0IwqUqXIpWk7vueYraHfhchdwIz2969GbREY7hk7lwM1z8kFLTU66HtINJyvfc4U27hAxBIDEjH9a9B/sV9mQCQwIUEdfauuhFJXTMKVeEa8aLjpqeeGCV1JGSA4HPau/GkDDIIsYwST/ABGolUTV0tDXFVIxUqaXvX0OetoD5SyNksEBA9a7ez0rATJGcEAY6ZrkirNJ7GlOq6cG4u7VvxOetoZF8oMQMsCPpiu8GiCK3UkZkdScDvzXL7Cc5NtiVdwWi0OXSEyFAFx8xwx7V11tpru0ZZSTkAY/h9q3jHmTktGaxzGDi6EVuZEdkV2twwDZNdYLH5eCQC4GDV+zbmot7nLSlFQdVLyOaa2YuFAAPBK/WupS0zNySFGTnHX1zWqUYLmW7OGo1KTpq6S6rqeceO/MtfCOpTQu6yRW5IK+vetL4pxeX4L1UEcNbPjHfjpWuGhyttvbU9GPKrJrR2R7h+xvfT6j8PrZ7mRneORxlick1W/YrP8AxbqyYkZMrdO/PFfzvnFecsZNPufurw3Jh4WXRH3DHAoAGQf4ifSrcaDZ8wJDELj1rHlaaUnqYqPu/CrsqlVxlwADkH2qyyAEbBw3JJ9R0q6tVqXKiYYWDTa3PO/iDbK3h+5wBgqQfarHjzjw5d4JBcHr2r2slvKsrPU8DOYKMG5R0R8JXYAuWQHo5ByOmK17u0bfK2TuLMR7V+00ZqaUF95+ZYumpJOSVnex8+6LO4/aA8NLGW2bgCPTn+tLYI1r8fvDDqQHZiCMdfSvkvEiLWFg4n6J4aK0akUtbH7CaWymyiYcbohkH6VT0+VTYWp6bkUBR0HFfjPJKUEnt1PtIJxfNFmoSshVwPu5AzUCnGFQgncTkd/rV1Zu3JBaEQu2pssPjBy3C9xUOSydSFbrmqo05SqRnfRGeNoKmuZatnyN8WG8vWpn2gAE8HsP/wBVHxXjkfWrjB5G0FT3r9e4Zk3RUkfmub+zlJxtqePR3QTA243Op+tJ9ikZUXoPMznua+oxTU/di9D5qt7SbunZR6Fia9SMtI5CoFzyeleV/EzU7jS9NtrG1LC71CZIUPdsntWdecaFKVSeyOnCZfLFV4Uou02fQ3wo0uXxpfNeLFjSrWcgNjiQj09q+gPgt4Zi0LwXo8CrhhbhmJ7k4r8kzPjOpXk401yxXmfqmD4Op0FdPmkv6Z6VpukQWtsIkjCAcYA4I9a3lj2gBMH5ySa8HEYypJK256+EwkIz036FWOCFCVCgrswcevrVoKGOdxG5jkHvWMlNu4qnKpvlWqE8pWTaiDIwDn09atRHKnZnIyOe9VBSSU7FVMPzwcI76M4TxjbR/wBh3q4BJjIBP8PrWh40jJ0K7OCFMJyB6172R03KqruzR4fEcW8OnJKyPzz1a0jN5KGU7RITkenpWvq9q32uQjIBcnjtzX7LguZU+Q/GMXVk5ubi7LVWONe0Ac4GdwBHtiugewf92wJzuODj867sNZ03zasylONk27JnOrbjGSoALdB39a6H7K0bK4yyhsEdvrWHsklZo7ZVZq0k7r8TNAZFCcBSAW9vpWhLCsjDHLN1I/lVOolo1qea8O+Zcm/YptJGN2SMBcAg9TUpsyhCkclgTmkvehfod+GqWlzNe8QpM42sCVBxk+lSyQPu/dKT5jDpSUeeCSFiZP2jk9VbfzJE1GUZyxGQR/vAVXe0mA4JYKMqPf0pThBPlvqKWI5YJRWttWSteo3DpxuwD71TS1kRgXAByQVPf3rdxUU4p6l4bmqwU7e7H8zUilGNoTBbue9VvKKoD8w+bJHrUV5ybQU6dOCcnK3M1ddjThmU+WXUYVySTVILKU2hjyC2T6eldFOd2lLZ9S61OndRWlr/AD8zVbUVUFeRwWBrBw4O0nKhskHvUug4SVtjzqmMjVptwlez29DYGolgMOcgk4FYJLIRyxGM49ar2k5Nya3OTCq901oa82pyIEJctgDkfyrnMsCF3EhgWwe3tV+09m7tHTQk5RdK/ou6OgGqFQrBj1BA9PWuOeaT5oySM8rnuamck5e71Iwji4XqaNXsdLJq7Fl35+Y8AVx2+V2jKuclTketZe0s3Fo63Rp3goO7fU60avuAXrgkkjt+Ncg7TonlkZjznB7VTptPQVGrywnCavZ/edG+ohjGwYloySCeo57VyjzOQNwwcggjv6UpuSkmtjmdOUkopWX+Z0J1HepYuQFfJI6nNcp50m9SSQpcggU5xahzp6Hq4HnUpUqj0/VnSyag3TeAoc5X1rFzgM5J5cAZ71EoNpNHBeNG9OT0u/kbf23lSXIIY4A/i4rFZZflBHyKCQc9D7UUZOV3JG0pc9GMU7yb37GlLetHjMhz0we9YTrINjt8xViRmnsrPY1oylJpW+EuzXoJzvAJOc+lc/Pu+6FPJ4I71h7RLRq6NMdhnB80JW5uhpG5fcdrZPfJ6fSsdfNYgnIw4JI7VpCUXC0lYyw8nOoozekbL5mk91KZFBY8MMg1lb/ml2sSm7JJPT2qKdX3bJWuaV6dN17uWqdvvNk3JZgwHy7Rg9wRWXbh2I28Y5J/vZq3zQjeRtGVNJVIPV6GrHcSMpYjCjOfaqyo+3OTg8Ek9T2FOtV5ndqyPOUoQ92bu+5ejuhg7mbcrHB/lWVtZBtOdwIGB3z/AIVDjaSa9EVWxMpfuXHzubKagyIAwwzMOtYO6RlZj1TgA9B710U5uM/ZvqE8DCUVJLW3Q2ZdQQ7lJznofWuVm3nY4c7iSDWVW9rzZ3UIOgk4x3L19rG1MoThRwD0HqP8K5i+eR4wu0k4wCe/rVUoO12jGbhUV79dn+Jh6zrClSxcZA4APT1xWHqFm0m/IB45PrVz5ZRSTMqUYtpWslfU4DWNVcl/3vIB2gVFq2muQ7BAu7pjv9a53JJpS3No1fZycaSvqtzi5dSkdijN0kJINQ3dptbocA8n19q4JVHGN49D24UEveb1fQxbrUH+dSzBVYjJrPu4pJFIyfvZJP8AKvPc25Jm1GE5y1+E5jUpJHLDcdgOc/WrLwkkIzZ+bJ96VVztz7omSoxlaK1/M5NkkUx9CGOPpXS/YN7H5uQSRgda45UNdTahJwheTuZdtlXCA4wQQx71sC2jjUEoS6kDPrWnKlGyYq0Zyas/M91t5Uk2YYkqATjtV/TtOmkYDZnJHA6VEpqDsnoedhqEal1FWa/GxO0pghRl+6GYjHbpV+bTnQhQSRgkYH6GrpVFF3to+oLRSpT1ejt2OQuHeTOXYlmOD3rXfSZXYBV+UnnH9a0aald6IjLsLCnCUlLd7GApbDKBySOD2xXYQaGyqrLkkKcg9yaiMVJXprU6ottqEn7re5yhjkAO5yF2jgdvU16FFoDuiF0wcgkdsd6FzRkpPc5JYeMYunKN7Pc84eJpAihOCRkH+KvR/wDhHy27EZ34wCO9d0tFdrUxpYunyOEvn8zyK7t3CLtVjsySD3r0S68OyJIARtVuD/tGpjQctYjnF86S0TPKLeCYyIqnneAQf4fWvUofDJDiRk2ktnnqcVyX5ZabnTVoRlKMEml5nCmCRQFYkDtjse9emDw2flbaTuYjaeq12Rw7TTe5xV5qLScu55TPbSHDDqMHivUX8MkgB1+Xg896uth7vmWvQMLiVGXMlotjyB7B3cOQS24cegr2WLw0f3RMQ5cEk/wiuX2M1LU9nD1VVbnFWkjgbK1byAByu5R9a9ltPC4RVTZghiwPqKKVJRlzMzxWLSfs38R5JFpLFt4TOc9e+K9ibw6iMmwkYw2eeKVTCyndxexxUsQrJtWkzyFdDLZDrli2ABXtUOhpwecdTx1qoUuZXZcZOnJze548miy7u5HGF9PpXuqaHHwFByDgk96cMFKSSZc8QpSaS16/oeOw6A5Mfynbu79ua90j8Poyx45bOCCOlVGko+7fUqq3Vm3LSNvvPIItCdcttIzg4HavbodDDp5ZXhCckd6aoNNNs8uChL923bXQ82sdC80RnYPmJBNe1WGiLuOANuehH3fWt5qEHzM6sDia1Rxo3urs8+t/DeNkQ6sGJ9zXs1ro4LrtAyuCxpwnFwUkj1KlCnVdl3/I4CPRDDGoKgnaAQO2a9OuLONFClck4zkfe9a4I+7JqWxwVGlUtB2kcPp+htKD8gGGOMD+dOTxVLoXirTrSVVa1uplSQN0IzXJnOLVGnGpbTue7kWFlmFRqL1j+J0lr4cuGaNVgYBWGc9zX3B4f8NaNqFhZXptkIkRWGAMnjtXy0OMaFZXgrteZ6+L4dqQfLJ2v5HxpD4ZcsA0LBz2I4Ge9feA8G6S5GbRAd3pWv8ArZCdmlYwnw5KCipu/Y+Hk8NSgxnyW5yB15r7qfwdpKKubdC4XOcdK6qXGMVdNXXa5x1+DqkYPlfnt/wT4Wbw7Lt2tGc7gQQOgr3fxjpCWGoiOFAA7Y/CvawecRxEbwVmeBXwk8PJxrPRL8TwKTQI+QFA2gEtjrz0r0t7UJkbcoByB3xXtQjKC5pLct4vlcYJ6nn48OAqERCd3AAFdn8O/EKeIPG15oQtg1paYBc9CfSvLzLOaeDp3q7s9TLeHsRi06lNaX3scePDcu/L25wQcGvuT/hCdF8tf9GXJUckd/WvBfGVLlty/iejQ4exEcRyuV0vLY+GYfDrbkUQnc+eQOo9a+6P+EM0naM26HAwMDmojxpRlFxUevf/AIBkuF8QqsZ1JaK58Sr4d5ZjBkDBYAdPrX2hJ4T0iGGaT7Oo+UjIFKnxbRc4qCv8znpcOVZTlGo9N9j4tOgqm7EeWYYJ9K9a1WxgF3N5XyoHJUY619dQqqtG8VZM8V4eMKsFvys8uj0JfkGwEnIBI716C8cUSAswCNhsntXfVqtNRWx5+IjBVHGG5xsejRICoj5dRgDtXsng3wydcdJmUm3Eh2k9/evGxuaU6C9938j0aOX163Iox0b7HlkWgSTBVjgJJbGAOtfZuneEdNslJECnBABx6189W40pxklFH00eFJV1KMparyPkeHwTeyKrJaNt5JBFfbUelW0ePLQA8AEDpXI+MmpXUdETR4PapODl13sfHKeBdRVRm2bagIHHSvstbOMocABQAxGOv1rOnxmlHmUbtmkuD1CSSlZPyPi6TwhdQt81q33AQAO9fZk2l2kqANAhOTggDnNdNLjhLRxMZcFVJPWWnp/wT4ufSPKIJQktnj096+sNQ8FWF6gIiVGByNoGSfeu/DcY0G0mjy8bwtiYVHOm/dSPlD+zSVBVeQckGvT9d8L3OlSFthaFiQCO9fRUMfTqu8GeVUw1R2lOOnY8tOnRuoLJ8uBgjsa6X7vBUgMpXB7V6CklJJO5w1ZKai7WRiw6cFGNpYsRjNbJfaASpChMAjtxXT7NSbb6GeKlGKhSirpkFppsUhUkYG5Qcjr6CpvB3ifQvEHih/DCNIupRMp2kfKegznNfOZpWp0LSm7H1eU5bXqw5oxv3/QfNpCpIT1z0I7177J4FhdE/eEs2Rkd6+dqcQUU0k+p7sctqypuMo+h85/2dH8qLHzvJHsa+gB8NoiysJmDFwQB29q6ln1BJ3ep5OH4frJLmV9TwD+zlUMMc5zjHrXu938OXjXzFuDhASfQ/Wtaeb0XJJO7HLJKsbOV+p80XGmIruzrgEZA9a63V7E2l3LbsT8jEA+tfY4XGRqRioHx1em4Sk2rpNrU4mGxXcT1B4z6VrXN7aWESyXkyxQL1LkYFejVUmmlsclHFQl+7StJ6ehkf2XEOR8xBO4Y/QV6roHg9dd0+LUNNu45bedd6lDwa86eZUYSacj1sJlNVtQSu0jyg6bECgReOoB7Zr2eT4b6kcMHyApPA4PrXJLMaM25OZdXJ60bStszxJtMBONuV5ySBkV7Ufh/fKuQwLA4I9c1z/2jRTUlK9iKuUVatRtwseUx6PGQGTbtbIJPUV6Fqfh660WBZJsAFug711YXM6U7xTuxY/BTpzjLl0Wp5dNoiFiJGKgA4x3rpJ5vMkRtuAWAGe1enGpeVkeXhalrwabvsc5baNGwChPlKA4P6V3WmWj37tFagF4wAQDyPenUmoavT1NMNUqc3snG7X3I4KTQYNxIBLEjkdOnevVZvCmrAoBaOeBnHWsqlam1yqR2ThXlUU6kdvuPKYtHEYbGSGIBJ716avhHWWz5lswRicH1or4mEo8jeiOT2NRxcYwd/wAzzP8AsqIyYwOAce1ehX/hnVNPCNNbkQ7Ml8fpUUa8XFKLuE8PKC9pJW7o8yuNMjaWMKQGxjpW9OoWTcQQQBx61rKo4QtLdmFKm6tZtfCc3Lp6+cvy8cAH0967G10q91B41t4WYSNjIHT61wQxFJO73PYq4KpFXhG9zkzYAKMDO44x/Ou81Dwzf2FsLucZCkEA11wx9OSST1OPFYWs1yzVmzzR7DC7lHBBwO4rRndvPxsOBkcdq7G3ZXWi1KwtGnBezl8b0v0K1vagvErYHBwT6+la0A8xlwnQjOegArklXUrpK3U1lgalOvGVN3irXJXgZipzkjbgnuO9W0UsoTkKDnPp7Vnh6nLLlbOfNKMrr2WjXTuSWcCW8m9wCjEKwPYe1WTGNqEkkH9T6UVueatc6KSjK0Zxs35jLuxg5MDLsBDADv7VKqNIgUHuRz296px5tZOzRxYfDypR5XO6uU7e0ZmV88HOQfpXofh/wtd6qn2ksIrNX5kfoBXNiMSnFRW6N4S9m7pb6Hz38WbUv4M1XGNiW74x3OOn41638V/DnhOLwnqdvea3IY5bYiRo0BxkemRXXh8eknE5HCsq0FFLlur+ZX/YvQn4e2KcjE0mCO+TzXQfsl2umW3hCG30a6eWyEjlZJBgk571+AY+hL67UcddT+icTVjKnTcJW91aH2IuMBcgk8DHf61GyMiA8/Lk/Wude7O7OLD0nUtKpsiNm2ybMnJUE0+NlYgg46gk1VSpGW50qLhVfKtGcl4uikm0W4DAYO4ZPetDxMinSpd+SNjEe9epkMJwqJ3PP4htOKUXofIV1pm6SQHAw3GBXW3Sr5pyOck+wr9owslCNkz8cxUHKtJXsv8AI+IfFEt54U+LWieIZtIuZ9PtHzIYlJJB7ce1fXNxpUeoybRDvkIOQBWPEeCji6KpL3bfM7MhzWtgH7SXv82/T07k1n+1l4QihggfwpqoKIqhliOF/Coh4EvCF22B5YAHHT1r4GrwzSg1BTV/68z7ShxXJxT9lonvf/gGuP2rvC2f3fhfVSQ2AfKIzjrWangm6Cr/AMS5htboQOD6inLhWi3b2mvp/wAEMTxZKL5oUvdfn/wDqdI/aY0DV7u3sovD2pI87bQZUwF9zWDH4Nu0X5LQgs+cgdT6VnPh2nCV+dWMqHEjnBRdO2umv/ALvjG/ttevDcxqF83By3XjpWZJYTWrGG4BDgAAEdPSvrMoytUlZPQ+WzPHKrJx2vucz9kjDBdx3EAZxXYWOkTXzMLePcwbBx/CfevRxGIVOHNJnDQwyv8Au1f/AIB8gfEcLP8AEXwPpO4lJNQjITseec/Su/8AGnw28Z3nxT8IatZaO8mm6fdAyyj+EDpXz/GuY01l9ovc+v8AD7CNYx4mStdNWf6H6MeFEWHRbCFAAsca5I7cDpU2hBo9Lto5VIdYFBB7cV+MUqcbXlqz9FcZSb5HY6DKnBTPU9argttC7jtyB9a7I3i7SM8DCM5e0b/pFosGIxgA5GfSq65CZGSOx9a3XuRtJ6FN2TtHVs83+Imv6tYWBttFvxb3kgJEgXO30OPWsjxtpd9dXge0gZ1IwfevruHcvpVI81SWh8ZnOa4mhV5aUb369jxbS9b8YrBexeIPEM160xJVn/hGemPSupu/D2pRRmWW0KL2IHUCvq8FlVBT509bnzuMzDFVaTTd0/I83nto5ZfMkHzM4JHrV65jMcqh1AOeg9a+vjhGloz5CjXmpOSWj0KDJCgQNggE449KmSNXGcjqeveio402ot6noXnOChskU5LaBVUZyr88dqtLFJcMoUEgkjA7VnUhyX52edRtOXJQXUzDYRMrui4JYEH1rtdO8L6hesnlxsI9wJJHelWxdKEk5PRHpPKq8IWindnBrpxMiEk53HrXtsHw6uWIeaZdi4+VetefPiCioNKRzYTh7EwrKc1p/mePLpoVRIuN277te6r8OyvAkA3r0I/nXK+JaLlyp6Hq0uGsRHSTu73+R4R/ZpYhh8o3Yx/OvdpPh9MiHBGCCAPX0rb+26E2oRehy4nhWu253dmeBS6RudWU5HOfavTtR8JalYg/u2KEHlR0x2/GvSjj6aXLFppnBXwNaVNQTaseSSWar95N4AG3HYjvXSSwvBuEi4O7OD1BqvaJuyejZnRpOmm5xuzmGtVjJbAJ2EY9Ku3MuR5afLlhnHetKbjdRjqbYuKv7eortK1vIxJoUaTOMdAAO9OlcF+ucY6dvrTopJNMWAhCULpWtr6lOeBVUIFH7s5A9KGIxyeCuAPSrpSSfM92ZfVoytKLutf+HMeWLBD7DxkZ9auF8sUyeSAQf51daLUdTKgk6qUVa3X1MZrMuQzEjgNgfw471sADKpjO7OMfyp87STaGqFO1lra5hfY02KqgBmJIHrWzt5G0YKDABratytcqZy06UowimtHcxDbsYwWG7aeQa13iYEY6tnAFRdKej3PTx9GVTDxi9LdTAa1G4hseUFyB6VouCSFXgEjdnvUNN6SOaljJOShLZKz8zn/seHT58oGyRittlhBCjBZxjntipeKUoqK6lU8M3NtLTovMpJahipU8lhuB7/StGCNFXG0gZPPp71atFpJ6PceMo1VDmmtPIqNF8xQAgZ79jWoUBCMvIGQCaIqKu76nl0o1Zzi47GA9sCFVWJBwCT2JrScthwGUsGyAOwrCM23eL0PYqqEIuFR6LX17HNvaygoGAZgeD6Vphomy/I6gn1reMotONt2Y0cU+aM46aapmSLMRoBxjzRz3J960dg2KsgICgsM9655wvJKX3nsTmqkHCorarQx/sBBXgFGYkn0PpWsuHzt/hxgU5S2VQ5FSUfep623X5amdDZMVVlICKckDtjrWssixyJjgngkDg1TmnNpPQ4/YNKMlvfoMWyUt8+QgAK+5rShkxgOgzuBz6VjKpLRJCq4Dmcqk31tYxfseWTGQN+Qe49a6F9sjKqtncQTntXROpGba2LddwjGmt7O6OYkstwC7cZOTXQPErEE/dU5zWdZ21TFBK0acXq9TijZFgBIACWIB+tdOttHknqBzzVVpRlFWIw2ZVXUcJRvyrfzOGm0+Ns4diRyGHaupkgXhMZ+bnpgCtk2kpJmtS86Sg9GcBLpbBXAXILADPVjXcvaDCkAAc8epp1ZU0rJbfmKlXnD929FJfgeOajoWQUEYBfJY4616hd2uRvYg/PkqKUbNeZNFJ+9J2inp69D5p1jw7IhzEuNuSVA617bqGlSOjOcZPIKjoKyjhYP4mX7eo6kknaWmn6nybfaJO7vJtOwYOP617jqOhO5cqoVXXBBHJrgqYW8eZLY9DCVVCa5Xdv8ACx8zXOjsJd2CCH5HavXNQ0C4VmK4C9M/XvWM6PMk0UklzTfqeMG0KAbFPmJzg+1dld6TKhwoO5Dyfb3rKpG2iQYaTSS6M4hoiw+ZSVVhk+pNbU9pKQxU4x0U9BXHZpXsewoxmrR3PrKy8Oxosb7cqSNwx1r1VNPjjCMnXdxnotKlGLatscdKvCm3Bqz0PPG0BGk3YwCACAOlemfZAwQqADnofalh4te4tyMxx0Y2qWt0PL4vDYUkiMsBg4HcDrmvV47EoihSQrc8frmu32UVK61PPweKqNNzj77/AE6nma+Hk2ENFyMngcn2r1ZbONUbC5YNxitabUJXjq2XXgqlS1T3VY87g0AOwVh1Ck57V6L5KfMwXkHbk96dWMbqXLqycLhpxm05pxR5+NFEaghcAHIx29a7V0CKpOMdG3fzFTKLT5kzmpRpqcZPrc8wm0kSyMzgFdwIA/hr0QwBsFVHyMCAehHarjUVOS5ep142MHDmevRnn6aIi+Wr9WbG49sV3KwIW+Ygs7gDPv0qqbUZXZz+3ldU0rLY4waQnyY5ycZ9q7drbLBAMbSenc9gP/1Uqc4uLk3oP6tUhPlh1td/8A446LHIQqAAg/nXbxwKpUjJXGCT2+lc9Hmj70df63PRr4aFWKlLRnFx6TGrJvjJQkAkdjXd/ZkwVyDkjPt712ex9rG0vv7HmxlKEk29V+Jz4sIxBtQg9Rk9q6hrJVXaGBXGCD24rmp4WUZWWx2VcRzz9pNXey6HDPpwkwFXOGIz6CuvFmpPyjlXPB74rXnlCVnsdFCl7Rpt2cehzMOnqUT5Ae270x2rqIrQ/OS20NhgfT2pqMk7nLWqwlRk2rP8bGQtmuBgAA5zj3FdGLGPbux8xYHHr9ainFe0bejMIWqUVTvq9jIt7IM4G5vNBAOf6V0nkhO+X5wT29KiNNNc60udsa7pT9i3fo9DMa1Kj5UBO4ZB71roBI8TBMruIGex9frWtKD5W5dDz62JhSklT+GTsQ2VsN/zHhmH/wCqujsLZFjbap2ZIBPaor0lJprc6aSTi5x07glvsXPTORj1rUjUDCgZLYAJoqvkafR/gbUW5RUZO1vxMi4t2aNGK8AnA9Kv3PAVVPzZIJ9a4aqXtLrUdR8y55eh84/E60fTr3TdTBIaC5jP055zXY/FPT5LvQncA7kJYMOtPF4NYrCzpSW2x08N455dmUKkNptJn3P8I9YTU/COmysx2m3Xk9uleT/sxa0uoeEra2dx+5AUD+lfzW8PKlXdOT2P6NzTDQnJ1YPSSPrlHVVUeYeAOarKo3L1CoehPWvTpV5NPmZ4MqVJ+9LoaKkj5dxJYAAds+lVslR8uQFz+FRVxEpyUb2Ma8HKCle9vxPGPH6gXXnnP7vJGB+grT8eRhUjlIySSD71+hcK4yK9xLY/OM+wjnPmbs2eHarcfZrG6nBIIgYc9+K5rx9fGz8PX06nAEZHH07V+q4ajHmjF7H59nE6kaXK372i0Kf7M1q+o+JfEGruSV+3MAT3x3ruv2VNMeLw89/tIe6uWck/xZNfhHHOZyxOYpdIn9IZFhZYLKYUXu1d/gfaSSZQAk/7O79KgQZUDk7W5PpXz0JrmSb2MqUWtY9dyVhuxu4OQM00se5AxkDPetoxk9epLoKnOzldMwvEVwLPS5nJwRGQf6Vzfjy+EdgU3H5uGAr28jwzq1uZrS54Oe4x0Y8q6bnhNxdNJNNK7nCyHBPb6VwvjXXotG0e9vCdrRxkKD39h71+24HDxUY2ex+YzxtSLk1G93pYl0q4uPGXiq28P2hL2FoSbhxzk54UV3/7NHh0jRxr14oNxqU7Slj1+boK/P8AinitRqyw9D5s/Qso4Vp0qUcTW+N6/I+ovD+jRaXYxW1vxsjAyPYcV0aYiUYPOOR6V+c161Wa5r3ufTYWCkrRHKSiANg4IBxTlI5HqOCKHLmXI9xwpyhpJ2HGUBkP90jBrA1nVLXSLGS+nYlYYiyqDyx9K3pYRyXI0U68Fo7JLodAsmCQTwc5J7V8Yaz+1XYaFq622qeH7iGyMoTzyRtOTwev9K66+V1IRU5aWFQj7Z/ummfaO7JC55Jxg9q4rwX4w0vxjpdvq2nSK8UyEgA9q8+M43tHqbTw9SnJKSO5VstwQcIcg96jQqGxtI+XGTSjQUYpowqVOVJLVmXrGmxX8LI6YZ0wox0rWVlJ+ZSSmT9K9vCYyVGKcTyMxwVGsk27f8E+YNd05tNvZEOCMk4I6V6H8RNNUItygOSeT69M1+h5DnHtIpy3ufnmb5dHD3ha6fXyPEriVvJc845OKgunCrKGzja2AO/HWvt4V4waklufG18rnSp+2jK3Y8W+DNy03x21SMOQFAIB9zzVH4HOH+O+s7XJZFAIP8WTwa/K/Fdt1YNH7p4W1XPK5RqdHv3P1RQKASGJ5wCe3pUka7owFwRjpX5bCTbSWx9fGpKOsthyOAEOCWyOT3pUAVQAflQYGK2jaUveJdT33GC0ILp91vIDghwwHtTrvYttMVAyUJI/Cu7DYxOopR3PMq0qlOg7vRnyR4tlUanOqjq+GJ9ulUfFzAanMwBwJWBxX7pkSUoJI/F84pKpVk4vTt5nzp8dr1rPwZeSRylTlckcdetZHx/nJ8HXIwSkjA7TivtI4hqjUaWiTPBopU8dQ5V7zaufY37M12Jvhpo7MzFmt1GD36dKzv2Y96/DbQQ3IW1HTtwM/pX83rFyVeTjs2f0XmtKFOpyyjpZfifTe/HyhcgjIqBjtGSThztA9K0xdeTin0R5yhBWm1dirGgiYDGQxyD3quSdq+WxDKQSDXm0cTVlO73NIYSEU7PQ89+JAjGlJjggkZqH4gKXsDHyAxBAPrX0fDGIarfvD5PiRRcdFdnz0lwkEbszAsFJy304NVbq0mkV9vDEEYPfjg1+t0ailJOTtqfnGZY2VOnGFGN2eYfA/wATahf/ABq1jS5bqRrOCRQiE8EE1xvwESeL4768sjkYwD78/wBK+K8RsxnCtCMHoj9T4Do0q2VTqVI3fn/mfrEIFnEaqCScYwOo96tWTfZrYXRcmSUYUfWvjHVlGKm5bnrRoJ1FGCWxVuUS3jjh2g+WSCKpzS+aCwyXduD6e1Kpjp6KLFPDwvKSWpzPi8RvpFwZCMrGcsfSpfEmmSarpc9gshQ3UJUsP4aMFm8oVbzZyY/Kk6Sstz5Z8PWVx4o114LUMLG2nw8nY47Cvo3wv4SsfDOnxWdhGMoQWdurH1/Gvpc24xbp8lFbeZ5uB4ahTqxU3qaOk6La6bAiRxAHYBn0rcJBxjgYwB6GvinmdWUryluz6Ctl7hK6V11OF8dIn9kttQA5K4HfFR+O2A0zK/8ALRiRX0eQYmdSsnHfseBxBQpqmmkfMssDeY5OSWPB9avvIo3F+eSBn2r9hoVLwUWtT8snKMZSlOWyHWsWVzvOVAHT9KSCbAYdAAMADoc1yYmUrqKOjBUZRXNe8Wrl0bUJGCS2AKgS4Jkzjb0BA7irdpw5lujmTUKseZaFiNnClM4yTgnvUiSR8HOOpGe1Q9I36nU6TjN8y06fMazt5iAZA4Jz35qnLLuZFQnCsScfyraSi6bTZzYVSdS8ldHqV34ka10ays45gtttVnUfxfWvNbphLbRDJZg24g9vSuOhSgm4PdnVOg6UnVWqujlfi7P53g3U5onIjaNuD1qj47ljbwhqUd2SIvs7Ek9uK9LBWTd+wThTqVYSelmd7+xuWbwLbsHYLuY5Pck81f8A2QYFXwDbGIcG4kUKfQYxX89Zs5Qxk/U/dFUg8PBPXSx9pwSSMu1xhVznPeo1f7ijhx0B+lZUrtO26IjNu1OCtcsKFUqM56kD60oHyepboe9VJKUEmxVas3U9nHRHP+K3J0yQDJJJB9qqeKbhY9McM4yoP4e9e3kdaMaqT3PIziHNScWtF1Pna7dvMlLdFOMetVLq5V5XzksSc57/AEr9kwKXJG3U/KcWqkJylB38jwabx1rWmfGPQ/D8N66WNwwLRg8NXDa08R/aA8LHBDcjPrzXgcf4qVHBRlB631Pq/DWiqtWqqsOblVz9VbGGKWxt5JRmRo0z78d6ZpUm2xtyc/6tQSP4uK/GY4+o4tyeqP0Gnhow5ZRirPoWzZx/wADDDPvSCTJUhiNxyD61MsVUa5rlVcLCEffWv6MU2lt9487WwAKduJY8/u05B9CO9V7WSUXz6GcqFNrlUdFqfPfxHKWgv7mFiJY4ZAMdiBwayvi1cbYtTGTn7O4JHTpya/XeEJyVlJn5TxXSUpcuiv1/Q8m/Za8W6jr+o+IrbULp5lttVdQHPRQRiuL/AGNSr614wZDlzq0gOO/PAr4zjPFzhjnTvufp2W4CksupSjbT/gH6RGwhc5I3ZBODT1Z3GckNnIP4V8tDE1JpOT0PTjh6UpJRWhbjREVAGAAIU/4UxS5VTwcEAn1PGTRGCV0tzOpVS1S2ZbXhSpySGyM0jtkY38McD3rn9pKLvLqaT96CnHRoU4BHzckZGKZkHCg4yc5Pb2rX2yT9mzppwnOHPHciljjdgSclsHB7+tTHaCF6DP411U5Spx5YyucNClCo2mtTB16GKPTJT5eTtY49KXXirafcFcnEbED1NetlWJnKok2eXmeGpqLaWh8s63EDcO/AKkkY7fSna3PFb/abiTCrDlgT29c1+x5ZOVlBn4/mFOnSXtIrv+Jx0ky2zLHuJmnIVFB5Y+wqv8KbZvGfii512cE6bptyUt1boxB5IH1ry8+z6lhKlo+9P8j3cl4XnXpc9WVoNaI908F+EpJIILm+jIkkYFVP8P1r2SwjWCJU2jAxgjq1fmmN4orVJNy6n6HlnDlChHlitLf0xlvpkcCqgXO7A47VrBhjI5w2TivLeJrVLXkenSpxsrrYqrbogC7cHcSSB1qVrhUBLMAMgEn0rCo5N6vUMOuVq+t2SiMK4JH3xyD+lcxd+NvC1lKLS81+2huMsAGcZ4rGKlfkkilUUZ33OhLJFtAGVyFJHas+01bT9RQPZXUckRbhkIOffiuuV4WQNqbVuuliSaCKcDgbcnt1pzvgFc4yvB9PQ1MsRUTSgznpYRNyg1c8z8U+DrW+iaS3UCZdxyvfNeg5UeoJyDjv7V7dHPa1Fq2qPNxWRU6s3bR+h8W61p11plx5MsZG3OSewr3f4l6DHNZG+j++M7sDqK+6yDiFV/cnpK58Dm2RRhBybu/zPl65kELEbh0BBPaqGofuZArMSFwST2r7amm1ZnyVOrOlFRjH+uwAtkEuSozxVBJAzkO5CnBXHeqnNq8k9TbD0uW7to9f+AX0AeRSRgg9T3x0pAdxVFxweay55SXK2YpKU9VZP8C4X2hCMgl8/wD16ZvH3WALb8jPYVzwlZ8kti61PkaUXp6akBaPPOT8xYZ7VFKq7t6nBjywA6GtZWa5mzn5ajqezi/dI5ZDnaWPysBx3zVZ3Z9oJHfJrSnGDlzI6lQcmo82i/EgLqvDhhkkcVVMqqCTk4OMelaVHFzSbFTcqU+dx17BHIrSbMAgYzxyR61QeT7zLuBBJqJUYy1joxRqvmcnrqjZGGCqCTsyB7n0rNjkdWXc5AJGCe9WqjirPbqKCcE1G93tfoaas4COScHGAe1OR1c5XPOAAex74qIVXKXM9g9jNxc1uvxGSgnGG3YABI7+9MMkh+9jHBwP1pOfJ7z3LrwpTgpVVZvTuU28tQfLGGGASf4vWh23SbwThccHvRBW0QYqjGSSlLXRJfqUpSSw3Z2g5AqSfLAFcFmbH0Fa0Ki5feHKinP2aV3sQrNu8tUyoJwcd81XJJdCVJ5wB6eprGvFNNPqZ4SMIQjTT2epa3YZcE7FOQo6H3NUTKd2d5VUJIB7+tRBK3M9Wy2/Z8zUbedzSBdRlmyTkgD1qj9oDkgE7PUdD6/lWig1FTsd6w0FFSpyvJ9DbjmTZGUUZOCQe1Yf2v5ghXCnGD/WuVe9eT2OWnGLnZpK/wDW51AkBiKcZOBg9q59Ln7uGP3gCR2q6WklJG1LCVEml7qNfDYVhwWB6dOOtURcOzHaTknnHQVdeEp63JxFFp79iWdMgMQCY1yPfNSRjznRA5HIJJ747mtoVJNtPY8+vh/dVNqzXUrhVlXbzt6A+lajaaVUNuA+Y9B2Na1KabcovQ0w9KLT59jAKBkCkc7yCR0X/wDXWwNOkaQAHCFc4PtWVS1ue+i0MqU5puNr3/A5iS3zkZwpJGMelbMtkw2SHcFKkZ9a0oVYuPM9l0KrTcqyhKO3U42602NtrZywGCPrXTtZEsegYHBJ+nSsouz30eppVUZU2orVHm95oaSjAX73JPqewr0STTw6ruYDaACB3pc0IXigtJqm6ui1ueC6l4aQCQqh3bCGz3r2S40pHYIXxuPJ/vDtWSo80VJE0cTGNfka0aaT9D5fv/DRiUMqAckgfX0r3q88O78hyTwAAO/rSrU4ykrvQ76OKqUYpJabnoqOXjDbyVHABrPtpcLkA554/rXixnKF2kdcpOq3F/EzXSTPy4wFwQ39DVWM7zwSOeh71upwSUUYUMNz+5fU00fEfDEgkAgelQxPyBwBvAAxzxSlTvK8du5y0l7OUoVXddC6pDOpyRuBximwtnhjgqTkHvXUqTguToZYqlBvnS5ttBXZclXcgAE89s96a6STKSRht2Rz0oV00pvVDwbjKnJ01o/wM5T5jHexC5yAfpSSRhJEYnjdjAqnRUnzJ6oqpS9pFxn8gKZTHAQ4yB2qVAMbhkMwOBUyw0W9CMPUUlyp6JfeymEbeuSCny7fer37rdGC/CPk4963rPlin2Fh6klNTa93qisVAfcwAYMMf41ZaFXGdvDNx7VjCMGlc6frifNTaspbEKJkEckK2c/WpmLIqx5IAwDj+dOnJOV2rJ9Ryw9WnFUpu9xirtPDZI4yf1qINiTDu3zEHj2oqzsly7GFbD+zlyrV7+hpHBjVVfJ5Iz1IqGUbQpBwX5A78VlGUpysnoiH7WbcIx95tMgV9ziNZOVOdx7VEGYBWAwDjGO/Perm1JqVjvnXqQqOlLV21NEsCVAIJzwfT0qshO7OAdhOSe1Dpci50zKg4yklKPvdC0sjEDjKhQMehpFAeNQSMkHJXuaynJKyS3ZrToSjJKbWn6gAd6Ag8Yyc9TTo1LBV7jnAroqRcVyy2M4zmpqpHddCzExLKWwBnIUdzUYQIwK/dU4x6+tTTukdeJi6soVlG3c7G0KLDHlTl1yCejZrGtrohep+UHAPbFc0oOnJ85x1OWs+VOyRvSK6BHBBzlQT29DTY7pZkHzEsoDHHf2oniLXuro5vq6UbSlv99inIwLbCcquNx7mq0jM0pAx8zcn69q5rNSSk9T1cPXhVh7KC07/ANdjA8Y2xutEmUoTlGOB6etbt9GZNPnTbuyjDntXRhaip1YvdM5cVTbV0/h2+Rz37LGsm3ur/S3c5iuGAB7eled/BvUToXxPuLNjtjnkAJPQ81+Kcd4CWHxftobSP6C4Rzh47K1zLWB+psE5dAeclep7VmWM/m28bA9UBGO9fG01JR916G05xb5Ybm0WfG3J3Bh+FVjIpwwB69u9RPnbUkGIxFNJRta3U4zxwAbHzFPKE5+lXPFMCSabLnJRMnn2r6jh7F8lRRb30+Z8Xn+AjXXPNaI+GvjLfmDw7PbozBp3CAj1PSsb4xE3uoaPoiHAuL0KRnk1+34jMoUsDKtJ6pH51kGTPF5rTprZPY+xf2fdOOmeBNHR4yrvaBsjtkV2vw6tPsHhvTIApAS1QE/hg1/NsswdWcqjWreh/ReaxlFqMForL5HpAlBcBWGAmcHqMVUZ2UFQcjHIx1qo4hOSbd9Tx41YqTVtC2JFP38jpg1ky3SKpcMcRKSM9+K6FVkpJ9yMRdx5ltE8k+I+pKZxbfNxkZHqTXIeK71bnUpfmJw55FfrHCeEUYKpM/Ks+qyrV+ZbLfsfM3xhvGuLfTdHjYg390iADqwyM1g+Nbk6h8RPCunZLRJeg5P1r6jiXGLC5fKonudPh9R+sZlrqoan6NfCjR00nwlpMaYCiBcj8BXTeFQLbRbCH+FIlyPwFfz1RqTk3Vb1ufrub1va4hyirI6wyKSD5h2ggjHfNVjIAVPoQMetbyned+2h59Cq2247Mul8I2OTtwPaqIkzG3l5HJH610tc01KO5nOgk1JvRbnkXxK1XYVtw5A2YKnvxXMfEh/MvsFuFPJFfoPC9Dnj7SS1Z+e59WdTEK2y27M+XPiboVrq2halvizL5bFcdQa67XlWTTLxQAxFu+T68cV+iU6cZVkpq/Sx8hWnODlOCtZ7on/Y28UXEmm3Wj3Ezt/Z900YVj06ZzXA/slu0Hi3xFbBzzckgelfhnGmDWFzJqmtGj+hskxUsZlVKrOVpbPz7H6iJKTg7y3zAZNUImKoMPklB/KvLVZyg5HJ7Hl9xfebKOm8EEZdguew9KoiUYQjGSRu/wDrUoYiVOKi9TOphIzTlN7o5zxtbLLpU+MEqCB7Voa6pmsJ1Y5URkAnua9/IsfKNVJHzmfYOMqUYSeyPkTU3IWWISENggE1JrkP7y6UjO0MSew9q/asrqKdNSa1PyPHucYOD1ieC/AMl/jprjYG4RKBn+L1/Wl+AW6P44a5IAPkjXGf4eTX5j4qySrRcT9o8LcPOnlTilfW79D9WLSUrADzyw/AelVoXAjiO47ioJ/wr81xE420Pq6cZt2q7dDSeUMw2A4wB9MVHGwkQKQM54A71o6qVO8kPDKCl7Neol04FtMeuQQaq3ZUQTBTngnI+nSujCVP3iR5uYNThKKej8j5M8WqX1CccgmY4Ppir3iWBnu7g9A0rA571+58PybStsfiubYyUaqgo6L8T5E/aALr4LlZ16yAj8DzVr9ohdng24AzvQkLjuK+/hXgsPUT6pnzWHoynjqMktpan1p+zKMfDbRAuC32bIx3BA5p37MqbPhroITBJto8Y+gwf1r+Xq07V2kurP6OzNOUoxkt9vM+j5SzKijIcngepqzJDMgUtwVTk+melNS5k7LU5oxTg4zlojOcFcdQ2AcDtTpNrMCWJLAnPp7VxSnJPmepLt8EPI888bE/Yg2OmcA0vjbc9ltBG7kgntX0fDWJbq8slofLcS4ZuF29WeNGJRbzMy4coSSw+6KfM2yKRJWIR05Oelfq1Kqm1Lofn1aaVN00rNHzn8ELWKb45a5KuVWNjnvlmI/SrXwIlj/4Xf4iJYqnyAHt14P49q/MPEPEuOKpuXQ/XuCLPKnZXTe5+mt+0Sw28cTHiIAkdz2NZiuxG5iSNpx7YFeM8Q50Ut0deGpqEnUtuCgjkYwwA471Hv5Vk3KpAwB1FccarktDRRtFyQ6RgcbAfkGCKi3MpIJJVu1RP2jSaRHOvaJJFWRxuIZiABnj36VgeINesfD9m97e7tqfNher47CtcLh5O8YPUmdSnKd72OkJxGq4ODnJPavjnXv2pX0idoo/A1/JBvIWVcfMPpnvXXHK6yXPbX0JjUvU5ZPTTU9+8d3BXSmHAABIP1rxS5+Klp428PR3UNjJbzSqS0Uw5U17fC9KTxHM0fNcW0oRhyKRx1zdliMkfLk8dvSsldzsWdgfmxg1+2csUlJux+ZVKacbwV5djUhupCRlmy2AB7VBFGxUMuRhsiuLExXLrua+3k5wja1v6saIusJ5gc7FGAT1qgZGYlAhAAJrChzNvn2FWxKnK9NbGq10zAkk7iSxqvDDNLtVgwVlOeeldlOrFxuctNOclKO3X1EjkklYlXIxxWnbWYCJ1OwHJNP28ZVEjoxWElGKjDVdx9jMytvbJCNyPWr0USR5G4KW5H17VcqUX7xx05Nt0mv+HPPvixIj+DNYeNCFEDbmH8Ix2ql8Wbg2/gjVDvPzwt07YrpoUm3KKfQ5K0GnTlN9dj1b9jhy3gS2eSYlt7FQe3IwKxf2OZxJ4At2XnMrhWP161/NefVlHFzilp3P6ZngmqFJ097H3bJeRowfnheBx69axkBWM5PzEkZ9KdKtCKjHueb7NKblU3W6RoS3TlVI3AFSRisUyF1eMSdUwCOo96zqYpJ8rWwvZU+ZSV3/AME53xZO8mmTYckZI57Gk8SwkaTOepJNerw9O+JjdnhZ2o8korZngCRO7bm4wxJB61LvZCvXOCSB2r9zwjmoqP4n5HioOMnd3bPlTxDIU+PvhXy0IPJIHf0FRa2Xk+PXhdRxiQhW9yelfJ+JMH/Z0JPQ/QvDDESeIqQ6JH6paZI39nwDdgiMAE1n6W+bC2DsclQCfWvw2nim43ufoNTCwjJuO7/A2vM2ADOcnGR2+lVgw2ALn5SQSe1EMU+a7WjNZSlKPLJ7fiaCy/KxGcY5Hqar/eTCSNuDYI7Cu+nWi5OLZ5tSDnFVHpynzX8WIpJxqMMedzwuFx7jpWh48QPqMoJJDsQc9q/aeDcRyQUpI/JOKMLGpV03Ph/4I+LvE3wo13Xjc+C7q6tb++eVXiIGc4xivpGfT4ZNwwCSQAB1xU5zwzDG4lV1KzPTy7iythKMcNVin2N3Sf2r7e41zTfD+o+FLi0utRnEamVhxnoTzXyN49jSD4s+CihYbbyMEZ4P/wCqvmuJeG1g8L7aE7v0PsOFc7p47ESoOnypK+j6/cfr/Y3QuraG4DfK6hsD+VYvhVlbRrA/w/Z0AHpxX57h617KT1PpK1OKvY6dccsxzhiQT2xUZz87Ek7jgCqrTajdMVSpor7dhAxVgc4yc/QUoZQNrnoMgEdBXQqiqK6Wpk6clGMG+u54t8SPipqXge7SCx8OzX3mYJZCOOO2aZ8RbaN7oM4yABX1+TZXTrQTb1Pmc2z6WGqKCjzHM6P8Yb3xZY3C3+hyWbkAKsmNx+nNcSLeOKVyhIZmBA/CvrKXC8YSU1LX0PkcZxbKbS5eX5nnfxq8RSaT4Xv2gYLc3Y8tG9Ca83+Ot4ZrzwrpIbLXWqxBx3A3c19FiqzweElVlqjmyajHFZikleKtc+u/gV4fGl+C9JwmJ5bdXc+5Fem/D6yS28PabD1VLWMj8q/CK+MlUquctr3P1zlhKbcPh2sdlE+PKHO7aoYimZG5h5YByfmFcySast9zooe4+ZLRFnft2qvIAwSf8/1qspOCMkgHJ960hUUFeJnCUk71OrOY8X3zw6W8aMS8wZSQegxxzXLePpWCKOdoBOD2r6rh7DqtNTPmM/zBU72V0j5D8dfDXS/EK3E2Jo71slZlc7gT+P8AWvT7hvMBQk4BU59Pav1Shl9FRcZwR+Z086xa/e0ptO58m/A/4neL/hz8Th8P/E2pSy6PeTkRGQncnPAGfUVzPxWs/sfxd8F6nA215dRjDH8cZ/CvieL+HqdGgsXR+4/UOD+J3jJvDYp3klv2P2Hs7v7XbxXBYhJFXaD3rmfB8/naXYgyFttuvP4V+VRxTk7y2Po8RQ9inJPU7Mtl8duhA7VAGYAsQAwbBPpXako2cnqbZdNXagr3MzW7KG60y7STJYQMB7+lWrgBoJl3dYyea9HB4zkqxd9zzMywM61JqS26Hwf4kga3vJl4XaxwT3NaPj3EWrXGB9x2Ix0PP4V+3ZNX9rSjOTsfkma0XRcqcFdvY4mHHzYODkE/j1qpHICS4zyQMDt616rbck4nzdNyStN/LzNqCU4+UZbcRn0461USQiFQHYkMAT2HHetK8UpqLKg7Jc0dWa3UAn5s5wfQ1WSUljuOP3YII71zVoRclN/ca4im1B03L3txsm5d2WwoGWx2/lUrRu6ySICQoyR29KmeIk1ZlUJunCzjdb+rMeV2CqcsSDkH1p0pZhyRvVhw3bPWumfLJrm0sVRcU1KL+Jq/kV5BhQ/8Skkk9Tx0pk6kfIrE4wcmsVWTTa1NMXQhRqJzenQprlycAqQ5OPWlcFXGRgLk8H730qpyvK62SObB4ZRnaT1etyFrkhlHDDOBjtVYMFcEnbhuMetTaMKd09WNVZVpqlFaJ3NFZW3RsjHAbnFZkcm1tu8kqcknvWMpRSstUd9KrVqpqWjv+RpmUsdgJxjBPrmqAePkMWZQOQe1dK5ZNM45UZKoqbdy4p+c7TlRkDd29qhV0CDJwwYcntUybceV7mkaEZKXtFq9LjsrhSCCAWI29BTEYElFGEcAqB355qoq7XMtC3KoocvNqtF5kJjYFJA5J5BUnjmpZSruTyuTmsm5NWb0OehCMari173fuZ1wxZwWbLMQAPT3qzIuSpUEncBgdjVRvBWRn7N1Y3rLRPR9CqsiQYJYBDkHPam3KtIuFyG8w8rRJKUeWTsbq9CUZ09b/cV2n+5yWAJ4qrKDg5wzlRk9jRJa3tqzmglNWk9Lslt7qQOd5JTcCc9uKgXoM8Dr9TUYhxcbJanfg6cpU3Sg7pGpFeSFsZxliBnr7iswXA+VixAJIDD8Ktq9PkuYTwzfuRfVHSpesoB5EiDJ96w/OU5YMcBhk+tZqoob7s7J0atpQnLRHYW2sMpUSZbJ2jPb1rk4rhHwTyUx17mtlUjBWk9DGtFSpxUXZ+R6TDIsikK4245NcRZ6lNbuHVjw5BzWM1Nav7jOrFLRTVu52kluXRVY4bkjPoKo2upCdduSZGxkH3pOo27WsKhUjWbae3TuZ11FPEQpJO9yTjpitwhJkw/AHJz+tXhddV0FiIVm1ppc5XEhXqScg8+9Xry2eNQyKRGgJPq2azqVm3ZK6OqNNTe7utzFMm51XkngkH+GmjqNxIwep966pSaj6nIqkqkFyrRfmiG6yRndhgSAB39adMuUKg5wuCT6d65sFTjGajLUmcpVYyadmyCLG5V3Enduz7d6ltVERMmMs0mBnvXiU63JBJLVHZToNVJKD+0aUQY8qAdrDBPpViNVIKZGMg49a0pyc5J2MHQUHJ1Za3/4YmgSV28wk7I2wfb6VLudGLIxwCpwvauuFe0LR6mcU4xT3abNBV2BWcEjkDH9apmbbg7icck1hGc+Zykzu5JTguSNmjQWLzOA2FGOneoEmGQcEYJHHeqq15KKjDcK9JU372l9SCa3I+bjbuHWr2MoOSA+ASK6qddKDk3qjmxGHdlUhu9TIOAB0C8A1peRknqcEYJ9KiEnJKcXY5bynFQlCzvcykG1gQCCBwR3rRW1+9tcgb8H3rWq5TjqxKCp1HCL3M+OZiX3ZJSQgAVd+xMAys4zkEAH9alWsodDJ4hOPNLWSendmczIykgncrEHP9KkktGLHsMAAntjrQm5zTZ018LUUlGMrQuvx3+RRRGcsyksxIIPpz2rWtbJiB8xGZAcetc9StJtXWp0zock+X4k36FaVJmERc5IJGT2rYnhJXAwQThgO/0pR5VBHbTi51FUbtHUw0QlEL4IBIJXt6VeS1c7gUKngEDvVUpqLa2OZQhKoptad/QiVCpyhJUAZz2qzHaySKoRSMkZyfT0rWVXlaS1Xc1dWM3K70GpkbWJOR+lW0hPcH5mAz/drKcnGKVrtmeIy2E4e3jKz/MI0JJPQ5Bx6ZqwgwCeSVBGKynyzSUTv9j7OEpt3bS/pEDx9CVJXcSQPT0qy8oXABwx6f8A1q3hWlKNktEedWpOU4xW6X3jYcKny8qMZB7imRXCqGBUkj7oHU+lZV6jjJOKuRFqLUJo2YCqrsBIZkJ47Z6YrPNwqJvLYYHG49vasKzmpXe/Y3fPNe8tPxROxXOAR5itwPWs5rsNcxjcQA2c+tY1Ktlr0ZWBwKjSck7KXU3VzJG0TDqhJA71nxXXJbdgbT070mkpKT7nZClCpFqUulvU8C1I/wDCPfEzSLxWKRT3CqR64PNQ/FnMGoaZqcQIkhuULE9sV5XF2WrF4Vyi9UfWeGebxwOP+pS1T/U/ULwxeR3emWckbE74VJA964j4Q6omo+FdMmRt22BRx24r+ecPUlOD7pn6znFJxquktj2GJM43EjLEAHvUe8KEODkngDsBV/WOktDgrYFct1qUtaAexnVsfcIGKdf/ADW0kYPOw7f9o+lehl1dRqqUtfM8XOKVSeG5Yn52+Js6t8XNDsACUt7kMx7Dmug8N2El/wDG28kkyYrXAUnoTk5r7vi7NI08DGjHeWp4/hvlslKrjZL4dF8j710GIQafbxgniNRj8KsWuxYo1GcACvy6nWdOKtsz7vmlJqpf/gGkZQAo5DE4z6VUjG5yzZ46D0rWLkr825hDDuFVTg7rcztXnW1sriUfNvjGCe9c140vvsukzKCMuMjHbivosrwvtqsbPS58vneNkoOPVngWr3jyXchVidrkAn+VYtxLI7ttJ/eZwc8mv3HK6HsqSjJaH5tmEIOLXNds+fXlW8+M2hRlyTDKv4Y64qnpIb/hd2mIAAQcsPTJ618z4lVFDBw8z7rwifO60nHVaH6v6HIBYWpJPyxA89/XNR6U6rYW/GSVA/SvxSnVThyvc+4g52dRvS+xvhtmM8kEke1UvNchDgHDBgR6VpRxEdkjCFGNT372XYuebhTjqGJBH9ap5ADHGSBnmtaNVNprQu120tn+R4B8Qiz37KMhskkntUnjcO+ouOeGLE+ntX7BwbXcIKSPyfiClebpp9TybVogLC5BBYmFs46Yq9rER+w3JGcLGenav0DB1LzUmfE5jinShKK2PI/2W98fxA8TIGIzddu9O/Zh/dfEPxG75O+7LEHr1/zivx/xOklj404aXP6C4IkpZFTUtW+v3H6ZxBnRVDckAE1HasyquAQpOcjvXwdBuE9XuevXqXSjF6mjEpK/KSSpwR64pVLcZyDyMDv71NPEOU7NHnUsPGabe9yC/bzLG4ABG5MHNQ6jIfsjNznYQMd69HCVJQrJvQyxlLmouklr3Pl7W1w9+pUhMMOe+Rx+VWvERaR7wBsKoYE1+8ZPim4wTPw3N+aKnBnzX8Bdn/C69fYFg42KxPbBqP4CKG+NWvuSMMxwM9TnvXwfitGKxVOCeh+yeGNObyXmqO6ufqVGyhIjuIGDnHbFVoJD5Me7Jbv7V+XSnZcqPWimqkpLVGqg2DYM7iT1+lU42bcpLEEjGT2Fc9GdSL122O2klUXNsmTXBCwtg9mI/KkulHkMTnIUjHpxXZhaqU00c2Z4fnTUdFE+bNew93cKDy0pAHpUeuyBbubbkt5xYj0ANft+RVHFRlHsfkWbRdWbila34nzB+0BpLz+D5QZARvB2j8Mj8a0fj5dFvCeEbB81CSe3Ir7uljXDCVHa7sz4XLaTnm9Kmumtz6t/Zo0tY/h7oPJKJbRkA9sgVp/s8HZ4B0Rs4JtlIA7DAr+XJY5zxEm11P6ezeg+dSe6SPdL0AKRk7c4x6VBczLJkM2TkgZ/Su+pWurxOCdKmpc1RanPOrANgkjJJOe1OGVlZgcICAB6+tY0rTSb7lU1L2nOkcZ4zso5NPhEudj5BHqPQ1a8azKlhEWYBQxCgV9bw7CDqWTPieJ69Sb5Ix6ngOtjybOVcsBsYHHUiquu3SPZ3AaUkquBu7V+s4OCi4pvU/P8fOCi04cy79dD5w/Z3u9/xr8S7X/1ZOM98H/OK5/9nOTzPjn4lOSFLDdg9MHr+Ir8u8UOWGKhBKz7n634b1YVMllJOyva3Y/VUu4UKCQjAZ9qFkGxDyRsBI9TX519bVvZx6n0lKhThea1Qw+ZIDyQMkZHU/SoJnkjKbWx8pOR3pRxd0qlro5ZwhKXs9mSvKEyWb7mcD1rNMsjQuT1BOM9qdDE8qs2OrhpQqNrVNHgfxL1j7VeNbbm2LkbVrl/FyTSapNI7ElpSCfTFfuHB+EpwpxbV3Y/IM/xLqTfLKy1TPP7rT4JdjvGCWJznrxW6li/lEuSwck/Svu6lGPI1FnyqxanOM5PbQ5mKFkaRQcrxj3roYrFt4ZshlwSD3rjqUYwSnHRmqrvE1ZU5SvbZGcsR2r8pDAgAH2xzXS3dqwWFkGCxOSO1aUW5NW26k0pypVJU7a208ihHCDGoznk54rTt4Au05xggEj+deXXUnNtPQ9PDVFJRktylDbqJIi6hoi2SpHDCt0oqr5Z+9uIB9Kzoc7mo3umbZjCydRP+ux0dnf6KYhbz6QgPQOrfe9OK5qOEYXkjDE5HbFenPDWk4p6Hg0MXJwU1HRG/cW+mtve3Lx4yVQjgZ9//rVQigwoZZTtLZINbPlU7p7HbRw/K3KO8jJlSQFkJYbDnIHUVuPaBiSJCWZCc9j7V0J8sW3ujgrtVqihTe3Q8a+LMW/wRq6ByQLcgg9QMU/4wRmHwVqgR8sYCAT6Y6VvgpcrlK3QyxmFVSpTTlrzI7v9jeFU+H1kGySjuuB255qX9jfn4fWK7sszkZHQetfzDxFBLGyS7n9LRhyUacW76I+z4yY8Dk89B3qQKRgN8vBbIHXFeVVqtxu1qNapKL1Y8QRLtJXDFTwKY0oMfzkb13EjuK2ldNJbnNTq890c14lCppMm3qCTk1S8WzAaTKVzgDqO2a+kySulWTseJm2FboODdkj57upz5pUqflLAk96q31wkbMqEmTcev6V+94aqnScUfi1anPmTavY+Xr5t/wAevDMbZDBiSw6dQKrXMjt+0F4dMuVwq7QenJ5r4/xJvVwMYo+98MLqVV9fyZ+pumrILWIYJ+RRgduKn05i2n2pJI3RAkDvx0r+fbeybUUfpns23FyevVlpEIBVm+YPg/h2pwKKULA7g3GOxq6c4yd5HbCrDVwVyfcdmQRgkDA9vWkA8sbyThSTgdvauijObaVPuc+IjKMOeR4F43+bVJGdgu0sQT6+9O8aHOoTZyRkFT/Sv2rhSV6Nnufj3EUlCopLd3t6nn0bdD1BbJpQ2WAzjBB+lff1KMU1Jbnx2BrXqunN69T5T+JPyfFnwQ3Kg3qkHHLZPNM+KEmfir4Jxk41BAfbnnFfNceuTy20en4n3fh9JRxM5S66W+8/VjwtM39kWJBH+pXIPc4qj4XO3R7LqSY1x7cV+AwSjLlb16n6bhrQuoLU7cSFj83Cq3GO1Z/m5jO8khm4A/rRKTtdO92dVWCm0pOzLySA784LDg1RONowxBLHIFdim2kmyatKNKLlf8Dybx6SZyGY44B9uaj8buJLpQXIKjkHvX6jwnVbSmtj8u4jw7m+V7nmW9SSWGGBGT6fSmFApY7jt5HHev0SpZ2UWfC0oyhFxktendnyh8X3c/EPwTCSWP8AaUZIPUDPWqvxZZx8VfAr7iFa8UNXh8ZVZQy1xfc+38P8E4Y114vVo/T3wcyppFjnIT7OvJ64x3qv4XmP9kWmwjLWqEA/xcV/P88Ra3LsfqeHoSbk0zrLhgkgPJ3ZwD6Co5MOpI5OBtPpW7r8j5X1MVh5KKcNtmNbaVwAQzDOfWqZlOQMnIxjPeilVULyWpq8MlK0XsYWvaMmrBASflBwD2reWUMGGCeQfp6V15fnVXDzTgY4/KaeLX7xnlE/w/VyRHI2N45PevW22BUBBGScfWvfp8bYlK6Pn6vCuFjdS07WR8ieLP2d7PxH4g0jWpbyQNpFysiqBw3PPevq92G4HYcDGD9OtZYri2vjIOlU+ErLcip4ap7ahvaz0MrQdP8A7Ptbe3BIEaqMntjrW1uYgKnIY9T3zXzXIp6RPoaFZRSUtVfUkBIOGYkE7celQFyNqg5PIIPpTqVGo27HOmqU+SKsmLcuqRkrnuuR2HrVaVgqylzkMpBrtp1nKSb2HiYyVLTzPjL4igHU7kgkL5rMT65pPiEV/teYOxwHIUe9ftvDrSoWtdH43nfLVrKL0ae55QvDbtxIY557VBJLsbJJOGJHoK+oo4ht8i0PAeDjOSk3qvxNSKbDLlicHkHt6VjrdqSvOCOCD3PareKfK29zmnQpqrzU9kjroEacFkYcYzj9KoWF2AHCOQdoUE9q851L8sY/idsISqT5566bl43FxYkoTgdRk8Nmsq6mluFZckkEEEmulNtrnOmnRioOrfXZDpZFJ3YBY4yPWsdpWcum4hojzjuKKNpq09jltKjFSS9/UuvLsODIScDH9KzmmO0ZJOeCB2xRCheS1sRUdRQs3ctmVQynJPUfX3rO85D/ABEhep9a5aqirt6MVPENJRS5osdNIVkO0nD4JHrUDeWdsgPzAEH39q6Kbi4OLVjSs7zTWll0/ARpCVJHHzHA7n2qu6sgXbwGzg9xVQqrSCOSn7SjSdRrmcibzFj2buOhHsazwznBDEY4J9c1TqJNdzX6+8RGPJDpqa8cqMwG7I27gG71SjwZE3McLIAQO4rnk4um5tmtConXVCMdF/VzXjYAMqnnIJOKr/aMsBHwu4D6iqjJ2SaOeUp0pSfSTLRwApHJ3ZJPaqv7xivzEc5BHetnUurXOmFWTnFz1XYnXLMRyDjqD19qp7nRyoyCWBBp1IylBNMipWbbUY28iVyfMCqRtIyCP1zQSdiluGLEfnWcoq1pb9xxgmvaX0tsZhC52qh2sSQT6VYIbzCc52jO30zWqbXurc2hOnUkvZ2WjRSGAgJAG4kAClkfcQAhAHGfSs3F1G29DlwlWOGqKKV0+pTdkEgBfC8gAdDmq7BfNc8hkA2k9DUSa5U2dGJVOdT2NrPdEglLEBiNm8jA7VUyy5fI3DJyPWtZuNm0HtkoRlf3tjVjlHBB/wBX1PrWeshQdR8yjGO5rGNS7vE1lNKlzS3/ACNYSqw2szAsOlZhuDkKOVHr/SmrytJKxhgpp3hLW3Xvc2re6dNzbvukAEd/rWMLgKnJ+9nGKmE237p34fDxcHyu1nod/ZarFIipJkyAg57GvPftLxMrI5Cgf5FTODc1NytbQ7YWUIvtf5nqplDR7twYHHHrXE2GsKqpHM2WR+COw96hzcZrseY6qUWrat2+TN++teTLFgrJtyPQeopBcZVXWUN8+AB2HoauM046arocKtGDhF2d7MxQFJcZychQGrSuIUlZmiyHOBgf0q54hWUo6NF4ejBQlRnrdO7KsaAhMqMgDmiGWMhl6MzAAn+VeF7Kzuup1zxa5FCVrr9S9ArK6Z+5nj3PrSeaVC5YjecA+n1rWk+aFrESi5NLdtl9QGPlhsEkEk9qqLMobnORgg+tayTSU46PojqVBRp8lR6al0AA4Ay+MhT3piXKOQRg8AZH86xnWbspKzREpwVOME7rv/mXAIyIyykneQRUH2jYmGckAkjHf60+VRej3KpQVaEm1qkaaEOMA7SpIPtWd9oBTcuQ23IB9a6KUlGd1uckaKVJ82sTa24XbkhsE57VlfbFJVQxzk5JPWo54p6lKShJU1ojTRkjYbvuleAO/vWI92SMKeOmT2rSykmm9SIV6aq2krv+tTdO0gE4DMwH41gC8YuN79ApA9adOUuW03odbdOU4unHZ7m63l7z1yDkg9DWA18zNhTzuJA9KmjQtHng7HVWnCdV23N6R1ZVCjBCkjHeueN1wRv64GR2qIQmkmtjx69bnd0vev8AkbqXQLBdmAzDmucN4ykMrfMR1PTHpUTotRTZ6uGqqo+V6M6oOoJKtlQwzjtXLpelioDYZSCR61rCktL9CadBVIty3V2dzabWQng8gkntXNwarsBDHDlSAB3qqlCDalc82FOrKrypb99jpiFiUDBJJzgY4rnYtQZyZS5GMKAPbqa2qySkki6OGioySei0NqcxMUQYDsTkegrLecEEFiGJJBPaueEkkk0ddSzg3a601RBKhKoYiDyQRnp9KasgZOn3RyDXVNSpybX3HHFU6tOMld7pFc+YgwchkA/D2rS3RyLzkgjnPeueDTleWh3xyqUKTcXdsyzOyn5jkORgH1q7IkPKgdMnJ+lGIaVmmKhVvC0Y3a3XoYEzyGUN5nHIA9eOKsyqu9QT0IGfT6VwJScbpHRJyaXMrx/K4izPtbnOADg9uOaRo2QkD5sZyR3/APr10OSk046mE8So+7ayR5j8VIfP0Pz36xKDge3NdV4utFvtGuYdoAVCc46cVrSgpJ06n2jkhWnhq8cRTXw/ie9fsx699v8AClvA8rCOJRhc8r9ea8Y/ZU1n7Le3uiPIQvnYye3Oa/nHiXBPDY2VNbM/pb61TxWBp4mnrK136n6NqxVQSxCryQO4qrHcAxrgkAnB968Fwkmk9bHDGnBySbs7XJLtQbaVOxQkE9qQuCrhlOCOPpit411Cok/QzxGGbgopaang3hjwp9l8Y6lqoTImkABI4HPavarW1hilLlD80nOO2a2zLFObi5bbE5FB0aLpR2vc1kDmP5OTG3QU1ZQCeo2jivPWIdrxR01KSqtwjoTo0md3mHhsECqjSlVyG45wfStVTbja5EOWnU9nF6I8w+IN4Qhh3EbsDArmvGN6bnUGV+cHAA7Y6mv1HhLBcslJq5+c8Y4lzUlF2T0PPvLIDOMgDIIA61PIxiRwuTu6g/pX6rCpKyg1dH55RwqTveysfL8E7Wvxu00nIExA/I8CqursLT4u6FdOSA9yij2yea+T8T6HtMDGcVa2x+keD2JUJVadR8zP1W0R82NpuJKsAee3FVvD0ySaVauRwYgfwxX4G6l9Fuz9OrKUKicJHVfKdu1iBgYxWYbjew2uRjIOe1OMnG0W1czjSlUk4wVr9TQZ125BPQgj1rOeZSoC4IBOB6n1onXgpcr0Zz00nNxe609TyHxc++/fb1x0+tQeLX/00kHncCc/zr9j4NqJU1FbI/J+IY3qSqLTucHqm1NOvMqCRASD6nvVbXZA2n3mxtu2B+R3GK/TcNQ99SfRnx2PqWoy63S0PK/2ZMv448USAZ2XYwfrVz9lm2B8TeJZ85Bv2JxX4t4kuLzJSi9UfvXA9J0sihUe7f8AkfotCC0aYbBUAZ9aZCw2gD7pYDHpXwdWpFS5mdVbklJJK36l7fkZ8zDA4YjtUG/byMAqCcHv9a0+stpTitzNRnTaW4zUHAspBk4KEg+lZWryFNOuiWJIQk+wI7V25fJzxCpz0ucWaxaw/PLR9j58125+a8BySQ3WsDV76NvtYBbdsPTsR0r97yai4Uos/H8xzFc06Sd2lqeIfAJ8fGHxC+Tu3gE+/wD+qqP7PkoPxc8RSbwUEpQr618F4rc860Yy00P2Pw+UZ5QmnrfY/U+zxJCCeoweKgsLlBEiKwAIHJ+lflFWLk00e3hpW0btqX85IxnapJwe9N+0o6k7jk9aitGTg7aNGlODp1eZO7G3EhNq5LEfIy4P6Gql/cIbN13/AHVJHt9a7MFOEaim9jnzKnVnRkkz5n8R3QF/K2RkSEEH61ieI7hVvpuQQZSCT3xX7flVZOmnFaH43WgpNyl0Z8/fHi4z4VcIcsk64z3571zHx4vJD4eijVsK92gJ9R6GvosROpHDTk9kjzsnp06WZ0r6uTPvz9n4j/hXujEtkm0TGPXFV/gEuz4f6LvLKxsYzz9P6V/K+Ek/bTm3rdn7znMrVlLo/wAD2wsB8rHJ5JI96oSzYLdcDnPpXurGSs4wPI5G42UboglZgWYuDySCfaq0gVF2xkAAHC+vtVxx7jrJHZhYNL3FrdHnfxM1RxYw5YjyyQAKwPicT9gjGCDk/j619vwilKbUFufDcWYuNGSk97nhlzqzPDJGHUuVYEN/F9axZUwsknAwCeK/YqSk3GT0PzzFYyVPm093/M8h/Z2hkPxx8SbsjzHQjB6D0Fan7On/ACWLxCOpkcg4/hwev5V+LeKdaKxcZSP1ngGi3lb5O5+oar+7+8AQDzSwn90AzZwAQT3r855uSSqW6H09HERsoxX/AAStdsiomQS2CDjv0ouACoGcNjIxU06tk5dDKryyqJrRspM2IZJOgMTAjufSnv8A8e0+M5A/MY7UQpuUlBPS5w46PLRcnK9z5l17P9o3IYg7pCB7Vf1mBW1GSR16y9B39K/oTIeaNKKbPxHMMNTdafNLRnPxoPJ2hiQcfhVtYiNu5icnGOwz1r6alU5aj1ukeBVnSlNRi9rFZVQYIBJyRz2xVhUIXDA/NyKpwU9loVSxMYydTm94jwJAUIyVOMH3pkWS2CxBL4I9a7MVaNNX+Z04Wr7SfMtWuokihGJViC6nNOlY7hvBIDDPt7Vyq8m4o9fDNwfOorXYZvO3DgFpDjI7YpV6DgcAkD3NclFqElJk18C6lO8t1r6k0T8DDcoQMn1rIkl2sMvhWOBjv7160VytTSPP9pzxVOWjOhSYbF3ddwJx0UVhee4PynoCMDv6VrNykk9kbpRUHCfxJGy90U4jc9SQT254rE85mT58nGMAmnVm5Ss9jChOdlKna7X32OB+MMofwRrI3gK9s6k46DHWsj4vzn/hB9WVTwISCB7DpV4aDUmltZkSxbnVpznDr/keh/sf3LJ4DtZEYABm49MdKy/2P2K/D+zBPzybgSe3Nfy7xFXax81Huf0oox9jTb191H3nZa0qyobhQ3YA9/b6Vx+4q3yscoep7mvMWLdJrm1Zh7BN8z22PSdWksbu3jns0CydwK89/tMxbQrsC3B5PNejPOaVdunKNmup59Cbo6RWxV8SyRHTZI5jtDccdU9/8muP8W3rDS52djkcZHvXdw9JfWVFO7PNznmnD2iVjyy90/bM8sVwHGSAfUVyD6zPG7FCcFjx6V/QWAxUp01BI/Hq9H2VZuUtNTwHUJdnx98NDcfmYkE9RjriqV5rVpefHDw0jQgXgYMHHUn09q+c8RHKWBjTXQ+98LIuNSrUTupaH6vaTMJLC2+U/LGuCPpWdozH7BCSSCQuQe1fz77RJWaP0rDKTm7dDodylwOhycj0qssm4njhRgN/erNQW7fU5KlPkqJSVkXgTtAIJG0k57VXaQqgXI3YAJNehQqpSvbU6q9BL4nvseGeNHLX8uGJO7hfWl8XlRqDhs5XJAr9n4SrKNNOx+TcR01zJt3tqcJKmACFw7cnHfFSTMpG3ODk191Tkpqz7nx8kpVFKO63/Q+RPiW7L8WvBPAwbpQSfTPFP+JpJ+KfgvaAd18oJJ6YrwuOJ8uXtRPqfDqmni5yk72T+R+pPhZkXSLJskIYFwP7vFVfDDj+yLEd1hTIPfiv53w8XOftD9fULtKL2/E7APuJLAEdQB2qmJDkquQWJwRWdatJpSS2Nq8k5RS3Le9SCMkbm5qsSyK3Tjqa1hOSldFSquLSmzynxxj7WH52lQCT29qqeOHVp0PIXknHf61+scGYlSg4vofknFqk6nMtehwbP5ZYM4EQA2qO1VG+YoFwdpBJ7EV+n4eUeS7PksVQajCV7o+Svi5IX+J/goKDtW9Un3PqKX4st5XxN8FOzYU36kqO2T3rwuN5xeAu0fU+HdSMsVOMnZ2P0w8IvnRrINk7Yhz6DAo8GSK2iWm3HECkE/Sv5uk3CXNLZn6qsS5Nwei0/A7GIqQmMj5SRnvUBZcEhzuKkc126TSUVY0jXVKNp63IHX5yMjBckA9vWo7jLKrAHhiM+groppzvT673MI804tcy5UebeNfiXpPgZk/tGCd1lUMogUnp64zXFfEm3hnkQSKSxQAA/wBa+j4d4fji3e/U+bzfiZYKPLGPN87MyD+0r4Pwxe1vspgkNEQR/n6V5M2i2+9t6KOucDpX2P8AqK27xmkvT/gnh0eOYcri6TuvP/gHqh/aX8IADNtd5yML5bc/WvGJ9DtzhEUZc4G0dqyXATStzrvt/wAE6KXiHBwu6Noq/X/gHtLftLeDVUD7NeAhuSYzXhN14bZY2/0ciMMO3WsI8BqNRRdRW9P+Cc0uO4uCVOi9fP8A4B7gf2mfBhCFYLovnAxGePrXzufDpWONBGQAxIBHSuuXBFNOUnPT0/4JGD46suSdF37X/wCAfS2mftB+E9bma2toplfbjLqRivmq30GW1LyRxMOMhlHWqfB0ZTioTXKarjKKpSbg7+ux2/jXVIdQvZJ4ekjMQR39K5VYJXVS+Q8fKg9/evu8qwCoU+S90fG1cQsTUjVprd6nM3m0KGznCjIPUGrN/CCnIJDk4Pr65r02mpWa1OHEUVKXNLbbQ5+SXzX4yNpADHv71FKuHWNOCCAT60nNKOhtUUozUYWXT1OgtPO8yNVYkSAdO1U7bUWhlj3thkQAY7VhJqVPmS1MJOaqwbdvkbxnFspWdAHIPAPI9Kx3mS5csTkgDJPfNbUq0YpORv7KdT3WhWkGPNDk4OAR39c1TkiVhngHbg+/1pzqpy5rabHLQqRw8fZ7yd7/AKDd4ZSqnG9xgiqrBNiKuQUJBI7YpYmvJwVuhjQpqo5O7tIVSQrLk5YkgDv61SYv5i4kJOSFI7VK5pvmlsZUVOhT9lFb9TZjliK42gNuxgfTrWQk5QrngooJZe5pVL8tmy8PRpSlo9WacjhFD5+VAeDVBZy6fMSdwYc96ihTcWnJ7nNVpyad1dqyRIHXK45A5AXvVQS4+aQnHTaO1aNq93v2NnWtCMJ2trqW0kYyEjI55U9qom45jxgEglvYVlU5uRtbovBKMpcze+n9M1lmTGByN2WA9ay1kAGD8yux5rKylHmmzslBQkpJXRuCZT90jqMD+77iseOTZHlXO7cTjsPQ11+6vcjvY4KLanKdNWfb8jcD7TtIBLAkAdqyPtQjYKQSwIOfWnNWSTR1TqSmnKas9NTXdnO0ggL1IPasj7Zyodm39h6Cqk29EtTlhSlOfLF6aNeReBjLDG7DMBn0wKzPPMbAq5BduhPetJ0JOCa0COJjSm0o6IvTEiPuxLEAVCJ1fGGzlwCR0/Cs40nK99kaVKnNTSv7zfXoV3UqeRgswAxT5WVSSzZbJyB2p0aMErrVkuEpQd1rda+hWkCsRgEsFYHIqQEErg4Z8kk9TVWSWiOpTm5qm1rvcz5MgjbwoGfrir7pvUnOPLUnBHrXNCTejXUmoqaSklbVXfcyWkGQm85ds5HbFV5kYglX53D8adaEm+WWxvBRbUaatrf1HNKj+WwbAGcsf1rO+YOCxATcQQO9RRkoK8drkOu3X5ZLbr+aL/mK5BJICDJA9O1VjkLuDkEdB60oQhJWb2O2snFupTWhaSY4O8kZbg+lUHl3Iux8fOAc+1VOTS5FucsoqcPaN6/5HRWeqSQ7i4OwAEkVzEc5IR2Y7m4we9YOpFSae5i6brqLWl/0PUbW+WUBlfKhiVPccc151a30kLFtxUBxk+tZVYSmubY2oSVNuCWr+47GK42geYSTkDj9KzBMQiAsSAckHv71DlZO5zNQm1FPXs0bgvNp2NkncQfYVkrOSByCXHAPb2p0IqezMsxjKg+aD06I20ui2eSOvB7iqSFCpfzANuSSf4R61EIKckgqe7RUJ636+pqLcpmMLnsQPX2rHd2BCpnAcFW+tdMKaUeaWplhsRSjV5Yr19O5sG8GQMADoTnp71iuzoqvuO4Agk1lGydrWdzujNqSqKV4rWxtLcnOAzYBA5Nc5HcBeSwCg7ia0aSvpqOnL2tRSUvde5vyagMqpXnLAH1rmPtL5BByOSSe2azVNyjZ7m+KcYu7ei6m4bxlKKSSOTgHrXPrcqv+sJL7MAjoKKitFpq7ucsaaU1Vg7JLf/gHQvexngcOAQT+HGK583SsiNjIDE8jrWFC0E4zR6VeUl7y2e3/AAxtC7EgjOSdx4x1BNZSTqoA7YIJ9K64zTi7axMMJBKo3W3tc2FumQfMWI+U/XFZcUylyjyEkEEA1pTwymk2tDkhifZycbaPVeRqTzMWUAYxwB65qqrgoCNxyxBJpYdxcuVoqMZNqUJa3LvnuWRUcb1++O9RBt/OMlSCD6VzU48sbX3OnFwjCUuR+91LcNyxbO7IVgQP6VXJ5j34G5SSR2/+vWzilFRmZfXpp8sXo1obS3AXyxyAWOCO31qjCrPtOejAgGhyik5NHTKlzx5W0nbuawmcrJli2BkZ74psMaM5IXBXAI9fSrw0IStJnm4qc3Dki9bGjHMzqhZCC6gmrkKkD7uR1z6Cpq6vmijowrlKKo1dkSxKevRTwB6ZqwiEDaXBznv2rKortcuzPQo3lBqSu/0KzRhg3BBDgHPerQjDKWBIySMikqTpRSkzieLUpuNN69/IxZV8xiP4VODnpWn5OOOcFhzThR6rf8jGjaSlTWnW5mCM5GTnB+79KvlVSVS2OMgmpg7Rv1LhByapz23uzG1K1NxZShh8rRsAK2thkjlBAKckH0NRGuoNVOxWZwbgowWp4N8G9QfQPiXd2cjlUnmwoPGMmuZ1Sd/D3xH028d9qy3K5PpzX554pZZzUo4pLU/XPCDMFXoVMDV1a2P1qsro3FtHIhPzIATnpxzXLeENSF7o9rNkkyQqcHvxx61+JQnaKS3Z9s8JCEm2r2O5372HzYAwBmqeC/ygnIwQf8K2qqdlzPQydSLalHruaiuvIbhycAn+VZ+/cVIBIGAc96x9q7OK6GdKDi2n1LSsofaxJwSQfWoopN7hCCOpBNdWJh7iT0FgYt3urtMguZzDbSbmzwSM/wANZHiK6+z6dMzHDdie9a5Zg5VsSop6nFm+KVPCvlV3d/ieN6tMxu5WYklnYZ9Oazbi5E0r/KcMxyT71+95HhnTpxdrH5Pj8U6sJRUfn6ELFNpJyJDwM+9RCTcRtc5UgYNfSe0UL2dz56nFSg29HY+WPiwH07xVoOpgAGG8U5B64Peuj+NWmvPpf26LmWyl8wY7YxmufO8M8Xl0qcVruepwDnEcvzKEqu09D9APAd6L/wAM6dcb9y+TGRz7V41+zh4ti1vwnaWxl3TQKAQe5r+aqN6MvZTWqP6Bx9GTbrxfuv8AI+m2bbjg5JPTtSbgx5bJU5APTmsq2GipczerPNo1nCXNAEIK8EFmIAA65NCHa7FVyWwc+tcbpwk+fdk4hTqX5Xb9TyjxpblHEqty3HPevQ9b0WLVYhGxBIBAAr9E4VziNG0ZaNHwuc5FVqwfLsfJ/izUTa6HfTbuBCwIPbAr1fWfhTFrEBtbiRxbS5Dqp5YV+j4bivDU4+0i7nxb4Wr1ZLm0219DzX9lLw9Pb6de6tPEwa+vJJFLdx2r6n8HeGrPw3p9vYWKbIoAQox0r8Yz7HVMZiZV1sz9zwlaFPB08M9ofidxbAqvByuVDe5HrSBtrAliAQA3vXjpqzSepjS95OTdmiWVgCMjI5UgVWmdD8ysRlu/atowaWq0OenJzupbM5fxdfC30a5beQzKygHqMVwfxN1gQ2qWoP3VOcd89a+p4cyydWupLZM+dz7GtpQT2PDNUvC4nbcQWBORWTcq1xE4QEl93Br9xwTcIqN9j8nzKFKWIUpLV7nl/wCztOG+LHiBNxLhyoB7gnmsD4JTvpfxqvYNxH2lgFz/ABHNfmvism60KiP3Hw8qxeVyhF2Sa+4/V61fCoW4BxwO2PSq1rIvlQ8knj9e9fltWm9HFaHq0K1OmnLmurmh5rIM7jzkAjtTGUEbiRgcgfzrjxLmpWTujphjoyblF66Ed7ITbSjJ+4QffikKgxnJJEqnGe3tWdGpyy5nqrmePTlFwva6Pk/xM0jX83oJGBI7ZNen+JvBU93ctNbtjzGYkHv61+zZFndGNOMW7H5bm+TynJK3/BufBnxkim1I6JoNtuee/v41Kjr15/IV9YaH8Fftfiy08Q644k+wkiCIj7pPQmu3iHjFUMG6dLVyOnhThal9beJqpqMNl3fe57l8MdPm0bwfpVmRtaKzQc/QV2fkLZWqQA/uwo2he2K/DaEZt87V/I/VatSFWtF2sMEvO4sS2SQD06VUJXKAbh147N7Gu6PM9U7XOl0ItOCRJJcMdpGcqxx7VCWQZ4OQ2BjsampWV0nuefDBRd3Dc8s+JLvLZxKowFycjtT/AB64EKb8DnHXrX3XCkpQnZ9T8+4roRUW0uh89zjEUjqRtVTn16UavMiwzGIkb1PI7/Wv2rCyc6a0PyjGOaSk3p+Z5F+zxIF+L3iMBiFDqfzJ4NYf7Od2r/GLxIiqRmQbj6jFfjXim+Ssk1qfu/ASlVya0tr6H6vxTZVckkEADNY6XOI0ADc8DHavy5uXKrqx72HrzcFCK0RqtcI+c4BAPHpWOm8tjklienbPrXfTkoxTXU4pVL3k9XfcvO6+TLycMpwR2psyYt5I1yQFOT61g8c1JJLQ4MwSUFGD76ngWrMPttwckqrsBnvVDWp/9PnXkDeT9a/oThqrP2UZJaH4dnqU60qL0fcriVY8qD1+YE9h61khtrFi5IJ4X1r6615aanzmtN8u99y/NOFZSrDAYDmsmSY/NjJBBIX0pRg4Wvsz0HhoTcJT05diSS6bKngbGODjp7VleYeTglRkkjsa6pSTjZLQ7K0IqPM99tOxqvdFhnAOBnFUY1AQDnJB4PbNcCxLhJtFuurKL0XmaKXJYbuQFByf6VkqxG1FBBGcjsaupSlJczOtYvlipw1fYS5u1STJyVGSM1k3TYlwMEZ4B7elOhUm42buiatJ1qib0b3Lwv8AK8glXJI9RWGZsOXYnqDgdq7KnNKCit2cXtYxST2u0bguzw+Tt2g4HeqEDgLzklug9PauSte6e1jf6nGSi4K7POvjDNv8E6svzL+5Yk+g96h+MaZ8GasAQQ1q4OOor0MJXU6Mnaxy/VpPGwhH4U0ehfsfEv8AD60KNl2kIGe4p37IGE+Hljjh/NbIHpxjNfy1xHKbx04pbs/pDHYdQw9NrTQ+wzG0YKkkjI61PIPkjKkk4yM14c4NtOW6DljyJN6mZIvO8nO3AHtU8yklSeRg7vfFXOSjFOLCniHJKLWqOJ8YOzaVIxxswCcdTUfi7a2lTFXIKEEA9K9vhSXJiYqW7PC4kcalNqMbPU+dpjvmfB4bO32qvJKDMWORtA6d6/pDBQlGipt7H4pVjeXJJas+YDLH/wANC+HTvIyeQO/0/rVaQoP2gvD2FzskB49e1fL+JUUsHFp20P0XwucIqo5bq5+weiyn7BaYOSUXr3qvoRYWFt82QIlAJ7Cv599pZczR917SXtW1pGR0SH5wMnIPA9aiLDap5JLYBqpVOeVrBOM3bmZpIrYG4DBwKYlyvlYk+YqCST1FdWHpOckoirc0JKMvhS3PA/GlwBqTt0BlIx/I1a8W2kF1qcvlPhDyA3YdxX7jwk1SpqnJdD8n4inKScku/wBxwW4u53E4GR9TT2tXhBRv7xx719c5W0TPAo1XOi52u9kfI3xLYj4peCwDwupKQO596d8S2Vfil4KdsAtfBee9ebx2k8u5F2PovDKlXdeU5r3dT9Q/CjbtIsDgkeQnTvxzTPCUoGjWR2niBQfbiv5rk0pJQ2Z+wU8O6UXFO7OkkXDIFJAXkEdqZ8xA+ckucgnsK6HQikpPoVRw80k2++hIZHwMAHOCTn0qMMo6HBYEnPesKdVNWW5zYid2urPI/G7H7TgEjI5PrS+OGCzZViDwMHvX69wReykfmnE6n7R0U7Lc83aVcoFyMsAAKrEeWQDk/Lk+wz0r9NUk1bsfGRhPmaqfCfJ3xyka08YeErsoAsepR5x35qf9pSFobLS9SwR9lu1JYfw89a87PsP7fASTPf4Rxzp5gqUYfPufov4CuPO8OaWxOGeNRkfQVx/wV1ZNV8DaRIp3H7MgDA+wzX824iLjNqR+yxU5zUJKz/yPb4jtHzKDg4LDvn0qGIsqAdAGJJPtUe2XxIwTWsG72LzHCdOgI471VkPyhVbAYnP+FdWHm3dt3OahHlSUNjwr4iAee3LDgDPp9K6H4g6fJPa/aIgSEXn3r9H4QzKk5KmtGfA8SZZKEHWSu72/4J87TTsoaNRn5jkkdaJ8x7wyhZOeT3Jr9Zw0rQ5Vqz87qym66c3ZR19TyO5+IN5pPj7RvD2xWtNQmVWJHJ5rBh8LXXiL4u6XLHEzW2mMGkYdFJ6V83xpjo0MOlTfvP8AM+54SwscQ3KtHToz9CdN0PTr21glMKnzEBxj2roNAgNpZW8R5wigY78V+LUc6xMV7NvfqfobyfCSXMvLQyB4Q0wHm3QE43ZArrJD8yAYyrYPsO9aPOsRJpRbsT/Y9FqVRrVHGXHhPSooJGWBAQjcY6VvapILaylYgldjHnqK9HDZlXclFPQ87EYGi4NRWh8i+IkhtL6eOM7R5gAGOnPNYfi/UWGozv8AMBvYEjqRX7PkU17FX1dz83x9F0k+R2Rz2oSR7CAPl3E4rlr67fqzggg5xX0FOHNJNnhpKLvJ2uNmCqFlCkjJ4HXj0rGmuyFUZPAJ69KG25NSWnQ3hVdSk5K3uk8kilwUfo3IPWsP7UxbeQNwJOR29axjFtXaMPrFOU1Re26OrjkACgttIxn3rCt5w7gkNkMckdTWVOmkrGftpxq2Wi7HUnb1LZLDJX0qlFOTGcLnAKnPf61r7GSXK2XCEFJOT0ILg7GBQHAJOD3p08icYB/d9Sff0q8O1J2POrXc5ScrJfkUcMgjYYBDgEHqBSjIGck9wDV1ZRkrdUduEimlNvSW36ApBbGDguRn0qHftOMENuJNcqnNyul0N/qsaKUpO+r+Qss22UgsSuBgcVUmJYbmydoI+lODUkufcxq1JVIuMXZfncRpSXGSSGYgA9veqbyKm8ncANpBHrVU6kZxshSy9xk2/IvI4dgQPmBwfYVTEwVww5Xg5/vVc4a863fQMNQlGcYys0+pfMowOpwwAHpVRZM5ZSQpGSDSw0YRbl+AqtWsl7J9y555UYd856Y7+oNZZuA0nHJbKgEenWuazcn0sbSi3WUqdrW/E0kmO4LI55XGfSsnz97jkl1BIWt3zumnJnRgow5nyKz69TXWQl1+YgcAk/Ss37QuMMfmAPA60o4iSXJA5XQca7q9fzNbeAVBJ27gAT7VnxygBULkkbeT3rWdRqKUtR0qMHNKMraX+ZpeaV2gAbeqkd8+tQ+YQSu4EHBJ/lW1Oq1rI57RqS5W9f61LJl3MGYDG3BB71VWURMnTG/v70qKUad4rY56jcajU3o9vkX+jRsDhiRgntmgOu3a2SEznPfNc1VRs4P1PTd6Nqij7z/AsswYbs5LDJA9qpyScqQcRrnPPT/61OMI2U5O3kcqr1KzdJO6T36FKVVBO0kqxAyR09qHeNgYxydwOT7+lKbTabPRniOWPMtlbQyJUlyoDEBRwB3qWXceWUqvQY6H3qalH3bR2OPEYq01Vcb2WnzKYz03EEdD6GneWgxtYfLkkHqawdVRkk+hpUrVpUuSls/wKoV8KpfJBLA/4+9SSnaAoGQM856+1aSnKctFp+ZX1Tlo+05tVr9xVLlvmBHy5Iz3qHEY2g5+8SQKydKcVZLyIVRKrCctE1f+vUkknQt5eCAQDg/rVWdgwYEHqSCOvFVFqFO09L9TqrYiM5+8nbZHW+duK5bG/wBO1UrcZO4MRtbJB6GvPdKUHp0HXzOFROKTu3v2NOF/mU7t3zHBPYUiRnOdwVW5x6mnGu4xtE82WHdRqnLVt6Ggs4ZSrSEcgVAkTmVCxBzkEemK3VeKXOkbQTu6dVbGkJRuj2gnqWz39c0qYjIIH31OQe+KvBzVROHc5JxhQnzLZ2sVpt4OA4IOAoIqS4wVjbkNg4Hp9auEJRm0zWLqxqJNaGGXZTyPvSA8dKu+TnnJKSZHHbFFKUV70dx8kYzuo2bZA3ReoUkmrCwiRolBwisQc1nUsvfk7HZCvKcHTa0KO3GG3YG7HHcnoDV6OBg7KeduSPfmqqqbaSfmcGGxnK5KO70t/XcpquRguc7s89604U2hs4wSOT29zXRON2kjfGUYuPPze9G2hFbwsWAxnDcA55rWVP3YdMZU557+9ZJN2gbK7lGpPZ7IqrGWdSWGQ5BAHUVpgbijnA28ZraGtOUdjKvVnCspP5fqQrE6sAn3ZBk+3tWjGpMasWIAYErXLVajNRauyqEJRpuUnu/6ZWjHmAYXAyDzV2PqQo3BcE57VpO7agysPh5purVJRbq7ZcBimSCO9SxOFXeTxkgAHr6Vm1KTUYvRHJTxMYzb5Xbu/MseRhAR1OMDHQ1NFI8jg/dVSAc1Eqqkk2rHdiaVKo1y7ksC/MA4O4MCcdwaniU7wWYEAgk+p9K6Kq0vc4oY+qp8ko2iuvkXlkCrgAlXBGQaquxxuUAE5Iz0FOF4x5k7m1Sr7dKmtLl+KRN0SBiPlwAe9VEk+6AMYXOewNLEVHF7G1O0HBJbXNxSoVRwAH5z3rL+0CQAZx85IrOzi7vXQdWsqrSg7K5bmZFy+SSGJA9KqvJ5gwpznBGehFZUIKSSbsjaOJcFKKje25AxUKckkjnPrxTXRiAc4KNjntWlS0J8yexnhq0ppuEf+AOXDKVDkBm6+v1qusgwrFvl34b0FYVGmtEc9H3oynfXY+dfi/arbXen6pyGgulP1OeDXV/GCz+1aI8ykFlxx/OssbGGJwsqUkejwzjZ4DH06kJXb0a2Vj7E+DmspqPhTTXDFgbdc885AFeRfsz699o8ORQPhvJ+UD06ZBr+WsZhPZ15UorZn9H4qDqqNSGz1+8+yVlYqW7jqT29KzYbhpHC9FYjmorRaace55bp2aildM12JxtB+cHjHeqqvtG3PRqzlh+Vqd9UbRrKS5JdCyCVZck8dcd+KrlhtBLk9QParqS5lzRNKd4RSjqn1OH8cXzRWoj7OcYP9a5PxpdmW6NurkKGA+lfoHCOXttTkj4jiXGwjNRg7M4qS4DumMk85A/WkghYxjggg8g1+y0IqmnF6XR+b4qFRzjO+qbsS7i7hASGyDk9OcVfRckKSCGIBFVQw15X7s58Ti40+WG7kzkPFejDVtLuLRlDbo2BWunmkSJ3U8gHLD19q64VqlJXjuTXwsK0pcmjjqfMfwi8YS/DXxfJot9IY7G5uTtznA5q78RvCIvpl1G0O25RywYdq+E4n4HePf1ig+Wfofd8LeJaoYf6hjl7iej8z9JdJ1q11OyhubaQNGyqwYd8ivzp+HPxr13wY8Ola7E8lqjqBIx+6O9fleOy/E4eXsqkde5+gOdKtBOk7xf3n6aQsowSThgQQOxryPwz8XfCuvQRtDqMZkdcgMQCDxwea8iMHGSilozeNHlglUi3bQ9nT/Vs2AQT1Pase11vTriJXhu0IJyckYP61r7NKai1uc3tL03DZI6GMglCQCSoHPbAqmt1A4wkyk5BIJHNSuaHvN3ORU4VUoro9zYQogLAE9DWM2pWcMYMl2gGQCSRxWqpSa1Z31pxUeWWq8jWE6ujAE7i3U9q4a78aaLbl40vFcockLXTQwtacuWK0OeviaKhJPRW3Ouv7y3s4Xnmk+VVOQfWvnfxR47fUv3VvIVi3E8d/rX0mU8J1ZyvU0PDzDiCFOklHVGF4x1k6pqLbJMrvAIH8Irky5kkJYkk4PPrX6tleVwoQST1Pgcdmjrc0krf8EUxgrtUkKyEgjvg9KSR/LOWyAAcH0r06EnJcqZ5OMwkITUZ63t8j5dvb6Xwf8W9K1dty281wqM3YZPWup+LHhmTVrIX9qpNxatuUr1OK4uKch+vYW0H7yPe4L4mpZZiXh60b05O1z9NvCmpw6ppNleRSbllhQg18X/s6/Ge2e1h8L63c+Xd2qhQ0hxnFfz1iMJXpvkqq1n95+y1cLBRVWjaVN7W/I++jKwXplc9B2rMs9QguIo5YptySFcYIrixVGzUErtlU5qC5nHQvEgZ3DHPAFMeQM6njCtgfWuWUWkrdTo9muXnlqTkCUqNvQjI9RTVlCoDnlgcE/w11pSirJXRxYicZavQlRUj+ckALkn3x0ryH4oeP4fCXhvUbuCYG4jt3II/hOOpr18HktXF1FGGhzVsVTglFvQ9SW/trt5VWcMysV2jse9fLf7O3iy88V6PJqeoTFppbliWY9yazxOGlQqOL3R9BPCqhThJauWvofUjLnb2ORgVAki42s2WyT16+lcNSm5Ts9icRJytOL1BwArjJGGyDULyNIMMx+8cAd60TindqxzQVeMHCW3c8w+IYX7JGBxuyQPWpviBsNpCBkNk5J96+94QUpT5kfD8URhNKMz521G3ZrWfaSWSMrkfStG+5tpvL4yjgY6Div2LDSlKyWh+LZvR5OZx1tsfN37OkJX4y+JsnjeCeeme9an7PEW74v8AiR5OAsgxj+IA/wBK/HfFeLhiY36H7T4Y4tvJpRXxb2P00tYlaOEAk5YAn096tRAgR54wcHFfnlnZKJ6Xt01ab94niiGFGSXbg+9SF2jwM4OQfpmolQkm01uZVKcqclyu6/zG3SmOB9znhDiq+oy/uXO9iMH8aiFOM5RXS4VKkVTaPnrW5B9umJBLlyAR0qnrBzfzkMQ3mk49K/feGpRdKLkj8UzTESjVlKS0vYxvLf8AjABDEADt71N9xPnySWyB/OvrnWk2owR5aqKM5qWnYoSjJJHLkHbjvTrg/OE6hgfwqVKSd2+phWUeRXV+uhWZlQq5JBzyBVec/N36HGOvvV4jmUU7m1GvGTU4ppr8S6067Sc45I59Mcms6N1wpDHBY4HpXBXpOErx1PQjRpYhauze+hM8hZicngjHocCqcjZ2xqcksQCe2K2jWleMWhPD2fsoy2KtzKGkLBvmIALHtVS5ZPMDkAGNcHFdik4x5DOrBUqiha+2vZiPG3BV8u2QSaqiTLA7snggDvShUc2nHSxrik1LlSv5mrasQuDnGATjvSqSqr85BLDp/WtIcrVramlHFOMX08zzf4wsI/BWqMowfIbgnrkVQ+NLZ8D6mgYnEZGfQY5rqy9cynbszhr15qvSfLu1fU9Y/ZDIX4f6eqMScODkdOBzUX7IsqDwFYvnnGVHr61/LHEUL4+bvo2f01S/3aCnrZI+y9xJjyThARj1+tVvtIIQjOHfJH4159Sk3FRm9NzzY1I1ZucFZLoWJGyhBYnnOKquyHPz4IwRnofpXM6cWudO5vWrOCTjszgvGRB02ZM4HC59c07xoqrpcwJAVgSc9/QV9DwtBrERm92fNcTxc6HInofNk4OXIPytgEDtVe4dstuJID7hnsBX9FZcnKCTPxmtJuXslt3Pljcx/aC0Ec5SQYA6cdKjWTd+0FoTA53yYz6c9a+W8TKklhIqK6H3vhZQVT20HLTVH7DaG+dNthgkGBeD34FQaE6yaZZqpIzGAD61/PVKbk1Hsfp3RwRuKzFvvHywAMGolc7uASC5IIoi5Nc0tiqUYzUnF7KxMxfBPG44GaFeN1XOeMnmuyjU5XdMyqYhSgoT1Wx4b4ymddQbGQQwGfxpnjHY15IFzksSM9q/a+EakXSVz8qzulN1W07L8zlpbt22Z3bWJH0rPEg2btxxuHA7193CaUVZXPnN4yi9D5d+JcgPxQ8HMxJCXYwB29qrfEps/ErwgACGF8rAn3PSvJ41cpYDkWh73AdBvESi5WbX4H6geGJ9+kWLbyubdenQ8DrVPwiyjR7NSDtaBcZ7cV/NNSXI+W5+uUZTUVzPuvuOzMgDJ8xK8nJqKNkwueucAntWk6Se+ljphepDlk9eg4ysMkHOcge+agaYFsdOx9PrWlBq9pHJVxCpxXOtvxPL/HDATgliAOcn1rP8c3B8885IHHHev1Xgb3YJvqfn/E8nVcpU1ZHBSsku0tkkFcmqPnDG1vXBz3+lfq1JKDvFHwmGnNJJ99zyr40aCdb8H30caFnhQsCe1ek6hDFe2U1rMQUmBUj61pTlGUfZy+FkVq9SnNVUrOLucX+yH45S80GTw9cXBF3pcxiKMeR6V8uSXWsfBL4kr4hsVJ0K9uh5qnouT1//AF1+KcYcJVaE/b0tYbn7VkPE9HMKahzctRI/ZWNgSuSc84z0NeWfD/4jaL400a0vtOvEdzGpbDDKkjvXwrqqKTR6FSNaMuSMderPWi2QucgxsSDWXHcht5yDGwyOevrV1KCUlJ7MKNOUZRilrclureG5g8t0ym09aUThjjgKABinH93O7ZVWEK11P7jzC/8AA9jNIx8sDzGyAAOPWvRpzsC/MNvJGe2e9fQ0eIa8FaL0PMhkVJtKbsrnnWi+B9N0iczW9vGkzSElwOT7mu+VgcDOcEkH1rzMVi6+IXNNaXO/6jSw93DXYkhj8ryypPzLn6UzzdgG7tyc1y1Iyauth0oxV3U0/XyBm7kkZx0/irIv9TS1hZ5XC7MZJ75NdPsKk2ro54t07RfyOa8darHp+lSbpNsjow4718/fEnxiL53hhl/do2MV9lw5llScuaS8j57N83jFOmtzxzxFfvcXMpVyVZmOPT3rmZrrfuYkkSqSSOwr9gwOGVOSilsfl+ZYl4imltJPTzIWkdj8+CzDAx0NRKgB3hjtYECvSs7WRzVq0XPnktevmQOQUAzlmTBYD0q41sxRthO5lGCe49qhVtbsiVBOCcnZdvUxHdFcBcZc8j1NOmtyH3bT8rDGfWr9hGcXK+u6OepONJwTTb2Llq6xBQGBk4xn61RTdHKVfAweGA4NZUoOUuaT+R0ZhCacW15G9bXGccjJk+ZR3FUY1y4YHluNw/hrRTTjdbmCrVYKdGMbrc0Zp9/c5fj6VRkeR8LxkHqT2xT5U1ddNjiVCrGHI3vuTIQWCtkZODz1FU0chVCZOSdxNefV5mmkj21Rp0ppTfS9i44znDchh19qpSSnEaFiFJwAe1dWHdo2OHFUalOcXLXm1QtyGfKk9eAQaqzuHkDKxDLgHPeigoppo1xlBzjeGi/UgkkyqgkjHXPtUb7WXKk7i2SD2zWVSlFz5omkY1fYODkrXWvfyEVvLUK3zMXJJPaqe7gsThScAim6cXNO+tjpwzhOl7NqyuaKyjPzYPXkdBWQzeSyq0uckkAVk43fK3sS8NDnap6vsanmYjYgBcscsO1Z6TjIUnjsP51xObU7PVHZOnCFB1INczTJy4GDyASTkdTVRn434IyM7e2RXc5yUlc4qDpRSlB6lnziSFQYbceT6CqrnAXb9/8Aiz3rOEtG0tjjzRyUozgru+xfikVBh85JBI7A96pRuXXfuIw4yT39K1TkpcrZ6UXCclNRtG23mb0chGQARhcgnoaxUuPkBIY8tjH8qapzlK0nY5cXhVUjePTY2jdAso5+UZP1rF80nyypJxgkk1K5otozozdWCnVV+lvJdTdF44ABIIYjBFZSyI7B92QGzz/SlCUG00b1Jzc48rsnfz0NZrhiQQflkABB7VlfaNgLJgsXAYHuK1p2T5LXbOSFRJSlLRL8fM0ZZG8uNkY8nBA79M4rPMxIOxQFVSQDToUOV69TpwrhUU4rV21LcshcAEkAIR9eKpq+7A3EueBnuaz0guRPU2qxlCnGz1f4EgIwcKfvYJbvx2qNiCN2cMXAI7ZrOrh1JpLcKOIbik9PP/MifOwnoFxkevvTHkD4GCGKjJNRzXqKy0NalGdKlK0/ddkQN8xQlDt2jgnp7GkkdwVXJwxxjsauLvGVtEeVUSjyWd2iKdgSCeMAg460kwwxY5w20gDvWcKicLPY9jF1Yzj7vU6WBGV9oYFdytkVctkcKc8bmGcdxXNqlaTueTytRdSmt27/ACNGGAnBODJu4zU9u2MMwAkIAOO9bRw0Y2jB6nQsSqsedbJfkCxqFYkESMwH0Herq4LqRkqVBGKIRcFd7I41iFXm4t20/MEBRVO1txYAg96tEbQArEMSAcdga57xqty2SMZ4OUKsIT1Xcz5VLzALGSDjKj1zxirKxCQkJKQFYkE9sdK9BQUqXKzolX9nNzp+9bSxVWGKUFhgYzwe/vWkloA2CuR1onSjFKRhhqtXnbmv+H7GZ5OwIBgNuBBPer0sbfIXOApOCO1Z8skr9jslmHNNSlF6mf5TpIWU4y2TmrZhy4IYkOABmoi20o2NsRTpymq0db/hYij+YEKpBc5Yjv6VOkLoSc4UHhfX2qvZODtAwrTUIOUviuOt1BBXBGzBb+lSKrSJ5in7rYPvTqOU56dURhacfZck9bX19Rwj5kPAC4wew96WLIHUbNzZHrUyjUik0tGdNPE0Knu296OgeYQBgkbXGCO/1p4YEe45FXUinNSasc0cRGo2l0GBiUyCdxJyc8mmpE6s2XycgEDtRVdpJJ3TRrT5pNJKyuXYnCOFB6EAAf57UJg7c9VcDP0rFx1cXtYdacnBtdX+RqwhpHJUgqT0Pc1REu0cHAOSGPUVPsrpcp0Zfyxk5t69jWYDBZQRuOMDqKoG4LDAyGCAgjvilCU4tN7DnRlKrea3NYS7djtknaBjPTispJVIOTzjv2rblUfdgLF7Rn2/FFo3JfKkgDDcH36VnSShASORtGT/AEq40pJJtanP7aEoSqSemuhOtyN+NxK46jtxWQLnCsd2B8w4qKiSZjRw8k4xi/jOlS62R7xnapGSOgxXLSajsT5JCAOCPXNYuDlLlSPRoUKdOTcnqvxOlmvCPmHQgHaPWuIm1MIiysSAmc5qKlOTd+XUdOc1FRb9251X2lHXbkglgTjtXFeDvEdtrfiH+zFyQuQwHPQ15GOzOnh0lN6o9rCcP1sVF1aa93Uk8bss+i3cDghgpAJ6EV79/wAK+sL+LbcIWjkIBVu9eTLi/DQ1fTzJqcJ1puMXKzT7Hk37MGmXtnp91NMjrb3E5Kgjt6j619S+HPD9poVpHZ2sYWJFxwOnvX4nn+PWLxLqwVkj9tyvFcuEhhp9Op1sRwNxbGfl47e9Rh1XZgnaevvXlqnL4k73LhUbSg9V0NcZbDlsncFA9aihZwp3Eg9AR2qYYf7L3bMoUVzJJ6EtzMIYS7ghfLOfauW8Y6qun6bIWfDSIQADXZl+Vzr1VBb9zkzLFKjTUY/EeT6zfJNfTMWLMzEfl0rzSTVmMjFiSS5GfT0Ffv8AkuTKhSim9T8qxVRYm9SW7f5HdJqUUZxuJbjIPb3NefPqbtu25OAVIHevqOW9ro8afLOdk7W/M7s6moxhiGAOCa4H7QWwSxLPkAfWs5Vk46bozgnOo4tfPuzqLnUn3Bt25ick9jmuU3MfLO4jawVff2pOq5Oz3FVwrpxjFy33LlzMtyymdNyseAe/POfaqjByoAPzBiCD2pUarez0ubYmhGLtLfS2nQ5jU/DOnXrBvL53dh0rrYIwVCKQMAAAjp71NeEW/eMpQqRglTl5nnEfhF7f57VmUh1IKk8V6cjxjYu08N1HT8a82tl2Hm23FXsdmCzrFxiqTqOz1OUtYtdsdixatdDY2QokbH1xmux2hXIVs7Rgkjr7CuOnw7hKjXLGx6MOKsbTnywldd2QWupeJWAjbXbojJJ+Y59h9K0o3CkbcFhjC96b4WweyWp0y4lxMYucnotSS3uNTkZhdX87tgg7nOG44yM0olYhWRiAxzgdsdquPDNCLvFbHnx4kq1IKLdm+ppC6kUBfMI6cj+Kqa/fAOcljt+or0qWWUYpyijkr46u4rmn5GgG3kF2GCxIxTEORkdFOCT39a7LqNmkcuGqzd5T1RdUozE7s7RgY7VXil2lRgbjzgdvc1pSSm0+o6bjKMZSdlctlh8oUllfBJPvTNpJQxcADhT/ADFVSowaevvHNjJyhJSirrW4XNlb3Vv5MyghyQR3FWYDliWbkggZ71va00+pzzl7amklaK/E8V134aRG9j1HTGaK6QkhoyRkfh/hXuBcADLA7QeAOledisqhXjKNRJ3Z3YDOK2EahRdrWZwXhfxV8TPDaiCLVFlgi+ULKD07An/61ekRwW7x/wCrUljk47/Wvh8bwZhJ3cdD7nC8eYqafMk2tC5p3xZ8eSIUuYbcOGGG5546/lVDyIwxBADbskDp9K5qHAmHdpuTTRtieNMVGzjBPQ7GHxvrt2u+7vCDwcRjgewrlrYIuUGAWIJNd8eEaNJprVHny4srYi7lZN2uvIwfiQl74g0S5so3PmXUTKWb0NdQ8UU6EPg7CDk9/avosHh4YZ2SPPxNaVVqom7r7j51+HF98Rfhzbtp+lTwSW3mbgGB79+9e2fYoH5CAEH868jHcMYavJuW97nvVfEHFxpU1KCbjZWM1Pi98UYTxa2srZJJbIx/PpWutrbb/lUEnrx6V5i4Pw7aSbJrceVYtqUFZtbdBlv8aviUzqk+k2g3KCWRjn27f1rQt9EEoEsceAuSWHfFTLgejKTTZtW8R69NRioJs6i+8TX2u2Ft9uUrdNwxU8dBWZHEI0GVOEJCj0r1cmyqnhrxi7s8jMM+r1m5NWehg30UzQSqueR271sSBSwxycE819RUxrholfU+cqYZVk6c95I+WPAv/CQfDvxxq/iBtHe4TULkhFTsPevpaXTYZj5gUDcCufp1r5HP8npZnNVajtI9rIs9xOWYWVCMU4J/M17L9oO8do438JXSNuA4xx696wv7NgQIcZYEgGvCqcEQptJT1W2h2U+LY1aTrThq/Psekap8brbT0hll0e5kMsYJKDlT7/SvPrmBJ4xFKvyrgLn0FEeCY1INc+voaYXiSMYOc4Wb8+n3He6X8ZrHxJI1qthPD8pAaQEfXNed2tqtqUIJBfPTsB2rnocDqm7qd0vL/gir8TxqUW4U7O/f/gHS3sqzXMsrNt8zGD61niXDbiQxySoPpX6Bl8Y0Yxglrbc+VzCiqic5LVkwZyGAIG1jkmqk0xYE4yoIOB3r06c24+6zilk75uabvcgnbYFYsc7iAR2NU7uRcBSPvEkDsCa05ueevRDp5dGEVyvrqMluC4jHJ2gnNU8gJjbtI6475qF7zem5thqE3UkraDmfacIDnqB6fSkhb5QCCWDZBPYVNOLtZrqViKcas4qFrr8xkjsfmZiBww9R7VKHJyxGSeBnvWkGpPlSFWpuT5XK6X4mJdbhKp5O8ZGP60XquWTr0GSO1ddCk0ryd30OGtNU6yu7J7lXzGBXK4w2AR2poCksqnkMSc9hWuqaTWhzTx0VUk4R1NiKUOkWWy23BJ71BGF+97DFRhanNPlezHTmlamtZbo8x+LqXd14TvLW2hLvMhwq9zXf3EC3RdZEym7AB7e9dkIQcWmt9DmlVq+2Upyvy6v5HnPwD+K8Hgfw3a6LqWiXZmiyN6L92uwi0K3y6rhWPUgdea/MMd4a0pVJVnV+Ly/4J+gYHxNekJUvhXf/AIB6hcftIaQNjf2NdkqwAAU/MD3P0rzOXRbby9gxywyR3rln4cw1tU1fl/wT1avHzTjUjT/Hv30PUE/aM0mRVMehXjrGTjC9M15vp2nw7ShGG3EgevtV/wDEOKd1zT38v+Cb4fjl25lRur66/wDAPZrv4j2PivQmkitJYd+AElGD+NeaGAwR8OSg5I9a7MDwPGjUUua/yPns24ti5OMY2T21Me6O4yOrEqM5B70kmxmABIznB9c19/SlyJRWyPjp3clKD31Z8n+JpdT0L4sad4mh0eaaysmBYxjrX0zd6bDOSCBubaWB7eleXn+S08whGnOVvM9fhniOrl03OELpvZ9D07Qf2iEGnW4/4Ru6VvLHDDpxXKWelQLFEGwQFAPt9K/P4eHVJLSp+H/BPvaviC1pGjZ+vT7jvv8AhokISy+Hbos2MDHT9a4ufTYBsxwQSce3oat+H9Obbc9PT/gnDR8QpU5OCpXv5/8AAPSdL+PB1S9jtm0SaJTyWYYCkjkda4S002GIpKCN5JIyOorOp4fwpwspa+h1rj2NSKgqeve//APRdY1ZNQlacKQGVdoNcnEzjyxyQGOM+tfX5NkSoRsz4TN87nVxCjFepePG0tk4JIB7Gmo7ueeGbIz6Yr6ShTfLaW55taClGUqS0Pl/4raVrreL9C1vTNPeePT5wW2HrX0nc2MFyNkoBzgZ965MzwMK9H2MnbzNeHc2r4Ks6kFdMh8N/HLX7SwhgfwrIRHEoyT1Ixx2pYtMiVMDgLngV+fR8P6MJpc2vofdT46nWp86pqyvfX/gHRf8L71qR1Z/CcwJc5JYYH61gPpsQj4Gd2cA9q3/ANQaajaMvwNXx+3CLdO1/M6C3+Oup3dwsD+GHSORwpYngH1rmxpcalG9wKy/1Coq0YzevkcmI4wmp80qab9f+Ad1rmuJrKpIEKuyAkE9M1ykUccW6MZZVAAPp9K+qy3JKWEglF9T5bMs0niaiglay79x2xiI4w5IOe/0o3uCmAQGIwD2r6CjdLmR5EqyhKzbv+o7eqqwzy2Dk98dqFAR1Dc7m6mujERUWpdDbWcW5L3mjifFnhHS/FNhJbahbh1kBIB7e/4V2bOG2nIwxOM/yrnlTm4+zT03JpcsJRk2+bufI1l4Y8f/AAyvnvPB945slYkwMTtcelfVFzDDOcMCVbse/tXzua8M4bFWlKNn5H1eTcYYrD2puXMn0fkc34P/AGo7m3ihtPF+iSwzocNIMlRj/GqOo+GdPncz+Su5gR06nvXy0+AqTguSo/mv+Ce/U8QeSpzVKWq7P/gH0Lo/x48B6kkci6qqBwCwbjHqK+XZPB9iFO2FBh8YIrjxPAMqjTVTby/4J0R44oTk3KDSduv/AAD7LX4neDrhAya3CVPIG4cCvi1fDsUQEaxoWZiD7/Wso8BVub3JbG743w8GrxbPr2T4seEYmITVEdVBwE5LHvivkEWEtnLGYgiYGAcdcdq6aPAdZJpSvr2/4JxYvjWi3zuLu9j6dvPizZSANZxMQMDc/f8A+vXzGGuFYlnP3sgHtXp4XgVKN5S1MJ8cL4I09NNWz0/xN8RLq9i2GUhQSQB+leNSyhyWblixGD2xXv0eHqWHipNanh/6x1cTWcIr5kF/eNfyybpCSSWAPasaWRwDgEPkkj19q+ipUPYwXs0eRLGxmpQqu6enoNLCQgZJB4IP61CoferbuTjIFbUrtOV9WcFVP2sFOPuLY0oI2ZlPGNpHHbmrunv5LjcwAJ5ArpnFctlscuZ4q8uV7pbI0rfTw+Ny7gxwQe1dXaeWY4gMA5Iye1cdJOcmn0NaWJUvdcdUkcDe6aIkLHgHcAPeun1NAxbLAqS2PQ+9dPJaPNLaxzRxyqNuLs09V6HmDqU27ssxJUAdKW+GJ1QKdhc4HYEf41soK6SVkcVLEt1YrfUlibcoVsr0zgd/SsuSbY+3efZR06VyRWnNF2PZsnJt7K5tMkZCbV2jIOT1OO1Zn2lMLuck5Gc9vYU4Tle6Jbbab0WrLRVgSpbO1SQw6moZZI1EWzcGJYkDoKxpYiUndoqpRhGKc3dbkb+WHi37iQxJA/nUYk3ouQSQxOT296ucnBuMup0YShGvBSirpa/cMbcjHGWy3zE9h2qHzdykckBqdaHNFJ6GeGfspuTV4CNyiEAlsc+/pSqFeRScqAO/f0qqc4qTc0FSi6kYypSsr7dyFVXYQQQGOcHtSPw0Z3Ny5AJ7/WsZYqTn7SKM44e3NCbv0Ks21WjXkkEjJ75pHBbaE5w5H/661p1OSL5lq+pwqjUUoRirFN2YSKCcDA2g9/rS3JBYL/GoGGPb6VnD3o8rR7GLounJVG9H0HLJgbTkh2IAFVFl2lRtBBJx7mpjC7TW7MKkqdKbT1RcWZiQpAwx7fSq6MdispxhySPTHYVpy8iULaiq4iNam6l7tX26lgsXA25BDYIpnmDdkEAdCKwqT5dEjs9pGnRUV2+eo9ywQZYbwpIzVZ3DAMmS2RwK3lBSakvuOHkjTi5N3i0/mSGQjAXO8nAB71SMjeaAT91xhj3qPYtJze2xgq7lGmktN9C8s0mG44BGT9azy0gKFcg45P8AI1lGomk4rRM3hVdOpzPfp82bBbzEAzgoScf41lBi3PI3HH/66qhVfPzLc3x+JkpOnKF79VsbCXLKCTwTgfWsxpB5QXodwUGuupZvVnBQboO9KLaNgyIpU85OQSP4elZCzrgjOeuSOgIrGlKUo2Z6TtSUpS+KWpqm4Z1KAljvG0Dv7VSEqoFP91gc+tKm3F7lwxbqUlKfzLvmLz8zHI6Hr9KhV9qZYDJYkkdRWc0nKy6HLCpOCcZwupbeVyRmLEBAeepH9aqeYwMYXJJwQB3qlh+W8Y6h7e7i0la1iRyAVJJBJxg9qiaRCWcZOcZz2qqUIpNBDFKD9ny6aHeKG2IuRnkAk9PSq0e5pAd2exB7Y715tGKUnKL1ZvXrybVK2nf1NKKT5vmXPOAcfdpIpHLKpIC7ByPWumpUbcW1ZnMsvXtGua97GxG+WBDdeDnt9KpxSg/OSFDAgAf1pOCUXqE9ZLlWu33F2WTKZXO4BVJPoO9ZtzdYVQFBLqcH+7VU6SVRJIz9tH2PJJ69CwJv4gxHPT1IrFDjnqACTkH+da3lBKUtNdjzqfs6lKSgrfqdIl2cAhvmCk4J6msFJcEtuAjOCMdTXU4NRTZ14GupVXFdEjqPtabULHB28gdM+tc+blcbQSTvBPsPSuVPRNdT06sYVZxlKSurqxtiSNiG3HDAEetYvm7jlWIw5JPp6ClzRlH3jlpUG5OCdlfQ3nkjkK4JBLk5Pf2rC84sGO/Axgk963hBpW6s1dNxSdR6G35nZSBknI9ayTLyEViVB6jvWCtN86WpFSNWE3p7tt0dBHKowQoyMDB9PWsBLwuNrEjaAAQensaU6smuR9DPD0IuDqI3wdsnOAJFIUetYRudxRlY4U8n1xVOLbb6dyFh17SLWl+huGSMYwcEkEn1FcydQXcMPnBOAe3FKnUm5W5dDomlGPLPvqdQLmIqpBOFILD1rm0u1+4WPKjJNEuWErvr+AqmDVaL5XZWudO86BGwDk8YHWuZW5bIcMcISDz196cXJaX2No0acqkIuOjXyRv/AGngMQQQwxj2rm3ulZxnJRSQPbNRFKTvY5J1JWlRUr3drm9JdpGUBYks2AR25rmTdBo1PIL5XnsKv2DjFRR6fLGKu1fpc1p7mQ5Bcjew5XqfWualvOG2HJ2kgN0NaTpOTimcFSirSm5X6W6mw92UZUQlmzgge/WsAXO0MwJ4IJxXPianLZR1Ztl1CLlaWljXe9R1OQw7hT3rlpr0u0ZAYZwTn+EVPO4zcpHo4ZpJU9tdyxqV2yWlwmThlIVh2rnb+6K2s+GJKqTj1ra7TjY8nET54uq9lovNmb8C7hm+Il5HvZlD4J9M1kfBHU7Kx8cXc93OsS+YPmY9ea/HPEhS9rFU0fufh7KSy1xqvVn6lWLr5aHGcqAM9q5rTPFOizQQFNSi6DIDDNfmzwrm4tnrYmjJyvNaf5HexyBT5ZOQzAEiuZ/4SLSlIdr6MRhsD5hn61jOjJRbW6M1QcpJx2OvVxuXEm5S5wR0FcI/jbRLfKrdqxZjgKfzrWhg5ySjbRmlSrKUVZ6I9Be4SH5gxAAyCe31rwnxN8QIpYTa2TED+Ijuf/1V9HlnDssRK8loeNi83hTk1DtqVviJ4iF5cG2t3PlRKqgj2rySa7N1KWaQnfzz2r9Qyfh6FFJpanwOb4yUoLXckVXO1S5PJII6DPU0kJVQeTxJ3719ZJqMPePlOWcIWd2mx8caqcK7MGPBPXFBZwy7eS2SB6e9Vh6fNFNu7Yp4tQlyxXYtIinB3ksnGB3FQKxQguxCcjA+tdUqMVTcnqdNKvFyvUXK118i3tYbSMgB8A+lVRPhTtY5dsjPavOp4dx91nqpKpFzTun/AFcvGPMgy7cEj61WWRyA+QQMnIrrjTkoxprc4Ks4qLqSe/6E6ZV/M5HABx3pIwu7JY8DIA6CrqRUopNanBQq801GrtrqaSRLsYjA+XcQPpSIQRhskg9B3rnhFt+8XW5KcuWkrPvuOjDNIDlljIBPv71ei28q/Z8AeoreXLK0bamFSXK+dPViBWOMYwN2SRyfepwrEL5bD5mLDd0HtRUi72W6NqFepXjyS+G33jfLzHlskhwSD3FWgC5IDYIk5J6dKdHDLnTTM3XcIWav09BkSkhcAqFJPPfNTRby+3PO3qfrTlQXM2tjtpK8FJLTQbHknZknIzk96sIWLMTxjAGKynJykktznxGJhCi3FaJj0UhXO3jaQcfxU6LkKDwMknJ6ela1qdnZInD4tzoKMtY3+4fHjAJPCnH0+lSKQgI64bIx2qEmpJRW5yVqqUGk7309CUssbqhHJIxjtTt64GQSx4BFbUYys090XzRqSgm/dQu0ABgzccY9am2kHIcg7cAfyqqc7ys9UzpdCU6XLTjZ663LEc2wKVwQ2cgdjTYsDgA9Bj+prirUYP3WjpoVuT4t9mhvm7m3E/N90k/yp8gLA4TCk4JrPE4d8yil0O/CVXGlKUt1t6CBioXGfnYEe1PRVAUEksQCfb0rjp3+FnPXUZxSj8TaLOcFnxlehB70pJZCoO3dkkenFCsklPZHb7FQi23uVOS5XcANpLH1pd3K45AGAf8AGuqNpJNryOKtWk5JrpsmWYY/uqpx1BNNVj8gIKqG5I9KfJKMr9EYUsLH2nv6p6npukWKRWLM+MSQnk9zWVBqaGxWJWPyoQW9MDmuWhyylzvQjE0VBuNDW5ivB5ly0aNkb2XA7mqsVwqSSSgn5iQfY1vUlGDWm5msHJU229rE81usZXOSQcEDtWfcXjAk7zjqAeo+la0oRSvDYuiqzV5PZ6W6khKKxUNjBAwe1ZsrghWDnrkg/wAqToRnHlTsyqPtKUqkpO6/InkYbgd+VViPrVJ2dgFzhsg5PQ1rCMYJpvUxkpYlQi3ZaXLB+YeZvBww4HbFVlOBt2kquc49O9RKEYy5Y6I78V7NxUVG7/KxbZlwnJ5wSB3+lUSzLvRQOCDuPfPSs4RUJctt+pyKtJw5pots65U5znIBPUVmSscEtISyvnHpQlFuyepp7OK1qOy/Uu+erLjBJiQjjv7isobioySNwIOPT1rGpSSkmu56FOtKVNJtO2y7k9wwKLIBjc3Q9vcVQllbALSEqGIxWsKSXvN3TMqFWU6vO1ZdSEyt94qfl4yfTvVcOGDDJ+YEZNdVk2l0OVuMZyi9vwLXnEHK8LgZz9eazZMorIzdcgEVnGUX7rdrnNFQpyag/e7mobksSisMbsEDtWXGcGUBiShBPtn1p04qLv1NZU3KKs+uuhNdSoSF5BODz2rKuJiZF3MRyBn1Irtoxsm2ebPEx9o4tXQ4DMinHqST3qKGRmZGYfQCt5xcVZ7GEsVaaje1/wCvxNXePLQ45HOB2qFp0aPaCQ5zketRyNO9tWTVSUeenpbUZE5dizodm4EEfSoVPlhNoIJIJx3repSk9Eb4Wmmo8zV5LVdi/G4Y55LKCAR+uKbHt2sACOScjtXLJXSSWhnGkoOUU7v+vzGXEi+UeSvJH0psqnyScHBAIHrXZJO6j0HDHRhBxlG1wtW2+WPNG3jJPeq0akPGof7rDI9KyhTsnKTMqtayjTpyu+x0m8vGUX7xBUE9qoQuZSOwD4PvW1OnLl5lvuW5qUfZ1NelzEnBjZRkAknjPWmXpUOxlVtu44I/WlNNJpq5rhJqMkmtFb5ktuhMm5sZJGSO9PsFWSTHOVbODXPWuqQ+SU5NW+I6W3f5UU5w4J57U2EqNgwAeefWop0op3SNo4yTj7KVtFoTzHLq0bZC8Ae31quWIU7G4LdRT5ZSjZMmjUvJJovRSyEAgjaARg/4VUhk3R4JAYEjIrknHmlqtzStScIucHoi6pkUBWcYU5A+vahWTIPJOBx6e9dXOnbQ4MDRaTnC5dimbYU3Ack49RVWLCqQWBJAIINXUjFNWe/Q65YmMqcUtN/vLyFVALEnDcD0qCNjuXzH+TPGO1YTjJ+9e5jhuZVfYxRf80Bl4OwqFye1VtwCocELk4Bop0IctrmtXFONVQSV+5cMyMG2sDliMVRZyNmcFVY596ptKXIzXE4uPNa1td/MtCbCEgEkMTj61TErFl2sQATnPenU5U02aU6MarUb6k4YLs3E5YjBHaonfcBwQSQpK06idR2WhriZwoLlTvfsSeZyke5icklj2qo7OSdpHPAGayVOTdkcX1ilTasrPS5MS8TLmQsc4JPXnpUBZlwrMRklgD1at4z53e2htVTh+8vq3t5EhdjyepOVPpUDFv3YJ5bG4noeahVley2MFh3Jub2/IV3I5JyUA4NVJWIZlySeB9KPZytZOxveEEp7u2nkJIxAJwATjI7fWqklynlYI4O4EHtW9KjJSi0tTnrYhKHs7tPt3uIpkC7nOcEkY7/WqcU2MRggMeOTXLiWm7pHVl0XGnytadPUeXyyNsPHIA7U1y5KgkHgkkdvarlGKg3E56sJRlFy3X6mTcjcx8wtuycEelOmmEanJ4DAjHYVpo0r7FRoTm7xevYwZc7gckiXgA9h71Tu5vmZvV8Y+nStVRfLyR2MLqc1J7ppGfI0YJU55bt2zVaUqCrA4YtwPr61E4OU0m9T0MJGFpSbta7+4z5ckiM556EdqhnmYOGOAckAAda29k7PuYrG0qtNpLT9QwoYtvKsABgd6otvYx/OQAck/wBKzgk42i7DhBzmpPR/obccyRhCVJOck+vpWMkkmd24kliAB2FZU7czkyq8IQXKlvuzuLfVSEXkl9/A9ema44XjqcAn91ggDvVKUqi1VkOlWhTg3F9Trbq+YooVjsLFcVyD3LyIQJCOd2Ce1dVKoklFrWx52IpxlFVIKzvt5CXoEj7t3zDofSs6W4Vwmd2OTz/F6iiNVPma3ZGGoNtc2yKbgtITxk8NVW4dtpkVjz1A7e1c3sm/cWhvgaiqSfLHZ2v6kqzjf5Z5AYAgVjea2MbtpCsTjvW1KH8zLxl5pUU7NOx08cueF6gg/Wsm3n4TJOQMk+vpUc0YzsmYUaU3Hki/J/5mu4jDcZIIwT9KgVywV1GQMtj3rSVLlptvVmKpPmTpqyvZA23jcvABzjv7UwZJIMmFDgsp7+1Y8ylZyRSkp1VHm1W4xWY7t2dq8qo9MUkpwAcEKHG0Dt61VGUZwcbbG0qM1/EejelhzMT93A8wgYPbFVGbZ5ZDEkseT70OTu01oZ1KdVQ5ZPTqTgxqnIwwbgNVZmLDl2/3fapp+5K8np2PSxMJTpxUdVuSOgkMYyAvJLHt71CJVVSTJgsSQSOlYxhJNqLJw2MoyqxUt+3crvDGu3acpk/N3qGQlPkc5XcMEd62jB30d7mOJ5J+6o2Ter3ItpJ5ZhtIAI70pcKoLEBsEL6CqdZQaiiaWXU6aSi7WepEZMgKCBkE8VA2Sd24gYAJH61lNxVl1YV5VIO8HfQc8u0hQOqgZHX8aUuuwZILEHJHYVlzLVoEqqcXF20f4iGUMoUJlujEduKqmQqMjOSTjHQD1q5apJkYXDuUeSUtm2WNyoUAckOpwPpVcyAmPceoIH1rGEGm7m9StFNWd0TPKUHUgnOSO/HSs8ybiOoXOQfU1lKhyqz0Op4unGLhTXNr9xeNz8iEtgds+orDM20GM5I3fhW0IWld7Fxw8ZpT5/h/M11lQfMpJ3YwT2NZIdSqsj7VL4wOo9xUSxClZLocFTDSpzbT0/zOgS5O4b8kkgD3xWIsxKZHYklj2rpov3k5GDbilKOzOjW4LE5yrHIwT09K59LpodkhYnY+QT3NVWqRcbLoUqknLkqLR9fyNwTE4LH5umfSsaK73yE5JPfPb2rOni50o33uU8towoqUp9TaEiqFJyD7nrWSJwWZdxJOOT2rKjU5oK+gpxjF8lF81+p6XDMIyz8cgAE/1qjbTKUUHggkknvWcq0Ye81sawfLH2qXxaI6G33FcPx83Jqir8bDw5wRjtWsIOcl0RhicfGFNJK7bsbGI1VVL8Anp3/z3qlJJwOccDPvVezlGy5tzKWYQrTbjHSP6DbmbOScnDBT7e9Z73COeeehJXvXXBuLR53PLkaTTvqvRloFtqJyckZJ71W+0L0UkLwFz3rKV07jjhm5KUuvQvZyPvAbCAM/risuKfdjJzlwMjtVwqSjKKbOyeHpyTUPdtrf0NUyglQzE54J7+1ZvnkIRyXXJ470pxldq+5dOCqpVZK1rfOxrx3CNnLZZMEk9/c1zP2tueCNwOCPUVnOjz2d7WZ04aupT9onddDqFljCNyMO5wPQ1z0NznDhSe5Pc+tRGEpXaehWInF1VSfXqbhkWOJVDKWDEnHY1hvPmTAypJJJHeumm2ldsw5L1JUWref/AADZWcAEKp2gkE465rDW8BYKGJAfJH1rKc3pJo2hgorDyp81+purOAAfMJUAk+9YglCgKzAFskEdRV15ya5UtEY4XCu6cFvsn1v/AJGk9yN33ASnRvWsYzlpED4GASaik1GLmzWWHc5+zcrT0ujaN0AME5cAkeorBlnX7ysSwJOaVNRaUmx06zk3Fq1m9fQ6BbobB8xDA4IPc1z5mZlJZsZ+YkmlVpN2mejgpxceSTvJ3f8AkbRmGMEEA4wc9T6VhrcgBcsSOufT1zURUnJp9epbhCcE6eji9jSa6GGXJA5OfT2rDefjzAPl3HAPetopt6dfwOXEUJR5tbouvPlSGckvnJzWIJ3l2kAYDAkr0HrUz5oyaaul1M8PRVozp9TXadWQr5hByCRWarOzcYJLZJHesK8EpqUnc0dOUoqF+5YFwGZnOcNxj1ohVQq7gCCuBntk9amdHmimbYahyJyvpa/zKE0TXEbLyN64wM8+grRIB2s7EBe46j3qqVOUlzbWOVWqP3tFY8+g8My2VybqBD+9kJBHXtmvTI1J2BXzlmwD3rzMyy+FVOdRHtZRmM6EXShP5mLZ3GpQtG8O9SGAJUnk108caoS3Gwrgn09a8z/V/DWTa3O+GfY1OK5+v4Dba81Ek+bI4bBUAk88fjVgPli2SFxkk9qyXD2FhBzitfQ6sbnuIj+7jqnre5pW2o3Vttjc4IJAbOSKyfPCvnncxOSO3Fd+GyykoJpanm1s5qz96pKyex0C3kkgcNIflGCfX1rCimyC2SELYJHUfhXqKlCLVlrc8yipTTu7p/edZDKoOFY4AHPpWXaylfKzkruGT61cY6PU66F404wi/dvqdV5yMsaqSdvU+lUUk3bTkbdxAz6YrONJp3epyVcS52jB9fvNTD7OSxPqKpIW+75pxwAa19m4x5ntcxUKdeTSdprozQEnmbdx+VSQTTFbiNXxtLEECs6lTkjy23On93WrQg37yvdiZLFUDD/ZI7HNO2v8vOMMQCK7lO6V1qDpwi7J+6tvMsxF/LALHB4FSRJuK4zzzn+7WfvRTlbUvEQhVlGaVl95oxqh8tieQR171Eo5TnOw5x61nQg1G6ZwV6VSStFf8Maxk2YypwGAAGKpB2LeaHJ7AN0HHWqw8Vycz2IWHkrQjve9+hqRzB354DMASf4cVWsxl+mcg5J7n0rSpBJKUjejUdasqd9EbOdxbDFcoQCPequSwVRg7e3pToTU3zdmY18NyVLy17F+BQWO7oAfxqGNjtDnoMAqD1OadSN5KMe5zxqwoJ129X0L0Ea7pCGIOMfSmI5yoyTl+Qe496mMHJ3S1ReGqKdWU4PdFplCcgjIGSRUQyWVy20dceo9KPq8ouzfmZVq8ZS5OW1t2JEPn3EZ3DBAqSEKzBVY/KMAkUYio1G6WhODxCq1FB9BxAQgtwNoOD9aJcMyljnYRyP5VVONqaUnuycXRSrqNPazuTExb9vOMDnHXBqu0xDZGQVwTmujk5YuJvRU/clK2vQvr0wGOVxx6VAjjh8nLk5FY0aFlzR3RSxdSUnTikmy+jBUAZwBngetVl25BIG4EYJ9qr2EW/eZth+WlFyetvzL+9PJO7JLY5HaoI2GwgA5BJIPp7V52KglPVnXg8TGSaWjfcuIAwDcgljj8KrB0LIck7cge1eeoNNto64NTaUZK68iZmwrYxxnI+tZ00zqxQtkspz7+hreULrmOOWLjCo1JXkSK4BAAPBIHt9appNtZN7HKkA471qo8vvIcZxnScXo+hpwtjapfKhiWqisgwCpJJcDj+tc13Kbb0ucsZVVTVHdI6GO42QGKNiN2Sp/rWYJ1MYUY3IAAfQV3YfCJttvVGtX2qpqn9rfz9DQwCrDdyBux6/SskzyF/lYgr6/TjNcai5O7fU68JjJVXyqHrqOkmAZsnIAHB7E1mSSZBbGCWwTXTVvKVkhVsUo6wdywreVudgWVmAAB6565rNuX3KFBJDcnn8q0cHJRRx/W3ThNveRq+aCGAJDZBGO30rGE2wZ35296lYe2repxKtVlUUE9DYUuhGTwOee+KzWvGK7SW+YA59KVRPeZ00YSjTlydPzNZWL9MjOBg1lfbkDHDHeTgEd/SsKs5OKjHYuhGUpJVW3ItzMgcgk7yBlh2rOkuwQDkn5QCB/Woo07adTsxyaftKmyX3kr8xcEkpgA/0qGORXUhXIJbkjoDXVKuoSSRyYeaqRipRsyOQCRNoLAgkgmpy0W3OTzwR61jTpvnu3qem405QdOOv/AATLVWDJlieWA/2qlHlMp4IIY4B713ToSb5WePhZOlGUZLZk3l+Z5bDnbgEeppqzCNCqDBGSQe9Ycs4u25TqxqqN0yR4QisXGFKZJ9eKjaZWJViSMAY/xq6dJuXM9yViHCOusdr9jCv9yOM/cOAMfqaL4ruDhixUEkelephFFO8tzyFypuVGXW4WzbSHbJUEAD+tFrKgZGLY55HY054hwu7aHe39Ymqi+I1MR8K2QS3B9c1H5m7DbsnJAz6e1FOo2uVkOknJp6IkiTHzEgqvQH270FxIArZwD0qU5uykzHDxp07tq6bJ0XazO5JKqMEVG0qgqgc5XJ4pS1VktmZRxcFU5E9bXJW2zIo24xgkmq8rrgHJ5U8DvWsajWsSqCVSfLPbq+1ivgmTKdd2ST047VHHlQEXIJyQa1krpNbMj2r55SnHRfkaULxoOgCMwAAqC1JwoJIUuCT3rmk0p2T0LhUjOMVNWi3oR3seJR0POcetW7tVBzIcggAECtKkLQ5mzWrOdWSUVZLbzG2luSpY5GXGMfyqzp7DqxyQQM+vNcqUmrN6G7w0Y1eZSsy6sWAN6nfuYgelWVKyNuDAhHJB9amdSMVdFzrUppRS95blfyCIxk4O4kjvzU03y85JwxI9qqNNzldO9zlqNpKTWz0IBAoABII3ZGP608OAEYAAk8j69KqnTlG7ZTg69uZ6fkPVACuHAyAOO9Kr/McnGACB6e4rOCc/ebsdDl7GKgnrt9/Ul2iFvUMoBIHX1pFkzkNgc5B9qjX4VuZRwqUlJPbfzJigEeWBODgBe1APygA89/fFZ003HUp0U6inezs0iTc8aKF5ZmHDdqaxUEEEkjBb1PtW9PDu6uzneHlyc1tnuLs+bCk9Sc+tG/heDjPUe9PkUZe6tTudKL1qO6/AaVk4PBJ2kA9R60wFuFBO0HJz6Vqm23KTscFOHJJRirp/1Ysq+1E/dnkAkjtUAb5vkyN55B9+lY01zyumdM7UIJtepI6kNuwDlgeO1MXG5SSTg5BPaqm7rllo1obYaUHNyT03S9SOQMxU87mBIz29KlIdmU7gQGzz1FK0IQv2Y40qlaaU0VHYPlTknOQB7VJIw4BBU9Qfp6VnK0LRitHuXPBRVaM5S1MyVizkBsuFwR6UTq/AH3c4B710xanG66GUvaRlrqvyKEzYAGDmM5z68VHMWAVRn52XkU1TabsLF4qLUOV6vqVJQ+5HGAfMU4H8jUkvIyMYTLfU0RsklLqTiIXlZvVapk67tuSwCgDIHr7VTSQmPah+8nQ9qznHlaiXCj7SCq9StdnyyDjOGGPekuGZvvEkKoG719BTo0kryk9TrqyjNJRdmjlr9SqruB+cnkdj6mtO9hEsOXOCSRx2qoYpaNI4Pq8dXGSeqOTLAvEykknCnPfFRygxSgZJOSOT1xWuGgmnB9SqlaEKns5K3mirceXIjAk56KRULO6DByDyfpXTCinZrocP1mKUqfR6XK0gBUA524yMdeKjncyoCAM7iMDuPespUmk4vSx1UoSjCNndieYRjaSOc4Paqivs2hiTgkZ9a5vY2jfqa8zlFxk9F08ycurLlWbzCME9jVV3QPnfwoPArTltJNbHJVwspKKho/vJXlKneCQxPyn1HvVVpFZdgILKQQD2ouo6MqjQd1NP3ru4rlvkTcd2cADpSDPygE5AyAe9PDzTk5QWxnONSbdJojdCqOGbJbIx6VI58wMTxypz71lFyuufVm0ZKk+VrVmNPGFTcThyoBI9qnuEwq4Y5DDGP601CU2pdEbr4VKSvfQrROxcZ5UDGTVQ5ULkkfN+dZtOKcUjiwsqlKTcEve2NqO4wnltIF+ckZrDjm/eJHjKquc9zVLlvcqhi1TTU5XfXTqzfDKTvLjk8gd8VnLLyAMkF+AO5raU3PRCnBUrVFvf5s1HYyIoEhGDkY71WimwCOdzZOazgopNrcyrxdWapuTi462Q0sUYFck9QP7vvT3C5UryWB3Y746VqqbcbJas3r0pRaTdl1IvMZADnIyAGI60zgqF5JbjHpWdakoyuzvw1aUYqKd09BskwcFmHCkEEd/WoJJFjUksSpXAI7VFkkm2Rg8a2/Z0l3V+xCz4ZWDAqW5H4Uw4lwQRwmQf6Vg6qgnI0lWqU5qk3f8AVDS68l84BJ4qjKWDfJgk5GD/AA1VKUWmpEUsS1VUm7LsTtOCPmGFOckd6zzIcJnJAYj65rGKcLJCbeImmnZ3+8U3BWYZbKEHGKquSMMDjGAcdxV80akXHZ3KaqRnGpJXfYtyOhUgKSGZdoHYVSQtGdwboSRnp9Kr2bi7rcU1TnFwel769i20jAIWJ++MZ7iqjsGCMG6fMB606aXN7xy4iTjGDg7paf8ABHyEpghiSGJJH8qqySkIwjBXIyAe9TzKbSaNIUeVNp7jJVLbsnA4Ix+tQSOAUYsxyQcelYxi+XlidlTkpyjOT13sCysrLHuBycfSoGO2Qtw2VLE9hVewb0QRrRajJ6LVssiQgFd5ILANxVQbsLk8uQSPT2pT5la+46dGKbbleO5oCThAxySx6/0qgWYNk5KgEg/UdKwdGT95PQ2ck4KT3vYvRuFYt6HBU96zwzq0ZOGLHPH6VrzOTvLocrp0ac0nHRmtFOuSAckA5JrNSQkkkneTyR3AqpydlGRVGD5lKktEem27nl1JOCp59Kw7S57biM4BPpTnVldKWx5U501L2avoztIpv3n3sgqSPeueNwFAYYA5JPriu2FJOPKnaxz4mFOE1NRvf8GdLNcjO5QQVI47HNc1JcMFcrlgCOM+1ZUqcWmmylUVFOovek7r/gF6W42vuLHAYMSPashWHDsSE4OD2+ta1KySaautjhw9FqpGouu6RufaflUkbkHIHoCOapW9vv4Vj8xYEGoo01FtSfodlfHNu0d+q7f8OX0m3RgrjBY4A/rVq2tGChW5/eEAntU1E3O5rTxMY0mmuuxEDIWjG4lwRk+vrW5Hp27aTzgk59aiEVFO73OtVIySgo3XcxFic8hWB3ZGf1rqfs8aJtzhh39AelXf3kkY4emoJwitFt+pzYhkRdzDlkJA9K1LtkjG4DBPAz2qZRkou2xryxk01rJnN5IOGyCDgA9/eoryWNiMcKHABHajljKC7mVGNRJzb/zEWYr8wweo+tYzz/OACSVJxV1nFVBwU/ZKSerdjZNywKpu55PFZMEzHDF+WJHPvVzqWabR0UPrDaW0NtzSMobaeemGJqujeWSjnggYH8qlw1UvwD6zUVWUakbLv3JyH56ZboB3qVIgwVs8A5ANaOmmuU5KNerJSilrff1/yGZZVUOeeMj09qmKM7smxSxwBnt71Sg0rI6HKKUZrRr8SMKdm9HGCSRgdPWpgCqkOcHGOO4rOLXPpsZRdSs+Z6PT/hyswZvlQZQcEGpwxVGG4Fcj8MjmoleSXKddDlfPJq6TRnMpzhTgLgEetW40yRgAluBn9KqUoxi1bU51Rq1KkWpcqV7IERAc4Yqcjnv9K1FhIWNj+IPQc/57Vze3UEnJHq4aXM+Zys+3coYDIuWAUuRnFSurBmVeVHHPbis3iJSdoI872dVyduj2Gwyfe3EBgeg7Coyj7whcgqMn/a9q0hOMY2SOvklGdraq3zRdgUH7hJJxgntTYX8pDkkgnPPX6VnaVuboWqdPV9S2wZVCO3I6gn8qg8xXcMwOAMH347U1DlvzPc5pSniaiilqhxZFCiQn5mAFRlfMI2AlUwQKcYybvLSw8JTjzyjBu/3jN53LlgFbOCOpNX4rVZZoVI4PI46cVN7xTk9Dqgqcp2qfIitlJK8kvkEn0ret7DYNxckmUAe1bOfMrpGdONKEotdWS28OXHBJAyPatKBcIVUEuCc4/SuWMJxXKtjolGE5vl2tsWIQo+UqNu7Ax3+tTxK0RjYsSSuMVvGg5QvF6o4Y13GpGLjr+Q4gp8xGeRkDtVsxq5R84CjkCrgk4KN9DaGHpyqOUldrURVRE3EsSQCQexqVEydzBi7Ekewpxw6aTvoLmkk3GK3HKMOjq7FiOFPSrcaFQjnIzkjPcHrXRGSb5XsjD2SlWSS13JHCr5SDJPfNSfx8L2BBPapjFc1nqmZz5r8qdlf5iqpcAgEBTgkfrV6OMfdLYLZJI7/SooVI8tloiqtKcVzX5kxikYCsxPl45PerUahUYnJYc5P9apQinZdQw/NXV52STX3E8eVjVVyMkZb3NMjYscfQn3rJwcnax0TcYU+RPvqiVXbflThgSQT/AFqSMAsxB45x70uaSSUVqYuk4U05SumTgkDJOSTnI7H1qIMCN2SQxGMe1TJSckmrMvDuKhabv/kWYJskcEhXyzCq4JUgBsBsjBrupQfNyr/hjyq1b2rtSel9UbKBDg7jkNn61QhYty27IJP0FRVrNtdz0aDv7qjtuaAbDDy8F92MnoPrTI2UcbSWbGAO1R7NOLjPVEwrxmmo+6/xLEmHUE4BY4JFR8E9QC2QAKUaaiouDHJSdHnerlpYjzliD/CATn0pGDHywAODhgO9Sk/ikzCTdO0VtYmUr+6BOAMhQP4qgJ2YKDD4OPb1rXlkpXT3NsRip0YqS0gaXzIp5HIIA9Krh2lRX57En1ojBqalNmMkpWWyauSeZ8mGBbD8EVEZgHyRhSD+NRLllJRex04qjJPl66W9CXJYAhyG65Pb2qDJ2ZXkZHBHXnpTq0VzWtsRSxU6bUYa9PvG3DBgDkFR1PcioJCQQ+NxYkAegpfV3FJLbcqq0m6tSOo5mXEYywftj0qvJKvyjcSe2exFcVJpNpI9CvOMnCyvsydG4BB+YMAT61EkjFhkbQ2Ac96t1JWu1oefisUnVU9r9C5NdbVAbIYjkjoapTtGSFPJLEYPpWeHoJ+8jajiZVG5SaW9+9i0kvHmKwCA5PPX0zWY8myMYbnIAHp6ZqJUqjmotGVXGU+VSpuzZbdwz8cKSSSO1ZJuMcMDwQOO9dNPD6WuGHxE7pbK+pbd3ZTGuQwA59qp/aDlEZSG4zk9KuDlF3ZviVRjTi3K7TuOYbGHJO5icHtxTHZdwCuQMZxWkoKaZzwqyco1b23+4VXaMZUn58nntVXL+YMklQB+Nc9WlZ2a90uOIqKmpL4n0HzyONsikAg5JHrVWWQEgLkqeQMdKt0IzV09RwruVSMaqaQ5bll3E5PzE8981GfunPA4OfT1rBJuSk9GjqhUdCDT1ev3Ey3fzcE5549RWaFQ48tjvUEgGtXTk1dPU86ni3FqpDVr+rGpHc85RiQexqm3IPy5Chck9qahOMrW1K9vFNVWtdbovxTSFSoPPXP9KzllRTt3kng05TfMpPY6YTXI1Fb/ANfgapuCquSpDMCMHtzWFcXe5UbnhQCR/OtFed1HdFKrOlTV9W0PuL6UOq8gHIBB61ivMAdxwSCAMdK3oUG1zyPGqYqo6jitF+pZa4kdijsSWyAR/Wq+9EbJJxtIPqK6fawjFNI56kGqnI52cl8kX7dsbskn5jgDsarRybRuJIGTwe57VzTnKVrPVBQpRimoM2vtGerHnBz6+tQWuSd2ThlIAParS5IqRvLnc+ROyRe8yQgYxuVTgDt71XWTa/ByW457fWt3FOK5VrcjDRVGTVR7ltpBty2QzADPfrUAdfmGSRgYA7fWnGFt+v4G1SnSjPmi7trf9C4rmRRkkDfz71WRD90sf3gAIH8NWqaaOOhGNR3Sff7iVX+dcEkFgKYiqqruYAlxyvYDtXPU1XLHQ0w2MvJN7LSxfjYKACx4Y5+lRx4dUCsThs59cmqo8sp2kzWs04c1OO3Qt3h/ch8kleRjtSs26F1DA5UYPp6VqpWSVvdOWhTU580t0Ps8FYyxIGQee/rT7Q7Y1G37xIOa5Y3knCJ6DqUnVTqLT/I1oSRwpG1CDg9qps4wAMj5+Qe+K4Z4Ztcz2OyjjKcIOSWt9y7uyOCS2Sfp70xD8oG84ycr61stGjmniXPSK87jVKMoIGQOM+uPWogcFQpbDZBX1o5nVbd9CaMUlyrfr8x5BOecsuCD6+1JGnltgsT5hPHpVurePLE0pJRThD4u4rMPkVsgcE+/rSqfNKKTjL447YNVTTS5pmU6jqWityzG3JwQMkBSe31pAD5g8vgcEg96yhSsrs9KUIOUWnqrkjscL8w6kkD+Kq4lUH5wDhs4HatIRabadzy6dPmcuZu+6JY5RvcgnZ1APc1WUMflGMMBgelVUjFbvYvB1aik5pXui0sg+XA4LZ4qCNgWUAnAJGKftlGk015l4eg1apF6NlkO7HLHIByuPamIwXAJJU5wPQmudzUbSitDeEnOThN3/rYsKTyuSuGORVUyEAhjkljgjsMVdSldube5y1krppWLDOxO4ZwDyfWswzmLC5blsEDtVUqKimn6nVOvVhOLTv2JZ5MgsATggDPQ+tVZZscbyUc8Yp0ZJpSirnLi6sZOVOUrNWGs+QAGO3OVBPrVXepJGDlVyPb6VrFuMnJbGapOXKou76kMpx8yg7F6EevegPsXacsNwJHpmtqk7J26nTGCpxTnZapEMykhX6EMcY7UkhKqoDAZJyR29Kxvy3lLZF1cJGUrN7tWKRYRSxoCcljz9fWq10QpDbSQSWJHUUOhGrdt6szeLjTmklpH8R6kv5gDMdp/AfSqxm3AHkD+ED36k1bvGybNaEqbs31K8xxhWB9BnvUFxI27ByGJzz2+tZqyd5IwjTilyRd3r+Jz14V8xpTkKCAM96lvlBhOWxtBJPpWXOpS9mtzqw+DdHllNf5HPTPjDM+Ar5wDyfaq0jHcQuGypAJHQd//AK1d1Kk1F3MZKK1qy6leeRWyyseeSBVKX5ANx5diAB/DWU23JRjsZxhCSU4rXa3cYJV2udx4OQfQ96QKoVGdy2cgg1pXvKLjE0hWjFNpXGKGwwXAZCMk85pCu5QA5A4IHrnrU1OdJSRzVJOMYxg2SdBkgcZzjt7VAbhcMquQSpBArmnObkuZHfGnSm1CLs/zJRIAFUE7n4A9KryNJwwODggEd6qnSnOWpx42vGi2o73RZZlwFZiDkAqKYoaQKV5YAEjPWlKPLNGLqqUlF+f4kDkyKVA5zkY74p7Q/NkDBBwAPTvVSi4Pm3LwlduSpmZNGURmTIyR19avSx7owoBGMZJpUKKulbQ9bF4iFT3ILbU5zcFCuxw+cZHai7baUU89hgcGrlScno9DljiIQpOTXvP7yWC6X+IknccEdBWdKSpjIJOSN2e9TUppL3d/yOFYxpxXd6fI3opGUqFxycnHesuK5IJRQQEXBPpV06reiWx0csKcbxd5O7OhjkYbQWAQEEgVUimWReWw2SM+nvW8FyxdlucOISrNRUrKNrl0lHwenOceoqHerBlLYJxkiuOpGyT6M9ijRpQ96L1X9bFWbAPlncEIBJHf2olXa+JG++CeO9OfK5aFckbt01bzKLISpdFIIU5B9BRKd2FLkfLkY71xulGb5nscEoSVpyd3YpSEgFlyZMjOO1ErBMLjOc1qqcopKKNcOoNLmWtyn824DOQw5Hp7VGVQowAKndnnsfrTjF09FqVWUqkHJOyXQUEbti9O4PbHpVZQ3mISwDDGT603RUUpI0pSi0kl5jmbOFckY7j0pswAZwD/AKwkE+n0rGDUWov7zlr0ZvmdTRS/q4CZAYo9hBU7c+nuKh28N82CoGD611zd5Xb3MqDpxp+zSdrXv+ZMWGJC2D1wfT0FVG3KS7BmViMA9q51FTfLfVHqYOkvZc0NU9v1JFwVU7c7DyD/AA/SmeaiKg3EuTkA9zUaxXKmZ/VYSrc0ulkRlcgljj/69KHAIJ+bOSCe9Zyk2rvcp0ZObktnoRBjuAIAKnOT2BqGbG4ljgtgkDvXPabTlY2oQVSXsouzt+I6RgFwAcBiCSemfSqbyLKuAzBt3OO1HKua608i6eEUYyU3dv8AQttOI1GGyBgE+lZTs3CglhwDn+dOFJyleT1M8XXdGKShf5miZsYJ7t39e1UN6MFKscIwznvRVqq9k9RRg3BSZ2trMqFcOW3sAc9qxrKeQMMP0YcHv7U4QvrJnjzny+7NXaO3tnVwUx8owCPWoLFkxG2CcuCa7PYqaaUrHn15TjJWW/3GqsIbbtyewA9fQ1qwvEq4wBgZwe1bUqbhBTfc6YVlOEaLjZv8yO2s1QDgjg5J/i+lWftsUZGCPlPft9Kp11OTbVjH2M6C5YvuXra2OMnABPOapPq8KqRux1BPr61yzlJy02OulQVR8q7X9TpYTHGwHBHXA7Yri5dbMm0qxGMjjoauSa12uKL5JWT0f5nbvdxIvDkE55+nQV5bPrcjkgMRgkkE9eKJQagorqP62npPXoztLrV1U8n5thGfWvMTqEhdWcliHyAK2nFxS5NzJU5KSadr3V/I6671VmIwxPGCD/SuPMzsQd3zkjANYUZJNwjuddKn7Jqq10f4dTRe4bLhgTkAEevuKpRgs+4sSenPaqr05NKc31NaU1O6W1i1EXOCckEEEmpI1PIGQcYJPf3rG1lzRWhdWq+SNNatEwRcgZJIGQPWpyrRhGZgWTGR60XlNuJ3YdxpKnKbTj5kqzPsjJJbbJkD0HHSmCXITZ96TJOBWirOOq2OOvSbTjKWl7oupOPlwSVHGD3rP8znaQVG8ZA/z2rdWqR5pMunOcIXpPV9DaViNrnIwnAHaswuXUBixGcgHoa5INSjbozanjozUqTXvF5pwrqOhd8knvVBH4w+SAwwG7V02UIpR6mGFrVI1+ZS91LVWLW/5TuPLHj3qrsQ4diQowNp7c9ajmtUu0KeIlTg1BXWjLcEuHBXIwwHH9KqRbklHyjdu4OeBWbg37yLpVudJVFZanULIDH1zyFGe1RRRgqMDCsAcn+I1z3TTaVzurxUoxi3axWypfcACzEbvUirEcaq5O75Tnk1LUVFNGVJTi2+r1sKkZ3NsBLEgc9qtxq65OMMCCAO9dCgk4qTuZ1uWb9otGOeAgIHI+Z8FR29TU53FwS5GGyR6U/bybUuiLrQlRik9XJ39CBLZGVnKgiTIAP61fRUC/u2yc5ANZpRk1cj2MnFyT1X6/5DIIFSMIoCnnDGrI24KuCflOcdD61pUpJz5nszChVaaiviJIowCCCS248+lNiJwSoOAwUn0pVKcpxtF6G+PqxikqyXN0NKLknJG4jAB7+lSQhfkk2gbMfj6mopQi/i3CtXhFck42VtC1BE24hpAMMMH19qlRQCjZA87BDDvQ25at7EUK0eVpRs3+NyRMMfLYghWIx606PYpQhQSSSMVVRezXMupqlJ00ktET7WYPGoyjDJx29Kmjbj7oHzZJ+tazou6cdWc2HxKU+WeiX436lmEOELbduMgA01S4OCQxXJBNRFycrNHTOlOcHVi+qsWEc56kfLkKO1CSbiqqflHLYrak2leT2OKdSXtFOTstvmxI3ZQS5G7AJz71LgP0OPm5AqnVpuVkV7OUYKM1p37lsSEbT7AKfU1CDgISx+9k+1RVppu0jZXTUIq6/TqXUkdiMrhTnP5VXWXcV2t/CQD6Vo8OvZ8tjkxclCoo/ZZdDFSNxJDLtOf51CjZXkkAElQO9ZShaVmz0HyU6ShJXv+BbgDYJJGVbjiiPYCSSQSwPHY05pOatoc0pOlFpq6ZMSIQQi5Kn5j7VGu5024JJ/UVpBSjK01qck5RmlOmuVbFhXwoyPm2gZpqoVOFYHgnB71Voy96Jth7wioytf+tSxAQ0pJyeowfSiJRHh3JOccVNaLUVFMMPNus5SfzLigM5JPGcgjt61GSpUpnA25Jpqs5JRgOFH2k+ZxuyUyFirqAQCuSe1QRuQyp0VyADVcyheTjoyHJzlCEt09C00inAHGS2cVAeGYhgWyeB24rmhSStFBLHyTnGb2vYcHIBywySQCe1MDRhM89cknp9a9CKSsjinRk4Kdtd9SyrkKpBAXqMd6omVs4GTg5GPT1pVoRck0jTD1pwpcyjpr/w5PLNg9iHXGfSqj/Ph1IwhAwe1KktG2YVKs6s40pbXLHnuoDKx2hjg+tV45FYqjDI5Jx0NNXWrNItRTlR1d/wLr8JkSkDuvrVcyA7Qn3VyTj2qJQTdkdVLERcbR67kTJvlUljnIGBUkTEshGQQTketYunFqyMZVJ06iqW1Q5gE+VgdoPIPWoZ5PmABIwTnPetFhacoJyeppDFyhOfOrt9PUrZffjknPQ96SOZC55xtwCfWumcoqCRw+7Sm6sddAuV+XKnAPDH0qK4n3oVUbWYEZ9KFhE/ebKji7RvGJmTTBVCqxIDDB7jNZdzOTIyjI69K5YYdRV11OiNRTndvW+pde7CshZuH4JPSsISEgbySFJ4HT8adLDRUHzs6qtWc6icY2XVm2t7swEzjPOewrGTLFd5IVgTg16KoRjH3WebRrVIzUEvd7s3XughYhjuxj61ms55YsRtIA965ZYRNpTevQ68RiowftI/ClZl1LnKqcHqTg1S80fNuwQyr07VhPBQnLnka08TFQ5YK7/zLX2hfOXcCWAB5/pWe8y7iRyvBwO1XChColoY81WD54Su3dehoLdKdgBAZmIPt71kmQPIij5cjk+pronhopXgcmG5nJRlLXvY02uU+6SD8uAB/WsrBPJUBmckkdqahGU9PvLlCo5uFR3JpJ3ClxnKscH+lVwSxdQwMTIVBP865KkeaSbWhOEg+SVJPVa+ZE80rbRvyNwyPWoXTyyo3cKeDW9OmkmoluSc4QnfQnVi+4MQMZPFU1kIOV+6Wxk96yqTcUk9wxGHUm3zXuSGTDBi5IDEVGdpZcjB5x7/WqhGzV9Og4xUEpPVIvQMrSKCSctkZ7/WmQP8AvVcZyxUEDoOat02lzGGHkptqWmv9I6GJyyKQCBvGD61HHuKgRggJkA1nTelkbRmozUmr2eoPu8zcxOGYEjvxTAxlydwGMgZ6k962pRlFON7FYunSryU0t/wL0bIhQ8liB+NVkD/Lv9ASfSh02vieooVYyUaTVnF/mXg7YABAK849M1XmJKKu8AEdfT0xWsVeXKkY1akqUXKHUsIUAHUOCWz6VFFkKo3/AOsYnB7YrjcXzprVdR4ecZR5Fo11LyMEKBTjaFJA756j8KgAKqzOxHBxjtVys43W50TUU2uazNGMjb0K7sgE9z6VBG7lVB4y4yT2GBirXO3ZvUijShGFvNa9y/BIoUpk8EHjuKbbMCoJG1s4we9cMpuL5bHVRk3NzlsupcZlDRkjJyQD6VTLbSSMnHIx2ropvmVmjnpU6TfNGXW7RcjkAbcQxJOVz/D9Kp5YsCCcAgj2zUNqcEkXQxClHnSsrvTyLqud+dxAyDtPvVBSxbk5xghjWUaCbtc6Zz5HKpJe7axqhtxDuRtDAgDsTVNZWIUA4AcNn3B/pVumlFxWiOGFJxrRqQV2aPybcMxLtkH2qu+HEZWQHbkkj+lThpKbd3azHKU4q8Fe/wDVi6s65QDPC4yKpfKhxvOTnCn19qhQUpWi9DvnCpBKbjZ+ZJIwJ4IGc7j646VEzr8rAEOCMg+9dUqrcbNa3OGlTnKdmv6Y7fhBycHGM9sVUfOdmScKSw7fhQoxqNt6GcMZOmlCOq2JfN2KWTIIzn2qNHVTtfJBTFDqaqTXkaRhOSUk7P8AM0EkG0K2eADk1k+dlzGMnLbST2Fc06UnLm7Fp04Nwh8X+f8AkabMp2lckKSMn3qiJlwiqchcDBq4XnK8tmTOjVqU48r1JncHluGJ2k/yqtJlmOQRnn8a1jFSa5Xods1UjB0pq7/MYrtJtbOAAQo7D3qLduVQcqQ2CBUPmhJxjoYYdxqwuloh7ZjZ+Buyc1Vzn5w53cEk98VcUmrTZM5SjUjCGvUeZ0cMMjzGwCR2x0qlMSpB5O3JyO/1qqkEkm3axt9YVd8qXvfoTNKpX73KqTn1NZ7yN5noNoJz04qHBuze25tUjFx55O1rJf5jJZFzuZiAN3B9KMoe3XHPrRUhFpRSsji+qONdThJNb7FBmwzAEhVycCq83AZSWBLcY71rFNJRaKnjVVqT5bXS0Ip5V2MeC5JPPeqUhcbcYKbuSacItyuibONJNrrf1KD7m+U5G8E4HbFRySKyjLf6skAjvROCi1J7ke1nKKcVdN6opXRjULgcv39KrzkMuRk9ck9qmnSmqjTe/wCB2Y7ERnRi1o1su5mT7BhiDjgFj296juXHlSMD90Hk9BRBL2ia2KrYeOIwyUnyvqVXYZCgHK5AAqOQnEXJALZJrem3Zp9Nzjq4RU1dyu7aabCyOu9A34E9gKpvIPNG7BHKis0pKKcUFLHtVHCa5U0vmLxg7QR8wJz/AEqLc6up4K85A6A0b+9F3sdnOqceVx17l6Hy5PLBySCeTU1uSSuTgFckelZqs5SvYeKoJ03yv3nubtnp5ZchccYDetdRoTIVQY4DgmsueTak1scsaEZR9guvUprooIRwgGABk9T616da2UcsbKcHeBx6cc1q3GSfL13POpRqKdov4fxPFb7SZI/mJIJXA9+e9enaxpf7tkVSY2AII6g0QrNqy2uepRhOlS9pfXt3+Z86XsCxhd2eXOMfzrqdb07y2KsckEiupYVyXMmc9PH0ppcy97zPMZ2IkjUljwTuH9avXVptYl+JCpGB2rj9m02luxRnFxty6Lb59TLiuX52ucZ5A7mq5j2NtXPUHI71MaSWj6FqSqKKbSN+Ob5Qd5AbAbPU1lQSbRtCnljtPcUP3fdZu5NJtbdfNG75+MhSQAapQSnaVbIOR+NaU5RUkmcmN9omp09vzNOWViuCcl1GQe1URI3LLkZGMHtRKpyzdt2KvJVFGMnoStgtGBkFDuI9agJYDjsT9T7VmoqMbQ2ZeHoUoVZKTtbpfX1IJvvKwG7ajHPv2FRbnDDoAxBB7j2q4vljpqaVKcpQ5o99wkwFJbBBJJx6+lNlYPyOVJJAHY1yNXs2rMwzCs0lOm7W3XVkJyzH5eGxgjtik80JErZIbJAHpShKT0aPTr0oclOae5WBcbmJwuPXrilY7NwySzsAAOgqvdlG1jClUjCslbe5EXAY7cEnkE/0pkzMFIAwygE5/iFNUU1q9Sac5xq2ivd2D745bqcgCmFiBzwu3JX1rBJp32Z3yTi97228yIFVCFgN27GBR82A2CRyQPwqJUeZOUnqbPEcrUEt7X+YMMLhRkYJIqMn7hXOM8A9fxpU6enMkVGo3PkjL3RjbSVJYb2GAfT6VGRnb8pCgk59Kp01d2DCyVSMYzWtyBuoeMEFuMN2PrUjZfGWHXO30rGc4295WN7STsnsUfnc57nByO1Pdy2PmI7HHY1Dkoy5YnDUoxlNTW6/ErHGH+UBjgAjtTlcKMyHgMVz61o6Sup21N5YuVNckHc//9k=" - ) - scenario.variables["phonenumber"] = "" - scenario.variables["templateid0"] = "" - scenario.variables["sigid0"] = "" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUSMSSignatureResponse"), - ], - action="CreateUSMSSignature", -) -def create_usms_signature_00(client: utest.Client, variables: dict): - d = { - "SigType": 0, - "SigPurpose": 0, - "SigContent": "test", - "File": variables.get("file"), - "Description": "test-sdk", - "CertificateType": 0, - } - - try: - resp = client.usms().create_usms_signature(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SigId"] = utest.value_at_path(resp, "SigId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "QueryUSMSSignatureResponse"), - ], - action="QueryUSMSSignature", -) -def query_usms_signature_01(client: utest.Client, variables: dict): - d = {"SigId": variables.get("SigId")} - - try: - resp = client.usms().query_usms_signature(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateUSMSSignatureResponse"), - ], - action="UpdateUSMSSignature", -) -def update_usms_signature_02(client: utest.Client, variables: dict): - d = { - "SigType": 0, - "SigPurpose": 0, - "SigId": variables.get("SigId"), - "SigContent": "test-sig-update", - "File": variables.get("file"), - } - - try: - resp = client.usms().update_usms_signature(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUSMSSignatureResponse"), - ], - action="DeleteUSMSSignature", -) -def delete_usms_signature_03(client: utest.Client, variables: dict): - d = {"SigIds": [variables.get("SigId")]} - - try: - resp = client.usms().delete_usms_signature(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUSMSTemplateResponse"), - ], - action="CreateUSMSTemplate", -) -def create_usms_template_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TemplateName": "test-sdk-template", - "Template": "this is a sdk template", - "Region": variables.get("Region"), - "Purpose": 1, - } - - try: - resp = client.usms().create_usms_template(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["TemplateId"] = utest.value_at_path(resp, "TemplateId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "QueryUSMSTemplateResponse"), - ], - action="QueryUSMSTemplate", -) -def query_usms_template_05(client: utest.Client, variables: dict): - d = {"TemplateId": variables.get("TemplateId")} - - try: - resp = client.usms().query_usms_template(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateUSMSTemplateResponse"), - ], - action="UpdateUSMSTemplate", -) -def update_usms_template_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TemplateId": variables.get("TemplateId"), - "Template": "test-sdk-template-update", - "Region": variables.get("Region"), - } - - try: - resp = client.usms().update_usms_template(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteUSMSTemplateResponse"), - ], - action="DeleteUSMSTemplate", -) -def delete_usms_template_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TemplateIds": [variables.get("TemplateId")], - "Region": variables.get("Region"), - } - - try: - resp = client.usms().delete_usms_template(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "SendUSMSMessageResponse"), - ], - action="SendUSMSMessage", -) -def send_usms_message_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TemplateId": variables.get("templateid0"), - "SigContent": variables.get("sigid0"), - "Region": variables.get("Region"), - "PhoneNumbers": [variables.get("phonenumber")], - "TemplateParams": ["101010"], - } - - try: - resp = client.usms().send_usms_message(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["SessionNo"] = utest.value_at_path(resp, "SessionNo") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUSMSSendReceiptResponse"), - ], - action="GetUSMSSendReceipt", -) -def get_usms_send_receipt_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SessionNoSet": [variables.get("SessionNo")], - "Region": variables.get("Region"), - } - - try: - resp = client.usms().get_usms_send_receipt(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_4140.py b/tests/test_services/test_set_4140.py deleted file mode 100644 index 8b0de280..00000000 --- a/tests/test_services/test_set_4140.py +++ /dev/null @@ -1,600 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(4140) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_4140(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["BucketName_test"] = funcs.concat( - "ucdntest-", funcs.get_timestamp(10) - ) - scenario.variables["time_granule_type"] = 1 - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateBucketResponse"), - ], - action="CreateBucket", -) -def create_bucket_00(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "BucketName": variables.get("BucketName_test"), - } - - try: - resp = client.invoke("CreateBucket", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StartUcdnTestDomainResponse"), - ], - action="StartUcdnTestDomain", -) -def start_ucdn_test_domain_01(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "BucketName": variables.get("BucketName_test"), - } - - try: - resp = client.invoke("StartUcdnTestDomain", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["domainId"] = utest.value_at_path(resp, "DomainId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=3, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUcdnDomainResponse"), - ("str_eq", "DomainSet.0.ChannelType", "ucdn"), - ( - "str_eq", - "DomainSet.0.Domain", - funcs.concat( - variables.get("BucketName_test"), ".ufile.ucloud.com.cn" - ), - ), - ("str_eq", "DomainSet.0.DomainId", variables.get("domainId")), - ("str_eq", "DomainSet.0.Status", "check"), - ], - action="DescribeUcdnDomain", -) -def describe_ucdn_domain_02(client: utest.Client, variables: dict): - d = {"DomainId": [variables.get("domainId")]} - - try: - resp = client.invoke("DescribeUcdnDomain", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=200, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUcdnDomainResponse"), - ("str_eq", "DomainSet.0.ChannelType", "ucdn"), - ( - "str_eq", - "DomainSet.0.Domain", - funcs.concat( - variables.get("BucketName_test"), ".ufile.ucloud.com.cn" - ), - ), - ("str_eq", "DomainSet.0.DomainId", variables.get("domainId")), - ("str_eq", "DomainSet.0.Status", "enable"), - ], - action="DescribeUcdnDomain", -) -def describe_ucdn_domain_03(client: utest.Client, variables: dict): - d = {"DomainId": [variables.get("domainId")]} - - try: - resp = client.invoke("DescribeUcdnDomain", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["domain"] = utest.value_at_path(resp, "DomainSet.0.Domain") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "BatchDescribeNewUcdnDomainResponse"), - ], - action="BatchDescribeNewUcdnDomain", -) -def batch_describe_new_ucdn_domain_04(client: utest.Client, variables: dict): - d = {} - - try: - resp = client.ucdn().batch_describe_new_ucdn_domain(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetNewUcdnDomainHttpCodeV2Response"), - ], - action="GetNewUcdnDomainHttpCodeV2", -) -def get_new_ucdn_domain_http_code_v2_05(client: utest.Client, variables: dict): - d = { - "Type": variables.get("time_granule_type"), - "EndTime": funcs.get_timestamp(10), - "BeginTime": funcs.get_timestamp(10) - 10000, - } - - try: - resp = client.ucdn().get_new_ucdn_domain_http_code_v2(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetNewUcdnDomainHitRateResponse"), - ], - action="GetNewUcdnDomainHitRate", -) -def get_new_ucdn_domain_hit_rate_06(client: utest.Client, variables: dict): - d = { - "Type": variables.get("time_granule_type"), - "EndTime": funcs.get_timestamp(10), - "BeginTime": funcs.get_timestamp(10) - 1000, - } - - try: - resp = client.ucdn().get_new_ucdn_domain_hit_rate(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetNewUcdnDomainHttpCodeResponse"), - ], - action="GetNewUcdnDomainHttpCode", -) -def get_new_ucdn_domain_http_code_07(client: utest.Client, variables: dict): - d = { - "Type": variables.get("time_granule_type"), - "EndTime": funcs.get_timestamp(10), - "BeginTime": funcs.get_timestamp(10) - 10000, - } - - try: - resp = client.ucdn().get_new_ucdn_domain_http_code(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "PrefetchNewUcdnDomainCacheResponse"), - ], - action="PrefetchNewUcdnDomainCache", -) -def prefetch_new_ucdn_domain_cache_08(client: utest.Client, variables: dict): - d = {"UrlList": [funcs.concat("http://", variables.get("domain"), "/")]} - - try: - resp = client.ucdn().prefetch_new_ucdn_domain_cache(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["PrefetchCache_TaskId"] = utest.value_at_path(resp, "TaskId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeNewUcdnPrefetchCacheTaskResponse"), - ], - action="DescribeNewUcdnPrefetchCacheTask", -) -def describe_new_ucdn_prefetch_cache_task_09( - client: utest.Client, variables: dict -): - d = {"TaskId": [variables.get("PrefetchCache_TaskId")]} - - try: - resp = client.ucdn().describe_new_ucdn_prefetch_cache_task(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeNewUcdnRefreshCacheTaskResponse"), - ], - action="DescribeNewUcdnRefreshCacheTask", -) -def describe_new_ucdn_refresh_cache_task_10( - client: utest.Client, variables: dict -): - d = {"TaskId": [variables.get("PrefetchCache_TaskId")]} - - try: - resp = client.ucdn().describe_new_ucdn_refresh_cache_task(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "RefreshNewUcdnDomainCacheResponse"), - ], - action="RefreshNewUcdnDomainCache", -) -def refresh_new_ucdn_domain_cache_11(client: utest.Client, variables: dict): - d = { - "UrlList": [funcs.concat("http://", variables.get("domain"), "/")], - "Type": "file", - } - - try: - resp = client.ucdn().refresh_new_ucdn_domain_cache(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetNewUcdnDomainBandwidthResponse"), - ], - action="GetNewUcdnDomainBandwidth", -) -def get_new_ucdn_domain_bandwidth_12(client: utest.Client, variables: dict): - d = {"Type": variables.get("time_granule_type")} - - try: - resp = client.ucdn().get_new_ucdn_domain_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnPassBandwidthResponse"), - ], - action="GetUcdnPassBandwidth", -) -def get_ucdn_pass_bandwidth_13(client: utest.Client, variables: dict): - d = {"Type": variables.get("time_granule_type")} - - try: - resp = client.ucdn().get_ucdn_pass_bandwidth(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnDomainRequestNumV2Response"), - ], - action="GetUcdnDomainRequestNumV2", -) -def get_ucdn_domain_request_num_v2_14(client: utest.Client, variables: dict): - d = { - "Type": variables.get("time_granule_type"), - "EndTime": funcs.get_timestamp(10), - "DomainId": [variables.get("domainId")], - "BeginTime": funcs.get_timestamp(10) - 1000, - } - - try: - resp = client.ucdn().get_ucdn_domain_request_num_v2(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnDomainLogResponse"), - ], - action="GetUcdnDomainLog", -) -def get_ucdn_domain_log_15(client: utest.Client, variables: dict): - d = { - "Type": variables.get("time_granule_type"), - "DomainId": [variables.get("domainId")], - } - - try: - resp = client.ucdn().get_ucdn_domain_log(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnTrafficResponse"), - ], - action="GetUcdnTraffic", -) -def get_ucdn_traffic_16(client: utest.Client, variables: dict): - d = {} - - try: - resp = client.ucdn().get_ucdn_traffic(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnDomainTrafficResponse"), - ], - action="GetUcdnDomainTraffic", -) -def get_ucdn_domain_traffic_17(client: utest.Client, variables: dict): - d = {"AccountType": "top"} - - try: - resp = client.ucdn().get_ucdn_domain_traffic(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetUcdnDomainPrefetchEnableResponse"), - ("str_eq", "Enable", 1), - ], - action="GetUcdnDomainPrefetchEnable", -) -def get_ucdn_domain_prefetch_enable_18(client: utest.Client, variables: dict): - d = {"DomainId": variables.get("domainId")} - - try: - resp = client.ucdn().get_ucdn_domain_prefetch_enable(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "SwitchUcdnChargeTypeResponse"), - ], - action="SwitchUcdnChargeType", -) -def switch_ucdn_charge_type_19(client: utest.Client, variables: dict): - d = {"ChargeType": "traffic"} - - try: - resp = client.ucdn().switch_ucdn_charge_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUcdnTestDomainResponse"), - ], - action="StopUcdnTestDomain", -) -def stop_ucdn_test_domain_20(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "BucketName": variables.get("BucketName_test"), - } - - try: - resp = client.invoke("StopUcdnTestDomain", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUcdnDomainResponse"), - ("str_eq", "DomainSet.0.ChannelType", "ucdn"), - ( - "str_eq", - "DomainSet.0.Domain", - funcs.concat( - variables.get("BucketName_test"), ".ufile.ucloud.com.cn" - ), - ), - ("str_eq", "DomainSet.0.DomainId", variables.get("domainId")), - ("str_eq", "DomainSet.0.Status", "deleteing"), - ], - action="DescribeUcdnDomain", -) -def describe_ucdn_domain_21(client: utest.Client, variables: dict): - d = {"DomainId": [variables.get("domainId")]} - - try: - resp = client.invoke("DescribeUcdnDomain", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=120, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteBucketResponse"), - ], - action="DeleteBucket", -) -def delete_bucket_22(client: utest.Client, variables: dict): - d = {"BucketName": variables.get("BucketName_test")} - - try: - resp = client.invoke("DeleteBucket", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_448.py b/tests/test_services/test_set_448.py deleted file mode 100644 index 86d5e6b2..00000000 --- a/tests/test_services/test_set_448.py +++ /dev/null @@ -1,408 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(448) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_448(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["CreateBootDisk"] = 20 - scenario.variables["ChargeType"] = "Month" - scenario.variables["CreateCPU"] = 1 - scenario.variables["CreateMem"] = 1024 - scenario.variables["CreateDiskspace"] = 20 - scenario.variables["UpgradeDiskSpace"] = 30 - scenario.variables["NewPassword"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["Name"] = "uhost-basic-api-N2-Normal-LocalDisk-1" - scenario.variables["ImageID"] = "#{u_get_image_resource($Region,$Zone)}" - scenario.variables["UpgradeBootDisk"] = 40 - scenario.variables["UpgradeCPU"] = 2 - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageID"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "StorageType": "LocalDisk", - "Region": variables.get("Region"), - "Quantity": 1, - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "NetCapability": "Normal", - "Name": variables.get("Name"), - "Memory": variables.get("CreateMem"), - "LoginMode": "Password", - "ImageId": variables.get("ImageID"), - "HotplugFeature": False, - "HostType": "N2", - "GPU": False, - "DiskSpace": variables.get("CreateDiskspace"), - "ChargeType": variables.get("ChargeType"), - "CPU": variables.get("CreateCPU"), - "BootDiskSpace": variables.get("CreateBootDisk"), - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["hostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=200, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.State", "Running"), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=60, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RebootUHostInstance", -) -def reboot_uhost_instance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().reboot_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.State", "Running"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUHostInstance", -) -def stop_uhost_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().stop_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "GetRestResourceResponse"), - ("str_eq", "UpgradeStatus", True), - ], - action="GetRestResource", -) -def get_rest_resource_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - "CPU": variables.get("UpgradeCPU"), - } - - try: - resp = client.invoke("GetRestResource", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=45, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUHostInstance", -) -def resize_uhost_instance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - "CPU": variables.get("UpgradeCPU"), - } - - try: - resp = client.uhost().resize_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=60, - retry_interval=30, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ("str_eq", "UHostSet.0.CPU", variables.get("UpgradeCPU")), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=30, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_449.py b/tests/test_services/test_set_449.py deleted file mode 100644 index c750d46c..00000000 --- a/tests/test_services/test_set_449.py +++ /dev/null @@ -1,337 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(449) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_449(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["CreateBootDisk"] = 20 - scenario.variables["ChargeType"] = "Month" - scenario.variables["CreateCPU"] = 1 - scenario.variables["CreateMem"] = 1024 - scenario.variables["CreateDiskspace"] = 0 - scenario.variables["NewPassword"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["Name"] = "uhost-basic-api" - scenario.variables["ImageID"] = "#{u_get_image_resource($Region,$Zone)}" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageID"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=20, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "StorageType": "LocalDisk", - "Region": variables.get("Region"), - "Quantity": 1, - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "NetCapability": "Normal", - "Name": variables.get("Name"), - "Memory": variables.get("CreateMem"), - "LoginMode": "Password", - "ImageId": variables.get("ImageID"), - "HotplugFeature": False, - "HostType": "N2", - "GPU": False, - "DiskSpace": variables.get("CreateDiskspace"), - "ChargeType": variables.get("ChargeType"), - "CPU": variables.get("CreateCPU"), - "BootDiskSpace": variables.get("CreateBootDisk"), - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["hostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=200, - retry_interval=30, - startup_delay=60, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.State", "Running"), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUHostInstanceResponse"), - ], - action="StopUHostInstance", -) -def stop_uhost_instance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().stop_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=60, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ReinstallUHostInstance", -) -def reinstall_uhost_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - "Password": variables.get("NewPassword"), - "ImageId": variables.get("ImageID"), - } - - try: - resp = client.uhost().reinstall_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=200, - retry_interval=30, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.HostType", "N2"), - ("str_eq", "UHostSet.0.UHostType", "Normal"), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.State", "Running"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=60, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=60, - fast_fail=False, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_471.py b/tests/test_services/test_set_471.py deleted file mode 100644 index 1e4d2b7b..00000000 --- a/tests/test_services/test_set_471.py +++ /dev/null @@ -1,308 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(471) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_471(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["CreateBootDisk"] = 20 - scenario.variables["ChargeType"] = "Month" - scenario.variables["CreateCPU"] = 1 - scenario.variables["CreateMem"] = 1024 - scenario.variables["CreateDiskspace"] = 0 - scenario.variables["NewPassword"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["Name"] = "uhost-basic-api-ResetPassword" - scenario.variables["ImageID"] = "#{u_get_image_resource($Region,$Zone)}" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageID"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "No", - "Tag": "Default", - "StorageType": "LocalDisk", - "Region": variables.get("Region"), - "Quantity": 1, - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "NetCapability": "Normal", - "Name": variables.get("Name"), - "Memory": variables.get("CreateMem"), - "LoginMode": "Password", - "ImageId": variables.get("ImageID"), - "HotplugFeature": False, - "GPU": False, - "DiskSpace": variables.get("CreateDiskspace"), - "ChargeType": variables.get("ChargeType"), - "CPU": variables.get("CreateCPU"), - "BootDiskSpace": variables.get("CreateBootDisk"), - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["hostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=120, - retry_interval=30, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.CPU", variables.get("CreateCPU")), - ("str_eq", "UHostSet.0.Memory", variables.get("CreateMem")), - ("str_eq", "UHostSet.0.UHostId", variables.get("hostId")), - ("str_eq", "UHostSet.0.Name", variables.get("Name")), - ( - "str_eq", - "UHostSet.0.TotalDiskSpace", - variables.get("CreateDiskspace"), - ), - ("str_eq", "UHostSet.0.StorageType", "LocalDisk"), - ("str_eq", "UHostSet.0.BasicImageId", variables.get("ImageID")), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ("str_eq", "UHostSet.0.State", "Running"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=5, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUHostInstanceResponse"), - ], - action="StopUHostInstance", -) -def stop_uhost_instance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().stop_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=60, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=30, - startup_delay=20, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResetUHostInstancePassword", -) -def reset_uhost_instance_password_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - "Password": variables.get("NewPassword"), - } - - try: - resp = client.uhost().reset_uhost_instance_password(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=60, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=60, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="PoweroffUHostInstance", -) -def poweroff_uhost_instance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().poweroff_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=30, - fast_fail=True, - action="TerminateUHostInstance", -) -def terminate_uhost_instance_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_488.py b/tests/test_services/test_set_488.py deleted file mode 100644 index 3c58a120..00000000 --- a/tests/test_services/test_set_488.py +++ /dev/null @@ -1,598 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(488) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_488(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "percona-5.6" - scenario.variables["InstanceMode"] = "HA" - scenario.variables["InstanceType"] = "Normal" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_habz_" - scenario.variables["UseSSD"] = False - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstance", -) -def describe_udb_instance_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_01(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=60, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstancePhpMyAdminURLResponse"), - ("ne", "PMAPath", ""), - ], - action="DescribeUDBInstancePhpMyAdminURL", -) -def describe_udb_instance_php_my_admin_url_08( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.invoke("DescribeUDBInstancePhpMyAdminURL", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyUDBInstanceName", -) -def modify_udb_instance_name_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Name": funcs.concat("rename_", variables.get("DBTypeId")), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().modify_udb_instance_name(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat("rename_", variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ModifyUDBInstancePassword", -) -def modify_udb_instance_password_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Password": "Guanliyuanmima", - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().modify_udb_instance_password(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RestartUDBInstance", -) -def restart_udb_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().restart_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StartUDBInstance", -) -def start_udb_instance_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().start_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_489.py b/tests/test_services/test_set_489.py deleted file mode 100644 index 90f5bed4..00000000 --- a/tests/test_services/test_set_489.py +++ /dev/null @@ -1,958 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(489) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_489(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "mysql-5.6" - scenario.variables["InstanceMode"] = "HA" - scenario.variables["InstanceType"] = "SATA_SSD" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_hassd_" - scenario.variables["BackupName"] = "handbf_test_02" - scenario.variables["UseSSD"] = True - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateUDBInstanceBackupStrategy", -) -def update_udb_instance_backup_strategy_07( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "BackupTime": 13, - "BackupDate": 1111110, - } - - try: - resp = client.udb().update_udb_instance_backup_strategy(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="EditUDBBackupBlacklist", -) -def edit_udb_backup_blacklist_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "Blacklist": "test.%", - } - - try: - resp = client.udb().edit_udb_backup_blacklist(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Blacklist", "test.%"), - ], - action="DescribeUDBBackupBlacklist", -) -def describe_udb_backup_blacklist_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_backup_blacklist(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=2, - retry_interval=1, - startup_delay=15, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="BackupUDBInstance", -) -def backup_udb_instance_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseBlacklist": True, - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "BackupName": variables.get("BackupName"), - } - - try: - resp = client.udb().backup_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=50, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.State", "Success"), - ], - action="DescribeUDBBackup", -) -def describe_udb_backup_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_backup(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["BackupId"] = utest.value_at_path(resp, "DataSet.0.BackupId") - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Success"), - ("ne", "BackupSize", 0), - ("ne", "BackupEndTime", 0), - ], - action="DescribeUDBInstanceBackupState", -) -def describe_udb_instance_backup_state_12( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "BackupId": variables.get("BackupId"), - } - - try: - resp = client.udb().describe_udb_instance_backup_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("contains", "BackupPath", "http://"), - ], - action="DescribeUDBInstanceBackupURL", -) -def describe_udb_instance_backup_url_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "BackupId": variables.get("BackupId"), - } - - try: - resp = client.udb().describe_udb_instance_backup_url(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": 3306, - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - "mysql-5.6", - "GroupId", - ), - "Name": "frombf-hassd-56", - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": "mysql-5.6", - "ChargeType": "Month", - "BackupId": variables.get("BackupId"), - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId_frombf_56"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId_frombf_56"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=5, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId_frombf_56"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=2, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId_frombf_56"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId_frombf_56"), - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("ne", "EarliestTime", 0), - ], - action="FetchUDBInstanceEarliestRecoverTime", -) -def fetch_udb_instance_earliest_recover_time_21( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().fetch_udb_instance_earliest_recover_time(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["EarliestTime"] = utest.value_at_path(resp, "EarliestTime") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_22(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "sql", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstanceByRecovery", -) -def create_udb_instance_by_recovery_23(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SrcDBId": variables.get("DBId"), - "Region": variables.get("Region"), - "RecoveryTime": variables.get("EarliestTime"), - "Quantity": 0, - "Name": "56-hd-frombf", - "ChargeType": "Month", - } - - try: - resp = client.udb().create_udb_instance_by_recovery(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["HD_DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_24(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HD_DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=5, - startup_delay=3, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_25(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("HD_DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_26(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HD_DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_27(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HD_DBId"), - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBBackup", -) -def delete_udb_backup_28(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "BackupId": variables.get("BackupId"), - } - - try: - resp = client.udb().delete_udb_backup(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_29(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_30(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBInstance", -) -def delete_udb_instance_31(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId_frombf_56"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBInstance", -) -def delete_udb_instance_32(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("HD_DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBInstance", -) -def delete_udb_instance_33(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_490.py b/tests/test_services/test_set_490.py deleted file mode 100644 index 5f5bbdd3..00000000 --- a/tests/test_services/test_set_490.py +++ /dev/null @@ -1,777 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(490) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_490(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "mysql-5.7" - scenario.variables["InstanceMode"] = "HA" - scenario.variables["InstanceType"] = "SATA_SSD" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_hassd_" - scenario.variables["UseSSD"] = True - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "sql", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceConnection", -) -def check_udb_instance_connection_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.invoke("CheckUDBInstanceConnection", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CheckUDBEngineResponse"), - ("str_eq", "Used", False), - ], - action="CheckUDBEngine", -) -def check_udb_engine_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "EngineType": "MyISAM", - "DBId": variables.get("DBId"), - } - - try: - resp = client.invoke("CheckUDBEngine", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBSlave", -) -def create_udb_slave_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "SrcId": variables.get("DBId"), - "Region": variables.get("Region"), - "Port": 3307, - "Name": "auto_slave-create_3307", - "IsLock": True, - } - - try: - resp = client.udb().create_udb_slave(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["slave_dbid"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=90, - retry_interval=2, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpdateUDBInstanceSlaveBackupSwitchResponse"), - ], - action="UpdateUDBInstanceSlaveBackupSwitch", -) -def update_udb_instance_slave_backup_switch_12( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "SlaveDBId": variables.get("slave_dbid"), - "Region": variables.get("Region"), - "MasterDBId": variables.get("DBId"), - "BackupSwitch": 1, - } - - try: - resp = client.udb().update_udb_instance_slave_backup_switch(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBSlaveOrSecondaryInstance", -) -def describe_udb_slave_or_secondary_instance_13( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "ClassType": "mysql", - } - - try: - resp = client.invoke("DescribeUDBSlaveOrSecondaryInstance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="RestartUDBInstance", -) -def restart_udb_instance_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().restart_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=35, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Shutoff"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StartUDBInstance", -) -def start_udb_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().start_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="PromoteUDBSlave", -) -def promote_udb_slave_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "IsForce": True, - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().promote_udb_slave(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_21(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=20, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_22(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("slave_dbid"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_23(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=45, - retry_interval=2, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_24(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ListMonitorItemsResponse"), - ], - action="ListMonitorItems", -) -def list_monitor_items_25(client: utest.Client, variables: dict): - d = { - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.invoke("ListMonitorItems", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBInstance", -) -def delete_udb_instance_26(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("slave_dbid"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=20, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBInstance", -) -def delete_udb_instance_27(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_499.py b/tests/test_services/test_set_499.py deleted file mode 100644 index c8bdc0eb..00000000 --- a/tests/test_services/test_set_499.py +++ /dev/null @@ -1,602 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(499) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_499(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "percona-5.5" - scenario.variables["InstanceMode"] = "HA" - scenario.variables["InstanceType"] = "SATA_SSD" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_hassd_" - scenario.variables["UseSSD"] = True - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBParamGroup", -) -def create_udb_param_group_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SrcGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Region": variables.get("Region"), - "GroupName": "auto_config_create", - "Description": "self_create", - "DBTypeId": variables.get("DBTypeId"), - } - - try: - resp = client.udb().create_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["create_config_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UpdateUDBParamGroup", -) -def update_udb_param_group_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Value": 2, - "Region": variables.get("Region"), - "Key": "auto_increment_increment", - "GroupId": variables.get("create_config_id"), - } - - try: - resp = client.udb().update_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="UploadUDBParamGroup", -) -def upload_udb_param_group_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupName": "auto_config_upload", - "Description": "self_upload", - "DBTypeId": variables.get("DBTypeId"), - "Content": "W215c3FsZF0KYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50ID0gMgpiYWNrX2xvZyA9IDIwMDAKYmlubG9nLWZvcm1hdCA9IE1JWEVECmNoYXJhY3Rlcl9zZXRfc2VydmVyID0gdXRmOApldmVudF9zY2hlZHVsZXIgPSBPTgpleHBpcmVfbG9nc19kYXlzID0gNwppbm5vZGJfYnVmZmVyX3Bvb2xfc2l6ZSA9IDUzNjg3MDkxMjAwCmlubm9kYl9maWxlX3Blcl90YWJsZSA9IDEKaW5ub2RiX2ZsdXNoX2xvZ19hdF90cnhfY29tbWl0ID0gMgppbm5vZGJfZmx1c2hfbWV0aG9kID0gT19ESVJFQ1QKaW5ub2RiX2lvX2NhcGFjaXR5ID0gMjAwMAppbm5vZGJfbG9nX2J1ZmZlcl9zaXplID0gODM4ODYwOAppbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdCA9IDUwCmlubm9kYl9vcGVuX2ZpbGVzID0gMTAyNAppbm5vZGJfcmVhZF9pb190aHJlYWRzID0gOAppbm5vZGJfc29ydF9idWZmZXJfc2l6ZSA9IDEwNDg1NzYKaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSA9IDIwCmlubm9kYl93cml0ZV9pb190aHJlYWRzID0gOAprZXlfYnVmZmVyX3NpemUgPSAzMzU1NDQzMgpsb2NhbF9pbmZpbGUgPSAxCmxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgPSAxCmxvbmdfcXVlcnlfdGltZSA9IDMKbWF4X2FsbG93ZWRfcGFja2V0ID0gMTY3NzcyMTYKbWF4X2Nvbm5lY3RfZXJyb3JzID0gMTAwMDAwMAptYXhfY29ubmVjdGlvbnMgPSAyMDAwCm15aXNhbV9zb3J0X2J1ZmZlcl9zaXplID0gODM4ODYwOApuZXRfYnVmZmVyX2xlbmd0aCA9IDgxOTIKcGVyZm9ybWFuY2Vfc2NoZW1hID0gMApwZXJmb3JtYW5jZV9zY2hlbWFfbWF4X3RhYmxlX2luc3RhbmNlcyA9IDIwMApxdWVyeV9jYWNoZV9zaXplID0gMApxdWVyeV9jYWNoZV90eXBlID0gMApyZWFkX2J1ZmZlcl9zaXplID0gMjYyMTQ0CnJlYWRfcm5kX2J1ZmZlcl9zaXplID0gNTI0Mjg4CnNraXBfbmFtZV9yZXNvbHZlID0gMQpzb3J0X2J1ZmZlcl9zaXplID0gNTI0Mjg4CnN5bmNfYmlubG9nID0gMQp0YWJsZV9vcGVuX2NhY2hlID0gMTI4CnRocmVhZF9jYWNoZV9zaXplID0gNTA=", - } - - try: - resp = client.udb().upload_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["upload_config_id"] = utest.value_at_path(resp, "GroupId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ExtractUDBParamGroupResponse"), - ], - action="ExtractUDBParamGroup", -) -def extract_udb_param_group_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("upload_config_id"), - } - - try: - resp = client.invoke("ExtractUDBParamGroup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ChangeUDBParamGroupResponse"), - ], - action="ChangeUDBParamGroup", -) -def change_udb_param_group_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("upload_config_id"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.invoke("ChangeUDBParamGroup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.ParamGroupId", variables.get("upload_config_id")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "RestartUDBInstanceResponse"), - ], - action="RestartUDBInstance", -) -def restart_udb_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().restart_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceResponse"), - ("str_eq", "DataSet.0.State", "Running"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUDBInstanceByParamGroupResponse"), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ], - action="DescribeUDBInstanceByParamGroup", -) -def describe_udb_instance_by_param_group_15( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("upload_config_id"), - } - - try: - resp = client.invoke("DescribeUDBInstanceByParamGroup", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 7064)], - action="DeleteUDBParamGroup", -) -def delete_udb_param_group_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("upload_config_id"), - } - - try: - resp = client.udb().delete_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUDBInstanceResponse"), - ], - action="StopUDBInstance", -) -def stop_udb_instance_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DeleteUDBParamGroup", -) -def delete_udb_param_group_20(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "GroupId": variables.get("create_config_id"), - } - - try: - resp = client.udb().delete_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_503.py b/tests/test_services/test_set_503.py deleted file mode 100644 index c8e9dcdd..00000000 --- a/tests/test_services/test_set_503.py +++ /dev/null @@ -1,425 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(503) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_503(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Region"] = "cn-bj2" - scenario.variables["Zone"] = "cn-bj2-02" - scenario.variables["DBTypeId"] = "mysql-5.7" - scenario.variables["InstanceMode"] = "HA" - scenario.variables["InstanceType"] = "Normal" - scenario.variables["Port"] = 3306 - scenario.variables["MemoryLimit"] = 1000 - scenario.variables["DiskSpace"] = 20 - scenario.variables["DBName"] = "auto_habz_" - scenario.variables["UseSSD"] = False - - scenario.run(client) - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBType", -) -def describe_udb_type_00(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.udb().describe_udb_type(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBParamGroup", -) -def describe_udb_param_group_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - } - - try: - resp = client.udb().describe_udb_param_group(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DataSet_paramGroup"] = utest.value_at_path(resp, "DataSet") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstancePrice", -) -def describe_udb_instance_price_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "Count": 1, - } - - try: - resp = client.udb().describe_udb_instance_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit"), - "DiskSpace": variables.get("DiskSpace"), - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=1, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUDBInstance", -) -def create_udb_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Quantity": 0, - "Port": variables.get("Port"), - "ParamGroupId": funcs.search_value( - variables.get("DataSet_paramGroup"), - "DBTypeId", - variables.get("DBTypeId"), - "GroupId", - ), - "Name": funcs.concat( - variables.get("DBName"), variables.get("DBTypeId") - ), - "MemoryLimit": variables.get("MemoryLimit"), - "InstanceType": variables.get("InstanceType"), - "InstanceMode": variables.get("InstanceMode"), - "DiskSpace": variables.get("DiskSpace"), - "DBTypeId": variables.get("DBTypeId"), - "ChargeType": "Month", - "AdminPassword": "guanliyuanmima", - } - - try: - resp = client.udb().create_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["DBId"] = utest.value_at_path(resp, "DBId") - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=2, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=50, - retry_interval=10, - startup_delay=30, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "State", "Running"), - ], - action="DescribeUDBInstanceState", -) -def describe_udb_instance_state_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_state(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="DescribeUDBInstanceUpgradePrice", -) -def describe_udb_instance_upgrade_price_07( - client: utest.Client, variables: dict -): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().describe_udb_instance_upgrade_price(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CheckUDBInstanceAllowance", -) -def check_udb_instance_allowance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "Count": 1, - "ClassType": "SQL", - } - - try: - resp = client.invoke("CheckUDBInstanceAllowance", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=60, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="ResizeUDBInstance", -) -def resize_udb_instance_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UseSSD": variables.get("UseSSD"), - "Region": variables.get("Region"), - "MemoryLimit": variables.get("MemoryLimit") + 1, - "DiskSpace": variables.get("DiskSpace") + 1, - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().resize_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=90, - retry_interval=10, - startup_delay=240, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Running"), - ("str_eq", "DataSet.0.MemoryLimit", variables.get("MemoryLimit") + 1), - ("str_eq", "DataSet.0.DiskSpace", variables.get("DiskSpace") + 10), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=5, - fast_fail=False, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="StopUDBInstance", -) -def stop_udb_instance_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().stop_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=100, - retry_interval=3, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ( - "str_eq", - "DataSet.0.Name", - funcs.concat(variables.get("DBName"), variables.get("DBTypeId")), - ), - ("str_eq", "DataSet.0.DBTypeId", variables.get("DBTypeId")), - ("str_eq", "DataSet.0.State", "Shutoff"), - ], - action="DescribeUDBInstance", -) -def describe_udb_instance_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "Offset": 0, - "Limit": 100, - "DBId": variables.get("DBId"), - "ClassType": "sql", - } - - try: - resp = client.udb().describe_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=0, - retry_interval=0, - startup_delay=10, - fast_fail=False, - action="DeleteUDBInstance", -) -def delete_udb_instance_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "DBId": variables.get("DBId"), - } - - try: - resp = client.udb().delete_udb_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_services/test_set_867.py b/tests/test_services/test_set_867.py deleted file mode 100644 index 4dd4776c..00000000 --- a/tests/test_services/test_set_867.py +++ /dev/null @@ -1,763 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import pytest -import logging - -from ucloud.core import exc -from ucloud.testing import env, funcs, op, utest - -logger = logging.getLogger(__name__) - - -scenario = utest.Scenario(867) - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_set_867(client: utest.Client, variables: dict): - scenario.initial(variables) - - scenario.variables["Password"] = "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - scenario.variables["SnapshotSysName"] = "snapshot-ARK-SYS-01" - scenario.variables["SnapshotSysDesc"] = "snapshot-ARK-SYS-01-desc" - scenario.variables["SnapDiskType"] = "LocalBoot" - scenario.variables["SnapshotDataNameModify"] = "snapshot-ARK-DATA-01-modify" - scenario.variables["SnapshotDataDescModify"] = ( - "snapshot-ARK-DATA-01-desc-Modify" - ) - scenario.variables["UhostName"] = "uhost-snapshot-ARK-auto-api-1" - scenario.variables["SnapshotDataName"] = "snapshot-ARK-DATA-01" - scenario.variables["SnapshotDataDesc"] = "snapshot-ARK-DATA-01-desc" - scenario.variables["CreateFromTimeMachinePassword"] = ( - "Z3VhbmxpeXVhbm1pbWExMjMhQCM=" - ) - scenario.variables["ImageID"] = "#{u_get_image_resource($Region,$Zone)}" - - scenario.run(client) - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=False, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeImageResponse"), - ], - action="DescribeImage", -) -def describe_image_00(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "Region": variables.get("Region"), - "OsType": "Linux", - "ImageType": "Base", - } - - try: - resp = client.uhost().describe_image(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["ImageID"] = utest.value_at_path(resp, "ImageSet.0.ImageId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [("str_eq", "RetCode", 0)], - action="CreateUHostInstance", -) -def create_uhost_instance_01(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "TimemachineFeature": "no", - "Region": variables.get("Region"), - "Password": "VXFhNzg5VGVzdCFAIyQ7LA==", - "Name": variables.get("UhostName"), - "Memory": 1024, - "LoginMode": "Password", - "ImageId": variables.get("ImageID"), - "HotplugFeature": False, - "GPU": False, - "DiskSpace": 10, - "CPU": 1, - } - - try: - resp = client.uhost().create_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - variables["hostId"] = utest.value_at_path(resp, "UHostIds.0") - return resp - - -@scenario.step( - max_retries=100, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Running"), - ("str_eq", "UHostSet.0.TimemachineFeature", "no"), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_02(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUHostInstanceResponse"), - ], - action="StopUHostInstance", -) -def stop_uhost_instance_03(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().stop_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=10, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_04(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "UpgradeToArkUHostInstanceResponse"), - ], - action="UpgradeToArkUHostInstance", -) -def upgrade_to_ark_uhost_instance_05(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().upgrade_to_ark_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=200, - retry_interval=30, - startup_delay=100, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ("str_eq", "UHostSet.0.TimemachineFeature", "yes"), - ("str_eq", "UHostSet.0.BootDiskState", "Normal"), - ("str_eq", "UHostSet.0.DiskSet.0.BackupType", "DATAARK"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_06(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StartUHostInstanceResponse"), - ], - action="StartUHostInstance", -) -def start_uhost_instance_07(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().start_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Running"), - ("str_eq", "UHostSet.0.TimemachineFeature", "yes"), - ("str_eq", "UHostSet.0.DiskSet.0.BackupType", "DATAARK"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_08(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=60, - retry_interval=60, - startup_delay=100, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeUhostTmMetaResponse"), - ("str_eq", "UtmStatus", "normal"), - ], - action="DescribeUhostTmMeta", -) -def describe_uhost_tm_meta_09(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UhostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeUhostTmMeta", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VdiskIdSys"] = utest.value_at_path(resp, "DataSet.0.VdiskId") - variables["VdiskIdData"] = utest.value_at_path(resp, "DataSet.1.VdiskId") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVDiskTmListResponse"), - ], - action="DescribeVDiskTmList", -) -def describe_v_disk_tm_list_10(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VDiskId": variables.get("VdiskIdSys"), - "SnapshotType": "all", - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeVDiskTmList", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeVDiskTmListResponse"), - ], - action="DescribeVDiskTmList", -) -def describe_v_disk_tm_list_11(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VDiskId": variables.get("VdiskIdData"), - "SnapshotType": "all", - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeVDiskTmList", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUserVDiskSnapshotResponse"), - ], - action="CreateUserVDiskSnapshot", -) -def create_user_v_disk_snapshot_12(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VDiskId": variables.get("VdiskIdSys"), - "Region": variables.get("Region"), - "Name": variables.get("SnapshotSysName"), - "Comment": variables.get("SnapshotSysDesc"), - } - - try: - resp = client.invoke("CreateUserVDiskSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VdiskSnapIDSys"] = utest.value_at_path(resp, "SnapshotId.0") - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "CreateUserVDiskSnapshotResponse"), - ], - action="CreateUserVDiskSnapshot", -) -def create_user_v_disk_snapshot_13(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "VDiskId": variables.get("VdiskIdData"), - "Region": variables.get("Region"), - "Name": variables.get("SnapshotDataName"), - "Comment": variables.get("SnapshotDataDesc"), - } - - try: - resp = client.invoke("CreateUserVDiskSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - variables["VdiskSnapIDData"] = utest.value_at_path(resp, "SnapshotId.0") - return resp - - -@scenario.step( - max_retries=30, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSnapshotResponse"), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotId", - variables.get("VdiskSnapIDSys"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotName", - variables.get("SnapshotSysName"), - ), - ("str_eq", "UHostSnapshotSet.0.DiskType", "LocalBoot"), - ( - "str_eq", - "UHostSnapshotSet.0.ResourceName", - variables.get("UhostName"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotDescription", - variables.get("SnapshotSysDesc"), - ), - ("str_eq", "UHostSnapshotSet.0.State", "Normal"), - ], - action="DescribeSnapshot", -) -def describe_snapshot_14(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "SnapshotIds": [variables.get("VdiskSnapIDSys")], - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSnapshotResponse"), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotId", - variables.get("VdiskSnapIDData"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotName", - variables.get("SnapshotDataName"), - ), - ("str_eq", "UHostSnapshotSet.0.DiskType", "LocalData"), - ( - "str_eq", - "UHostSnapshotSet.0.ResourceName", - variables.get("UhostName"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotDescription", - variables.get("SnapshotDataDesc"), - ), - ("str_eq", "UHostSnapshotSet.0.State", "Normal"), - ], - action="DescribeSnapshot", -) -def describe_snapshot_15(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "SnapshotIds": [variables.get("VdiskSnapIDData")], - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "ModifySnapshotResponse"), - ], - action="ModifySnapshot", -) -def modify_snapshot_16(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotName": variables.get("SnapshotDataNameModify"), - "SnapshotId": variables.get("VdiskSnapIDData"), - "SnapshotDescription": variables.get("SnapshotDataDescModify"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("ModifySnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSnapshotResponse"), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotId", - variables.get("VdiskSnapIDData"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotName", - variables.get("SnapshotDataNameModify"), - ), - ("str_eq", "UHostSnapshotSet.0.DiskType", "LocalData"), - ( - "str_eq", - "UHostSnapshotSet.0.ResourceName", - variables.get("UhostName"), - ), - ( - "str_eq", - "UHostSnapshotSet.0.SnapshotDescription", - variables.get("SnapshotDataDescModify"), - ), - ("str_eq", "UHostSnapshotSet.0.State", "Normal"), - ], - action="DescribeSnapshot", -) -def describe_snapshot_17(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "SnapshotIds": [variables.get("VdiskSnapIDData")], - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DescribeSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteSnapshotResponse"), - ], - action="DeleteSnapshot", -) -def delete_snapshot_18(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotId": variables.get("VdiskSnapIDSys"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DeleteSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DeleteSnapshotResponse"), - ], - action="DeleteSnapshot", -) -def delete_snapshot_19(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "SnapshotId": variables.get("VdiskSnapIDData"), - "Region": variables.get("Region"), - } - - try: - resp = client.invoke("DeleteSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=30, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "DescribeSnapshotResponse"), - ( - "object_not_contains", - "UHostSnapshotSet", - variables.get("VdiskSnapIDSys"), - ), - ( - "object_not_contains", - "UHostSnapshotSet", - variables.get("VdiskSnapIDData"), - ), - ], - action="DescribeSnapshot", -) -def describe_snapshot_20(client: utest.Client, variables: dict): - d = {"Zone": variables.get("Zone"), "Region": variables.get("Region")} - - try: - resp = client.invoke("DescribeSnapshot", d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "StopUHostInstanceResponse"), - ], - action="StopUHostInstance", -) -def stop_uhost_instance_21(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().stop_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=30, - retry_interval=10, - startup_delay=10, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "UHostSet.0.State", "Stopped"), - ], - action="DescribeUHostInstance", -) -def describe_uhost_instance_22(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostIds": [variables.get("hostId")], - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().describe_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp - - -@scenario.step( - max_retries=3, - retry_interval=1, - startup_delay=0, - fast_fail=True, - validators=lambda variables: [ - ("str_eq", "RetCode", 0), - ("str_eq", "Action", "TerminateUHostInstanceResponse"), - ], - action="TerminateUHostInstance", -) -def terminate_uhost_instance_23(client: utest.Client, variables: dict): - d = { - "Zone": variables.get("Zone"), - "UHostId": variables.get("hostId"), - "Region": variables.get("Region"), - } - - try: - resp = client.uhost().terminate_uhost_instance(d) - except exc.RetCodeException as e: - resp = e.json() - - return resp diff --git a/tests/test_unit/test_core/consts.py b/tests/test_unit/test_core/consts.py deleted file mode 100644 index 6d66f731..00000000 --- a/tests/test_unit/test_core/consts.py +++ /dev/null @@ -1 +0,0 @@ -TEST_URL = "https://api.ucloud.cn/" diff --git a/tests/test_unit/test_core/test_auth.py b/tests/test_unit/test_core/test_auth.py deleted file mode 100644 index b64ed35a..00000000 --- a/tests/test_unit/test_core/test_auth.py +++ /dev/null @@ -1,28 +0,0 @@ -from ucloud.core import auth - - -def test_verify_ac(): - d = { - "Action": "CreateUHostInstance", - "CPU": 2, - "ChargeType": "Month", - "DiskSpace": 10, - "ImageId": "f43736e1-65a5-4bea-ad2e-8a46e18883c2", - "LoginMode": "Password", - "Memory": 2048, - "Name": "Host01", - "Password": "VUNsb3VkLmNu", - "PublicKey": "ucloudsomeone@example.com1296235120854146120", - "Quantity": 1, - "Region": "cn-bj2", - "Zone": "cn-bj2-04", - } - cred = auth.Credential( - "ucloudsomeone@example.com1296235120854146120", - "46f09bb9fab4f12dfc160dae12273d5332b5debe", - ) - assert cred.verify_ac(d) == "4f9ef5df2abab2c6fccd1e9515cb7e2df8c6bb65" - assert cred.to_dict() == { - "public_key": "ucloudsomeone@example.com1296235120854146120", - "private_key": "46f09bb9fab4f12dfc160dae12273d5332b5debe", - } diff --git a/tests/test_unit/test_core/test_client.py b/tests/test_unit/test_core/test_client.py deleted file mode 100644 index f9c1c03c..00000000 --- a/tests/test_unit/test_core/test_client.py +++ /dev/null @@ -1,106 +0,0 @@ -import json -import uuid - -import pytest -import logging -import collections -import requests_mock - -from ucloud.client import Client -from ucloud.core import exc -from ucloud.core.transport import RequestsTransport, http -from ucloud.testing.mock import MockedTransport - -from tests.test_unit.test_core import consts - -logger = logging.getLogger(__name__) - - -@pytest.fixture(scope="function", autouse=True) -def client(): - return Client( - { - "region": "cn-bj2", - "public_key": "foo", - "private_key": "foo", - "timeout": 10, - "ssl_verify": False, - } - ) - - -@pytest.fixture(scope="function", autouse=True) -def transport(): - return MockedTransport() - - -def test_client_invoke(client): - expected = {"RetCode": 0, "Action": "Foo"} - with requests_mock.Mocker() as m: - m.post( - consts.TEST_URL, - text=json.dumps(expected), - headers={http.REQUEST_UUID_HEADER_KEY: str(uuid.uuid4())}, - ) - assert client.invoke("Foo") == expected - - -def test_client_invoke_code_error(client): - expected = {"RetCode": 171, "Action": "Foo", "Message": "签名错误"} - - with requests_mock.Mocker() as m: - m.post( - consts.TEST_URL, - text=json.dumps(expected), - headers={http.REQUEST_UUID_HEADER_KEY: str(uuid.uuid4())}, - ) - - with pytest.raises(exc.RetCodeException): - try: - client.invoke("Foo") - except exc.RetCodeException as e: - assert e.retryable is False - assert e.json() == { - "RetCode": 171, - "Action": "Foo", - "Message": "签名错误", - } - raise e - - -def test_client_invoke_with_retryable_error(client): - # RetCodeError is retryable when code is greater than 2000 - with requests_mock.Mocker() as m: - m.post( - consts.TEST_URL, - text=json.dumps({"RetCode": 10000, "Action": "Foo"}), - ) - with pytest.raises(exc.RetCodeException): - client.invoke("Foo") - - -def test_client_invoke_with_unexpected_error(client): - def raise_error(_): - raise ValueError("temporary error") - - transport = RequestsTransport() - transport.middleware.request(raise_error) - client.transport = transport - - with pytest.raises(ValueError): - client.invoke("Foo") - - -def test_client_try_import(client): - for name in dir(client): - if name.startswith("_") or name in [ - "invoke", - "logged_request_handler", - "logged_response_handler", - "logged_exception_handler", - ]: - continue - - client_factory = getattr(client, name) - if isinstance(client_factory, collections.Callable): - print(client_factory()) diff --git a/tests/test_unit/test_core/test_deco.py b/tests/test_unit/test_core/test_deco.py deleted file mode 100644 index bbfe20d8..00000000 --- a/tests/test_unit/test_core/test_deco.py +++ /dev/null @@ -1,11 +0,0 @@ -from ucloud.core.utils.deco import deprecated - - -@deprecated(instead_of="bar") -def foo(): - pass - - -def test_deprecated_deco(caplog): - foo() - assert "deprecated" in caplog.text diff --git a/tests/test_unit/test_core/test_encoder.py b/tests/test_unit/test_core/test_encoder.py deleted file mode 100644 index 3bdf1a84..00000000 --- a/tests/test_unit/test_core/test_encoder.py +++ /dev/null @@ -1,23 +0,0 @@ -import pytest - -from ucloud.core.typesystem import encoder - - -@pytest.mark.parametrize( - "input_vector,expected", - [ - ({"foo": "bar"}, {"foo": "bar"}), - ({"foo": 42}, {"foo": "42"}), - ({"foo": 42.42}, {"foo": "42.42"}), - ({"foo": 42.0}, {"foo": "42"}), - ({"foo": True}, {"foo": "true"}), - ({"foo": False}, {"foo": "false"}), - ({"IP": ["127.0.0.1"]}, {"IP.0": "127.0.0.1"}), - ({"TemplateParams": ["中文"]}, {"TemplateParams.0": "中文"}), - ({"IP": ["foo", "bar"]}, {"IP.0": "foo", "IP.1": "bar"}), - ({"IP": [{"foo": "bar"}]}, {"IP.0.foo": "bar"}), - ], -) -def test_params_encode(input_vector, expected): - result = encoder.encode(input_vector) - assert result == expected diff --git a/tests/test_unit/test_core/test_exc.py b/tests/test_unit/test_core/test_exc.py deleted file mode 100644 index 2ea136fe..00000000 --- a/tests/test_unit/test_core/test_exc.py +++ /dev/null @@ -1,15 +0,0 @@ -import pytest -from ucloud.core import exc - - -def test_ret_code_error(): - assert not exc.UCloudException().retryable - - code_error = exc.RetCodeException("Foo", 1, "") - assert str(code_error) - assert not code_error.retryable - assert code_error.json() == {"Action": "Foo", "Message": "", "RetCode": 1} - - validate_error = exc.ValidationException(ValueError("invalid type")) - assert not validate_error.retryable - assert str(validate_error) diff --git a/tests/test_unit/test_core/test_fields.py b/tests/test_unit/test_core/test_fields.py deleted file mode 100644 index f582b685..00000000 --- a/tests/test_unit/test_core/test_fields.py +++ /dev/null @@ -1,70 +0,0 @@ -import logging - -import pytest - -from ucloud.core import exc -from ucloud.core.typesystem import fields - -logger = logging.getLogger(__name__) - - -def test_field_str(): - s = fields.Str() - assert s.dumps(s.loads("foo")) == "foo" - - with pytest.raises(exc.ValidationException): - fields.Str(strict=True).loads(42) - - -def test_field_int(): - i = fields.Int() - assert i.dumps(i.loads("42")) == 42 - - with pytest.raises(exc.ValidationException): - fields.Int().dumps("foo") - - with pytest.raises(exc.ValidationException): - fields.Int(strict=True).loads("42") - - -def test_field_float(): - f = fields.Float() - assert f.dumps(f.loads("42.0")) == 42.0 - - with pytest.raises(exc.ValidationException): - fields.Float().dumps("foo") - - with pytest.raises(exc.ValidationException): - fields.Float(strict=True).loads("42.0") - - -def test_field_bool(): - b = fields.Bool() - assert b.dumps(b.loads("true")) - assert not b.dumps(b.loads("false")) - - with pytest.raises(exc.ValidationException): - fields.Bool().dumps("foo") - - with pytest.raises(exc.ValidationException): - fields.Bool(strict=True).loads("true") - - -def test_field_list(): - l = fields.List(fields.Int()) - assert l.dumps(l.loads(["42"])) == [42] - - with pytest.raises(exc.ValidationException): - fields.List(fields.Int(), strict=True).dumps(42) - - with pytest.raises(exc.ValidationException): - fields.List(fields.Int()).dumps(["foo"]) - - with pytest.raises(exc.ValidationException): - fields.List(fields.Int(strict=True)).loads(["42"]) - - -def test_field_base64(): - b64 = fields.Base64() - assert b64.loads("Zm9v") == "foo" - assert b64.dumps("foo") == "Zm9v" diff --git a/tests/test_unit/test_core/test_schema.py b/tests/test_unit/test_core/test_schema.py deleted file mode 100644 index 126586bb..00000000 --- a/tests/test_unit/test_core/test_schema.py +++ /dev/null @@ -1,217 +0,0 @@ -import logging -import pytest - -from ucloud.core import exc -from ucloud.core.typesystem import fields, schema - -logger = logging.getLogger(__name__) - - -def test_request_basic(): - class Schema(schema.RequestSchema): - fields = { - "Foo": fields.Int(required=True), - "Bar": fields.Int(required=False), - } - - assert Schema().dumps({"Foo": "42"}) == {"Foo": 42} - assert Schema().dumps({"Foo": "42"}) == {"Foo": 42} - - with pytest.raises(exc.ValidationException): - Schema().dumps({}) - - with pytest.raises(exc.ValidationException): - Schema().dumps({"Foo": "bar"}) - - -def test_request_array(): - class Schema(schema.RequestSchema): - fields = {"IP": fields.List(fields.Str())} - - # basic - d = Schema().dumps({"IP": ["127.0.0.1"]}) - assert d == {"IP": ["127.0.0.1"]} - - # default by zero value - d = Schema().dumps({}) - assert d == {"IP": []} - - -def test_request_array_with_default(): - class Schema(schema.RequestSchema): - fields = {"IP": fields.List(fields.Str(), default=["127.0.0.1"])} - - # basic - d = Schema().dumps({"IP": ["192.168.0.1"]}) - assert d == {"IP": ["192.168.0.1"]} - - # default by default value - d = Schema().dumps({}) - assert d == {"IP": ["127.0.0.1"]} - - -def test_request_object_model(): - class Schema(schema.RequestSchema): - fields = {"IP": fields.List(fields.Str())} - - class NestedObjectSchema(schema.RequestSchema): - fields = {"Interface": Schema()} - - # success - d = NestedObjectSchema().dumps({"Interface": {"IP": ["127.0.0.1"]}}) - assert d == {"Interface": {"IP": ["127.0.0.1"]}} - - # dumps - with pytest.raises(exc.ValidationException): - NestedObjectSchema().dumps({"Interface": 1}) - - -def test_request_array_model_with_default(): - class Schema(schema.RequestSchema): - fields = {"IP": fields.List(fields.Str())} - - class NestedArraySchema(schema.RequestSchema): - fields = { - "Interface": fields.List( - Schema(default=lambda: "127.0.0.1"), - default=lambda: [{"IP": ["192.168.1.1"]}], - ) - } - - # the top-level default value will overwrite nested default value - d = NestedArraySchema().dumps({}) - assert d == {"Interface": [{"IP": ["192.168.1.1"]}]} - - # nested value - d = { - "Interface": [ - {"IP": ["127.0.0.1", "192.168.0.1"]}, - {"IP": ["172.16.0.1"]}, - ] - } - d = NestedArraySchema().dumps(d) - assert d == { - "Interface": [ - {"IP": ["127.0.0.1", "192.168.0.1"]}, - {"IP": ["172.16.0.1"]}, - ] - } - - -def test_response_basic(): - class Schema(schema.ResponseSchema): - fields = { - "Foo": fields.Int(required=True), - "Bar": fields.Int(required=False), - "Default": fields.Int(default=42), - "Call": fields.List(fields.Int(), default=list), - } - - assert Schema().dumps({"Foo": "42"}) == { - "Foo": 42, - "Default": 42, - "Call": [], - } - assert Schema().loads({"Foo": "42"}) == { - "Foo": 42, - "Default": 42, - "Call": [], - } - - with pytest.raises(exc.ValidationException): - Schema().dumps({}) - - with pytest.raises(exc.ValidationException): - Schema().dumps({"Foo": "bar"}) - - with pytest.raises(exc.ValidationException): - Schema().dumps({}) - - with pytest.raises(exc.ValidationException): - Schema().dumps({"Foo": "bar"}) - - -def test_response_array(): - class Schema(schema.ResponseSchema): - fields = {"IP": fields.List(fields.Str())} - - d = Schema().loads({}) - assert d == {"IP": []} - - d = Schema().loads({"IP": ["127.0.0.1"]}) - assert d == {"IP": ["127.0.0.1"]} - - with pytest.raises(exc.ValidationException): - Schema().loads({"IP": 1}) - - -def test_response_array_with_default(): - class Schema(schema.ResponseSchema): - fields = {"IP": fields.List(fields.Str(), default=["127.0.0.1"])} - - # basic - d = Schema().dumps({"IP": ["192.168.0.1"]}) - assert d == {"IP": ["192.168.0.1"]} - - # default by default value - d = Schema().dumps({}) - assert d == {"IP": ["127.0.0.1"]} - - -def test_response_object_model(): - class Schema(schema.ResponseSchema): - fields = {"IP": fields.List(fields.Str())} - - class NestedObjectSchema(schema.ResponseSchema): - fields = {"EIP": Schema()} - - # basic - d = NestedObjectSchema().loads({"EIP": {"IP": ["127.0.0.1"]}}) - assert d == {"EIP": {"IP": ["127.0.0.1"]}} - - # default by zero value - d = NestedObjectSchema().loads({}) - assert d == {"EIP": {"IP": []}} - - -def test_response_object_model_case_insensitive(): - class Schema(schema.ResponseSchema): - fields = {"IP": fields.List(fields.Str())} - - class NestedObjectSchema(schema.ResponseSchema): - fields = {"EIP": Schema()} - - d = NestedObjectSchema().loads({"eip": {"Ip": ["127.0.0.1"]}}) - assert d == {"EIP": {"IP": ["127.0.0.1"]}} - - -def test_response_array_model_with_default(): - class Schema(schema.ResponseSchema): - fields = {"IP": fields.List(fields.Str())} - - class NestedArraySchema(schema.ResponseSchema): - fields = { - "Interface": fields.List( - Schema(default=lambda: {"IP": ["127.0.0.1"]}), - default=lambda: [{"IP": ["192.168.1.1"]}], - ) - } - - # the top-level default value will overwrite nested default value - d = NestedArraySchema().dumps({}) - assert d == {"Interface": [{"IP": ["192.168.1.1"]}]} - - # nested value - d = { - "Interface": [ - {"IP": ["127.0.0.1", "192.168.0.1"]}, - {"IP": ["172.16.0.1"]}, - ] - } - d = NestedArraySchema().dumps(d) - assert d == { - "Interface": [ - {"IP": ["127.0.0.1", "192.168.0.1"]}, - {"IP": ["172.16.0.1"]}, - ] - } diff --git a/tests/test_unit/test_core/test_transport.py b/tests/test_unit/test_core/test_transport.py deleted file mode 100644 index 484a4a70..00000000 --- a/tests/test_unit/test_core/test_transport.py +++ /dev/null @@ -1,136 +0,0 @@ -import json -import uuid - -import pytest -import logging -import requests_mock -from collections import Counter - -from tests.test_unit.test_core.consts import TEST_URL -from ucloud.core import exc -from ucloud.core.transport import ( - RequestsTransport, - Request, - Response, - utils, - http, -) - -logger = logging.getLogger(__name__) - - -@pytest.fixture(name="transport", scope="function", autouse=True) -def transport_factory(): - return RequestsTransport() - - -@pytest.mark.parametrize( - argnames=("status_code", "content", "expect", "expect_exc", "retryable"), - argvalues=( - ( - 200, - '{"Action": "Mock", "RetCode": 0}', - {"Action": "Mock", "RetCode": 0}, - None, - False, - ), - (500, "{}", None, exc.HTTPStatusException, False), - (429, "{}", None, exc.HTTPStatusException, True), - (500, "x", None, exc.HTTPStatusException, False), - (200, "x", None, exc.InvalidResponseException, False), - ), -) -def test_transport( - transport, status_code, content, expect, expect_exc, retryable -): - with requests_mock.Mocker() as m: - m.post(TEST_URL, text=content, status_code=status_code) - - got_exc = None - try: - resp = transport.send(Request(url=TEST_URL, method="post", json={})) - assert resp.json() == expect - except Exception as e: - got_exc = e - - if expect_exc: - assert str(got_exc) - assert got_exc.retryable == retryable - assert isinstance(got_exc, expect_exc) - - -def test_transport_handler(transport): - req_key, resp_key, exc_key = "req", "resp", "exc" - counter = Counter({req_key: 0, resp_key: 0, exc_key: 0}) - - def request_handler(r): - counter[req_key] += 1 - return r - - def response_handler(r): - counter[resp_key] += 1 - return r - - def exception_handler(r): - counter[exc_key] += 1 - return r - - transport.middleware.request(handler=request_handler) - transport.middleware.response(handler=response_handler) - transport.middleware.exception(handler=exception_handler) - - expect = {"foo": "bar"} - req = Request(url=TEST_URL, method="post", json=expect) - - with requests_mock.Mocker() as m: - request_uuid = str(uuid.uuid4()) - m.post( - TEST_URL, - text=json.dumps(expect), - status_code=200, - headers={http.REQUEST_UUID_HEADER_KEY: request_uuid}, - ) - resp = transport.send(req) - assert resp.text - assert resp.json() == expect - assert resp.request_uuid == request_uuid - - with pytest.raises(Exception): - transport.send(Request(url="/")) - - assert counter[req_key] == 2 - assert counter[resp_key] == 1 - assert counter[exc_key] == 1 - - -def test_guess_json_utf(): - encodings = [ - "utf-32", - "utf-8-sig", - "utf-16", - "utf-8", - "utf-16-be", - "utf-16-le", - "utf-32-be", - "utf-32-le", - ] - for e in encodings: - s = json.dumps("表意字符").encode(e) - assert utils.guess_json_utf(s) == e - - -def test_request_methods(): - req = Request( - TEST_URL, data={"foo": 42}, json={"bar": 42}, params={"q": "search"} - ) - assert req.payload() == {"foo": 42, "bar": 42, "q": "search"} - - -def test_response_methods(): - r = Response(TEST_URL, "post") - assert not r.text - assert r.json() is None - - r = Response(TEST_URL, "post", content=b"\xd6", encoding="utf-8") - with pytest.raises(exc.InvalidResponseException): - assert r.json() is None diff --git a/tests/test_unit/test_helpers/test_utils.py b/tests/test_unit/test_helpers/test_utils.py deleted file mode 100644 index 9ae0ac0d..00000000 --- a/tests/test_unit/test_helpers/test_utils.py +++ /dev/null @@ -1,11 +0,0 @@ -from ucloud.helpers import utils - - -def test_b64encode(): - encoded = utils.b64encode("foobar42") - assert encoded == "Zm9vYmFyNDI=" - - -def test_b64decode(): - decoded = utils.b64decode("Zm9vYmFyNDI=") - assert decoded == "foobar42" diff --git a/tests/test_unit/test_helpers/test_wait.py b/tests/test_unit/test_helpers/test_wait.py deleted file mode 100644 index bdade912..00000000 --- a/tests/test_unit/test_helpers/test_wait.py +++ /dev/null @@ -1,20 +0,0 @@ -import pytest - -from ucloud.helpers import wait - - -def test_wait(): - with pytest.raises(wait.WaitTimeoutException): - wait.wait_for_state( - pending=["pending"], - target=["running"], - refresh=lambda: "pending", - timeout=0.5, - ) - - wait.wait_for_state( - pending=["pending"], - target=["running"], - refresh=lambda: "running", - timeout=0.5, - ) diff --git a/tests/test_unit/test_testing/test_utest.py b/tests/test_unit/test_testing/test_utest.py deleted file mode 100644 index 0ff4fb56..00000000 --- a/tests/test_unit/test_testing/test_utest.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest - -from ucloud.testing import utest, env - - -@pytest.mark.skipif(env.is_ut(), reason=env.get_skip_reason()) -def test_acc_pre_check(self, client): - assert str(client) - assert client.config.to_dict() - assert client.credential.to_dict() - env.pre_check_env() - - -def test_value_at_path(): - d = { - "Action": "DescribeEIPResponse", - "EIPSet": [ - { - "Resource": { - "ResourceID": "uhost-war3png3", - "ResourceName": "eip-s1-bgp", - "ResourceType": "uhost", - "Zone": "cn-bj2-05", - } - } - ], - "RetCode": 0, - "TotalBandwidth": 6, - "TotalCount": 3, - } - assert ( - utest.value_at_path(d, "EIPSet.0.Resource.ResourceID") - == "uhost-war3png3" - ) diff --git a/ucloud/__pycache__/__init__.cpython-37.pyc b/ucloud/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 00000000..67048c68 Binary files /dev/null and b/ucloud/__pycache__/__init__.cpython-37.pyc differ diff --git a/ucloud/__pycache__/version.cpython-37.pyc b/ucloud/__pycache__/version.cpython-37.pyc new file mode 100644 index 00000000..60e6acd1 Binary files /dev/null and b/ucloud/__pycache__/version.cpython-37.pyc differ diff --git a/ucloud/services/iam/client.py b/ucloud/services/iam/client.py deleted file mode 100644 index 12437c1e..00000000 --- a/ucloud/services/iam/client.py +++ /dev/null @@ -1,1078 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.iam.schemas import apis - - -class IAMClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(IAMClient, self).__init__(config, transport, middleware, logger) - - def add_user_to_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUserToGroup - 添加成员到用户组 - - **Request** - - - **GroupName** (str) - (Required) 用户组名 - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.AddUserToGroupRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUserToGroup", d, **kwargs) - return apis.AddUserToGroupResponseSchema().loads(resp) - - def attach_policies_to_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AttachPoliciesToGroup - 关联IAM策略到用户组 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **PolicyURNs** (list) - (Required) 策略URN - - **Scope** (str) - (Required) 应用范围 - - **ProjectID** (str) - 项目ID(当Scope=Specified时ProjectID必传) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.AttachPoliciesToGroupRequestSchema().dumps(d) - - resp = self.invoke("AttachPoliciesToGroup", d, **kwargs) - return apis.AttachPoliciesToGroupResponseSchema().loads(resp) - - def attach_policies_to_user( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AttachPoliciesToUser - 关联IAM策略到用户 - - **Request** - - - **PolicyURNs** (list) - (Required) 策略URN - - **Scope** (str) - (Required) 应用范围 - - **UserName** (str) - (Required) 用户名称 - - **ProjectID** (str) - 项目ID(当Scope=Specified时ProjectID必传) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.AttachPoliciesToUserRequestSchema().dumps(d) - - resp = self.invoke("AttachPoliciesToUser", d, **kwargs) - return apis.AttachPoliciesToUserResponseSchema().loads(resp) - - def create_access_key( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateAccessKey - 创建用户密钥 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **AccessKey** (dict) - 见 **AccessKey** 模型定义 - - **Response Model** - - **AccessKey** - - **AccessKeyID** (str) - 用户公钥 - - **AccessKeySecret** (str) - 用户私钥 - - **CreatedAt** (int) - 密钥创建时间 - - **DeletedAt** (int) - 密钥删除时间 - - **Description** (str) - 密钥备注 - - **ExpiredAt** (int) - 密钥过期时间 - - **Status** (str) - 密钥状态 - - **UpdatedAt** (int) - 密钥更新时间 - - **UserId** (int) - 用户ID - - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateAccessKeyRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateAccessKey", d, **kwargs) - return apis.CreateAccessKeyResponseSchema().loads(resp) - - def create_group(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateGroup - 创建用户组 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **Description** (str) - 对用户组的描述 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateGroupRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateGroup", d, **kwargs) - return apis.CreateGroupResponseSchema().loads(resp) - - def create_iam_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateIAMPolicy - 创建IAM策略 - - **Request** - - - **Document** (str) - (Required) 策略内容 - - **PolicyName** (str) - (Required) 策略名称 - - **Description** (str) - 描述 - - **ScopeType** (str) - 策略作用域类型 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateIAMPolicyRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateIAMPolicy", d, **kwargs) - return apis.CreateIAMPolicyResponseSchema().loads(resp) - - def create_project( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateProject - 创建项目 - - **Request** - - - **ProjectName** (str) - (Required) 项目名称,不得与现有项目重名 - - **Response** - - - **ProjectId** (str) - 所创建项目的Id - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateProjectRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateProject", d, **kwargs) - return apis.CreateProjectResponseSchema().loads(resp) - - def create_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateUser - 创建IAM用户 - - **Request** - - - **AccessKeyStatus** (str) - (Required) API密钥访问状态(LoginProfileStatus值为Inactive时,AccessKeyStatus不能为Inactive) - - **LoginProfileStatus** (str) - (Required) 控制台登录访问状态(AccessKeyStatus值为Inactive时,LoginProfileStatus不能为Inactive) - - **UserName** (str) - (Required) 用户名 - - **DisplayName** (str) - 显示名称 - - **Email** (str) - 用户邮箱(LoginProfileStatus值等于Active必传,LoginProfileStatus值等于Inactive不传) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateUserRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUser", d, **kwargs) - return apis.CreateUserResponseSchema().loads(resp) - - def delete_access_key( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteAccessKey - 删除用户密钥 - - **Request** - - - **AccessKeyID** (str) - (Required) 用户公钥 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteAccessKeyRequestSchema().dumps(d) - - resp = self.invoke("DeleteAccessKey", d, **kwargs) - return apis.DeleteAccessKeyResponseSchema().loads(resp) - - def delete_group(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DeleteGroup - 删除用户组 - - **Request** - - - **GroupName** (str) - (Required) 待删除用户组名称 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteGroupRequestSchema().dumps(d) - - resp = self.invoke("DeleteGroup", d, **kwargs) - return apis.DeleteGroupResponseSchema().loads(resp) - - def delete_iam_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteIAMPolicy - 删除IAM策略 - - **Request** - - - **PolicyURN** (str) - (Required) 策略URN - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteIAMPolicyRequestSchema().dumps(d) - - resp = self.invoke("DeleteIAMPolicy", d, **kwargs) - return apis.DeleteIAMPolicyResponseSchema().loads(resp) - - def delete_project( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteProject - 删除项目 - - **Request** - - - **ProjectID** (str) - (Required) 项目ID - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteProjectRequestSchema().dumps(d) - - resp = self.invoke("DeleteProject", d, **kwargs) - return apis.DeleteProjectResponseSchema().loads(resp) - - def delete_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DeleteUser - 删除用户 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteUserRequestSchema().dumps(d) - - resp = self.invoke("DeleteUser", d, **kwargs) - return apis.DeleteUserResponseSchema().loads(resp) - - def detach_policies_from_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DetachPoliciesFromGroup - 移除用户组关联的IAM策略 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **PolicyURNs** (list) - (Required) 策略URN - - **Scope** (str) - (Required) 应用范围 - - **ProjectID** (str) - 项目ID(当Scope=Specified时ProjectID必传) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DetachPoliciesFromGroupRequestSchema().dumps(d) - - resp = self.invoke("DetachPoliciesFromGroup", d, **kwargs) - return apis.DetachPoliciesFromGroupResponseSchema().loads(resp) - - def detach_policies_from_user( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DetachPoliciesFromUser - 移除用户关联的IAM策略 - - **Request** - - - **PolicyURNs** (list) - (Required) 策略URN - - **Scope** (str) - (Required) 应用范围 - - **UserName** (str) - (Required) 用户名 - - **ProjectID** (str) - 项目ID(当Scope=Specified时ProjectID必传) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DetachPoliciesFromUserRequestSchema().dumps(d) - - resp = self.invoke("DetachPoliciesFromUser", d, **kwargs) - return apis.DetachPoliciesFromUserResponseSchema().loads(resp) - - def get_group(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """GetGroup - 查询用户组详情 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **Response** - - - **Group** (dict) - 见 **Group** 模型定义 - - **Message** (str) - 错误消息 - - **Response Model** - - **Group** - - **CreatedAt** (int) - 用户组创建时间戳 - - **Description** (str) - 用户组描述信息 - - **GroupName** (str) - 用户组名称 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetGroupRequestSchema().dumps(d) - - resp = self.invoke("GetGroup", d, **kwargs) - return apis.GetGroupResponseSchema().loads(resp) - - def get_iam_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetIAMPolicy - 获取策略详情 - - **Request** - - - **PolicyURN** (str) - (Required) 策略URN - - **Response** - - - **Message** (str) - 错误消息 - - **Policy** (dict) - 见 **IAMPolicy** 模型定义 - - **Response Model** - - **IAMPolicy** - - **CreatedAt** (int) - IAM权限策略创建时间 - - **Description** (str) - IAM权限策略描述 - - **Document** (str) - IAM权限策略文本 - - **PolicyName** (str) - 策略名称 - - **PolicyURN** (str) - IAM权限策略URN - - **ScopeType** (str) - IAM权限策略应用范围(ScopeRequired:项目级, ScopeEmpty:全局级, ScopeUnrestricted:项目级/全局级) - - **UpdatedAt** (int) - IAM权限策略更新时间 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetIAMPolicyRequestSchema().dumps(d) - - resp = self.invoke("GetIAMPolicy", d, **kwargs) - return apis.GetIAMPolicyResponseSchema().loads(resp) - - def get_login_profile( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetLoginProfile - 获取用户登录资料 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **LoginProfile** (dict) - 见 **LoginProfile** 模型定义 - - **Response Model** - - **LoginProfile** - - **MFABindRequired** (bool) - 是否必需绑定MFA - - **MaxPasswordAge** (int) - 密码最长有效期,单位:天 - - **Status** (str) - 登录资料状态 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetLoginProfileRequestSchema().dumps(d) - - resp = self.invoke("GetLoginProfile", d, **kwargs) - return apis.GetLoginProfileResponseSchema().loads(resp) - - def get_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """GetUser - 获取用户信息 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **Message** (str) - 错误消息 - - **User** (dict) - 见 **User** 模型定义 - - **Response Model** - - **User** - - **CreatedAt** (int) - 创建时间戳 - - **DisplayName** (str) - 昵称 - - **Email** (str) - 邮箱 - - **Status** (str) - 状态(Active:正常,Inactive:未激活,Frozen:冻结,ConsoleInactive:控制台未激活) - - **UserName** (str) - 用户名 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetUserRequestSchema().dumps(d) - - resp = self.invoke("GetUser", d, **kwargs) - return apis.GetUserResponseSchema().loads(resp) - - def list_access_keys( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListAccessKeys - 获取指定用户密钥列表 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **AccessKey** (list) - 见 **AccessKey** 模型定义 - - **Response Model** - - **AccessKey** - - **AccessKeyID** (str) - 用户公钥 - - **AccessKeySecret** (str) - 用户私钥 - - **CreatedAt** (int) - 密钥创建时间 - - **DeletedAt** (int) - 密钥删除时间 - - **Description** (str) - 密钥备注 - - **ExpiredAt** (int) - 密钥过期时间 - - **Status** (str) - 密钥状态 - - **UpdatedAt** (int) - 密钥更新时间 - - **UserId** (int) - 用户ID - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListAccessKeysRequestSchema().dumps(d) - - resp = self.invoke("ListAccessKeys", d, **kwargs) - return apis.ListAccessKeysResponseSchema().loads(resp) - - def list_entities_for_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListEntitiesForPolicy - 列出引用权限策略的实体 - - **Request** - - - **PolicyURN** (str) - (Required) 策略URN - - **Limit** (str) - 需要查询的用户组数量 - - **Offset** (str) - 从第几条数据开始查询 - - **Response** - - - **Entities** (list) - 见 **Entity** 模型定义 - - **Message** (str) - 错误消息 - - **TotalCount** (int) - 数据集合数量 - - **Response Model** - - **Entity** - - **AttachedAt** (int) - 引用时间 - - **DisplayName** (str) - 子账户展示名称 - - **EntityKind** (str) - 实体类型(User:用户,Group) - - **EntityName** (str) - 实体名称 - - **Scope** (str) - 生效空间 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListEntitiesForPolicyRequestSchema().dumps(d) - - resp = self.invoke("ListEntitiesForPolicy", d, **kwargs) - return apis.ListEntitiesForPolicyResponseSchema().loads(resp) - - def list_entities_for_project( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListEntitiesForProject - 列出拥有指定项目权限的实体 - - **Request** - - - **ProjectID** (str) - (Required) 项目ID - - **Limit** (str) - 需要查询的用户组数量 - - **Offset** (str) - 从第几条数据开始查询 - - **Response** - - - **Entities** (list) - 见 **Entity** 模型定义 - - **Message** (str) - 错误消息 - - **TotalCount** (int) - 数据集合数量 - - **Response Model** - - **Entity** - - **AttachedAt** (int) - 引用时间 - - **EntityKind** (str) - 实体类型(User:用户,Group) - - **EntityName** (str) - 实体名称 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListEntitiesForProjectRequestSchema().dumps(d) - - resp = self.invoke("ListEntitiesForProject", d, **kwargs) - return apis.ListEntitiesForProjectResponseSchema().loads(resp) - - def list_groups(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """ListGroups - 列出用户组 - - **Request** - - - **Response** - - - **Groups** (list) - 见 **Group** 模型定义 - - **Message** (str) - 错误消息 - - **TotalCount** (int) - 总数 - - **Response Model** - - **Group** - - **CreatedAt** (int) - 用户组创建时间戳 - - **Description** (str) - 用户组描述信息 - - **GroupName** (str) - 用户组名称 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListGroupsRequestSchema().dumps(d) - - resp = self.invoke("ListGroups", d, **kwargs) - return apis.ListGroupsResponseSchema().loads(resp) - - def list_policies( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListPolicies - 获取IAM策略列表 - - **Request** - - - **Owner** (str) - (Required) 策略所有者 - - **Limit** (str) - 需要查询的用户组数量 - - **Offset** (str) - 从第几条数据开始查询 - - **Response** - - - **Message** (str) - 错误消息 - - **Policies** (list) - 见 **IAMPolicy** 模型定义 - - **TotalCount** (int) - 数据集合数量 - - **Response Model** - - **IAMPolicy** - - **CreatedAt** (int) - IAM权限策略创建时间 - - **Description** (str) - IAM权限策略描述 - - **Document** (str) - IAM权限策略文本 - - **PolicyName** (str) - 策略名称 - - **PolicyURN** (str) - IAM权限策略URN - - **ScopeType** (str) - IAM权限策略应用范围(ScopeRequired:项目级, ScopeEmpty:全局级, ScopeUnrestricted:项目级/全局级) - - **UpdatedAt** (int) - IAM权限策略更新时间 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListPoliciesRequestSchema().dumps(d) - - resp = self.invoke("ListPolicies", d, **kwargs) - return apis.ListPoliciesResponseSchema().loads(resp) - - def list_policies_for_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListPoliciesForGroup - 列出用户组关联的权限策略 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **Limit** (str) - 需要查询的用户组数量 - - **Offset** (str) - 从第几条数据开始查询 - - **ProjectID** (str) - 项目ID - - **Scope** (str) - 应用范围 - - **Response** - - - **Message** (str) - 错误消息 - - **Policies** (list) - 见 **Policy** 模型定义 - - **TotalCount** (int) - 总数 - - **Response Model** - - **Policy** - - **AttachedAt** (int) - 策略被添加到用户组时的时间戳 - - **CreatedAt** (int) - 创建时间 - - **Description** (str) - 描述 - - **PolicyName** (str) - 权限策略名称 - - **PolicyURN** (str) - 策略URN - - **ProjectID** (str) - 项目ID - - **Scope** (str) - 应用范围(ScopeRequired:项目级, ScopeEmpty:全局级, ScopeUnrestricted:项目级/全局级) - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListPoliciesForGroupRequestSchema().dumps(d) - - resp = self.invoke("ListPoliciesForGroup", d, **kwargs) - return apis.ListPoliciesForGroupResponseSchema().loads(resp) - - def list_policies_for_user( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListPoliciesForUser - 列出用户关联的IAM策略 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **Limit** (str) - 需要查询的用户组数量 - - **Offset** (str) - 从第几条数据开始查询 - - **ProjectID** (str) - 项目ID - - **Scope** (str) - 应用范围 - - **Response** - - - **Message** (str) - 错误消息 - - **Policies** (list) - 见 **Policy** 模型定义 - - **TotalCount** (int) - 数据集合数量 - - **Response Model** - - **Policy** - - **AttachedAt** (int) - 策略被添加到用户组时的时间戳 - - **CreatedAt** (int) - 创建时间 - - **Description** (str) - 描述 - - **PolicyName** (str) - 权限策略名称 - - **PolicyURN** (str) - 策略URN - - **ProjectID** (str) - 项目ID - - **Scope** (str) - 应用范围(ScopeRequired:项目级, ScopeEmpty:全局级, ScopeUnrestricted:项目级/全局级) - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListPoliciesForUserRequestSchema().dumps(d) - - resp = self.invoke("ListPoliciesForUser", d, **kwargs) - return apis.ListPoliciesForUserResponseSchema().loads(resp) - - def list_projects( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListProjects - 列出所有项目 - - **Request** - - - **Limit** (str) - - - **Offset** (str) - - - **Response** - - - **Message** (str) - 错误消息 - - **Projects** (list) - 见 **Project** 模型定义 - - **TotalCount** (int) - 总数 - - **Response Model** - - **Project** - - **CreatedAt** (int) - 创建时间 - - **ProjectID** (str) - 项目ID - - **ProjectName** (str) - 项目名称 - - **UserCount** (int) - 用户数量 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListProjectsRequestSchema().dumps(d) - - resp = self.invoke("ListProjects", d, **kwargs) - return apis.ListProjectsResponseSchema().loads(resp) - - def list_users(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """ListUsers - 列出用户列表 - - **Request** - - - **Limit** (str) - 分页Limit(默认:10,最大100) - - **Offset** (str) - 分页offset - - **Response** - - - **Message** (str) - 错误消息 - - **TotalCount** (int) - 用户数量 - - **Users** (list) - 见 **Users** 模型定义 - - **Response Model** - - **Users** - - **CreatedAt** (int) - 创建时间戳 - - **DisplayName** (str) - 昵称 - - **Email** (str) - 邮箱 - - **Status** (str) - 状态(Active:正常,Inactive:未激活,Frozen:冻结,ConsoleInactive:控制台未激活) - - **UserName** (str) - 用户名 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListUsersRequestSchema().dumps(d) - - resp = self.invoke("ListUsers", d, **kwargs) - return apis.ListUsersResponseSchema().loads(resp) - - def list_users_for_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUsersForGroup - 列出用户组包含的用户 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **Limit** (str) - 需要查询的组内用户数量 - - **Offset** (str) - 从第几条数据开始查询 - - **Response** - - - **Message** (str) - 错误消息 - - **TotalCount** (int) - 总数 - - **Users** (list) - 见 **UserForGroup** 模型定义 - - **Response Model** - - **UserForGroup** - - **DisplayName** (str) - 昵称 - - **Email** (str) - 邮箱 - - **JoinedAt** (int) - 用户被添加到用户组时的时间戳 - - **UserName** (str) - 用户名 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListUsersForGroupRequestSchema().dumps(d) - - resp = self.invoke("ListUsersForGroup", d, **kwargs) - return apis.ListUsersForGroupResponseSchema().loads(resp) - - def modify_project( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyProject - 修改项目 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ProjectName** (str) - (Required) 新的项目名称 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyProjectRequestSchema().dumps(d) - - resp = self.invoke("ModifyProject", d, **kwargs) - return apis.ModifyProjectResponseSchema().loads(resp) - - def remove_user_from_group( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveUserFromGroup - 移除用户组中的IAM用户 - - **Request** - - - **GroupName** (str) - (Required) 用户组名称 - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.RemoveUserFromGroupRequestSchema().dumps(d) - - resp = self.invoke("RemoveUserFromGroup", d, **kwargs) - return apis.RemoveUserFromGroupResponseSchema().loads(resp) - - def remove_user_from_project( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveUserFromProject - 移除项目中的IAM用户,同时移除此用户在此项目下的所有权限 - - **Request** - - - **ProjectID** (str) - (Required) 项目ID - - **UserName** (str) - (Required) 用户名 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.RemoveUserFromProjectRequestSchema().dumps(d) - - resp = self.invoke("RemoveUserFromProject", d, **kwargs) - return apis.RemoveUserFromProjectResponseSchema().loads(resp) - - def update_access_key( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateAccessKey - 修改用户密钥状态 - - **Request** - - - **AccessKeyID** (str) - (Required) 用户公钥 - - **Description** (str) - 密钥描述 - - **Status** (str) - 密钥状态 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateAccessKeyRequestSchema().dumps(d) - - resp = self.invoke("UpdateAccessKey", d, **kwargs) - return apis.UpdateAccessKeyResponseSchema().loads(resp) - - def update_group(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """UpdateGroup - 更新用户组信息 - - **Request** - - - **Description** (str) - (Required) 用户组描述信息 - - **GroupName** (str) - (Required) 用户组名称 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateGroupRequestSchema().dumps(d) - - resp = self.invoke("UpdateGroup", d, **kwargs) - return apis.UpdateGroupResponseSchema().loads(resp) - - def update_iam_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateIAMPolicy - 更新IAM策略 - - **Request** - - - **Document** (str) - (Required) 策略内容 - - **PolicyURN** (str) - (Required) 策略URN - - **Description** (str) - 描述 - - **VersionDescription** (str) - 策略版本描述 - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateIAMPolicyRequestSchema().dumps(d) - - resp = self.invoke("UpdateIAMPolicy", d, **kwargs) - return apis.UpdateIAMPolicyResponseSchema().loads(resp) - - def update_iam_policy_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateIAMPolicyName - 修改自定义策略名称 - - **Request** - - - **Description** (str) - (Required) 策略描述 - - **PolicyName** (str) - (Required) 策略名称 - - **PolicyURN** (str) - (Required) 策略URN - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateIAMPolicyNameRequestSchema().dumps(d) - - resp = self.invoke("UpdateIAMPolicyName", d, **kwargs) - return apis.UpdateIAMPolicyNameResponseSchema().loads(resp) - - def update_login_profile( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateLoginProfile - 更新用户登录资料 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **MFABindRequired** (bool) - 是否必需绑定MFA - - **MaxPasswordAge** (int) - 密码最长有效期,单位:天 - - **Status** (str) - 登录资料状态 - - **UserEmail** (str) - 用户真实邮箱 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateLoginProfileRequestSchema().dumps(d) - - resp = self.invoke("UpdateLoginProfile", d, **kwargs) - return apis.UpdateLoginProfileResponseSchema().loads(resp) - - def update_user(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """UpdateUser - 更新用户 - - **Request** - - - **UserName** (str) - (Required) 用户名 - - **DisplayName** (str) - 用户名称(用户名称和用户状态不能同时为空) - - **NewUserName** (str) - 新用户名 - - **Status** (str) - 用户状态(用户名称和用户状态不能同时为空,枚举值:Active:解冻,Frozen:冻结) - - **Response** - - - **Message** (str) - 错误消息 - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateUserRequestSchema().dumps(d) - - resp = self.invoke("UpdateUser", d, **kwargs) - return apis.UpdateUserResponseSchema().loads(resp) diff --git a/ucloud/services/iam/schemas/apis.py b/ucloud/services/iam/schemas/apis.py deleted file mode 100644 index 399af8ea..00000000 --- a/ucloud/services/iam/schemas/apis.py +++ /dev/null @@ -1,973 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.iam.schemas import models - -""" IAM API Schema -""" - - -""" -API: AddUserToGroup - -添加成员到用户组 -""" - - -class AddUserToGroupRequestSchema(schema.RequestSchema): - """AddUserToGroup - 添加成员到用户组""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class AddUserToGroupResponseSchema(schema.ResponseSchema): - """AddUserToGroup - 添加成员到用户组""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: AttachPoliciesToGroup - -关联IAM策略到用户组 -""" - - -class AttachPoliciesToGroupRequestSchema(schema.RequestSchema): - """AttachPoliciesToGroup - 关联IAM策略到用户组""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "PolicyURNs": fields.List(fields.Str()), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=True, dump_to="Scope"), - } - - -class AttachPoliciesToGroupResponseSchema(schema.ResponseSchema): - """AttachPoliciesToGroup - 关联IAM策略到用户组""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: AttachPoliciesToUser - -关联IAM策略到用户 -""" - - -class AttachPoliciesToUserRequestSchema(schema.RequestSchema): - """AttachPoliciesToUser - 关联IAM策略到用户""" - - fields = { - "PolicyURNs": fields.List(fields.Str()), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=True, dump_to="Scope"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class AttachPoliciesToUserResponseSchema(schema.ResponseSchema): - """AttachPoliciesToUser - 关联IAM策略到用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateAccessKey - -创建用户密钥 -""" - - -class CreateAccessKeyRequestSchema(schema.RequestSchema): - """CreateAccessKey - 创建用户密钥""" - - fields = { - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class CreateAccessKeyResponseSchema(schema.ResponseSchema): - """CreateAccessKey - 创建用户密钥""" - - fields = { - "AccessKey": models.AccessKeySchema(), - } - - -""" -API: CreateGroup - -创建用户组 -""" - - -class CreateGroupRequestSchema(schema.RequestSchema): - """CreateGroup - 创建用户组""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "GroupName": fields.Str(required=True, dump_to="GroupName"), - } - - -class CreateGroupResponseSchema(schema.ResponseSchema): - """CreateGroup - 创建用户组""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateIAMPolicy - -创建IAM策略 -""" - - -class CreateIAMPolicyRequestSchema(schema.RequestSchema): - """CreateIAMPolicy - 创建IAM策略""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Document": fields.Str(required=True, dump_to="Document"), - "PolicyName": fields.Str(required=True, dump_to="PolicyName"), - "ScopeType": fields.Str(required=False, dump_to="ScopeType"), - } - - -class CreateIAMPolicyResponseSchema(schema.ResponseSchema): - """CreateIAMPolicy - 创建IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateProject - -创建项目 -""" - - -class CreateProjectRequestSchema(schema.RequestSchema): - """CreateProject - 创建项目""" - - fields = { - "ProjectName": fields.Str(required=True, dump_to="ProjectName"), - } - - -class CreateProjectResponseSchema(schema.ResponseSchema): - """CreateProject - 创建项目""" - - fields = { - "ProjectId": fields.Str(required=True, load_from="ProjectId"), - } - - -""" -API: CreateUser - -创建IAM用户 -""" - - -class CreateUserRequestSchema(schema.RequestSchema): - """CreateUser - 创建IAM用户""" - - fields = { - "AccessKeyStatus": fields.Str(required=True, dump_to="AccessKeyStatus"), - "DisplayName": fields.Str(required=False, dump_to="DisplayName"), - "Email": fields.Str(required=False, dump_to="Email"), - "LoginProfileStatus": fields.Str( - required=True, dump_to="LoginProfileStatus" - ), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class CreateUserResponseSchema(schema.ResponseSchema): - """CreateUser - 创建IAM用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteAccessKey - -删除用户密钥 -""" - - -class DeleteAccessKeyRequestSchema(schema.RequestSchema): - """DeleteAccessKey - 删除用户密钥""" - - fields = { - "AccessKeyID": fields.Str(required=True, dump_to="AccessKeyID"), - } - - -class DeleteAccessKeyResponseSchema(schema.ResponseSchema): - """DeleteAccessKey - 删除用户密钥""" - - fields = {} - - -""" -API: DeleteGroup - -删除用户组 -""" - - -class DeleteGroupRequestSchema(schema.RequestSchema): - """DeleteGroup - 删除用户组""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - } - - -class DeleteGroupResponseSchema(schema.ResponseSchema): - """DeleteGroup - 删除用户组""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteIAMPolicy - -删除IAM策略 -""" - - -class DeleteIAMPolicyRequestSchema(schema.RequestSchema): - """DeleteIAMPolicy - 删除IAM策略""" - - fields = { - "PolicyURN": fields.Str(required=True, dump_to="PolicyURN"), - } - - -class DeleteIAMPolicyResponseSchema(schema.ResponseSchema): - """DeleteIAMPolicy - 删除IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteProject - -删除项目 -""" - - -class DeleteProjectRequestSchema(schema.RequestSchema): - """DeleteProject - 删除项目""" - - fields = { - "ProjectID": fields.Str(required=True, dump_to="ProjectID"), - } - - -class DeleteProjectResponseSchema(schema.ResponseSchema): - """DeleteProject - 删除项目""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteUser - -删除用户 -""" - - -class DeleteUserRequestSchema(schema.RequestSchema): - """DeleteUser - 删除用户""" - - fields = { - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class DeleteUserResponseSchema(schema.ResponseSchema): - """DeleteUser - 删除用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DetachPoliciesFromGroup - -移除用户组关联的IAM策略 -""" - - -class DetachPoliciesFromGroupRequestSchema(schema.RequestSchema): - """DetachPoliciesFromGroup - 移除用户组关联的IAM策略""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "PolicyURNs": fields.List(fields.Str()), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=True, dump_to="Scope"), - } - - -class DetachPoliciesFromGroupResponseSchema(schema.ResponseSchema): - """DetachPoliciesFromGroup - 移除用户组关联的IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DetachPoliciesFromUser - -移除用户关联的IAM策略 -""" - - -class DetachPoliciesFromUserRequestSchema(schema.RequestSchema): - """DetachPoliciesFromUser - 移除用户关联的IAM策略""" - - fields = { - "PolicyURNs": fields.List(fields.Str()), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=True, dump_to="Scope"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class DetachPoliciesFromUserResponseSchema(schema.ResponseSchema): - """DetachPoliciesFromUser - 移除用户关联的IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetGroup - -查询用户组详情 -""" - - -class GetGroupRequestSchema(schema.RequestSchema): - """GetGroup - 查询用户组详情""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - } - - -class GetGroupResponseSchema(schema.ResponseSchema): - """GetGroup - 查询用户组详情""" - - fields = { - "Group": models.GroupSchema(), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetIAMPolicy - -获取策略详情 -""" - - -class GetIAMPolicyRequestSchema(schema.RequestSchema): - """GetIAMPolicy - 获取策略详情""" - - fields = { - "PolicyURN": fields.Str(required=True, dump_to="PolicyURN"), - } - - -class GetIAMPolicyResponseSchema(schema.ResponseSchema): - """GetIAMPolicy - 获取策略详情""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Policy": models.IAMPolicySchema(), - } - - -""" -API: GetLoginProfile - -获取用户登录资料 -""" - - -class GetLoginProfileRequestSchema(schema.RequestSchema): - """GetLoginProfile - 获取用户登录资料""" - - fields = { - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class GetLoginProfileResponseSchema(schema.ResponseSchema): - """GetLoginProfile - 获取用户登录资料""" - - fields = { - "LoginProfile": models.LoginProfileSchema(), - } - - -""" -API: GetUser - -获取用户信息 -""" - - -class GetUserRequestSchema(schema.RequestSchema): - """GetUser - 获取用户信息""" - - fields = { - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class GetUserResponseSchema(schema.ResponseSchema): - """GetUser - 获取用户信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "User": models.UserSchema(), - } - - -""" -API: ListAccessKeys - -获取指定用户密钥列表 -""" - - -class ListAccessKeysRequestSchema(schema.RequestSchema): - """ListAccessKeys - 获取指定用户密钥列表""" - - fields = { - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class ListAccessKeysResponseSchema(schema.ResponseSchema): - """ListAccessKeys - 获取指定用户密钥列表""" - - fields = { - "AccessKey": fields.List( - models.AccessKeySchema(), required=True, load_from="AccessKey" - ), - } - - -""" -API: ListEntitiesForPolicy - -列出引用权限策略的实体 -""" - - -class ListEntitiesForPolicyRequestSchema(schema.RequestSchema): - """ListEntitiesForPolicy - 列出引用权限策略的实体""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "PolicyURN": fields.Str(required=True, dump_to="PolicyURN"), - } - - -class ListEntitiesForPolicyResponseSchema(schema.ResponseSchema): - """ListEntitiesForPolicy - 列出引用权限策略的实体""" - - fields = { - "Entities": fields.List( - models.EntitySchema(), required=True, load_from="Entities" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListEntitiesForProject - -列出拥有指定项目权限的实体 -""" - - -class ListEntitiesForProjectRequestSchema(schema.RequestSchema): - """ListEntitiesForProject - 列出拥有指定项目权限的实体""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectID": fields.Str(required=True, dump_to="ProjectID"), - } - - -class ListEntitiesForProjectResponseSchema(schema.ResponseSchema): - """ListEntitiesForProject - 列出拥有指定项目权限的实体""" - - fields = { - "Entities": fields.List( - models.EntitySchema(), required=True, load_from="Entities" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListGroups - -列出用户组 -""" - - -class ListGroupsRequestSchema(schema.RequestSchema): - """ListGroups - 列出用户组""" - - fields = {} - - -class ListGroupsResponseSchema(schema.ResponseSchema): - """ListGroups - 列出用户组""" - - fields = { - "Groups": fields.List( - models.GroupSchema(), required=True, load_from="Groups" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListPolicies - -获取IAM策略列表 -""" - - -class ListPoliciesRequestSchema(schema.RequestSchema): - """ListPolicies - 获取IAM策略列表""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "Owner": fields.Str(required=True, dump_to="Owner"), - } - - -class ListPoliciesResponseSchema(schema.ResponseSchema): - """ListPolicies - 获取IAM策略列表""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Policies": fields.List( - models.IAMPolicySchema(), required=True, load_from="Policies" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListPoliciesForGroup - -列出用户组关联的权限策略 -""" - - -class ListPoliciesForGroupRequestSchema(schema.RequestSchema): - """ListPoliciesForGroup - 列出用户组关联的权限策略""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=False, dump_to="Scope"), - } - - -class ListPoliciesForGroupResponseSchema(schema.ResponseSchema): - """ListPoliciesForGroup - 列出用户组关联的权限策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Policies": fields.List( - models.PolicySchema(), required=True, load_from="Policies" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListPoliciesForUser - -列出用户关联的IAM策略 -""" - - -class ListPoliciesForUserRequestSchema(schema.RequestSchema): - """ListPoliciesForUser - 列出用户关联的IAM策略""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectID": fields.Str(required=False, dump_to="ProjectID"), - "Scope": fields.Str(required=False, dump_to="Scope"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class ListPoliciesForUserResponseSchema(schema.ResponseSchema): - """ListPoliciesForUser - 列出用户关联的IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Policies": fields.List( - models.PolicySchema(), required=True, load_from="Policies" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListProjects - -列出所有项目 -""" - - -class ListProjectsRequestSchema(schema.RequestSchema): - """ListProjects - 列出所有项目""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - } - - -class ListProjectsResponseSchema(schema.ResponseSchema): - """ListProjects - 列出所有项目""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Projects": fields.List( - models.ProjectSchema(), required=True, load_from="Projects" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListUsers - -列出用户列表 -""" - - -class ListUsersRequestSchema(schema.RequestSchema): - """ListUsers - 列出用户列表""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - } - - -class ListUsersResponseSchema(schema.ResponseSchema): - """ListUsers - 列出用户列表""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - "Users": fields.List( - models.UsersSchema(), required=True, load_from="Users" - ), - } - - -""" -API: ListUsersForGroup - -列出用户组包含的用户 -""" - - -class ListUsersForGroupRequestSchema(schema.RequestSchema): - """ListUsersForGroup - 列出用户组包含的用户""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - } - - -class ListUsersForGroupResponseSchema(schema.ResponseSchema): - """ListUsersForGroup - 列出用户组包含的用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - "Users": fields.List( - models.UserForGroupSchema(), required=True, load_from="Users" - ), - } - - -""" -API: ModifyProject - -修改项目 -""" - - -class ModifyProjectRequestSchema(schema.RequestSchema): - """ModifyProject - 修改项目""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ProjectName": fields.Str(required=True, dump_to="ProjectName"), - } - - -class ModifyProjectResponseSchema(schema.ResponseSchema): - """ModifyProject - 修改项目""" - - fields = {} - - -""" -API: RemoveUserFromGroup - -移除用户组中的IAM用户 -""" - - -class RemoveUserFromGroupRequestSchema(schema.RequestSchema): - """RemoveUserFromGroup - 移除用户组中的IAM用户""" - - fields = { - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class RemoveUserFromGroupResponseSchema(schema.ResponseSchema): - """RemoveUserFromGroup - 移除用户组中的IAM用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RemoveUserFromProject - -移除项目中的IAM用户,同时移除此用户在此项目下的所有权限 -""" - - -class RemoveUserFromProjectRequestSchema(schema.RequestSchema): - """RemoveUserFromProject - 移除项目中的IAM用户,同时移除此用户在此项目下的所有权限""" - - fields = { - "ProjectID": fields.Str(required=True, dump_to="ProjectID"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class RemoveUserFromProjectResponseSchema(schema.ResponseSchema): - """RemoveUserFromProject - 移除项目中的IAM用户,同时移除此用户在此项目下的所有权限""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateAccessKey - -修改用户密钥状态 -""" - - -class UpdateAccessKeyRequestSchema(schema.RequestSchema): - """UpdateAccessKey - 修改用户密钥状态""" - - fields = { - "AccessKeyID": fields.Str(required=True, dump_to="AccessKeyID"), - "Description": fields.Str(required=False, dump_to="Description"), - "Status": fields.Str(required=False, dump_to="Status"), - } - - -class UpdateAccessKeyResponseSchema(schema.ResponseSchema): - """UpdateAccessKey - 修改用户密钥状态""" - - fields = {} - - -""" -API: UpdateGroup - -更新用户组信息 -""" - - -class UpdateGroupRequestSchema(schema.RequestSchema): - """UpdateGroup - 更新用户组信息""" - - fields = { - "Description": fields.Str(required=True, dump_to="Description"), - "GroupName": fields.Str(required=True, dump_to="GroupName"), - } - - -class UpdateGroupResponseSchema(schema.ResponseSchema): - """UpdateGroup - 更新用户组信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateIAMPolicy - -更新IAM策略 -""" - - -class UpdateIAMPolicyRequestSchema(schema.RequestSchema): - """UpdateIAMPolicy - 更新IAM策略""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Document": fields.Str(required=True, dump_to="Document"), - "PolicyURN": fields.Str(required=True, dump_to="PolicyURN"), - "VersionDescription": fields.Str( - required=False, dump_to="VersionDescription" - ), - } - - -class UpdateIAMPolicyResponseSchema(schema.ResponseSchema): - """UpdateIAMPolicy - 更新IAM策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateIAMPolicyName - -修改自定义策略名称 -""" - - -class UpdateIAMPolicyNameRequestSchema(schema.RequestSchema): - """UpdateIAMPolicyName - 修改自定义策略名称""" - - fields = { - "Description": fields.Str(required=True, dump_to="Description"), - "PolicyName": fields.Str(required=True, dump_to="PolicyName"), - "PolicyURN": fields.Str(required=True, dump_to="PolicyURN"), - } - - -class UpdateIAMPolicyNameResponseSchema(schema.ResponseSchema): - """UpdateIAMPolicyName - 修改自定义策略名称""" - - fields = {} - - -""" -API: UpdateLoginProfile - -更新用户登录资料 -""" - - -class UpdateLoginProfileRequestSchema(schema.RequestSchema): - """UpdateLoginProfile - 更新用户登录资料""" - - fields = { - "MFABindRequired": fields.Bool( - required=False, dump_to="MFABindRequired" - ), - "MaxPasswordAge": fields.Int(required=False, dump_to="MaxPasswordAge"), - "Status": fields.Str(required=False, dump_to="Status"), - "UserEmail": fields.Str(required=False, dump_to="UserEmail"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class UpdateLoginProfileResponseSchema(schema.ResponseSchema): - """UpdateLoginProfile - 更新用户登录资料""" - - fields = {} - - -""" -API: UpdateUser - -更新用户 -""" - - -class UpdateUserRequestSchema(schema.RequestSchema): - """UpdateUser - 更新用户""" - - fields = { - "DisplayName": fields.Str(required=False, dump_to="DisplayName"), - "NewUserName": fields.Str(required=False, dump_to="NewUserName"), - "Status": fields.Str(required=False, dump_to="Status"), - "UserName": fields.Str(required=True, dump_to="UserName"), - } - - -class UpdateUserResponseSchema(schema.ResponseSchema): - """UpdateUser - 更新用户""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/iam/schemas/models.py b/ucloud/services/iam/schemas/models.py deleted file mode 100644 index cc2c1e0f..00000000 --- a/ucloud/services/iam/schemas/models.py +++ /dev/null @@ -1,127 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class AccessKeySchema(schema.ResponseSchema): - """AccessKey - 密钥信息实例""" - - fields = { - "AccessKeyID": fields.Str(required=False, load_from="AccessKeyID"), - "AccessKeySecret": fields.Str( - required=False, load_from="AccessKeySecret" - ), - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "DeletedAt": fields.Int(required=False, load_from="DeletedAt"), - "Description": fields.Str(required=False, load_from="Description"), - "ExpiredAt": fields.Int(required=False, load_from="ExpiredAt"), - "Status": fields.Str(required=False, load_from="Status"), - "UpdatedAt": fields.Int(required=False, load_from="UpdatedAt"), - "UserId": fields.Int(required=False, load_from="UserId"), - } - - -class GroupSchema(schema.ResponseSchema): - """Group - 用户组模型""" - - fields = { - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "Description": fields.Str(required=True, load_from="Description"), - "GroupName": fields.Str(required=True, load_from="GroupName"), - } - - -class IAMPolicySchema(schema.ResponseSchema): - """IAMPolicy - 获取IAM权限策略详情""" - - fields = { - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "Description": fields.Str(required=False, load_from="Description"), - "Document": fields.Str(required=False, load_from="Document"), - "PolicyName": fields.Str(required=False, load_from="PolicyName"), - "PolicyURN": fields.Str(required=False, load_from="PolicyURN"), - "ScopeType": fields.Str(required=False, load_from="ScopeType"), - "UpdatedAt": fields.Int(required=False, load_from="UpdatedAt"), - } - - -class LoginProfileSchema(schema.ResponseSchema): - """LoginProfile - 登录资料""" - - fields = { - "MFABindRequired": fields.Bool( - required=True, load_from="MFABindRequired" - ), - "MaxPasswordAge": fields.Int(required=True, load_from="MaxPasswordAge"), - "Status": fields.Str(required=True, load_from="Status"), - } - - -class UserSchema(schema.ResponseSchema): - """User - 用户模型""" - - fields = { - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "Email": fields.Str(required=True, load_from="Email"), - "Status": fields.Str(required=False, load_from="Status"), - "UserName": fields.Str(required=True, load_from="UserName"), - } - - -class EntitySchema(schema.ResponseSchema): - """Entity - 权限策略的实体""" - - fields = { - "AttachedAt": fields.Int(required=True, load_from="AttachedAt"), - "EntityKind": fields.Str(required=True, load_from="EntityKind"), - "EntityName": fields.Str(required=True, load_from="EntityName"), - } - - -class PolicySchema(schema.ResponseSchema): - """Policy - 权限策略""" - - fields = { - "AttachedAt": fields.Int(required=False, load_from="AttachedAt"), - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "Description": fields.Str(required=False, load_from="Description"), - "PolicyName": fields.Str(required=True, load_from="PolicyName"), - "PolicyURN": fields.Str(required=True, load_from="PolicyURN"), - "ProjectID": fields.Str(required=False, load_from="ProjectID"), - "Scope": fields.Str(required=False, load_from="Scope"), - } - - -class ProjectSchema(schema.ResponseSchema): - """Project - 项目模型""" - - fields = { - "CreatedAt": fields.Int(required=True, load_from="CreatedAt"), - "ProjectID": fields.Str(required=True, load_from="ProjectID"), - "ProjectName": fields.Str(required=True, load_from="ProjectName"), - "UserCount": fields.Int(required=True, load_from="UserCount"), - } - - -class UsersSchema(schema.ResponseSchema): - """Users - 用户模型""" - - fields = { - "CreatedAt": fields.Int(required=False, load_from="CreatedAt"), - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "Email": fields.Str(required=True, load_from="Email"), - "Status": fields.Str(required=False, load_from="Status"), - "UserName": fields.Str(required=True, load_from="UserName"), - } - - -class UserForGroupSchema(schema.ResponseSchema): - """UserForGroup - 用户模型""" - - fields = { - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "Email": fields.Str(required=True, load_from="Email"), - "JoinedAt": fields.Int(required=False, load_from="JoinedAt"), - "UserName": fields.Str(required=True, load_from="UserName"), - } diff --git a/ucloud/services/ipv6gw/client.py b/ucloud/services/ipv6gw/client.py deleted file mode 100644 index 93a68591..00000000 --- a/ucloud/services/ipv6gw/client.py +++ /dev/null @@ -1,270 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ipv6gw.schemas import apis - - -class ipv6gwClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(ipv6gwClient, self).__init__( - config, transport, middleware, logger - ) - - def allocate_ipv_6internet_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AllocateIpv6InternetBandwidth - 分配ipv6公网带宽 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Bandwidth** (int) - (Required) 出向带宽峰值。带宽值范围[1, 2000] - - **Ipv6AddressId** (str) - (Required) Ipv6地址ID - - **ChargeType** (str) - 付费方式;默认值:"Month";枚举值:"Dynamic" -> 按时付费,"Month" -> 月付,"Year" ->年付,"Day" -> 天付 - - **Ipv6GatewayId** (str) - ipv6网关ID;与VPCId二选一必填 - - **Name** (str) - 资源名称;默认值:"Ipv6InternetBandwidth" - - **PayMode** (str) - 付费模式;默认值:"Bandwidth";枚举值:"Bandwidth" -> 带宽计费 - - **Quantity** (int) - 购买数量;默认值:1。 月付时,此参数传0,代表了购买至月末。 - - **Remark** (str) - 备注 - - **Tag** (str) - 业务组名称;默认值:"Default" - - **VPCId** (str) - vpcId;与Ipv6GatewayId二选一必填 - - **Response** - - - **InternetBandwidthId** (str) - 开通公网带宽后,对应的公网带宽实例 ID。 - - **Ipv6Address** (str) - ipv6地址 - - **Ipv6AddressId** (str) - ipv6地址ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AllocateIpv6InternetBandwidthRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AllocateIpv6InternetBandwidth", d, **kwargs) - return apis.AllocateIpv6InternetBandwidthResponseSchema().loads(resp) - - def create_ipv_6gateway( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateIpv6Gateway - 创建ipv6网关 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VPCId** (str) - (Required) ipv6网关所属的VPCID - - **Name** (str) - IPv6 网关的名称 默认值 Ipv6Gateway - - **Remark** (str) - IPv6 网关的备注信息。 - - **Tag** (str) - 业务组名称;默认值:"Default" - - **Response** - - - **Ipv6GatewayId** (str) - ipv6网关ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateIpv6GatewayRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateIpv6Gateway", d, **kwargs) - return apis.CreateIpv6GatewayResponseSchema().loads(resp) - - def delete_ipv_6gateway( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteIpv6Gateway - 删除ipv6网关 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Ipv6GatewayId** (str) - (Required) ipv6网关ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteIpv6GatewayRequestSchema().dumps(d) - - resp = self.invoke("DeleteIpv6Gateway", d, **kwargs) - return apis.DeleteIpv6GatewayResponseSchema().loads(resp) - - def delete_ipv_6internet_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteIpv6InternetBandwidth - 删除ipv6公网带宽 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InternetBandwidthId** (str) - ipv6公网带宽ID;与Ipv6AddressId二选一必填 - - **Ipv6AddressId** (str) - ipv6 ID;与InternetBandwidthId二选一必填 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteIpv6InternetBandwidthRequestSchema().dumps(d) - - resp = self.invoke("DeleteIpv6InternetBandwidth", d, **kwargs) - return apis.DeleteIpv6InternetBandwidthResponseSchema().loads(resp) - - def describe_ipv_6gateway_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeIpv6GatewayAttribute - 查看指定ipv6网关详情, 该接口仅返回能开启公网带宽的ipv6信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Ipv6GatewayId** (str) - (Required) ipv6网关ID - - **Limit** (int) - 返回数据长度,默认值为20,最大值为100 - - **ObjectType** (str) - ipv6地址绑定资源类型。传空则返回不按资源类型过滤。枚举值:"uhost" -> 云主机; "uni" -> 虚拟网卡; "alb" -> 应用型负载均衡; "nlb" -> 网络型负载均衡 - - **Offset** (int) - 列表起始位置偏移量,默认值为0 - - **Response** - - - **CreateTime** (int) - 创建时间 - - **Ipv6AddressInfos** (list) - 见 **IPv6AddressInfo** 模型定义 - - **Ipv6GatewayId** (str) - ipv6网关ID - - **Name** (str) - 名称 - - **Remark** (str) - 备注 - - **Tag** (str) - 业务组 - - **TotalCount** (int) - 总数 - - **VPCId** (str) - vpc ID - - **Response Model** - - **IPv6AddressInfo** - - **AutoRenew** (str) - 是否自动续费。枚举值:"Yes" -> 是; "No" -> 否; "UnKnown" -> 未知 - - **Bandwidth** (int) - 带宽值 - - **ChargeType** (str) - 收费类型 - - **Expire** (str) - 是否过期。 枚举值: "Expired" -> 过期; "UnExpired" -> 未过期; "UnKnown" -> 未知 - - **ExpireTime** (int) - 过期时间 - - **InternetBandwidthId** (str) - ipv6外网带宽Id - - **Ipv6Address** (str) - ipv6地址 - - **Ipv6AddressId** (str) - ipv6地址ID - - **ObjectId** (str) - 绑定的资源ID - - **ObjectName** (str) - 绑定对象名称 - - **ObjectType** (str) - 绑定对象资源类型 - - **OperatorName** (str) - 线路名称。枚举值: "ChinaMobile" -> 移动; "BGP" -> BGP; "Unicom" -> 联通; "Telecom" -> 电信 - - **PayMode** (str) - 付费模式。枚举值:"Bandwidth" -> 带宽计费 - - **Status** (str) - 状态。 枚举值:"Public" -> 已开启公网带宽; "Normal" -> 未开启公网带宽 - - **SubnetId** (str) - 子网ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeIpv6GatewayAttributeRequestSchema().dumps(d) - - resp = self.invoke("DescribeIpv6GatewayAttribute", d, **kwargs) - return apis.DescribeIpv6GatewayAttributeResponseSchema().loads(resp) - - def describe_ipv_6gateways( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeIpv6Gateways - ipv6网关列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Ipv6GatewayIds** (list) - ipv6网关ID列表,最大长度为20。指定Ipv6GatewayIds查询时,将忽略其他条件 - - **Limit** (int) - 返回数据长度,默认值为20,最大值为100 - - **Offset** (int) - 列表起始位置偏移量,默认值为0 - - **VPCId** (str) - vpc ID - - **Response** - - - **Ipv6GatewayInfos** (list) - 见 **IPv6GateWayInfo** 模型定义 - - **TotalCount** (int) - Ipv6Gateway总数。指定Ipv6GatewayIds / VPCId时,返回数量受限 - - **Response Model** - - **IPv6GateWayInfo** - - **CreateTime** (int) - 创建时间 - - **Ipv6GatewayId** (str) - ipv6 网关 ID - - **Name** (str) - 名称 - - **Remark** (str) - 备注 - - **Tag** (str) - 业务组 - - **VPCId** (str) - vpc ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeIpv6GatewaysRequestSchema().dumps(d) - - resp = self.invoke("DescribeIpv6Gateways", d, **kwargs) - return apis.DescribeIpv6GatewaysResponseSchema().loads(resp) - - def modify_ipv_6internet_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyIpv6InternetBandwidth - 修改ipv6公网带宽值 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Bandwidth** (int) - 要修改为的出向带宽峰值。带宽值范围[1, 2000] - - **InternetBandwidthId** (str) - ipv6公网带宽Id;与Ipv6AddressId二选一必填 - - **Ipv6AddressId** (str) - Ipv6地址 id;与InternetBandwidthId二选一必填 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyIpv6InternetBandwidthRequestSchema().dumps(d) - - resp = self.invoke("ModifyIpv6InternetBandwidth", d, **kwargs) - return apis.ModifyIpv6InternetBandwidthResponseSchema().loads(resp) diff --git a/ucloud/services/ipv6gw/schemas/apis.py b/ucloud/services/ipv6gw/schemas/apis.py deleted file mode 100644 index b8adbf71..00000000 --- a/ucloud/services/ipv6gw/schemas/apis.py +++ /dev/null @@ -1,221 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ipv6gw.schemas import models - -""" ipv6gw API Schema -""" - - -""" -API: AllocateIpv6InternetBandwidth - -分配ipv6公网带宽 -""" - - -class AllocateIpv6InternetBandwidthRequestSchema(schema.RequestSchema): - """AllocateIpv6InternetBandwidth - 分配ipv6公网带宽""" - - fields = { - "Bandwidth": fields.Int(required=True, dump_to="Bandwidth"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "Ipv6AddressId": fields.Str(required=True, dump_to="Ipv6AddressId"), - "Ipv6GatewayId": fields.Str(required=False, dump_to="Ipv6GatewayId"), - "Name": fields.Str(required=False, dump_to="Name"), - "PayMode": fields.Str(required=False, dump_to="PayMode"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class AllocateIpv6InternetBandwidthResponseSchema(schema.ResponseSchema): - """AllocateIpv6InternetBandwidth - 分配ipv6公网带宽""" - - fields = { - "InternetBandwidthId": fields.Str( - required=True, load_from="InternetBandwidthId" - ), - "Ipv6Address": fields.Str(required=False, load_from="Ipv6Address"), - "Ipv6AddressId": fields.Str(required=False, load_from="Ipv6AddressId"), - } - - -""" -API: CreateIpv6Gateway - -创建ipv6网关 -""" - - -class CreateIpv6GatewayRequestSchema(schema.RequestSchema): - """CreateIpv6Gateway - 创建ipv6网关""" - - fields = { - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - } - - -class CreateIpv6GatewayResponseSchema(schema.ResponseSchema): - """CreateIpv6Gateway - 创建ipv6网关""" - - fields = { - "Ipv6GatewayId": fields.Str(required=True, load_from="Ipv6GatewayId"), - } - - -""" -API: DeleteIpv6Gateway - -删除ipv6网关 -""" - - -class DeleteIpv6GatewayRequestSchema(schema.RequestSchema): - """DeleteIpv6Gateway - 删除ipv6网关""" - - fields = { - "Ipv6GatewayId": fields.Str(required=True, dump_to="Ipv6GatewayId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteIpv6GatewayResponseSchema(schema.ResponseSchema): - """DeleteIpv6Gateway - 删除ipv6网关""" - - fields = {} - - -""" -API: DeleteIpv6InternetBandwidth - -删除ipv6公网带宽 -""" - - -class DeleteIpv6InternetBandwidthRequestSchema(schema.RequestSchema): - """DeleteIpv6InternetBandwidth - 删除ipv6公网带宽""" - - fields = { - "InternetBandwidthId": fields.Str( - required=False, dump_to="InternetBandwidthId" - ), - "Ipv6AddressId": fields.Str(required=False, dump_to="Ipv6AddressId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteIpv6InternetBandwidthResponseSchema(schema.ResponseSchema): - """DeleteIpv6InternetBandwidth - 删除ipv6公网带宽""" - - fields = {} - - -""" -API: DescribeIpv6GatewayAttribute - -查看指定ipv6网关详情, 该接口仅返回能开启公网带宽的ipv6信息 -""" - - -class DescribeIpv6GatewayAttributeRequestSchema(schema.RequestSchema): - """DescribeIpv6GatewayAttribute - 查看指定ipv6网关详情, 该接口仅返回能开启公网带宽的ipv6信息""" - - fields = { - "Ipv6GatewayId": fields.Str(required=True, dump_to="Ipv6GatewayId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "ObjectType": fields.Str(required=False, dump_to="ObjectType"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeIpv6GatewayAttributeResponseSchema(schema.ResponseSchema): - """DescribeIpv6GatewayAttribute - 查看指定ipv6网关详情, 该接口仅返回能开启公网带宽的ipv6信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Ipv6AddressInfos": fields.List( - models.IPv6AddressInfoSchema(), - required=False, - load_from="Ipv6AddressInfos", - ), - "Ipv6GatewayId": fields.Str(required=False, load_from="Ipv6GatewayId"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Tag": fields.Str(required=False, load_from="Tag"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - } - - -""" -API: DescribeIpv6Gateways - -ipv6网关列表 -""" - - -class DescribeIpv6GatewaysRequestSchema(schema.RequestSchema): - """DescribeIpv6Gateways - ipv6网关列表""" - - fields = { - "Ipv6GatewayIds": fields.List(fields.Str()), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class DescribeIpv6GatewaysResponseSchema(schema.ResponseSchema): - """DescribeIpv6Gateways - ipv6网关列表""" - - fields = { - "Ipv6GatewayInfos": fields.List( - models.IPv6GateWayInfoSchema(), - required=False, - load_from="Ipv6GatewayInfos", - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: ModifyIpv6InternetBandwidth - -修改ipv6公网带宽值 -""" - - -class ModifyIpv6InternetBandwidthRequestSchema(schema.RequestSchema): - """ModifyIpv6InternetBandwidth - 修改ipv6公网带宽值""" - - fields = { - "Bandwidth": fields.Int(required=False, dump_to="Bandwidth"), - "InternetBandwidthId": fields.Str( - required=False, dump_to="InternetBandwidthId" - ), - "Ipv6AddressId": fields.Str(required=False, dump_to="Ipv6AddressId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ModifyIpv6InternetBandwidthResponseSchema(schema.ResponseSchema): - """ModifyIpv6InternetBandwidth - 修改ipv6公网带宽值""" - - fields = {} diff --git a/ucloud/services/ipv6gw/schemas/models.py b/ucloud/services/ipv6gw/schemas/models.py deleted file mode 100644 index 1e502248..00000000 --- a/ucloud/services/ipv6gw/schemas/models.py +++ /dev/null @@ -1,40 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class IPv6AddressInfoSchema(schema.ResponseSchema): - """IPv6AddressInfo - ipv6地址信息""" - - fields = { - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "Expire": fields.Str(required=False, load_from="Expire"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "InternetBandwidthId": fields.Str( - required=False, load_from="InternetBandwidthId" - ), - "Ipv6Address": fields.Str(required=False, load_from="Ipv6Address"), - "Ipv6AddressId": fields.Str(required=False, load_from="Ipv6AddressId"), - "ObjectId": fields.Str(required=False, load_from="ObjectId"), - "ObjectName": fields.Str(required=False, load_from="ObjectName"), - "ObjectType": fields.Str(required=False, load_from="ObjectType"), - "OperatorName": fields.Str(required=False, load_from="OperatorName"), - "PayMode": fields.Str(required=False, load_from="PayMode"), - "Status": fields.Str(required=False, load_from="Status"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - } - - -class IPv6GateWayInfoSchema(schema.ResponseSchema): - """IPv6GateWayInfo - ipv6 网关信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Ipv6GatewayId": fields.Str(required=False, load_from="Ipv6GatewayId"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Tag": fields.Str(required=False, load_from="Tag"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - } diff --git a/ucloud/services/nlb/client.py b/ucloud/services/nlb/client.py deleted file mode 100644 index 07d8f9ba..00000000 --- a/ucloud/services/nlb/client.py +++ /dev/null @@ -1,580 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.nlb.schemas import apis - - -class NLBClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(NLBClient, self).__init__(config, transport, middleware, logger) - - def add_nlb_targets( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddNLBTargets - 给监听器添加后端服务节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID。 - - **NLBId** (str) - (Required) 负载均衡实例的ID。 - - **Targets** (list) - 见 **AddNLBTargetsParamTargets** 模型定义 - - **Response** - - - **Targets** (list) - 见 **Target** 模型定义 - - **Request Model** - - **AddNLBTargetsParamTargets** - - **Enabled** (bool) - 服务节点是否启用 - - **Port** (int) - 服务节点的端口,限定取值:[1-65535] - - **Region** (str) - 服务节点所在地域 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型。限定枚举值:"UHost" / "UNI"/"UPM"/"IP",默认值:"UHost";非IP类型,如果该资源有多个IP,将只能添加主IP;非IP类型,展示时,会显示相关资源信息,IP类型只展示IP信息。 - - **SubnetId** (str) - 服务节点的子网资源ID。 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。限定取值:[1-100],默认值1;仅在加权轮询、加权最小连接数算法时有效 - - - **Response Model** - - **Target** - - **Enabled** (bool) - 服务节点是否开启 - - **Id** (str) - 服务节点的标识 ID说明:添加服务节点的时候无需传更新服务节点属性时必传 - - **Port** (int) - 服务节点的端口 - - **Region** (str) - 服务节点所在地域 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型 - - **State** (str) - 服务节点的健康检查状态说明:描述服务节点信息时显示限定枚举值:"Healthy"/"Unhealthy" - - **SubnetId** (str) - 服务节点的子网资源ID。在IP类型时,必传 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。支持更新 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddNLBTargetsRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddNLBTargets", d, **kwargs) - return apis.AddNLBTargetsResponseSchema().loads(resp) - - def create_nlb_listener( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateNLBListener - 创建监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **Protocol** (str) - (Required) 监听协议限定取值:"TCP"/"UDP" - - **EndPort** (int) - 端口范围的结束端口限定取值:[1-65535]取值不小于起始端口默认值 65535 - - **ForwardSrcIPMethod** (str) - 传递源 IP 方法。限定取值:"" / "None" / "Toa"/"ProxyProto",空字符串和 None 代表关闭。 - - **HealthCheckConfig** (dict) - 见 **CreateNLBListenerParamHealthCheckConfig** 模型定义 - - **Name** (str) - 监听器的名称限定字符长度:[1-255]限定特殊字符,仅支持:-_.默认值:listener - - **Remark** (str) - 监听器的备注信息限定字符长度:[0-255] - - **Scheduler** (str) - 负载均衡算法限定取值:"RoundRobin"/"SourceHash"/"LeastConn"/"WeightLeastConn "/"WeightRoundRobin"默认值 "RoundRobin" - - **StartPort** (int) - 端口范围的起始端口限定取值:[1-65535]默认值 1 - - **StickinessTimeout** (int) - 会话保持超时时间。单位:秒限定取值:[60-900],0 表示不开启会话保持默认值60 - - **Response** - - - **ListenerId** (str) - 监听器的ID - - **Request Model** - - **CreateNLBListenerParamHealthCheckConfig** - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭,默认 true - - **Port** (int) - 健康检查探测端口 说明: 限定取值:[1-65535],Ping 探测下,端口可填 0 - - **ReqMsg** (str) - UDP" 检查模式的请求字符串 - - **ResMsg** (str) - "UDP" 检查模式的预期响应字符串 - - **Type** (str) - 健康检查方式 限定取值:"Port"/"UDP"/"Ping" 默认值:“Port”,Ping 只允许 UDP 协议监听器设置 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateNLBListenerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateNLBListener", d, **kwargs) - return apis.CreateNLBListenerResponseSchema().loads(resp) - - def create_network_load_balancer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateNetworkLoadBalancer - 创建网络型负载均衡 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SubnetId** (str) - (Required) 负载均衡实例所属的子网资源ID - - **VPCId** (str) - (Required) 载均衡实例所属的VPC资源ID - - **ApiVersion** (str) - API 版本,限定取值 "v1.0"/"v2.0",默认值:"v2.0" - - **ChargeType** (str) - 付费模式,限定取值:"Dynamic"/"Month"/"Year" - - **CouponId** (str) - 代金券code - - **IPVersion** (str) - 负载均衡实例的IP协议,限定取值:"IPv4"/"IPv6"/"DualStack",默认值:"IPv4" - - **Name** (str) - 负载均衡实例的名称限定字符长度:[1-255]限定特殊字符,仅支持:-_.默认值:nlb - - **Quantity** (int) - 购买的时长,ChargeType = "Month",Quantity = 0 代表购买到月底,其余情况必须赋值 - - **Remark** (str) - 负载均衡实例的备注信息限定字符长度:[0-255] - - **Tag** (str) - 负载均衡实例所属的业务组ID - - **Response** - - - **Message** (str) - 返回信息 - - **NLBId** (str) - 返回的NLBId - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateNetworkLoadBalancerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateNetworkLoadBalancer", d, **kwargs) - return apis.CreateNetworkLoadBalancerResponseSchema().loads(resp) - - def delete_nlb_listener( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteNLBListener - 删除一个网络型负载均衡监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteNLBListenerRequestSchema().dumps(d) - - resp = self.invoke("DeleteNLBListener", d, **kwargs) - return apis.DeleteNLBListenerResponseSchema().loads(resp) - - def delete_network_load_balancer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteNetworkLoadBalancer - 删除负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **ReleaseEIP** (bool) - 删除NLB时释放绑定的EIP - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteNetworkLoadBalancerRequestSchema().dumps(d) - - resp = self.invoke("DeleteNetworkLoadBalancer", d, **kwargs) - return apis.DeleteNetworkLoadBalancerResponseSchema().loads(resp) - - def describe_nlb_listeners( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeNLBListeners - 描述监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NLBId** (str) - (Required) 负载均衡实例的ID。未指定 ListenerId ,则描述指定的 LoadBalancerId 下的所有监听器 - - **Limit** (int) - 限制返回的监听器数量 - - **ListenerId** (str) - 监听器的ID - - **Offset** (int) - 设置监听器的偏移量 - - **Response** - - - **Listeners** (list) - 见 **Listener** 模型定义 - - **TotalCount** (int) - 全部个数 - - **Response Model** - - **Target** - - **Enabled** (bool) - 服务节点是否开启 - - **Id** (str) - 服务节点的标识 ID说明:添加服务节点的时候无需传更新服务节点属性时必传 - - **Port** (int) - 服务节点的端口 - - **Region** (str) - 服务节点所在地域 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型 - - **State** (str) - 服务节点的健康检查状态说明:描述服务节点信息时显示限定枚举值:"Healthy"/"Unhealthy" - - **SubnetId** (str) - 服务节点的子网资源ID。在IP类型时,必传 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。支持更新 - - - **HealthCheckConfig** - - **Enabled** (bool) - 是否开启健康检查功能。 - - **Interval** (int) - 健康检查间隔时间限定取值:[1-60] 单位秒默认 2s - - **MaxFail** (int) - 健康检查最大失败数限定取值:[1-10] 默认 3 - - **MinSuccess** (int) - 健康检查最小成功数限定取值:[1-10] 默认 3 - - **Port** (int) - 健康检查探测端口说明:限定取值:[1-65535] - - **ReqMsg** (str) - UDP" 检查模式的请求字符串"HTTP" 检查模式的请求 json 字符串 - - **ResMsg** (str) - "UDP" 检查模式的预期响应字符串"HTTP" 检查模式的响应状态码 - - **Type** (str) - 健康检查方式限定取值:"Port"/"UDP"/"Ping" /"HTTP"默认值:“Port” - - - **Listener** - - **DeletionProtection** (bool) - 是否开启删除保护 - - **EndPort** (int) - 端口范围的结束端口 - - **ForwardSrcIPMethod** (str) - 传递源 IP 方法。限定取值:"" / "None" / "Toa"/"ProxyProto",空字符串和 None 代表关闭。 - - **HealthCheckConfig** (dict) - 见 **HealthCheckConfig** 模型定义 - - **ListenerId** (str) - 监听器的ID - - **Name** (str) - 监听器的名称 - - **Protocol** (str) - 监听协议,限定取值:"TCP"/"UDP" - - **Remark** (str) - 监听器的备注信息 - - **Scheduler** (str) - 负载均衡算法,限定取值:"RoundRobin"/"SourceHash"/"LeastConn"/"WeightLeastConn "/"WeightRoundRobin " - - **StartPort** (int) - 端口范围的起始端口 - - **State** (str) - listener 健康状态,"Healthy"/"Unhealthy"/"PartialHealth"/"None" - - **StickinessTimeout** (int) - 会话保持超时时间。单位:秒,0表示不开启会话保持 - - **Targets** (list) - 见 **Target** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeNLBListenersRequestSchema().dumps(d) - - resp = self.invoke("DescribeNLBListeners", d, **kwargs) - return apis.DescribeNLBListenersResponseSchema().loads(resp) - - def describe_network_load_balancers( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeNetworkLoadBalancers - 描述负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值,默认为100 - - **NLBIds** (list) - 负载均衡实例的ID,数组 - - **Offset** (int) - 数据偏移量,默认为0 - - **ShowDetail** (bool) - 是否获取监听器和后端服务节点的详细信息 - - **SubnetId** (str) - 限定所在的子网 - - **VPCId** (str) - 限定所在的VPC - - **Response** - - - **NLBs** (list) - 见 **NetworkLoadBalancer** 模型定义 - - **TotalCount** (int) - 满足条件的负载均衡实例总数 - - **Response Model** - - **HealthCheckConfig** - - **Enabled** (bool) - 是否开启健康检查功能。 - - **Interval** (int) - 健康检查间隔时间限定取值:[1-60] 单位秒默认 2s - - **MaxFail** (int) - 健康检查最大失败数限定取值:[1-10] 默认 3 - - **MinSuccess** (int) - 健康检查最小成功数限定取值:[1-10] 默认 3 - - **Port** (int) - 健康检查探测端口说明:限定取值:[1-65535] - - **ReqMsg** (str) - UDP" 检查模式的请求字符串"HTTP" 检查模式的请求 json 字符串 - - **ResMsg** (str) - "UDP" 检查模式的预期响应字符串"HTTP" 检查模式的响应状态码 - - **Type** (str) - 健康检查方式限定取值:"Port"/"UDP"/"Ping" /"HTTP"默认值:“Port” - - - **Target** - - **Enabled** (bool) - 服务节点是否开启 - - **Id** (str) - 服务节点的标识 ID说明:添加服务节点的时候无需传更新服务节点属性时必传 - - **Port** (int) - 服务节点的端口 - - **Region** (str) - 服务节点所在地域 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型 - - **State** (str) - 服务节点的健康检查状态说明:描述服务节点信息时显示限定枚举值:"Healthy"/"Unhealthy" - - **SubnetId** (str) - 服务节点的子网资源ID。在IP类型时,必传 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。支持更新 - - - **Listener** - - **EndPort** (int) - 端口范围的结束端口 - - **ForwardSrcIPMethod** (str) - 传递源 IP 方法。限定取值:"" / "None" / "Toa"/"ProxyProto",空字符串和 None 代表关闭。 - - **HealthCheckConfig** (dict) - 见 **HealthCheckConfig** 模型定义 - - **ListenerId** (str) - 监听器的ID - - **Name** (str) - 监听器的名称 - - **Protocol** (str) - 监听协议,限定取值:"TCP"/"UDP" - - **Remark** (str) - 监听器的备注信息 - - **Scheduler** (str) - 负载均衡算法,限定取值:"RoundRobin"/"SourceHash"/"LeastConn"/"WeightLeastConn "/"WeightRoundRobin " - - **StartPort** (int) - 端口范围的起始端口 - - **State** (str) - listener 健康状态,"Healthy"/"Unhealthy"/"PartialHealth"/"None" - - **StickinessTimeout** (int) - 会话保持超时时间。单位:秒,0表示不开启会话保持 - - **Targets** (list) - 见 **Target** 模型定义 - - - **IPInfo** - - **AddressType** (str) - 网络模式,限定枚举值:"Internet" / "Intranet" - - **Bandwidth** (int) - 带宽值。单位 M - - **BandwidthType** (int) - 带宽类型,限定枚举值:0(普通带宽)/ 1(共享带宽) - - **IP** (str) - IP 地址 - - **IPVersion** (str) - IP协议版本,限定枚举值:"IPv4" / "IPv6" - - **Id** (str) - 唯一标识 ID - - **OperatorName** (str) - 外网IP的运营商信息,限定枚举值:"Telecom" / "Unicom"/"International"/"Bgp"/"Duplet"/"BGPPro"/"China-mobile"/"Anycast" - - **Type** (int) - IP 类型,1(前向 IP)/ 2(后向 IP) - - - **NetworkLoadBalancer** - - **AutoRenewEnabled** (bool) - 是否开启自动续费 - - **ChargeType** (str) - 付费模式 - - **CreateTime** (int) - 负载均衡实例创建时间。格式为 Unix Timestamp - - **ForwardingMode** (str) - 负载均衡实例的转发模式 - - **IPInfos** (list) - 见 **IPInfo** 模型定义 - - **IPVersion** (str) - 负载均衡实例支持的IP协议版本 - - **Listeners** (list) - 见 **Listener** 模型定义 - - **NLBId** (str) - 负载均衡实例的ID - - **Name** (str) - 负载均衡实例的名称 - - **PurchaseValue** (int) - 有效期(计费) - - **Remark** (str) - 负载均衡实例的备注信息 - - **Status** (str) - NLB 状态:Normal-正常;Closed-欠费停服;Deleted 已删除 - - **SubnetId** (str) - 负载均衡实例所属的子网资源ID - - **Tag** (str) - 负载均衡实例所属的业务组ID - - **VPCId** (str) - 负载均衡实例所属的VPC资源ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeNetworkLoadBalancersRequestSchema().dumps(d) - - resp = self.invoke("DescribeNetworkLoadBalancers", d, **kwargs) - return apis.DescribeNetworkLoadBalancersResponseSchema().loads(resp) - - def get_network_load_balancer_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetNetworkLoadBalancerPrice - 获取负载均衡价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ChargeType** (str) - 付费模式限定枚举值:"Year" / "Month"/ "Dynamic"默认获取三种价格 - - **PayMode** (str) - 负载均衡实例计费方式限定枚举值:"Instance" / "LCU"默认值:"Instance" - - **Quantity** (int) - 购买时长按小时购买(Dynamic)时无需此参数。月付时,此参数传 0,代表了购买至月末默认 1 - - **Response** - - - **Prices** (list) - 见 **PriceDetail** 模型定义 - - **Response Model** - - **PriceDetail** - - **ChargeType** (str) - 负载均衡付费方式 - - **CustomPrice** (float) - 用户折后价,单位“元”。CustomPrice=OriginalPrice*用户折扣 - - **OriginalPrice** (float) - 购买负载均衡的原价,单位“元” - - **Price** (float) - 购买负载均衡的实际价格,单位“元” - - **PurchaseValue** (int) - 资源有效期,以Unix Timestamp表示 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetNetworkLoadBalancerPriceRequestSchema().dumps(d) - - resp = self.invoke("GetNetworkLoadBalancerPrice", d, **kwargs) - return apis.GetNetworkLoadBalancerPriceResponseSchema().loads(resp) - - def remove_nlb_targets( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveNLBTargets - 删除后端服务节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Ids** (list) - (Required) 服务节点的标识ID。单次请求不能超过 40 个 - - **ListenerId** (str) - (Required) 监听器的ID - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RemoveNLBTargetsRequestSchema().dumps(d) - - resp = self.invoke("RemoveNLBTargets", d, **kwargs) - return apis.RemoveNLBTargetsResponseSchema().loads(resp) - - def update_nlb_listener_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateNLBListenerAttribute - 更新监听器属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 负载均衡实例的ID - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **EndPort** (int) - 端口范围的结束端口 限定取值:[1-65535] 取值不小于起始端口 默认值 65535,只有全端口模式支持修改 - - **ForwardSrcIPMethod** (str) - 传递源 IP 方法。限定取值:"" / "None" / "Toa",空字符串和 None 代表关闭。 - - **HealthCheckConfig** (dict) - 见 **UpdateNLBListenerAttributeParamHealthCheckConfig** 模型定义 - - **Name** (str) - 监听器的名称 - - **Remark** (str) - 监听器的备注信息 - - **Scheduler** (str) - 负载均衡算法 限定取值:"RoundRobin"/"SourceHash"/"LeastConn"/"WeightLeastConn "/"WeightRoundRobin" 默认值 "RoundRobin" - - **StartPort** (int) - 端口范围的起始端口 限定取值:[1-65535] 默认值 1,只有全端口模式支持修改 - - **StickinessTimeout** (int) - 会话保持超时时间。单位:秒说明:限定取值:[60-900],0 表示不开启会话保持默认值60 - - **Response** - - - **Request Model** - - **UpdateNLBListenerAttributeParamHealthCheckConfig** - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭,默认 true - - **Port** (int) - 健康检查探测端口 说明: 限定取值:[1-65535] - - **ReqMsg** (str) - UDP" 检查模式的请求字符串 - - **ResMsg** (str) - "UDP" 检查模式的预期响应字符串 - - **Type** (str) - 健康检查方式 限定取值:"Port"/"UDP"/"Ping" 默认值:“Port” - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateNLBListenerAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateNLBListenerAttribute", d, **kwargs) - return apis.UpdateNLBListenerAttributeResponseSchema().loads(resp) - - def update_nlb_targets_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateNLBTargetsAttribute - 更新后端服务节点属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **Targets** (list) - 见 **UpdateNLBTargetsAttributeParamTargets** 模型定义 - - **Response** - - - **Request Model** - - **UpdateNLBTargetsAttributeParamTargets** - - **Enabled** (bool) - 是否禁用服务节点 - - **Id** (str) - 服务节点的ID - - **Weight** (int) - 服务节点的权重。限定取值:[1-100],默认值1;仅在加权轮询、加权最小连接数算法时有效 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateNLBTargetsAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateNLBTargetsAttribute", d, **kwargs) - return apis.UpdateNLBTargetsAttributeResponseSchema().loads(resp) - - def update_network_load_balancer_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateNetworkLoadBalancerAttribute - 更新负载均衡实例属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NLBId** (str) - (Required) 负载均衡实例的ID - - **Name** (str) - 负载均衡实例的名称 - - **Remark** (str) - 负载均衡实例的备注信息 - - **Tag** (str) - 负载均衡实例所属的业务组ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateNetworkLoadBalancerAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateNetworkLoadBalancerAttribute", d, **kwargs) - return apis.UpdateNetworkLoadBalancerAttributeResponseSchema().loads( - resp - ) diff --git a/ucloud/services/nlb/schemas/apis.py b/ucloud/services/nlb/schemas/apis.py deleted file mode 100644 index fd1acbc7..00000000 --- a/ucloud/services/nlb/schemas/apis.py +++ /dev/null @@ -1,419 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.nlb.schemas import models - -""" NLB API Schema -""" - - -""" -API: AddNLBTargets - -给监听器添加后端服务节点 -""" - - -class AddNLBTargetsParamTargetsSchema(schema.RequestSchema): - """AddNLBTargetsParamTargets -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Port": fields.Int(required=False, dump_to="Port"), - "Region": fields.Str(required=False, dump_to="Region"), - "ResourceIP": fields.Str(required=False, dump_to="ResourceIP"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - "ResourceName": fields.Str(required=False, dump_to="ResourceName"), - "ResourceType": fields.Str(required=False, dump_to="ResourceType"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class AddNLBTargetsRequestSchema(schema.RequestSchema): - """AddNLBTargets - 给监听器添加后端服务节点""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Targets": fields.List(AddNLBTargetsParamTargetsSchema()), - } - - -class AddNLBTargetsResponseSchema(schema.ResponseSchema): - """AddNLBTargets - 给监听器添加后端服务节点""" - - fields = { - "Targets": fields.List( - models.TargetSchema(), required=True, load_from="Targets" - ), - } - - -""" -API: CreateNLBListener - -创建监听器 -""" - - -class CreateNLBListenerParamHealthCheckConfigSchema(schema.RequestSchema): - """CreateNLBListenerParamHealthCheckConfig -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Port": fields.Int(required=True, dump_to="Port"), - "ReqMsg": fields.Str(required=False, dump_to="ReqMsg"), - "ResMsg": fields.Str(required=False, dump_to="ResMsg"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class CreateNLBListenerRequestSchema(schema.RequestSchema): - """CreateNLBListener - 创建监听器""" - - fields = { - "EndPort": fields.Int(required=False, dump_to="EndPort"), - "ForwardSrcIPMethod": fields.Str( - required=False, dump_to="ForwardSrcIPMethod" - ), - "HealthCheckConfig": CreateNLBListenerParamHealthCheckConfigSchema( - required=False, dump_to="HealthCheckConfig" - ), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Protocol": fields.Str(required=True, dump_to="Protocol"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Scheduler": fields.Str(required=False, dump_to="Scheduler"), - "StartPort": fields.Int(required=False, dump_to="StartPort"), - "StickinessTimeout": fields.Int( - required=False, dump_to="StickinessTimeout" - ), - } - - -class CreateNLBListenerResponseSchema(schema.ResponseSchema): - """CreateNLBListener - 创建监听器""" - - fields = { - "ListenerId": fields.Str(required=True, load_from="ListenerId"), - } - - -""" -API: CreateNetworkLoadBalancer - -创建网络型负载均衡 -""" - - -class CreateNetworkLoadBalancerRequestSchema(schema.RequestSchema): - """CreateNetworkLoadBalancer - 创建网络型负载均衡""" - - fields = { - "ApiVersion": fields.Str(required=False, dump_to="ApiVersion"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "IPVersion": fields.Str(required=False, dump_to="IPVersion"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - } - - -class CreateNetworkLoadBalancerResponseSchema(schema.ResponseSchema): - """CreateNetworkLoadBalancer - 创建网络型负载均衡""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "NLBId": fields.Str(required=True, load_from="NLBId"), - } - - -""" -API: DeleteNLBListener - -删除一个网络型负载均衡监听器 -""" - - -class DeleteNLBListenerRequestSchema(schema.RequestSchema): - """DeleteNLBListener - 删除一个网络型负载均衡监听器""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteNLBListenerResponseSchema(schema.ResponseSchema): - """DeleteNLBListener - 删除一个网络型负载均衡监听器""" - - fields = {} - - -""" -API: DeleteNetworkLoadBalancer - -删除负载均衡实例 -""" - - -class DeleteNetworkLoadBalancerRequestSchema(schema.RequestSchema): - """DeleteNetworkLoadBalancer - 删除负载均衡实例""" - - fields = { - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReleaseEIP": fields.Bool(required=False, dump_to="ReleaseEIP"), - } - - -class DeleteNetworkLoadBalancerResponseSchema(schema.ResponseSchema): - """DeleteNetworkLoadBalancer - 删除负载均衡实例""" - - fields = {} - - -""" -API: DescribeNLBListeners - -描述监听器 -""" - - -class DescribeNLBListenersRequestSchema(schema.RequestSchema): - """DescribeNLBListeners - 描述监听器""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "ListenerId": fields.Str(required=False, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeNLBListenersResponseSchema(schema.ResponseSchema): - """DescribeNLBListeners - 描述监听器""" - - fields = { - "Listeners": fields.List( - models.ListenerSchema(), required=True, load_from="Listeners" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeNetworkLoadBalancers - -描述负载均衡实例 -""" - - -class DescribeNetworkLoadBalancersRequestSchema(schema.RequestSchema): - """DescribeNetworkLoadBalancers - 描述负载均衡实例""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "NLBIds": fields.List(fields.Str()), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ShowDetail": fields.Bool(required=False, dump_to="ShowDetail"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class DescribeNetworkLoadBalancersResponseSchema(schema.ResponseSchema): - """DescribeNetworkLoadBalancers - 描述负载均衡实例""" - - fields = { - "NLBs": fields.List( - models.NetworkLoadBalancerSchema(), required=True, load_from="NLBs" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: GetNetworkLoadBalancerPrice - -获取负载均衡价格 -""" - - -class GetNetworkLoadBalancerPriceRequestSchema(schema.RequestSchema): - """GetNetworkLoadBalancerPrice - 获取负载均衡价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "PayMode": fields.Str(required=False, dump_to="PayMode"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetNetworkLoadBalancerPriceResponseSchema(schema.ResponseSchema): - """GetNetworkLoadBalancerPrice - 获取负载均衡价格""" - - fields = { - "Prices": fields.List( - models.PriceDetailSchema(), required=True, load_from="Prices" - ), - } - - -""" -API: RemoveNLBTargets - -删除后端服务节点 -""" - - -class RemoveNLBTargetsRequestSchema(schema.RequestSchema): - """RemoveNLBTargets - 删除后端服务节点""" - - fields = { - "Ids": fields.List(fields.Str()), - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class RemoveNLBTargetsResponseSchema(schema.ResponseSchema): - """RemoveNLBTargets - 删除后端服务节点""" - - fields = {} - - -""" -API: UpdateNLBListenerAttribute - -更新监听器属性 -""" - - -class UpdateNLBListenerAttributeParamHealthCheckConfigSchema( - schema.RequestSchema -): - """UpdateNLBListenerAttributeParamHealthCheckConfig -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Port": fields.Int(required=False, dump_to="Port"), - "ReqMsg": fields.Str(required=False, dump_to="ReqMsg"), - "ResMsg": fields.Str(required=False, dump_to="ResMsg"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class UpdateNLBListenerAttributeRequestSchema(schema.RequestSchema): - """UpdateNLBListenerAttribute - 更新监听器属性""" - - fields = { - "EndPort": fields.Int(required=False, dump_to="EndPort"), - "ForwardSrcIPMethod": fields.Str( - required=False, dump_to="ForwardSrcIPMethod" - ), - "HealthCheckConfig": UpdateNLBListenerAttributeParamHealthCheckConfigSchema( - required=False, dump_to="HealthCheckConfig" - ), - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Scheduler": fields.Str(required=False, dump_to="Scheduler"), - "StartPort": fields.Int(required=False, dump_to="StartPort"), - "StickinessTimeout": fields.Int( - required=False, dump_to="StickinessTimeout" - ), - } - - -class UpdateNLBListenerAttributeResponseSchema(schema.ResponseSchema): - """UpdateNLBListenerAttribute - 更新监听器属性""" - - fields = {} - - -""" -API: UpdateNLBTargetsAttribute - -更新后端服务节点属性 -""" - - -class UpdateNLBTargetsAttributeParamTargetsSchema(schema.RequestSchema): - """UpdateNLBTargetsAttributeParamTargets -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Id": fields.Str(required=False, dump_to="Id"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class UpdateNLBTargetsAttributeRequestSchema(schema.RequestSchema): - """UpdateNLBTargetsAttribute - 更新后端服务节点属性""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Targets": fields.List(UpdateNLBTargetsAttributeParamTargetsSchema()), - } - - -class UpdateNLBTargetsAttributeResponseSchema(schema.ResponseSchema): - """UpdateNLBTargetsAttribute - 更新后端服务节点属性""" - - fields = {} - - -""" -API: UpdateNetworkLoadBalancerAttribute - -更新负载均衡实例属性 -""" - - -class UpdateNetworkLoadBalancerAttributeRequestSchema(schema.RequestSchema): - """UpdateNetworkLoadBalancerAttribute - 更新负载均衡实例属性""" - - fields = { - "NLBId": fields.Str(required=True, dump_to="NLBId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - } - - -class UpdateNetworkLoadBalancerAttributeResponseSchema(schema.ResponseSchema): - """UpdateNetworkLoadBalancerAttribute - 更新负载均衡实例属性""" - - fields = {} diff --git a/ucloud/services/nlb/schemas/models.py b/ucloud/services/nlb/schemas/models.py deleted file mode 100644 index cbb592d7..00000000 --- a/ucloud/services/nlb/schemas/models.py +++ /dev/null @@ -1,115 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class TargetSchema(schema.ResponseSchema): - """Target - 服务节点信息""" - - fields = { - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Id": fields.Str(required=False, load_from="Id"), - "Port": fields.Int(required=False, load_from="Port"), - "Region": fields.Str(required=False, load_from="Region"), - "ResourceIP": fields.Str(required=False, load_from="ResourceIP"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceName": fields.Str(required=False, load_from="ResourceName"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class HealthCheckConfigSchema(schema.ResponseSchema): - """HealthCheckConfig - 健康检查配置""" - - fields = { - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Interval": fields.Int(required=False, load_from="Interval"), - "MaxFail": fields.Int(required=False, load_from="MaxFail"), - "MinSuccess": fields.Int(required=False, load_from="MinSuccess"), - "Port": fields.Int(required=False, load_from="Port"), - "ReqMsg": fields.Str(required=False, load_from="ReqMsg"), - "ResMsg": fields.Str(required=False, load_from="ResMsg"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class ListenerSchema(schema.ResponseSchema): - """Listener - 监听器信息""" - - fields = { - "EndPort": fields.Int(required=False, load_from="EndPort"), - "ForwardSrcIPMethod": fields.Str( - required=False, load_from="ForwardSrcIPMethod" - ), - "HealthCheckConfig": HealthCheckConfigSchema(), - "ListenerId": fields.Str(required=False, load_from="ListenerId"), - "Name": fields.Str(required=False, load_from="Name"), - "Protocol": fields.Str(required=False, load_from="Protocol"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Scheduler": fields.Str(required=False, load_from="Scheduler"), - "StartPort": fields.Int(required=False, load_from="StartPort"), - "State": fields.Str(required=False, load_from="State"), - "StickinessTimeout": fields.Int( - required=False, load_from="StickinessTimeout" - ), - "Targets": fields.List(TargetSchema()), - } - - -class IPInfoSchema(schema.ResponseSchema): - """IPInfo - 绑定的IP信息""" - - fields = { - "AddressType": fields.Str(required=False, load_from="AddressType"), - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BandwidthType": fields.Int(required=False, load_from="BandwidthType"), - "IP": fields.Str(required=False, load_from="IP"), - "IPVersion": fields.Str(required=False, load_from="IPVersion"), - "Id": fields.Str(required=False, load_from="Id"), - "OperatorName": fields.Str(required=False, load_from="OperatorName"), - "Type": fields.Int(required=False, load_from="Type"), - } - - -class NetworkLoadBalancerSchema(schema.ResponseSchema): - """NetworkLoadBalancer - 负载均衡实例信息""" - - fields = { - "AutoRenewEnabled": fields.Bool( - required=False, load_from="AutoRenewEnabled" - ), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ForwardingMode": fields.Str( - required=False, load_from="ForwardingMode" - ), - "IPInfos": fields.List(IPInfoSchema()), - "IPVersion": fields.Str(required=False, load_from="IPVersion"), - "Listeners": fields.List(ListenerSchema()), - "NLBId": fields.Str(required=False, load_from="NLBId"), - "Name": fields.Str(required=False, load_from="Name"), - "PurchaseValue": fields.Int(required=False, load_from="PurchaseValue"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Status": fields.Str(required=False, load_from="Status"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - } - - -class PriceDetailSchema(schema.ResponseSchema): - """PriceDetail - 负载均衡实例的价格信息""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CustomPrice": fields.Float(required=False, load_from="CustomPrice"), - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - "Price": fields.Float(required=False, load_from="Price"), - "PurchaseValue": fields.Int(required=False, load_from="PurchaseValue"), - } diff --git a/ucloud/services/sts/client.py b/ucloud/services/sts/client.py deleted file mode 100644 index 08f2ee4c..00000000 --- a/ucloud/services/sts/client.py +++ /dev/null @@ -1,46 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.sts.schemas import apis - - -class STSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(STSClient, self).__init__(config, transport, middleware, logger) - - def assume_role(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """AssumeRole - 获取扮演角色的临时身份凭证 - - **Request** - - - **RoleSessionName** (str) - (Required) 角色会话名称。 - - **RoleUrn** (str) - (Required) 要扮演的RAM角色URN。 - - **DurationSeconds** (int) - Token有效期。 - - **Policy** (str) - 为STS Token额外添加的一个权限策略,进一步限制STS Token的权限。 - - **Response** - - - **Credentials** (dict) - 见 **Credentials** 模型定义 - - **Response Model** - - **Credentials** - - **AccessKeyId** (str) - 密钥ID。 - - **AccessKeySecret** (str) - 密钥Secret。 - - **Expiration** (str) - Token到期失效时间(UTC时间)。 - - **SecurityToken** (str) - 安全令牌。 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.AssumeRoleRequestSchema().dumps(d) - - resp = self.invoke("AssumeRole", d, **kwargs) - return apis.AssumeRoleResponseSchema().loads(resp) diff --git a/ucloud/services/sts/schemas/apis.py b/ucloud/services/sts/schemas/apis.py deleted file mode 100644 index c0f452b8..00000000 --- a/ucloud/services/sts/schemas/apis.py +++ /dev/null @@ -1,35 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.sts.schemas import models - -""" STS API Schema -""" - - -""" -API: AssumeRole - -获取扮演角色的临时身份凭证 -""" - - -class AssumeRoleRequestSchema(schema.RequestSchema): - """AssumeRole - 获取扮演角色的临时身份凭证""" - - fields = { - "DurationSeconds": fields.Int( - required=False, dump_to="DurationSeconds" - ), - "Policy": fields.Str(required=False, dump_to="Policy"), - "RoleSessionName": fields.Str(required=True, dump_to="RoleSessionName"), - "RoleUrn": fields.Str(required=True, dump_to="RoleUrn"), - } - - -class AssumeRoleResponseSchema(schema.ResponseSchema): - """AssumeRole - 获取扮演角色的临时身份凭证""" - - fields = { - "Credentials": models.CredentialsSchema(), - } diff --git a/ucloud/services/sts/schemas/models.py b/ucloud/services/sts/schemas/models.py deleted file mode 100644 index 060e75b7..00000000 --- a/ucloud/services/sts/schemas/models.py +++ /dev/null @@ -1,16 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class CredentialsSchema(schema.ResponseSchema): - """Credentials -""" - - fields = { - "AccessKeyId": fields.Str(required=True, load_from="AccessKeyId"), - "AccessKeySecret": fields.Str( - required=True, load_from="AccessKeySecret" - ), - "Expiration": fields.Str(required=True, load_from="Expiration"), - "SecurityToken": fields.Str(required=True, load_from="SecurityToken"), - } diff --git a/ucloud/services/tidb/client.py b/ucloud/services/tidb/client.py deleted file mode 100644 index a0d44510..00000000 --- a/ucloud/services/tidb/client.py +++ /dev/null @@ -1,715 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.tidb.schemas import apis - - -class TiDBClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(TiDBClient, self).__init__(config, transport, middleware, logger) - - def create_ti_db_cluster_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateTiDBClusterService - 创建预付费实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ChargeType** (str) - (Required) 计费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限)。默认为月付 - - **Coupon** (str) - (Required) 代金券Id - - **DTType** (str) - (Required) 容灾类型:10:同可用区,20:跨可用区,默认是同可用区 - - **Name** (str) - (Required) 集群名称 - - **Password** (str) - (Required) 集群密码 - - **PubUlbId** (str) - (Required) 公网Ulb ID - - **Quantity** (float) - (Required) 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末 - - **SubnetId** (str) - (Required) 子网ID - - **VPCId** (str) - (Required) VPC id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ActivityId** (int) - 活动ID。 - - **AlertStrategyIds** (list) - 告警策略IDs - - **DbVersion** (str) - 集群版本号 - - **Ip** (str) - 指定Ip地址 - - **Labels** (list) - 见 **CreateTiDBClusterServiceParamLabels** 模型定义 - - **NodeConfig** (list) - 见 **CreateTiDBClusterServiceParamNodeConfig** 模型定义 - - **OrderDetail** (list) - 见 **CreateTiDBClusterServiceParamOrderDetail** 模型定义 - - **Port** (str) - 指定端口 - - **PromotionId** (str) - 活动ID。若有产品折扣,则由各产品与计费约定。 - - **RuleId** (int) - 活动规则ID。 - - **SecGroupInfo** (list) - 见 **CreateTiDBClusterServiceParamSecGroupInfo** 模型定义 - - **TemplateId** (str) - 参数模版ID - - **Response** - - - **Data** (dict) - 见 **ServiceData** 模型定义 - - **Request Model** - - **CreateTiDBClusterServiceParamLabels** - - **Key** (str) - 用户资源标签的键值 - - **Value** (str) - 用户资源标签的值 - - - **CreateTiDBClusterServiceParamOrderDetail** - - **Multiple** (int) - 计费项数量 - - **ProductName** (str) - 计费项名称,CPU / MEM / DISK - - - **CreateTiDBClusterServiceParamSecGroupInfo** - - **Priority** (int) - 安全组优先级。取值范围[1, 5] - - **SecGroupId** (str) - 安全组 ID。至多可以同时绑定5个安全组。 - - - **CreateTiDBClusterServiceParamNodeConfig** - - **ConfigId** (str) - 节点规格ID - - **DiskSize** (int) - 节点磁盘容量 - - **NodeCount** (int) - 节点数量 - - **ServerType** (str) - 节点类型 - - - **Response Model** - - **ServiceData** - - **Id** (str) - 服务ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateTiDBClusterServiceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateTiDBClusterService", d, **kwargs) - return apis.CreateTiDBClusterServiceResponseSchema().loads(resp) - - def create_ti_db_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateTiDBService - - - **Request** - - - **ProjectId** (str) - (Config) - - **Region** (str) - (Config) - - **Name** (str) - (Required) - - **Password** (str) - (Required) - - **SubnetId** (str) - (Required) - - **VPCId** (str) - (Required) - - **DTType** (str) - - - **Ip** (str) - - - **Port** (str) - - - **TikvMemoryHardTh** (str) - - - **Response** - - - **Data** (dict) - 见 **ServiceID** 模型定义 - - **Message** (str) - - - **ServiceId** (str) - - - **Response Model** - - **ServiceID** - - **Id** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateTiDBServiceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateTiDBService", d, **kwargs) - return apis.CreateTiDBServiceResponseSchema().loads(resp) - - def delete_ti_db_cluster_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteTiDBClusterService - 删除预付费实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 集群ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **DeleteBackup** (bool) - 是否清理备份数据 - - **Response** - - - **ServiceId** (str) - 集群ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteTiDBClusterServiceRequestSchema().dumps(d) - - resp = self.invoke("DeleteTiDBClusterService", d, **kwargs) - return apis.DeleteTiDBClusterServiceResponseSchema().loads(resp) - - def delete_ti_db_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteTiDBService - - - **Request** - - - **Region** (str) - (Config) - - **Id** (str) - (Required) - - **Response** - - - **Message** (str) - - - **ServiceId** (str) - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteTiDBServiceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("DeleteTiDBService", d, **kwargs) - return apis.DeleteTiDBServiceResponseSchema().loads(resp) - - def get_ti_db_cluster_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetTiDBClusterService - 获取预付费实例详情 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Data** (dict) - 见 **UTiDBServiceData** 模型定义 - - **Response Model** - - **UTiDBServiceData** - - **AutoBackup** (str) - 自动备份状态 - - **BinlogState** (str) - 集群Binlog服务状态 - - **CreateTime** (int) - 创建时间 - - **DTType** (int) - 容灾类型 - - **DashboardUrl** (str) - Dashboard地址 - - **GrafanaUrl** (str) - grafana地址 - - **Id** (str) - 集群ID - - **Ip** (str) - 集群ip - - **Name** (str) - 集群名称 - - **Port** (int) - 集群端口 - - **State** (str) - 集群状态 - - **SubnetId** (str) - 子网ID - - **TiFlashState** (str) - 集群TiFlash服务状态 - - **VPCId** (str) - 私有网Id - - **Version** (str) - 集群版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetTiDBClusterServiceRequestSchema().dumps(d) - - resp = self.invoke("GetTiDBClusterService", d, **kwargs) - return apis.GetTiDBClusterServiceResponseSchema().loads(resp) - - def get_ti_db_cluster_uhost_specs( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetTiDBClusterUhostSpecs - 拉取预付费机器规格信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NodeTypes** (list) - (Required) 节点类型列表 - - **Response** - - - **Data** (list) - 见 **UhostSpecs** 模型定义 - - **Response Model** - - **UhostSpecs** - - **ConfigId** (str) - 节点规格ID - - **ConfigName** (str) - 节点规格名称 - - **CoreNum** (int) - CPU核数 - - **DiskStep** (int) - 磁盘容量变更步长 - - **MaxDiskCapacity** (int) - 最大磁盘容量 - - **Memory** (int) - 内存 - - **MinDiskCapacity** (int) - 最小磁盘容量 - - **NodeType** (str) - 节点类型 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetTiDBClusterUhostSpecsRequestSchema().dumps(d) - - resp = self.invoke("GetTiDBClusterUhostSpecs", d, **kwargs) - return apis.GetTiDBClusterUhostSpecsResponseSchema().loads(resp) - - def list_ti_db_cluster_backup( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListTiDBClusterBackup - 列出按实例备份tidb的备份列表 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例id - - **Limit** (int) - 返回数据长度,默认为30,最大30 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **Data** (dict) - 见 **BackupData** 模型定义 - - **TotalCount** (int) - 备份总数 - - **Response Model** - - **BackupData** - - **BackupEndTime** (int) - 备份结束时间 - - **BackupId** (str) - 备份 ID - - **BackupSize** (int) - 备份文件大小,单位:MB - - **BackupStartTime** (int) - 备份起始时间 - - **BackupType** (str) - 备份方式 - - **State** (str) - 备份状态 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListTiDBClusterBackupRequestSchema().dumps(d) - - resp = self.invoke("ListTiDBClusterBackup", d, **kwargs) - return apis.ListTiDBClusterBackupResponseSchema().loads(resp) - - def list_ti_db_cluster_restore( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListTiDBClusterRestore - 列出实例恢复列表 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例的服务Id - - **Limit** (int) - (Required) 返回数据长度,默认为30,最大30 - - **Offset** (int) - (Required) 列表起始位置偏移量,默认为0 - - **Response** - - - **RestoreData** (dict) - 见 **RestoreData** 模型定义 - - **Response Model** - - **RestoreData** - - **BackupId** (str) - 备份Id - - **RestoreEndTime** (int) - 恢复的结束时间 - - **RestoreId** (str) - 恢复的Id - - **RestoreStartTime** (int) - 恢复的起始时间 - - **SourceServiceId** (str) - 源实例Id - - **State** (str) - 恢复的状态 - - **TargetServiceId** (str) - 目标实例Id - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListTiDBClusterRestoreRequestSchema().dumps(d) - - resp = self.invoke("ListTiDBClusterRestore", d, **kwargs) - return apis.ListTiDBClusterRestoreResponseSchema().loads(resp) - - def list_ti_db_cluster_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListTiDBClusterService - 拉取预付费实例列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (str) - 返回数据长度,默认为20,最大100 - - **Offset** (str) - 列表起始位置偏移量,默认为0 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Data** (list) - 见 **UTiDBServiceData** 模型定义 - - **Response Model** - - **UTiDBServiceData** - - **AutoBackup** (str) - 自动备份状态 - - **BinlogState** (str) - 集群Binlog服务状态 - - **CreateTime** (int) - 创建时间 - - **DTType** (int) - 容灾类型 - - **DashboardUrl** (str) - Dashboard地址 - - **GrafanaUrl** (str) - grafana地址 - - **Id** (str) - 集群ID - - **Ip** (str) - 集群ip - - **Name** (str) - 集群名称 - - **Port** (int) - 集群端口 - - **State** (str) - 集群状态 - - **SubnetId** (str) - 子网ID - - **TiFlashState** (str) - 集群TiFlash服务状态 - - **VPCId** (str) - 私有网Id - - **Version** (str) - 集群版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListTiDBClusterServiceRequestSchema().dumps(d) - - resp = self.invoke("ListTiDBClusterService", d, **kwargs) - return apis.ListTiDBClusterServiceResponseSchema().loads(resp) - - def modify_ti_db_cluster_binlog( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyTiDBClusterBinlog - 开启/关闭 binlog - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Enable** (str) - (Required) binlog 状态 - - **Id** (str) - (Required) TIDB service id - - **NodeConfig** (dict) - 见 **ModifyTiDBClusterBinlogParamNodeConfig** 模型定义 - - **Response** - - - **ServiceId** (str) - ServiceId - - **Request Model** - - **ModifyTiDBClusterBinlogParamNodeConfig** - - **ConfigId** (str) - 节点配置ID - - **DiskSize** (int) - 节点磁盘大小 - - **NodeCount** (int) - 节点个数 - - **ServerType** (str) - 节点角色 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyTiDBClusterBinlogRequestSchema().dumps(d) - - resp = self.invoke("ModifyTiDBClusterBinlog", d, **kwargs) - return apis.ModifyTiDBClusterBinlogResponseSchema().loads(resp) - - def modify_ti_db_cluster_node( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyTiDBClusterNode - 集群扩缩容 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) TIDB service id - - **ScaleType** (str) - (Required) 扩缩类型,枚举值为:SCALEOUT,扩容;SCALEIN,缩容; - - **NodeConfig** (dict) - 见 **ModifyTiDBClusterNodeParamNodeConfig** 模型定义 - - **ServerId** (str) - 缩容节点ID,缩容时必填 - - **StartTime** (int) - 开始时间 - - **Response** - - - **ServiceId** (str) - ServiceId - - **Request Model** - - **ModifyTiDBClusterNodeParamNodeConfig** - - **ConfigId** (str) - 节点配置ID - - **NodeCount** (int) - 节点个数 - - **ServerType** (str) - 节点角色 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyTiDBClusterNodeRequestSchema().dumps(d) - - resp = self.invoke("ModifyTiDBClusterNode", d, **kwargs) - return apis.ModifyTiDBClusterNodeResponseSchema().loads(resp) - - def modify_ti_db_cluster_ti_flash( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyTiDBClusterTiFlash - 开启/关闭 tiflash - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Enable** (str) - (Required) tiflash 状态 - - **Id** (str) - (Required) TIDB service id - - **NodeConfig** (dict) - 见 **ModifyTiDBClusterTiFlashParamNodeConfig** 模型定义 - - **Response** - - - **ServiceId** (str) - ServiceId - - **Request Model** - - **ModifyTiDBClusterTiFlashParamNodeConfig** - - **ConfigId** (str) - 节点配置ID - - **DiskSize** (int) - 节点磁盘大小 - - **NodeCount** (int) - 节点个数 - - **ServerType** (str) - 节点角色 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyTiDBClusterTiFlashRequestSchema().dumps(d) - - resp = self.invoke("ModifyTiDBClusterTiFlash", d, **kwargs) - return apis.ModifyTiDBClusterTiFlashResponseSchema().loads(resp) - - def modify_ti_db_cluster_uhost_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyTiDBClusterUhostDisk - 变更集群节点磁盘容量 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例ID - - **ScaleType** (str) - (Required) 扩缩类型,枚举值为:SCALEOUT,扩容;SCALEIN,缩容; - - **NodeConfig** (dict) - 见 **ModifyTiDBClusterUhostDiskParamNodeConfig** 模型定义 - - **StartTime** (int) - 开始时间 - - **Response** - - - **ServiceId** (str) - 实例ID - - **Request Model** - - **ModifyTiDBClusterUhostDiskParamNodeConfig** - - **DiskSize** (int) - 磁盘容量 - - **ServerType** (str) - 节点角色 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyTiDBClusterUhostDiskRequestSchema().dumps(d) - - resp = self.invoke("ModifyTiDBClusterUhostDisk", d, **kwargs) - return apis.ModifyTiDBClusterUhostDiskResponseSchema().loads(resp) - - def modify_ti_db_cluster_uhost_specs( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyTiDBClusterUhostSpecs - 修改集群主机规格 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例ID - - **NodeConfig** (dict) - 见 **ModifyTiDBClusterUhostSpecsParamNodeConfig** 模型定义 - - **StartTime** (int) - 开始时间 - - **Response** - - - **ServiceId** (str) - 实例ID - - **Request Model** - - **ModifyTiDBClusterUhostSpecsParamNodeConfig** - - **ConfigId** (str) - 机器规格ID - - **ServerType** (str) - 节点角色 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyTiDBClusterUhostSpecsRequestSchema().dumps(d) - - resp = self.invoke("ModifyTiDBClusterUhostSpecs", d, **kwargs) - return apis.ModifyTiDBClusterUhostSpecsResponseSchema().loads(resp) - - def set_ti_db_config( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetTiDBConfig - - - **Request** - - - **ProjectId** (str) - (Config) - - **Region** (str) - (Config) - - **Id** (str) - (Required) - - **Configs** (list) - 见 **SetTiDBConfigParamConfigs** 模型定义 - - **Response** - - - **ServiceId** (str) - - - **Request Model** - - **SetTiDBConfigParamConfigs** - - **Name** (str) - - - **Value** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.SetTiDBConfigRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("SetTiDBConfig", d, **kwargs) - return apis.SetTiDBConfigResponseSchema().loads(resp) - - def start_ti_db_cluster_backup( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartTiDBClusterBackup - 开始按实例计费的tidb的备份 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Id** (str) - (Required) 实例的服务Id - - **BackupFilter** (str) - 备份过滤规则 - - **BackupTs** (str) - 备份时间 - - **Response** - - - **BackupId** (str) - 备份id - - **Message** (str) - 返回信息 - - **ServiceId** (str) - 实例id - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartTiDBClusterBackupRequestSchema().dumps(d) - - resp = self.invoke("StartTiDBClusterBackup", d, **kwargs) - return apis.StartTiDBClusterBackupResponseSchema().loads(resp) - - def start_ti_db_cluster_restore( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartTiDBClusterRestore - 开始按实例计费tidb的恢复 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackupId** (str) - (Required) 备份id - - **Id** (str) - (Required) 实例id - - **Response** - - - **Message** (str) - 返回信息 - - **RestoreId** (str) - 恢复任务Id - - **ServiceId** (str) - 实例id - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartTiDBClusterRestoreRequestSchema().dumps(d) - - resp = self.invoke("StartTiDBClusterRestore", d, **kwargs) - return apis.StartTiDBClusterRestoreResponseSchema().loads(resp) - - def upgrade_ti_db_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeTiDBCluster - 升级预付费tidb集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DbVersion** (str) - (Required) 目标版本号 - - **Id** (str) - (Required) 实例id - - **StartTime** (int) - 任务开始时间 - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpgradeTiDBClusterRequestSchema().dumps(d) - - resp = self.invoke("UpgradeTiDBCluster", d, **kwargs) - return apis.UpgradeTiDBClusterResponseSchema().loads(resp) diff --git a/ucloud/services/tidb/schemas/apis.py b/ucloud/services/tidb/schemas/apis.py deleted file mode 100644 index e965d218..00000000 --- a/ucloud/services/tidb/schemas/apis.py +++ /dev/null @@ -1,630 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.tidb.schemas import models - -""" TiDB API Schema -""" - - -""" -API: CreateTiDBClusterService - -创建预付费实例 -""" - - -class CreateTiDBClusterServiceParamLabelsSchema(schema.RequestSchema): - """CreateTiDBClusterServiceParamLabels -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - } - - -class CreateTiDBClusterServiceParamOrderDetailSchema(schema.RequestSchema): - """CreateTiDBClusterServiceParamOrderDetail -""" - - fields = { - "Multiple": fields.Int(required=True, dump_to="Multiple"), - "ProductName": fields.Str(required=True, dump_to="ProductName"), - } - - -class CreateTiDBClusterServiceParamSecGroupInfoSchema(schema.RequestSchema): - """CreateTiDBClusterServiceParamSecGroupInfo -""" - - fields = { - "Priority": fields.Int(required=False, dump_to="Priority"), - "SecGroupId": fields.Str(required=False, dump_to="SecGroupId"), - } - - -class CreateTiDBClusterServiceParamNodeConfigSchema(schema.RequestSchema): - """CreateTiDBClusterServiceParamNodeConfig -""" - - fields = { - "ConfigId": fields.Str(required=True, dump_to="ConfigId"), - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class CreateTiDBClusterServiceRequestSchema(schema.RequestSchema): - """CreateTiDBClusterService - 创建预付费实例""" - - fields = { - "ActivityId": fields.Int(required=False, dump_to="ActivityId"), - "AlertStrategyIds": fields.List(fields.Int()), - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "Coupon": fields.Str(required=True, dump_to="Coupon"), - "DTType": fields.Str(required=True, dump_to="DTType"), - "DbVersion": fields.Str(required=False, dump_to="DbVersion"), - "Ip": fields.Str(required=False, dump_to="Ip"), - "Labels": fields.List(CreateTiDBClusterServiceParamLabelsSchema()), - "Name": fields.Str(required=True, dump_to="Name"), - "NodeConfig": fields.List( - CreateTiDBClusterServiceParamNodeConfigSchema() - ), - "OrderDetail": fields.List( - CreateTiDBClusterServiceParamOrderDetailSchema() - ), - "Password": fields.Str(required=True, dump_to="Password"), - "Port": fields.Str(required=False, dump_to="Port"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "PromotionId": fields.Str(required=False, dump_to="PromotionId"), - "PubUlbId": fields.Str(required=True, dump_to="PubUlbId"), - "Quantity": fields.Float(required=True, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "RuleId": fields.Int(required=False, dump_to="RuleId"), - "SecGroupInfo": fields.List( - CreateTiDBClusterServiceParamSecGroupInfoSchema() - ), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "TemplateId": fields.Str(required=False, dump_to="TemplateId"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateTiDBClusterServiceResponseSchema(schema.ResponseSchema): - """CreateTiDBClusterService - 创建预付费实例""" - - fields = { - "Data": models.ServiceDataSchema(), - } - - -""" -API: CreateTiDBService - - -""" - - -class CreateTiDBServiceRequestSchema(schema.RequestSchema): - """CreateTiDBService -""" - - fields = { - "DTType": fields.Str(required=False, dump_to="DTType"), - "Ip": fields.Str(required=False, dump_to="Ip"), - "Name": fields.Str(required=True, dump_to="Name"), - "Password": fields.Str(required=True, dump_to="Password"), - "Port": fields.Str(required=False, dump_to="Port"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "TikvMemoryHardTh": fields.Str( - required=False, dump_to="TikvMemoryHardTh" - ), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - } - - -class CreateTiDBServiceResponseSchema(schema.ResponseSchema): - """CreateTiDBService -""" - - fields = { - "Data": models.ServiceIDSchema(required=False, load_from="Data"), - "Message": fields.Str(required=False, load_from="Message"), - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: DeleteTiDBClusterService - -删除预付费实例 -""" - - -class DeleteTiDBClusterServiceRequestSchema(schema.RequestSchema): - """DeleteTiDBClusterService - 删除预付费实例""" - - fields = { - "DeleteBackup": fields.Bool(required=False, dump_to="DeleteBackup"), - "Id": fields.Str(required=True, dump_to="Id"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteTiDBClusterServiceResponseSchema(schema.ResponseSchema): - """DeleteTiDBClusterService - 删除预付费实例""" - - fields = { - "ServiceId": fields.Str(required=True, load_from="ServiceId"), - } - - -""" -API: DeleteTiDBService - - -""" - - -class DeleteTiDBServiceRequestSchema(schema.RequestSchema): - """DeleteTiDBService -""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteTiDBServiceResponseSchema(schema.ResponseSchema): - """DeleteTiDBService -""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: GetTiDBClusterService - -获取预付费实例详情 -""" - - -class GetTiDBClusterServiceRequestSchema(schema.RequestSchema): - """GetTiDBClusterService - 获取预付费实例详情""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class GetTiDBClusterServiceResponseSchema(schema.ResponseSchema): - """GetTiDBClusterService - 获取预付费实例详情""" - - fields = { - "Data": models.UTiDBServiceDataSchema(), - } - - -""" -API: GetTiDBClusterUhostSpecs - -拉取预付费机器规格信息 -""" - - -class GetTiDBClusterUhostSpecsRequestSchema(schema.RequestSchema): - """GetTiDBClusterUhostSpecs - 拉取预付费机器规格信息""" - - fields = { - "NodeTypes": fields.List(fields.Str()), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetTiDBClusterUhostSpecsResponseSchema(schema.ResponseSchema): - """GetTiDBClusterUhostSpecs - 拉取预付费机器规格信息""" - - fields = { - "Data": fields.List( - models.UhostSpecsSchema(), required=True, load_from="Data" - ), - } - - -""" -API: ListTiDBClusterBackup - -列出按实例备份tidb的备份列表 -""" - - -class ListTiDBClusterBackupRequestSchema(schema.RequestSchema): - """ListTiDBClusterBackup - 列出按实例备份tidb的备份列表""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ListTiDBClusterBackupResponseSchema(schema.ResponseSchema): - """ListTiDBClusterBackup - 列出按实例备份tidb的备份列表""" - - fields = { - "Data": models.BackupDataSchema(), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: ListTiDBClusterRestore - -列出实例恢复列表 -""" - - -class ListTiDBClusterRestoreRequestSchema(schema.RequestSchema): - """ListTiDBClusterRestore - 列出实例恢复列表""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "Limit": fields.Int(required=True, dump_to="Limit"), - "Offset": fields.Int(required=True, dump_to="Offset"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ListTiDBClusterRestoreResponseSchema(schema.ResponseSchema): - """ListTiDBClusterRestore - 列出实例恢复列表""" - - fields = { - "RestoreData": models.RestoreDataSchema(), - } - - -""" -API: ListTiDBClusterService - -拉取预付费实例列表 -""" - - -class ListTiDBClusterServiceRequestSchema(schema.RequestSchema): - """ListTiDBClusterService - 拉取预付费实例列表""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListTiDBClusterServiceResponseSchema(schema.ResponseSchema): - """ListTiDBClusterService - 拉取预付费实例列表""" - - fields = { - "Data": fields.List( - models.UTiDBServiceDataSchema(), required=True, load_from="Data" - ), - } - - -""" -API: ModifyTiDBClusterBinlog - -开启/关闭 binlog -""" - - -class ModifyTiDBClusterBinlogParamNodeConfigSchema(schema.RequestSchema): - """ModifyTiDBClusterBinlogParamNodeConfig -""" - - fields = { - "ConfigId": fields.Str(required=True, dump_to="ConfigId"), - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class ModifyTiDBClusterBinlogRequestSchema(schema.RequestSchema): - """ModifyTiDBClusterBinlog - 开启/关闭 binlog""" - - fields = { - "Enable": fields.Str(required=True, dump_to="Enable"), - "Id": fields.Str(required=True, dump_to="Id"), - "NodeConfig": ModifyTiDBClusterBinlogParamNodeConfigSchema( - required=False, dump_to="NodeConfig" - ), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ModifyTiDBClusterBinlogResponseSchema(schema.ResponseSchema): - """ModifyTiDBClusterBinlog - 开启/关闭 binlog""" - - fields = { - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: ModifyTiDBClusterNode - -集群扩缩容 -""" - - -class ModifyTiDBClusterNodeParamNodeConfigSchema(schema.RequestSchema): - """ModifyTiDBClusterNodeParamNodeConfig -""" - - fields = { - "ConfigId": fields.Str(required=True, dump_to="ConfigId"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class ModifyTiDBClusterNodeRequestSchema(schema.RequestSchema): - """ModifyTiDBClusterNode - 集群扩缩容""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "NodeConfig": ModifyTiDBClusterNodeParamNodeConfigSchema( - required=False, dump_to="NodeConfig" - ), - "Region": fields.Str(required=True, dump_to="Region"), - "ScaleType": fields.Str(required=True, dump_to="ScaleType"), - "ServerId": fields.Str(required=False, dump_to="ServerId"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - } - - -class ModifyTiDBClusterNodeResponseSchema(schema.ResponseSchema): - """ModifyTiDBClusterNode - 集群扩缩容""" - - fields = { - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: ModifyTiDBClusterTiFlash - -开启/关闭 tiflash -""" - - -class ModifyTiDBClusterTiFlashParamNodeConfigSchema(schema.RequestSchema): - """ModifyTiDBClusterTiFlashParamNodeConfig -""" - - fields = { - "ConfigId": fields.Str(required=True, dump_to="ConfigId"), - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class ModifyTiDBClusterTiFlashRequestSchema(schema.RequestSchema): - """ModifyTiDBClusterTiFlash - 开启/关闭 tiflash""" - - fields = { - "Enable": fields.Str(required=True, dump_to="Enable"), - "Id": fields.Str(required=True, dump_to="Id"), - "NodeConfig": ModifyTiDBClusterTiFlashParamNodeConfigSchema( - required=False, dump_to="NodeConfig" - ), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ModifyTiDBClusterTiFlashResponseSchema(schema.ResponseSchema): - """ModifyTiDBClusterTiFlash - 开启/关闭 tiflash""" - - fields = { - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: ModifyTiDBClusterUhostDisk - -变更集群节点磁盘容量 -""" - - -class ModifyTiDBClusterUhostDiskParamNodeConfigSchema(schema.RequestSchema): - """ModifyTiDBClusterUhostDiskParamNodeConfig -""" - - fields = { - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class ModifyTiDBClusterUhostDiskRequestSchema(schema.RequestSchema): - """ModifyTiDBClusterUhostDisk - 变更集群节点磁盘容量""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "NodeConfig": ModifyTiDBClusterUhostDiskParamNodeConfigSchema( - required=False, dump_to="NodeConfig" - ), - "Region": fields.Str(required=True, dump_to="Region"), - "ScaleType": fields.Str(required=True, dump_to="ScaleType"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - } - - -class ModifyTiDBClusterUhostDiskResponseSchema(schema.ResponseSchema): - """ModifyTiDBClusterUhostDisk - 变更集群节点磁盘容量""" - - fields = { - "ServiceId": fields.Str(required=True, load_from="ServiceId"), - } - - -""" -API: ModifyTiDBClusterUhostSpecs - -修改集群主机规格 -""" - - -class ModifyTiDBClusterUhostSpecsParamNodeConfigSchema(schema.RequestSchema): - """ModifyTiDBClusterUhostSpecsParamNodeConfig -""" - - fields = { - "ConfigId": fields.Str(required=True, dump_to="ConfigId"), - "ServerType": fields.Str(required=True, dump_to="ServerType"), - } - - -class ModifyTiDBClusterUhostSpecsRequestSchema(schema.RequestSchema): - """ModifyTiDBClusterUhostSpecs - 修改集群主机规格""" - - fields = { - "Id": fields.Str(required=True, dump_to="Id"), - "NodeConfig": ModifyTiDBClusterUhostSpecsParamNodeConfigSchema( - required=False, dump_to="NodeConfig" - ), - "Region": fields.Str(required=True, dump_to="Region"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - } - - -class ModifyTiDBClusterUhostSpecsResponseSchema(schema.ResponseSchema): - """ModifyTiDBClusterUhostSpecs - 修改集群主机规格""" - - fields = { - "ServiceId": fields.Str(required=True, load_from="ServiceId"), - } - - -""" -API: SetTiDBConfig - - -""" - - -class SetTiDBConfigParamConfigsSchema(schema.RequestSchema): - """SetTiDBConfigParamConfigs -""" - - fields = { - "Name": fields.Str(required=True, dump_to="Name"), - "Value": fields.Str(required=True, dump_to="Value"), - } - - -class SetTiDBConfigRequestSchema(schema.RequestSchema): - """SetTiDBConfig -""" - - fields = { - "Configs": fields.List(SetTiDBConfigParamConfigsSchema()), - "Id": fields.Str(required=True, dump_to="Id"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class SetTiDBConfigResponseSchema(schema.ResponseSchema): - """SetTiDBConfig -""" - - fields = { - "ServiceId": fields.Str(required=False, load_from="ServiceId"), - } - - -""" -API: StartTiDBClusterBackup - -开始按实例计费的tidb的备份 -""" - - -class StartTiDBClusterBackupRequestSchema(schema.RequestSchema): - """StartTiDBClusterBackup - 开始按实例计费的tidb的备份""" - - fields = { - "BackupFilter": fields.Str(required=False, dump_to="BackupFilter"), - "BackupTs": fields.Str(required=False, dump_to="BackupTs"), - "Id": fields.Str(required=True, dump_to="Id"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class StartTiDBClusterBackupResponseSchema(schema.ResponseSchema): - """StartTiDBClusterBackup - 开始按实例计费的tidb的备份""" - - fields = { - "BackupId": fields.Str(required=True, load_from="BackupId"), - "Message": fields.Str(required=False, load_from="Message"), - "ServiceId": fields.Str(required=True, load_from="ServiceId"), - } - - -""" -API: StartTiDBClusterRestore - -开始按实例计费tidb的恢复 -""" - - -class StartTiDBClusterRestoreRequestSchema(schema.RequestSchema): - """StartTiDBClusterRestore - 开始按实例计费tidb的恢复""" - - fields = { - "BackupId": fields.Str(required=True, dump_to="BackupId"), - "Id": fields.Str(required=True, dump_to="Id"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class StartTiDBClusterRestoreResponseSchema(schema.ResponseSchema): - """StartTiDBClusterRestore - 开始按实例计费tidb的恢复""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "RestoreId": fields.Str(required=True, load_from="RestoreId"), - "ServiceId": fields.Str(required=True, load_from="ServiceId"), - } - - -""" -API: UpgradeTiDBCluster - -升级预付费tidb集群 -""" - - -class UpgradeTiDBClusterRequestSchema(schema.RequestSchema): - """UpgradeTiDBCluster - 升级预付费tidb集群""" - - fields = { - "DbVersion": fields.Str(required=True, dump_to="DbVersion"), - "Id": fields.Str(required=True, dump_to="Id"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - } - - -class UpgradeTiDBClusterResponseSchema(schema.ResponseSchema): - """UpgradeTiDBCluster - 升级预付费tidb集群""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } diff --git a/ucloud/services/tidb/schemas/models.py b/ucloud/services/tidb/schemas/models.py deleted file mode 100644 index 1485c42b..00000000 --- a/ucloud/services/tidb/schemas/models.py +++ /dev/null @@ -1,95 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class ServiceDataSchema(schema.ResponseSchema): - """ServiceData - 服务ID""" - - fields = { - "Id": fields.Str(required=True, load_from="Id"), - } - - -class ServiceIDSchema(schema.ResponseSchema): - """ServiceID -""" - - fields = { - "Id": fields.Str(required=True, load_from="Id"), - } - - -class UTiDBServiceDataSchema(schema.ResponseSchema): - """UTiDBServiceData - 预付费实例详情""" - - fields = { - "AutoBackup": fields.Str(required=False, load_from="AutoBackup"), - "BinlogState": fields.Str(required=False, load_from="BinlogState"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DTType": fields.Int(required=False, load_from="DTType"), - "DashboardUrl": fields.Str(required=False, load_from="DashboardUrl"), - "GrafanaUrl": fields.Str(required=False, load_from="GrafanaUrl"), - "Id": fields.Str(required=False, load_from="Id"), - "Ip": fields.Str(required=False, load_from="Ip"), - "Name": fields.Str(required=False, load_from="Name"), - "Port": fields.Int(required=False, load_from="Port"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "TiFlashState": fields.Str(required=False, load_from="TiFlashState"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Version": fields.Str(required=False, load_from="Version"), - } - - -class UhostSpecsSchema(schema.ResponseSchema): - """UhostSpecs - 预付费机器规格""" - - fields = { - "ConfigId": fields.Str(required=False, load_from="ConfigId"), - "ConfigName": fields.Str(required=False, load_from="ConfigName"), - "CoreNum": fields.Int(required=False, load_from="CoreNum"), - "DiskStep": fields.Int(required=False, load_from="DiskStep"), - "MaxDiskCapacity": fields.Int( - required=False, load_from="MaxDiskCapacity" - ), - "Memory": fields.Int(required=False, load_from="Memory"), - "MinDiskCapacity": fields.Int( - required=False, load_from="MinDiskCapacity" - ), - "NodeType": fields.Str(required=False, load_from="NodeType"), - } - - -class BackupDataSchema(schema.ResponseSchema): - """BackupData - Backup数据""" - - fields = { - "BackupEndTime": fields.Int(required=True, load_from="BackupEndTime"), - "BackupId": fields.Str(required=True, load_from="BackupId"), - "BackupSize": fields.Int(required=True, load_from="BackupSize"), - "BackupStartTime": fields.Int( - required=True, load_from="BackupStartTime" - ), - "BackupType": fields.Str(required=True, load_from="BackupType"), - "State": fields.Str(required=True, load_from="State"), - } - - -class RestoreDataSchema(schema.ResponseSchema): - """RestoreData - 恢复的数据""" - - fields = { - "BackupId": fields.Str(required=True, load_from="BackupId"), - "RestoreEndTime": fields.Int(required=True, load_from="RestoreEndTime"), - "RestoreId": fields.Str(required=True, load_from="RestoreId"), - "RestoreStartTime": fields.Int( - required=True, load_from="RestoreStartTime" - ), - "SourceServiceId": fields.Str( - required=True, load_from="SourceServiceId" - ), - "State": fields.Str(required=True, load_from="State"), - "TargetServiceId": fields.Str( - required=True, load_from="TargetServiceId" - ), - } diff --git a/ucloud/services/uaaa/client.py b/ucloud/services/uaaa/client.py deleted file mode 100644 index 2159a516..00000000 --- a/ucloud/services/uaaa/client.py +++ /dev/null @@ -1,311 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uaaa.schemas import apis - - -class UAAAClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UAAAClient, self).__init__(config, transport, middleware, logger) - - def create_app_repo( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateAppRepo - 创建应用仓库加速实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ChargeType** (str) - (Required) 计费类型(年:'Year', 月:'Month',小时:'Dynamic') - - **Name** (str) - (Required) 名称 - - **VPCId** (list) - (Required) 待加速的VPCId ( 目前只允许一个) - - **CouponId** (str) - 代金券 - - **Description** (str) - 应用仓库描述 - - **Quantity** (int) - 数量(ChargeType对应的数值): ChargeType = Month 时,默认0 ,其他条件为必须字段 - - **RecordName** (list) - 记录名称,需在给定列表中 - - **Response** - - - **InstanceId** (str) - 应用仓库加速实例ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateAppRepoRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateAppRepo", d, **kwargs) - return apis.CreateAppRepoResponseSchema().loads(resp) - - def delete_app_repo( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteAppRepo - 删除应用仓库加速实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例 ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteAppRepoRequestSchema().dumps(d) - - resp = self.invoke("DeleteAppRepo", d, **kwargs) - return apis.DeleteAppRepoResponseSchema().loads(resp) - - def describe_app_repo( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeAppRepo - 查询应用仓库实例信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - 应用仓库加速实例ID - - **Response** - - - **DataSet** (list) - 见 **AppRepoInstance** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **AppRepoInstance** - - **ChargeType** (str) - 计费类型 - - **CreateTime** (int) - 创建时间。格式为Unix Timestamp - - **Description** (str) - 应用仓库描述信息 - - **ExpireTime** (int) - 到期时间 - - **InstanceId** (str) - 应用仓库实例ID - - **Name** (str) - 应用仓库名 - - **RecordName** (list) - 应用仓库绑定的加速域名 - - **VPC** (list) - 应用仓库绑定的vpc 信息 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeAppRepoRequestSchema().dumps(d) - - resp = self.invoke("DescribeAppRepo", d, **kwargs) - return apis.DescribeAppRepoResponseSchema().loads(resp) - - def describe_app_repo_permit_domain( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeAppRepoPermitDomain - 查询允许加速的域名白名单 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **DomainDetail** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **DomainDetail** - - **Info** (dict) - 见 **DomainInfo** 模型定义 - - **Redirect** (list) - 见 **DomainInfo** 模型定义 - - - **DomainInfo** - - **Desc** (str) - 备注信息 - - **DomainName** (str) - 域名解析记录名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeAppRepoPermitDomainRequestSchema().dumps(d) - - resp = self.invoke("DescribeAppRepoPermitDomain", d, **kwargs) - return apis.DescribeAppRepoPermitDomainResponseSchema().loads(resp) - - def describe_app_repo_post_paid_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeAppRepoPostPaidRecord - 查询应用仓库实例后付费记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **EndTime** (int) - (Required) 结束时间 (StartTime dict: - """GetAppRepoPrice - 获取应用仓库实例价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ChargeType** (str) - (Required) 计费类型 - - **DomainQuantity** (int) - 域名绑定数量( >= 0) ,默认: 0 - - **Quantity** (int) - 数量(和ChargeType相关): ChargeType = Month, 默认值为0 , 其他情况为必传字段 - - **Response** - - - **Price** (float) - 价格 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetAppRepoPriceRequestSchema().dumps(d) - - resp = self.invoke("GetAppRepoPrice", d, **kwargs) - return apis.GetAppRepoPriceResponseSchema().loads(resp) - - def get_app_repo_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetAppRepoUpgradePrice - 获取改配后的退/补金额 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例资源id - - **DomainQuantity** (int) - 绑定域名的数量 - - **Response** - - - **Price** (float) - 应补差价(单位:元) - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetAppRepoUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetAppRepoUpgradePrice", d, **kwargs) - return apis.GetAppRepoUpgradePriceResponseSchema().loads(resp) - - def update_app_repo( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateAppRepo - 修改应用仓库实例基本信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 应用仓库实例ID - - **Description** (str) - 应用仓库备注信息 - - **Name** (str) - 应用仓库名称 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateAppRepoRequestSchema().dumps(d) - - resp = self.invoke("UpdateAppRepo", d, **kwargs) - return apis.UpdateAppRepoResponseSchema().loads(resp) - - def update_app_repo_domain_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateAppRepoDomainName - 更新应用仓库实例绑定的加速域名 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 应用仓库实例ID - - **CouponId** (str) - 代金券 - - **RecordName** (list) - 加速域名列表。 不填写,相当于清空所有加速域名 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateAppRepoDomainNameRequestSchema().dumps(d) - - resp = self.invoke("UpdateAppRepoDomainName", d, **kwargs) - return apis.UpdateAppRepoDomainNameResponseSchema().loads(resp) diff --git a/ucloud/services/uaaa/schemas/apis.py b/ucloud/services/uaaa/schemas/apis.py deleted file mode 100644 index 294f287c..00000000 --- a/ucloud/services/uaaa/schemas/apis.py +++ /dev/null @@ -1,252 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uaaa.schemas import models - -""" UAAA API Schema -""" - - -""" -API: CreateAppRepo - -创建应用仓库加速实例 -""" - - -class CreateAppRepoRequestSchema(schema.RequestSchema): - """CreateAppRepo - 创建应用仓库加速实例""" - - fields = { - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "RecordName": fields.List(fields.Str()), - "Region": fields.Str(required=True, dump_to="Region"), - "VPCId": fields.List(fields.Str()), - } - - -class CreateAppRepoResponseSchema(schema.ResponseSchema): - """CreateAppRepo - 创建应用仓库加速实例""" - - fields = { - "InstanceId": fields.Str(required=False, load_from="InstanceId"), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DeleteAppRepo - -删除应用仓库加速实例 -""" - - -class DeleteAppRepoRequestSchema(schema.RequestSchema): - """DeleteAppRepo - 删除应用仓库加速实例""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteAppRepoResponseSchema(schema.ResponseSchema): - """DeleteAppRepo - 删除应用仓库加速实例""" - - fields = {} - - -""" -API: DescribeAppRepo - -查询应用仓库实例信息 -""" - - -class DescribeAppRepoRequestSchema(schema.RequestSchema): - """DescribeAppRepo - 查询应用仓库实例信息""" - - fields = { - "InstanceId": fields.Str(required=False, dump_to="InstanceId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeAppRepoResponseSchema(schema.ResponseSchema): - """DescribeAppRepo - 查询应用仓库实例信息""" - - fields = { - "DataSet": fields.List( - models.AppRepoInstanceSchema(), required=False, load_from="DataSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeAppRepoPermitDomain - -查询允许加速的域名白名单 -""" - - -class DescribeAppRepoPermitDomainRequestSchema(schema.RequestSchema): - """DescribeAppRepoPermitDomain - 查询允许加速的域名白名单""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeAppRepoPermitDomainResponseSchema(schema.ResponseSchema): - """DescribeAppRepoPermitDomain - 查询允许加速的域名白名单""" - - fields = { - "DataSet": fields.List( - models.DomainDetailSchema(), required=False, load_from="DataSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeAppRepoPostPaidRecord - -查询应用仓库实例后付费记录 -""" - - -class DescribeAppRepoPostPaidRecordRequestSchema(schema.RequestSchema): - """DescribeAppRepoPostPaidRecord - 查询应用仓库实例后付费记录""" - - fields = { - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "StartTime": fields.Int(required=True, dump_to="StartTime"), - } - - -class DescribeAppRepoPostPaidRecordResponseSchema(schema.ResponseSchema): - """DescribeAppRepoPostPaidRecord - 查询应用仓库实例后付费记录""" - - fields = { - "DataSet": fields.List( - models.TPostpaidBaseSchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: GetAppRepoPrice - -获取应用仓库实例价格 -""" - - -class GetAppRepoPriceRequestSchema(schema.RequestSchema): - """GetAppRepoPrice - 获取应用仓库实例价格""" - - fields = { - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "DomainQuantity": fields.Int(required=False, dump_to="DomainQuantity"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetAppRepoPriceResponseSchema(schema.ResponseSchema): - """GetAppRepoPrice - 获取应用仓库实例价格""" - - fields = { - "Price": fields.Float(required=False, load_from="Price"), - } - - -""" -API: GetAppRepoUpgradePrice - -获取改配后的退/补金额 -""" - - -class GetAppRepoUpgradePriceRequestSchema(schema.RequestSchema): - """GetAppRepoUpgradePrice - 获取改配后的退/补金额""" - - fields = { - "DomainQuantity": fields.Int(required=False, dump_to="DomainQuantity"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetAppRepoUpgradePriceResponseSchema(schema.ResponseSchema): - """GetAppRepoUpgradePrice - 获取改配后的退/补金额""" - - fields = { - "Price": fields.Float(required=False, load_from="Price"), - } - - -""" -API: UpdateAppRepo - -修改应用仓库实例基本信息 -""" - - -class UpdateAppRepoRequestSchema(schema.RequestSchema): - """UpdateAppRepo - 修改应用仓库实例基本信息""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class UpdateAppRepoResponseSchema(schema.ResponseSchema): - """UpdateAppRepo - 修改应用仓库实例基本信息""" - - fields = {} - - -""" -API: UpdateAppRepoDomainName - -更新应用仓库实例绑定的加速域名 -""" - - -class UpdateAppRepoDomainNameRequestSchema(schema.RequestSchema): - """UpdateAppRepoDomainName - 更新应用仓库实例绑定的加速域名""" - - fields = { - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "RecordName": fields.List(fields.Str()), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class UpdateAppRepoDomainNameResponseSchema(schema.ResponseSchema): - """UpdateAppRepoDomainName - 更新应用仓库实例绑定的加速域名""" - - fields = {} diff --git a/ucloud/services/uaaa/schemas/models.py b/ucloud/services/uaaa/schemas/models.py deleted file mode 100644 index 76ea4ce9..00000000 --- a/ucloud/services/uaaa/schemas/models.py +++ /dev/null @@ -1,47 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class AppRepoInstanceSchema(schema.ResponseSchema): - """AppRepoInstance - 应用仓库实例""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Description": fields.Str(required=True, load_from="Description"), - "ExpireTime": fields.Int(required=True, load_from="ExpireTime"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "Name": fields.Str(required=True, load_from="Name"), - "RecordName": fields.List(fields.Str()), - "VPC": fields.List(fields.Str()), - } - - -class DomainInfoSchema(schema.ResponseSchema): - """DomainInfo - 域名信息""" - - fields = { - "Desc": fields.Str(required=False, load_from="Desc"), - "DomainName": fields.Str(required=False, load_from="DomainName"), - } - - -class DomainDetailSchema(schema.ResponseSchema): - """DomainDetail - 域名详细信息""" - - fields = { - "Info": DomainInfoSchema(), - "Redirect": fields.List(DomainInfoSchema()), - } - - -class TPostpaidBaseSchema(schema.ResponseSchema): - """TPostpaidBase - 后付费记录""" - - fields = { - "EndTime": fields.Int(required=True, load_from="EndTime"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "StartTime": fields.Int(required=True, load_from="StartTime"), - "TrafficSum": fields.Int(required=True, load_from="TrafficSum"), - } diff --git a/ucloud/services/uads/client.py b/ucloud/services/uads/client.py deleted file mode 100644 index 7c7bc3a1..00000000 --- a/ucloud/services/uads/client.py +++ /dev/null @@ -1,1148 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uads.schemas import apis - - -class UADSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UADSClient, self).__init__(config, transport, middleware, logger) - - def add_high_protect_game_ip_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddHighProtectGameIPInfo - 添加代理ip - - **Request** - - - **LineType** (str) - (Required) 套餐线路类型, 如果是BGP的线路, 则为BGP;如果为双线, 则可选TELECOM, UNICOM;如果为海外, 则为INTERNATIONAL; - - **ResourceId** (str) - (Required) 资源Id - - **TypeIP** (str) - (Required) IP类型,取值范围为:TypeFree, TypeCharge - - **UserIP** (str) - (Required) 用户的源站ip - - **CouponId** (str) - 代金券ID - - **Remark** (str) - 备注,默认为空. - - **Response** - - - **Cname** (str) - cname记录 - - **DefenceIP** (str) - 防御IP - - **IPId** (int) - IPId - - **SrcIP** (str) - 源IP - - """ - # build request - d = {} - req and d.update(req) - d = apis.AddHighProtectGameIPInfoRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddHighProtectGameIPInfo", d, **kwargs) - return apis.AddHighProtectGameIPInfoResponseSchema().loads(resp) - - def add_nap_allow_list_domain( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddNapAllowListDomain - 添加域名允许列表 - - **Request** - - - **Domain** (list) - (Required) 域名,N从0开始,多个域名:Domain.0、Domain.1、... - - **ResourceId** (str) - (Required) 资源ID - - **Response** - - - **Data** (list) - 见 **DomainConfigResult** 模型定义 - - **Response Model** - - **DomainConfigResult** - - **Code** (int) - 错误码 - - **Domain** (str) - 域名 - - **Message** (str) - 提示信息 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.AddNapAllowListDomainRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddNapAllowListDomain", d, **kwargs) - return apis.AddNapAllowListDomainResponseSchema().loads(resp) - - def bind_nap_ip(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """BindNapIP - 直连高防:将尚未使用的高防EIP绑定到指定的资源 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。 请参考 `GetProjectList接口 `_ - - **BindResourceId** (str) - (Required) 绑定的资源ID - - **EIPId** (str) - (Required) EIP资源ID - - **NapIp** (str) - (Required) 高防IP - - **ResourceId** (str) - (Required) 高防资源ID - - **ResourceType** (str) - (Required) 绑定的资源类型(uhost:云主机,ulb:负载均衡,upm:物理机) - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.BindNapIPRequestSchema().dumps(d) - - resp = self.invoke("BindNapIP", d, **kwargs) - return apis.BindNapIPResponseSchema().loads(resp) - - def buy_high_protect_game_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BuyHighProtectGameService - 购买高防服务 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 `_ - - **AreaLine** (str) - (Required) 线路区域, 可取范围{"SouthChina", "EastChina"} - - **ChargeType** (str) - (Required) 计费方式 ,取值范围 {"Month", "Year", "Dynamic", "Day"};其中华东双线周付使用Day,其他支持的周付使用Dynamic; - - **EngineRoom** (list) - (Required) 购买的套餐所在机房,取值范围{"Hangzhou2", "Hangzhou", "Xiamen"} - - **LineType** (str) - (Required) 'default': 'DUPLET', 取值范围 {"DUPLET", "BGP"} - - **Quantity** (int) - (Required) 计费时长 - - **SrcBandwidth** (int) - (Required) 带宽 - - **CouponId** (str) - 代金券ID - - **DefenceDDosBaseFlowArr** (list) - DDoS基础防护值(当购买套餐为多种线路的时候,顺序为,电信,联通,移动...,当为单线的时候只传DefenceDDosBaseFlowArr.0) - - **DefenceDDosMaxFlowArr** (list) - DDoS最大防护值(当购买套餐为多种线路的时候,顺序为,电信,联通,移动...;当为单线的时候只传DefenceDDosMaxFlowArr.0) - - **DefenceType** (str) - 防御类型,默认为TypeFixed; 取值范围{"TypeFixed", "TypeDynamic"} - - **ForwardType** (str) - 转发类型,默认为:Proxy;Proxy:代理、Passthrough:直连 - - **HighProtectGameServiceName** (str) - 高防服务名称 - - **Vendor** (int) - 供应商编号 - - **Response** - - - **ResourceInfo** (dict) - 见 **ResourceInfo** 模型定义 - - **Response Model** - - **ResourceInfo** - - **ResourceId** (str) - 资源id - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.BuyHighProtectGameServiceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("BuyHighProtectGameService", d, **kwargs) - return apis.BuyHighProtectGameServiceResponseSchema().loads(resp) - - def create_bgp_service_fwd_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateBGPServiceFwdRule - 创建BGP高防转发规则 - - **Request** - - - **BgpIP** (str) - (Required) BGP的IP - - **ResourceId** (str) - (Required) 资源id - - **BackupIP** (str) - 备份源站的IP - - **BackupPort** (int) - 备份源站的端口 - - **BgpIPPort** (int) - 默认为0,为IP协议的转发端口,其余的自定义 - - **FwdType** (str) - 转发协议的类型包括三种:默认为“IP”,还可以选择为“TCP” - - **LoadBalance** (str) - 转发协议的类型是否为负载均衡的:默认为“No”,还可以选择为“Yes”。负载均衡模式下必须配置BackupIP - - **Remark** (str) - 备注,默认为空 - - **SourceAddrArr** (list) - 回源地址,可填 IP地址 或 域名 - - **SourceDetect** (int) - 表示对源站进行检测:默认为0表示关闭,还可以选择为1表示开启 - - **SourcePortArr** (list) - 回源端口 - - **SourceToaIDArr** (list) - 回源TOA - - **SourceType** (str) - 回源类型,分 “IP”、“Domain” - - **Response** - - - **RuleIndex** (int) - 转发规则的数据库索引值 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateBGPServiceFwdRuleRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateBGPServiceFwdRule", d, **kwargs) - return apis.CreateBGPServiceFwdRuleResponseSchema().loads(resp) - - def create_bgp_service_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateBGPServiceIP - 分配一个BGP IP - - **Request** - - - **ResourceId** (str) - (Required) 资源id,表示归属在哪个高防服务下 - - **EIPRegion** (str) - 高防IP对应机房(直连高防必须携带) - - **Remark** (str) - 备注,默认为空 - - **TypeIP** (str) - ip的类型, 默认是TypeFree - - **Response** - - - **Cname** (str) - cname记录 - - **DefenceIP** (str) - 分配的BGP高防IP的IP地址 - - **EnableSwitch** (int) - 是否热备份开启 - - **IPId** (int) - IPId - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateBGPServiceIPRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateBGPServiceIP", d, **kwargs) - return apis.CreateBGPServiceIPResponseSchema().loads(resp) - - def delete_bgp_service_fwd_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteBGPServiceFwdRule - 删除转发规则 - - **Request** - - - **ResourceId** (str) - (Required) 资源id - - **RuleIndex** (int) - (Required) 需要删除的转发规则ID - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteBGPServiceFwdRuleRequestSchema().dumps(d) - - resp = self.invoke("DeleteBGPServiceFwdRule", d, **kwargs) - return apis.DeleteBGPServiceFwdRuleResponseSchema().loads(resp) - - def delete_bgp_service_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteBGPServiceIP - 删除BGP高防IP - - **Request** - - - **Region** (str) - (Config) 机房(直接模式高防需要传) - - **DefenceIp** (str) - (Required) 需要删除的高防IP - - **ResourceId** (str) - (Required) 资源id - - **Response** - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteBGPServiceIPRequestSchema().dumps(d) - - resp = self.invoke("DeleteBGPServiceIP", d, **kwargs) - return apis.DeleteBGPServiceIPResponseSchema().loads(resp) - - def delete_high_protect_game_ip_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteHighProtectGameIPInfo - 删除高防IP - - **Request** - - - **DefenceIp** (str) - (Required) 要删除的高防ip - - **ResourceId** (str) - (Required) 资源ID - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteHighProtectGameIPInfoRequestSchema().dumps(d) - - resp = self.invoke("DeleteHighProtectGameIPInfo", d, **kwargs) - return apis.DeleteHighProtectGameIPInfoResponseSchema().loads(resp) - - def delete_high_protect_game_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteHighProtectGameService - 删除高防 - - **Request** - - - **ResourceId** (str) - (Required) 删除的资源Id - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteHighProtectGameServiceRequestSchema().dumps(d) - - resp = self.invoke("DeleteHighProtectGameService", d, **kwargs) - return apis.DeleteHighProtectGameServiceResponseSchema().loads(resp) - - def delete_nap_allow_list_domain( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteNapAllowListDomain - 删除域名允许列表 - - **Request** - - - **Domain** (list) - (Required) 域名,N从0开始,多个域名:Domain.0、Domain.1、... - - **ResourceId** (str) - (Required) 资源ID - - **Response** - - - **Data** (list) - 见 **DomainConfigResult** 模型定义 - - **Response Model** - - **DomainConfigResult** - - **Code** (int) - 错误码 - - **Domain** (str) - 域名 - - **Message** (str) - 提示信息 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DeleteNapAllowListDomainRequestSchema().dumps(d) - - resp = self.invoke("DeleteNapAllowListDomain", d, **kwargs) - return apis.DeleteNapAllowListDomainResponseSchema().loads(resp) - - def describe_buy_high_protect_game_ip_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeBuyHighProtectGameIPPrice - 获取购买IP的价格 - - **Request** - - - **ChargeType** (str) - (Required) 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费(需开启权限); Trial - - **Quantity** (int) - (Required) 购买数量 - - **ResourceId** (str) - (Required) 资源ID - - **Response** - - - **PremiumPrice** (float) - 溢价 - - **UnitPrice** (float) - 单位价格 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeBuyHighProtectGameIPPriceRequestSchema().dumps(d) - - resp = self.invoke("DescribeBuyHighProtectGameIPPrice", d, **kwargs) - return apis.DescribeBuyHighProtectGameIPPriceResponseSchema().loads( - resp - ) - - def describe_high_protect_game_ip_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeHighProtectGameIPInfo - 获取高防IP信息 - - **Request** - - - **ResourceId** (str) - (Required) 资源短id - - **Limit** (int) - 返回数据长度,默认为50。 - - **Offset** (int) - 列表起始位置偏移量,默认为0。 - - **Response** - - - **AvailableIPQuota** (int) - 可用剩余ip配额数 - - **GameIPInfo** (list) - 见 **GameIpInfoTotal** 模型定义 - - **TotalCount** (int) - 已经配置的总数 - - **Response Model** - - **GameIpInfoTotal** - - **Cname** (str) - 高防IP Cname - - **DefenceIP** (str) - 高防IP - - **LineType** (str) - 线路类型 - - **Remark** (str) - 用户mark - - **RuleCnt** (int) - 规则的个数 - - **SrcIP** (list) - 回源ip列表 - - **Status** (str) - ip配置状态 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeHighProtectGameIPInfoRequestSchema().dumps(d) - - resp = self.invoke("DescribeHighProtectGameIPInfo", d, **kwargs) - return apis.DescribeHighProtectGameIPInfoResponseSchema().loads(resp) - - def describe_nap_history_statistic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeNapHistoryStatistic - 获取高防历史统计 - - **Request** - - - **BeginTime** (int) - (Required) 开始时间,Unix时间戳 - - **EndTime** (int) - (Required) 结束时间,Unix时间戳 - - **ResourceId** (str) - (Required) 资源ID - - **Accuracy** (int) - 查询粒度。1.分钟粒度 2.小时粒度 3.天粒度 默认为21.分钟粒度,BeginTime开始时间是7天内,EndTime-BeginTime时间跨度最大是1小时2.小时粒度,BeginTime开始时间是30天内,EndTime-BeginTime时间跨度最大是7天3.天粒度,BeginTime开始时间是180天内,EndTime-BeginTime时间跨度最大是90天 - - **Limit** (int) - 返回数据长度,默认不限制 - - **NapIP** (str) - 高防IP - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **NetStats** (list) - 见 **NetStats** 模型定义 - - **Response Model** - - **NetStats** - - **Drop** (dict) - 见 **NetStatEntry** 模型定义 - - **Egress** (dict) - 见 **NetStatEntry** 模型定义 - - **Ingress** (dict) - 见 **NetStatEntry** 模型定义 - - **Time** (int) - Unix时间戳 - - - **NetStatEntry** - - **Bps** (float) - 流量,单位:Mbits - - **Pps** (int) - 包量,单位:pps - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeNapHistoryStatisticRequestSchema().dumps(d) - - resp = self.invoke("DescribeNapHistoryStatistic", d, **kwargs) - return apis.DescribeNapHistoryStatisticResponseSchema().loads(resp) - - def describe_nap_real_time_statistic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeNapRealTimeStatistic - 获取高防实时统计 - - **Request** - - - **BeginTime** (int) - (Required) 开始时间,Unix时间戳 - - **EndTime** (int) - (Required) 结束时间,Unix时间戳(时间跨度不超过1小时) - - **ResourceId** (str) - (Required) 资源ID - - **Limit** (int) - 返回数据长度,默认不限制 - - **NapIP** (str) - 高防IP - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **NetStats** (list) - 见 **NetStats** 模型定义 - - **Response Model** - - **NetStats** - - **Drop** (dict) - 见 **NetStatEntry** 模型定义 - - **Egress** (dict) - 见 **NetStatEntry** 模型定义 - - **Ingress** (dict) - 见 **NetStatEntry** 模型定义 - - **Time** (int) - Unix时间戳 - - - **NetStatEntry** - - **Bps** (float) - 流量,单位:Mbits - - **Pps** (int) - 包量,单位:pps - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeNapRealTimeStatisticRequestSchema().dumps(d) - - resp = self.invoke("DescribeNapRealTimeStatistic", d, **kwargs) - return apis.DescribeNapRealTimeStatisticResponseSchema().loads(resp) - - def describe_nap_service_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeNapServiceInfo - 获取高防服务信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 `_ - - **Limit** (int) - 返回数据长度,默认为10 - - **NapType** (int) - 高防类型;0:全部、1:内地高防、2:海外高防 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ResourceId** (str) - 资源ID - - **Response** - - - **ServiceInfo** (list) - 见 **ServiceInfo** 模型定义 - - **TotalCount** (int) - 总数 - - **Response Model** - - **ServiceInfo** - - **AccessMode** (str) - 接入模式,Domain:网站接入、IP:非网站接入 - - **AreaLine** (str) - 防护机房所在区域 - - **AutoRenew** (str) - 是否开启自动续费 - - **ChargeType** (str) - 付费类型 - - **CreateTime** (int) - 创建时间 - - **DefenceDDosBaseFlowArr** (list) - 套餐基础防护组 - - **DefenceDDosMaxFlowArr** (list) - 套餐最大防护组 - - **DefenceStatus** (str) - 防护状态,Started:正常、Stopped:关闭、Expired:过期 - - **DefenceType** (str) - 防护类型 - - **EngineRoom** (list) - 防护机房名称 - - **ExpiredTime** (int) - 过期时间 - - **ForwardType** (str) - 转发类型,Proxy:代理、Passthrough:直连 - - **GameId** (int) - 套餐ID - - **LineType** (str) - 线路类型 - - **Name** (str) - 套餐名称 - - **NapType** (int) - 高防类型,1:内地高防、2:海外高防 - - **ProjectId** (str) - 项目ID - - **RegionId** (int) - region id - - **ResourceId** (str) - 资源ID - - **SrcBandwidth** (int) - 业务带宽 - - **Vendor** (int) - 供应商ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeNapServiceInfoRequestSchema().dumps(d) - - resp = self.invoke("DescribeNapServiceInfo", d, **kwargs) - return apis.DescribeNapServiceInfoResponseSchema().loads(resp) - - def describe_passthrough_nap_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribePassthroughNapIP - 获取直连高防IP信息 - - **Request** - - - **ResourceId** (str) - (Required) 高防资源ID - - **Limit** (int) - 限制(传EIPs.0时暂时无效) - - **NapIp** (str) - 高防IP - - **Offset** (int) - 位偏移(传EIPs.0时暂时无效) - - **Response** - - - **AvailableIPQuota** (int) - 合法IP配额 - - **IPInfo** (list) - 见 **IPInfo** 模型定义 - - **Message** (str) - 错误信息 - - **TotalCount** (int) - IP总个数 - - **Response Model** - - **IPInfo** - - **CreateTime** (int) - 创建时间 - - **EIPAddr** (list) - 见 **EIPAddrSet** 模型定义 - - **EIPId** (str) - EIP资源ID - - **EIPRegion** (str) - EIP Region - - **Resource** (dict) - 见 **Resouce** 模型定义 - - **Status** (str) - 状态 - - **Tag** (str) - 业务组 - - - **EIPAddrSet** - - **EIPType** (str) - IP类型:gaofang - - **IP** (str) - 弹性IP地址 - - **OperatorName** (str) - 运营商信息, 枚举值为: BGP: BGP; International: 国际. - - - **Resouce** - - **EIPId** (str) - EIP资源ID - - **ResourceId** (str) - 资源ID - - **ResourceName** (str) - 资源名 - - **ResourceType** (str) - 资源类型 - - **Zone** (str) - 地区 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribePassthroughNapIPRequestSchema().dumps(d) - - resp = self.invoke("DescribePassthroughNapIP", d, **kwargs) - return apis.DescribePassthroughNapIPResponseSchema().loads(resp) - - def describe_upgrade_high_protect_game_service_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUpgradeHighProtectGameServicePrice - 获取高防升降级价格 - - **Request** - - - **ResourceId** (str) - (Required) 资源ID - - **AreaLine** (str) - 区域,华东和华南,EastChina 和SouthChina - - **DefenceDDosBaseFlowArr** (list) - DDoS弹性防护值 - - **DefenceDDosMaxFlowArr** (list) - DDoS基础防护值 - - **DefenceType** (str) - 防御类型,默认为TypeFixed - - **EngineRoom** (list) - 代表机房,例如Dongguan Hangzhou - - **LineType** (str) - 线路 - - **SrcBandwidth** (int) - 带宽,默认100M - - **Response** - - - **ChargeIPQuota** (int) - 收费IP配额 - - **FreeIPQuota** (int) - 免费IP配额 - - **Price** (int) - 价格 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeUpgradeHighProtectGameServicePriceRequestSchema().dumps( - d - ) - - resp = self.invoke( - "DescribeUpgradeHighProtectGameServicePrice", d, **kwargs - ) - return apis.DescribeUpgradeHighProtectGameServicePriceResponseSchema().loads( - resp - ) - - def get_bgp_service_fwd_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetBGPServiceFwdRule - 获取转发规则 - - **Request** - - - **ResourceId** (str) - (Required) 资源id - - **BgpIP** (str) - 指定需要查询的IP下的规则 - - **Limit** (int) - 分页显示的条目数,默认值为32 - - **Offset** (int) - 分页显示的起始偏移,默认值为0 - - **RuleIndex** (int) - 查询指定的rule_id, 不填写则默认获取所有的转发规则 - - **Response** - - - **AvailLoad** (int) - 负载模式下可添加的规则数量(根据IP查询才返回此参数) - - **AvailNonload** (int) - 非负载模式下可添加的规则数量(根据IP查询才返回此参数) - - **IpRuleExist** (bool) - 当前配置的规则中是否存在IP规则(根据IP查询才返回此参数) - - **RuleCnt** (int) - 满足要求的数据条目 - - **RuleInfo** (list) - 见 **BGPFwdRule** 模型定义 - - **Response Model** - - **BGPFwdRule** - - **BackupIP** (str) - 备份源站的IP - - **BackupPort** (int) - 备份源站的端口 - - **BgpIP** (str) - 转发规则对应的BGP高防的IP - - **BgpIPPort** (int) - 默认为0,为IP协议的转发端口,其余的自定义,在0~65535范围内即可,但是同一IP下配置的规则端口不能重复 - - **ClientProxyInfo** (dict) - 见 **FwdClientProxyInfo** 模型定义 - - **CreateTime** (int) - 创建时间,unix格式 - - **FwdType** (str) - 配置的规则的转发类型 - - **LoadBalance** (str) - 转发协议的类型是否为负载均衡的:默认为“No”,还可以选择为“Yes”。负载模式的规则最多添加2条,非负载模式的规则最多添加8条 - - **Remark** (str) - 备注 - - **RuleID** (str) - 转发规则的ID - - **RuleIndex** (int) - 生成的规则的数据库索引值 - - **SourceDetect** (int) - 表示对源站进行检测:默认为0表示关闭,还可以选择为1表示开启 - - **SourceInfo** (dict) - 见 **FwdSourceInfo** 模型定义 - - **Status** (str) - 规则的状态 - - **UpdateTime** (int) - 更新时间,unix格式 - - - **FwdClientProxyInfo** - - **Count** (int) - 回源IP个数 - - **IPList** (list) - 回源IP列表 - - - **FwdSourceInfo** - - **Conf** (list) - 见 **FwdSourceInfoConf** 模型定义 - - **Type** (str) - 回源类型,分 IP 和 Domain - - - **FwdSourceInfoConf** - - **IPList** (list) - 源站IP列表 - - **Port** (int) - 源站端口 - - **Source** (str) - 源站,兼容IP和域名 - - **Toa** (int) - 源站Toa - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetBGPServiceFwdRuleRequestSchema().dumps(d) - - resp = self.invoke("GetBGPServiceFwdRule", d, **kwargs) - return apis.GetBGPServiceFwdRuleResponseSchema().loads(resp) - - def get_bgp_service_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetBGPServiceIP - 获取BGP高防IP的信息 - - **Request** - - - **ResourceId** (str) - (Required) 资源id - - **BgpIP** (str) - BGP高防IP - - **Limit** (int) - 分页显示的条目数,默认值为32 - - **Offset** (int) - 分页显示的起始偏移,默认值为0 - - **Response** - - - **AvailableIPQuota** (int) - 套餐可用的ip配额 - - **GameIPInfo** (list) - 见 **GameIpInfoTotal** 模型定义 - - **TotalCount** (int) - 套餐中已经配置的ip数量 - - **Response Model** - - **GameIpInfoTotal** - - **Cname** (str) - 高防IP Cname - - **DefenceIP** (str) - 高防IP - - **LineType** (str) - 线路类型 - - **Remark** (str) - 用户mark - - **RuleCnt** (int) - 规则的个数 - - **SrcIP** (list) - 回源ip列表 - - **Status** (str) - ip配置状态 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetBGPServiceIPRequestSchema().dumps(d) - - resp = self.invoke("GetBGPServiceIP", d, **kwargs) - return apis.GetBGPServiceIPResponseSchema().loads(resp) - - def get_buy_nap_service_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetBuyNapServicePrice - 获取高防价格 - - **Request** - - - **AreaLine** (str) - (Required) 地区线路 - - **ChargeType** (str) - (Required) 计费方式 - - **DefenceDDosBaseFlowArr** (list) - (Required) DDoS基础防护流量 - - **DefenceDDosMaxFlowArr** (list) - (Required) DDoS最大防护流量 - - **EngineRoom** (list) - (Required) 地区 - - **LineType** (str) - (Required) 线路类型 - - **Quantity** (str) - (Required) 计费时长 - - **SrcBandwidth** (str) - (Required) 带宽 - - **Response** - - - **ChargeIPQuota** (int) - 收费IP配额 - - **FreeIPQuota** (int) - 免费IP配额 - - **Message** (str) - 错误信息 - - **Price** (float) - 价格 - - **UdpFreeIpQuota** (int) - UDP免费IP配额 - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetBuyNapServicePriceRequestSchema().dumps(d) - - resp = self.invoke("GetBuyNapServicePrice", d, **kwargs) - return apis.GetBuyNapServicePriceResponseSchema().loads(resp) - - def get_nap_allow_list_domain( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetNapAllowListDomain - 获取域名允许列表 - - **Request** - - - **ResourceId** (str) - (Required) 资源ID - - **Domain** (str) - 获取指定域名信息 - - **DomainLike** (str) - 域名模糊查找 - - **Limit** (int) - 返回数据长度,默认为1000 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **DomainList** (list) - 见 **BlockAllowDomainEntry** 模型定义 - - **TotalCount** (int) - 列表总条目数 - - **Response Model** - - **BlockAllowDomainEntry** - - **CreateTime** (int) - 创建时间戳,例如:1581991500 - - **Domain** (str) - 域名 - - **Remark** (str) - 备注 - - **Status** (int) - 状态;1:添加中,2:成功,3:删除中,4:失败,5:已删除 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetNapAllowListDomainRequestSchema().dumps(d) - - resp = self.invoke("GetNapAllowListDomain", d, **kwargs) - return apis.GetNapAllowListDomainResponseSchema().loads(resp) - - def get_nap_service_config( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetNapServiceConfig - 获取高防服务配置 - - **Request** - - - **AreaLine** (str) - 线路区域 - - **EngineRoom** (str) - 购买的套餐所在机房 - - **LineType** (str) - 线路类型 - - **NapType** (int) - 高防类型;0:全部、1:内地高防、:2:海外高防 - - **Response** - - - **NapServiceConfig** (list) - 见 **NapServiceConfigEntry** 模型定义 - - **Response Model** - - **NapServiceConfigEntry** - - **AreaLine** (str) - 线路区域 - - **DR** (dict) - 灾备配置 - - **DayPay** (dict) - 按天购买配置 - - **Domain** (dict) - 域名配置 - - **DomainSrc** (dict) - 是否可以配置域名回源 - - **DynamicPay** (dict) - 按需购买配置 - - **EngineRoom** (str) - 购买的套餐所在机房 - - **LineType** (str) - 线路类型 - - **MonthPay** (dict) - 按月购买配置 - - **NapType** (int) - 高防类型,1:内地高防、2:海外高防 - - **YearPay** (dict) - 按年购买配置 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetNapServiceConfigRequestSchema().dumps(d) - - resp = self.invoke("GetNapServiceConfig", d, **kwargs) - return apis.GetNapServiceConfigResponseSchema().loads(resp) - - def modify_high_protect_game_ip_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyHighProtectGameIPInfo - 修改高防IP信息 - - **Request** - - - **DefenceIp** (str) - (Required) 高防ip - - **ResourceId** (str) - (Required) 资源Id - - **UserIP** (str) - (Required) 源站IP - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ModifyHighProtectGameIPInfoRequestSchema().dumps(d) - - resp = self.invoke("ModifyHighProtectGameIPInfo", d, **kwargs) - return apis.ModifyHighProtectGameIPInfoResponseSchema().loads(resp) - - def modify_high_protect_game_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyHighProtectGameService - 修改高防信息 - - **Request** - - - **ResourceId** (str) - (Required) 资源Id - - **HighProtectGameServiceName** (str) - 高防名称 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ModifyHighProtectGameServiceRequestSchema().dumps(d) - - resp = self.invoke("ModifyHighProtectGameService", d, **kwargs) - return apis.ModifyHighProtectGameServiceResponseSchema().loads(resp) - - def modify_nap_service_auto_renew( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyNapServiceAutoRenew - 修改高防服务自动续费开关 - - **Request** - - - **AutoRenew** (int) - (Required) 自动续费开关, 0:关闭;1:开启 - - **ResourceId** (str) - (Required) 资源Id - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ModifyNapServiceAutoRenewRequestSchema().dumps(d) - - resp = self.invoke("ModifyNapServiceAutoRenew", d, **kwargs) - return apis.ModifyNapServiceAutoRenewResponseSchema().loads(resp) - - def renew_high_protect_game_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RenewHighProtectGameService - 续费高防服务 - - **Request** - - - **AreaLine** (str) - (Required) 区域,华东和华南,EastChina 和SouthChina - - **ChargeType** (str) - (Required) 计费方式 - - **EngineRoom** (list) - (Required) 代表机房,例如Dongguan Hangzhou - - **LineType** (str) - (Required) 线路 - - **Quantity** (int) - (Required) 购买数量 - - **ResourceId** (str) - (Required) 资源ID - - **SrcBandwidth** (int) - (Required) 带宽,默认100M - - **CouponId** (str) - 代金券ID - - **DefenceDDosBaseFlowArr** (list) - DDoS基础防御值 - - **DefenceDDosMaxFlowArr** (list) - DDoS弹性防御值 - - **DefenceType** (str) - 防御类型,默认为TypeFixed - - **Response** - - - **ResourceInfo** (dict) - 见 **ResourceInfo** 模型定义 - - **Response Model** - - **ResourceInfo** - - **ResourceId** (str) - 资源id - - - """ - # build request - d = {} - req and d.update(req) - d = apis.RenewHighProtectGameServiceRequestSchema().dumps(d) - - resp = self.invoke("RenewHighProtectGameService", d, **kwargs) - return apis.RenewHighProtectGameServiceResponseSchema().loads(resp) - - def set_nap_domain_entry_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetNapDomainEntryRemark - 设置域名条目备注 - - **Request** - - - **Domain** (str) - (Required) 域名 - - **ResourceId** (str) - (Required) 资源ID - - **Remark** (str) - 备注,默认为空 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.SetNapDomainEntryRemarkRequestSchema().dumps(d) - - resp = self.invoke("SetNapDomainEntryRemark", d, **kwargs) - return apis.SetNapDomainEntryRemarkResponseSchema().loads(resp) - - def set_nap_fwd_rule_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetNapFwdRuleRemark - 设置高防转发规则备注信息 - - **Request** - - - **ResourceId** (str) - (Required) 资源ID - - **RuleIndex** (str) - (Required) 要修改的规则index - - **Remark** (str) - 备注,默认为空 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.SetNapFwdRuleRemarkRequestSchema().dumps(d) - - resp = self.invoke("SetNapFwdRuleRemark", d, **kwargs) - return apis.SetNapFwdRuleRemarkResponseSchema().loads(resp) - - def set_nap_ip_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetNapIpRemark - 设置高防IP的备注信息 - - **Request** - - - **NapIp** (str) - (Required) 高防IP - - **ResourceId** (str) - (Required) 资源ID - - **Remark** (str) - 备注,默认为空 - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.SetNapIpRemarkRequestSchema().dumps(d) - - resp = self.invoke("SetNapIpRemark", d, **kwargs) - return apis.SetNapIpRemarkResponseSchema().loads(resp) - - def un_bind_nap_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UnBindNapIP - 直连高防:将高防EIP从资源上解绑 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。请参考 `GetProjectList接口 `_ - - **BindResourceId** (str) - (Required) 需要解绑的资源ID - - **EIPId** (str) - (Required) 高防EIP资源ID - - **NapIp** (str) - (Required) 高防Ip - - **ResourceId** (str) - (Required) 高防资源ID - - **ResourceType** (str) - (Required) 解绑的资源类型(uhost:云主机,ulb:负载均衡,upm:物理机) - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.UnBindNapIPRequestSchema().dumps(d) - - resp = self.invoke("UnBindNapIP", d, **kwargs) - return apis.UnBindNapIPResponseSchema().loads(resp) - - def update_bgp_service_fwd_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateBGPServiceFwdRule - 用于修改BGP高防的规则信息 - - **Request** - - - **BgpIP** (str) - (Required) BGP的IP - - **ResourceId** (str) - (Required) 资源id - - **RuleID** (str) - (Required) 规则uuid - - **RuleIndex** (int) - (Required) 要修改的规则index - - **BackupIP** (str) - 备份源站的IP - - **BackupPort** (int) - 备份源站的端口 - - **BgpIPPort** (int) - 默认为0,为IP协议的转发端口,其余的自定义 - - **FwdType** (str) - 转发协议的类型包括三种:默认为“IP”,还可以选择为“TCP”或"UDP" - - **LoadBalance** (str) - 转发协议的类型是否为负载均衡的:默认为“No”,还可以选择为“Yes”。负载模式的规则最多添加2条,非负载模式的规则最多添加8条 - - **SourceAddrArr** (list) - 回源地址,可填 IP地址 或 域名 - - **SourceDetect** (int) - 表示对源站进行检测:默认为0表示关闭,还可以选择为1表示开启 - - **SourcePortArr** (list) - 回源端口 - - **SourceToaIDArr** (list) - 回源TOA - - **Response** - - - **RuleIndex** (int) - 转发规则的数据库索引 - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateBGPServiceFwdRuleRequestSchema().dumps(d) - - resp = self.invoke("UpdateBGPServiceFwdRule", d, **kwargs) - return apis.UpdateBGPServiceFwdRuleResponseSchema().loads(resp) - - def update_nap_fwd_rule_domain_resolution( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateNapFwdRuleDomainResolution - 手动触发域名回源转发规则更新 - - **Request** - - - **ResourceId** (str) - (Required) 资源ID - - **RuleIndex** (int) - (Required) 要修改的规则index - - **Response** - - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpdateNapFwdRuleDomainResolutionRequestSchema().dumps(d) - - resp = self.invoke("UpdateNapFwdRuleDomainResolution", d, **kwargs) - return apis.UpdateNapFwdRuleDomainResolutionResponseSchema().loads(resp) - - def upgrade_high_protect_game_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeHighProtectGameService - 升降级高防服务 - - **Request** - - - **AreaLine** (str) - (Required) 区域,华东和华南,EastChina 和SouthChina - - **EngineRoom** (list) - (Required) 机房 - - **LineType** (str) - (Required) 线路类型 - - **ResourceId** (str) - (Required) 资源ID - - **SrcBandwidth** (int) - (Required) 业务带宽 - - **CouponId** (str) - 代金券ID - - **DefenceDDosBaseFlowArr** (list) - DDoS基础防御值 - - **DefenceDDosMaxFlowArr** (list) - DDoS弹性防御值 - - **DefenceType** (str) - 防御类型,默认为TypeFixed - - **Response** - - - **ResourceInfo** (dict) - 见 **ResourceInfo** 模型定义 - - **Response Model** - - **ResourceInfo** - - **ResourceId** (str) - 资源id - - - """ - # build request - d = {} - req and d.update(req) - d = apis.UpgradeHighProtectGameServiceRequestSchema().dumps(d) - - resp = self.invoke("UpgradeHighProtectGameService", d, **kwargs) - return apis.UpgradeHighProtectGameServiceResponseSchema().loads(resp) diff --git a/ucloud/services/uads/schemas/apis.py b/ucloud/services/uads/schemas/apis.py deleted file mode 100644 index 2a3a6668..00000000 --- a/ucloud/services/uads/schemas/apis.py +++ /dev/null @@ -1,983 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uads.schemas import models - -""" UADS API Schema -""" - - -""" -API: AddHighProtectGameIPInfo - -添加代理ip -""" - - -class AddHighProtectGameIPInfoRequestSchema(schema.RequestSchema): - """AddHighProtectGameIPInfo - 添加代理ip""" - - fields = { - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "LineType": fields.Str(required=True, dump_to="LineType"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "TypeIP": fields.Str(required=True, dump_to="TypeIP"), - "UserIP": fields.Str(required=True, dump_to="UserIP"), - } - - -class AddHighProtectGameIPInfoResponseSchema(schema.ResponseSchema): - """AddHighProtectGameIPInfo - 添加代理ip""" - - fields = { - "Cname": fields.Str(required=True, load_from="Cname"), - "DefenceIP": fields.Str(required=True, load_from="DefenceIP"), - "IPId": fields.Int(required=True, load_from="IPId"), - "SrcIP": fields.Str(required=True, load_from="SrcIP"), - } - - -""" -API: AddNapAllowListDomain - -添加域名允许列表 -""" - - -class AddNapAllowListDomainRequestSchema(schema.RequestSchema): - """AddNapAllowListDomain - 添加域名允许列表""" - - fields = { - "Domain": fields.List(fields.Str()), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class AddNapAllowListDomainResponseSchema(schema.ResponseSchema): - """AddNapAllowListDomain - 添加域名允许列表""" - - fields = { - "Data": fields.List( - models.DomainConfigResultSchema(), required=False, load_from="Data" - ), - } - - -""" -API: BindNapIP - -直连高防:将尚未使用的高防EIP绑定到指定的资源 -""" - - -class BindNapIPRequestSchema(schema.RequestSchema): - """BindNapIP - 直连高防:将尚未使用的高防EIP绑定到指定的资源""" - - fields = { - "BindResourceId": fields.Str(required=True, dump_to="BindResourceId"), - "EIPId": fields.Str(required=True, dump_to="EIPId"), - "NapIp": fields.Str(required=True, dump_to="NapIp"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "ResourceType": fields.Str(required=True, dump_to="ResourceType"), - } - - -class BindNapIPResponseSchema(schema.ResponseSchema): - """BindNapIP - 直连高防:将尚未使用的高防EIP绑定到指定的资源""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: BuyHighProtectGameService - -购买高防服务 -""" - - -class BuyHighProtectGameServiceRequestSchema(schema.RequestSchema): - """BuyHighProtectGameService - 购买高防服务""" - - fields = { - "AccessMode": fields.Str( - required=False, dump_to="AccessMode" - ), # Deprecated, will be removed at 1.0 - "AreaLine": fields.Str(required=True, dump_to="AreaLine"), - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "DefenceDDosBaseFlowArr": fields.List(fields.Str()), - "DefenceDDosMaxFlowArr": fields.List(fields.Str()), - "DefenceType": fields.Str(required=False, dump_to="DefenceType"), - "EngineRoom": fields.List(fields.Str()), - "ForwardType": fields.Str(required=False, dump_to="ForwardType"), - "HighProtectGameServiceName": fields.Str( - required=False, dump_to="HighProtectGameServiceName" - ), - "LineType": fields.Str(required=True, dump_to="LineType"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=True, dump_to="Quantity"), - "SrcBandwidth": fields.Int(required=True, dump_to="SrcBandwidth"), - "Vendor": fields.Int(required=False, dump_to="Vendor"), - } - - -class BuyHighProtectGameServiceResponseSchema(schema.ResponseSchema): - """BuyHighProtectGameService - 购买高防服务""" - - fields = { - "ResourceInfo": models.ResourceInfoSchema(), - } - - -""" -API: CreateBGPServiceFwdRule - -创建BGP高防转发规则 -""" - - -class CreateBGPServiceFwdRuleRequestSchema(schema.RequestSchema): - """CreateBGPServiceFwdRule - 创建BGP高防转发规则""" - - fields = { - "BackupIP": fields.Str(required=False, dump_to="BackupIP"), - "BackupPort": fields.Int(required=False, dump_to="BackupPort"), - "BgpIP": fields.Str(required=True, dump_to="BgpIP"), - "BgpIPPort": fields.Int(required=False, dump_to="BgpIPPort"), - "FwdType": fields.Str(required=False, dump_to="FwdType"), - "LoadBalance": fields.Str(required=False, dump_to="LoadBalance"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "SourceAddrArr": fields.List(fields.Str()), - "SourceDetect": fields.Int(required=False, dump_to="SourceDetect"), - "SourcePortArr": fields.List(fields.Str()), - "SourceToaIDArr": fields.List(fields.Str()), - "SourceType": fields.Str(required=False, dump_to="SourceType"), - } - - -class CreateBGPServiceFwdRuleResponseSchema(schema.ResponseSchema): - """CreateBGPServiceFwdRule - 创建BGP高防转发规则""" - - fields = { - "RuleIndex": fields.Int(required=True, load_from="RuleIndex"), - } - - -""" -API: CreateBGPServiceIP - -分配一个BGP IP -""" - - -class CreateBGPServiceIPRequestSchema(schema.RequestSchema): - """CreateBGPServiceIP - 分配一个BGP IP""" - - fields = { - "EIPRegion": fields.Str(required=False, dump_to="EIPRegion"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "TypeIP": fields.Str(required=False, dump_to="TypeIP"), - } - - -class CreateBGPServiceIPResponseSchema(schema.ResponseSchema): - """CreateBGPServiceIP - 分配一个BGP IP""" - - fields = { - "Cname": fields.Str(required=False, load_from="Cname"), - "DefenceIP": fields.Str(required=True, load_from="DefenceIP"), - "EnableSwitch": fields.Int(required=False, load_from="EnableSwitch"), - "IPId": fields.Int(required=False, load_from="IPId"), - } - - -""" -API: DeleteBGPServiceFwdRule - -删除转发规则 -""" - - -class DeleteBGPServiceFwdRuleRequestSchema(schema.RequestSchema): - """DeleteBGPServiceFwdRule - 删除转发规则""" - - fields = { - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleIndex": fields.Int(required=True, dump_to="RuleIndex"), - } - - -class DeleteBGPServiceFwdRuleResponseSchema(schema.ResponseSchema): - """DeleteBGPServiceFwdRule - 删除转发规则""" - - fields = {} - - -""" -API: DeleteBGPServiceIP - -删除BGP高防IP -""" - - -class DeleteBGPServiceIPRequestSchema(schema.RequestSchema): - """DeleteBGPServiceIP - 删除BGP高防IP""" - - fields = { - "DefenceIp": fields.Str(required=True, dump_to="DefenceIp"), - "Region": fields.Str(required=False, dump_to="Region"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DeleteBGPServiceIPResponseSchema(schema.ResponseSchema): - """DeleteBGPServiceIP - 删除BGP高防IP""" - - fields = {} - - -""" -API: DeleteHighProtectGameIPInfo - -删除高防IP -""" - - -class DeleteHighProtectGameIPInfoRequestSchema(schema.RequestSchema): - """DeleteHighProtectGameIPInfo - 删除高防IP""" - - fields = { - "DefenceIp": fields.Str(required=True, dump_to="DefenceIp"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DeleteHighProtectGameIPInfoResponseSchema(schema.ResponseSchema): - """DeleteHighProtectGameIPInfo - 删除高防IP""" - - fields = {} - - -""" -API: DeleteHighProtectGameService - -删除高防 -""" - - -class DeleteHighProtectGameServiceRequestSchema(schema.RequestSchema): - """DeleteHighProtectGameService - 删除高防""" - - fields = { - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DeleteHighProtectGameServiceResponseSchema(schema.ResponseSchema): - """DeleteHighProtectGameService - 删除高防""" - - fields = {} - - -""" -API: DeleteNapAllowListDomain - -删除域名允许列表 -""" - - -class DeleteNapAllowListDomainRequestSchema(schema.RequestSchema): - """DeleteNapAllowListDomain - 删除域名允许列表""" - - fields = { - "Domain": fields.List(fields.Str()), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DeleteNapAllowListDomainResponseSchema(schema.ResponseSchema): - """DeleteNapAllowListDomain - 删除域名允许列表""" - - fields = { - "Data": fields.List( - models.DomainConfigResultSchema(), required=False, load_from="Data" - ), - } - - -""" -API: DescribeBuyHighProtectGameIPPrice - -获取购买IP的价格 -""" - - -class DescribeBuyHighProtectGameIPPriceRequestSchema(schema.RequestSchema): - """DescribeBuyHighProtectGameIPPrice - 获取购买IP的价格""" - - fields = { - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "Quantity": fields.Int(required=True, dump_to="Quantity"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DescribeBuyHighProtectGameIPPriceResponseSchema(schema.ResponseSchema): - """DescribeBuyHighProtectGameIPPrice - 获取购买IP的价格""" - - fields = { - "PremiumPrice": fields.Float(required=True, load_from="PremiumPrice"), - "UnitPrice": fields.Float(required=True, load_from="UnitPrice"), - } - - -""" -API: DescribeHighProtectGameIPInfo - -获取高防IP信息 -""" - - -class DescribeHighProtectGameIPInfoRequestSchema(schema.RequestSchema): - """DescribeHighProtectGameIPInfo - 获取高防IP信息""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DescribeHighProtectGameIPInfoResponseSchema(schema.ResponseSchema): - """DescribeHighProtectGameIPInfo - 获取高防IP信息""" - - fields = { - "AvailableIPQuota": fields.Int( - required=False, load_from="AvailableIPQuota" - ), - "GameIPInfo": fields.List( - models.GameIpInfoTotalSchema(), - required=False, - load_from="GameIPInfo", - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeNapHistoryStatistic - -获取高防历史统计 -""" - - -class DescribeNapHistoryStatisticRequestSchema(schema.RequestSchema): - """DescribeNapHistoryStatistic - 获取高防历史统计""" - - fields = { - "Accuracy": fields.Int(required=False, dump_to="Accuracy"), - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "NapIP": fields.Str(required=False, dump_to="NapIP"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DescribeNapHistoryStatisticResponseSchema(schema.ResponseSchema): - """DescribeNapHistoryStatistic - 获取高防历史统计""" - - fields = { - "NetStats": fields.List( - models.NetStatsSchema(), required=True, load_from="NetStats" - ), - } - - -""" -API: DescribeNapRealTimeStatistic - -获取高防实时统计 -""" - - -class DescribeNapRealTimeStatisticRequestSchema(schema.RequestSchema): - """DescribeNapRealTimeStatistic - 获取高防实时统计""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "NapIP": fields.Str(required=False, dump_to="NapIP"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DescribeNapRealTimeStatisticResponseSchema(schema.ResponseSchema): - """DescribeNapRealTimeStatistic - 获取高防实时统计""" - - fields = { - "NetStats": fields.List( - models.NetStatsSchema(), required=True, load_from="NetStats" - ), - } - - -""" -API: DescribeNapServiceInfo - -获取高防服务信息 -""" - - -class DescribeNapServiceInfoRequestSchema(schema.RequestSchema): - """DescribeNapServiceInfo - 获取高防服务信息""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "NapType": fields.Int(required=False, dump_to="NapType"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - } - - -class DescribeNapServiceInfoResponseSchema(schema.ResponseSchema): - """DescribeNapServiceInfo - 获取高防服务信息""" - - fields = { - "ServiceInfo": fields.List( - models.ServiceInfoSchema(), required=False, load_from="ServiceInfo" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribePassthroughNapIP - -获取直连高防IP信息 -""" - - -class DescribePassthroughNapIPRequestSchema(schema.RequestSchema): - """DescribePassthroughNapIP - 获取直连高防IP信息""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "NapIp": fields.Str(required=False, dump_to="NapIp"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DescribePassthroughNapIPResponseSchema(schema.ResponseSchema): - """DescribePassthroughNapIP - 获取直连高防IP信息""" - - fields = { - "AvailableIPQuota": fields.Int( - required=True, load_from="AvailableIPQuota" - ), - "IPInfo": fields.List( - models.IPInfoSchema(), required=True, load_from="IPInfo" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUpgradeHighProtectGameServicePrice - -获取高防升降级价格 -""" - - -class DescribeUpgradeHighProtectGameServicePriceRequestSchema( - schema.RequestSchema -): - """DescribeUpgradeHighProtectGameServicePrice - 获取高防升降级价格""" - - fields = { - "AreaLine": fields.Str(required=False, dump_to="AreaLine"), - "DefenceDDosBaseFlowArr": fields.List(fields.Str()), - "DefenceDDosMaxFlowArr": fields.List(fields.Str()), - "DefenceType": fields.Str(required=False, dump_to="DefenceType"), - "EngineRoom": fields.List(fields.Str()), - "LineType": fields.Str(required=False, dump_to="LineType"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "SrcBandwidth": fields.Int(required=False, dump_to="SrcBandwidth"), - } - - -class DescribeUpgradeHighProtectGameServicePriceResponseSchema( - schema.ResponseSchema -): - """DescribeUpgradeHighProtectGameServicePrice - 获取高防升降级价格""" - - fields = { - "ChargeIPQuota": fields.Int(required=False, load_from="ChargeIPQuota"), - "FreeIPQuota": fields.Int(required=False, load_from="FreeIPQuota"), - "Price": fields.Int(required=True, load_from="Price"), - } - - -""" -API: GetBGPServiceFwdRule - -获取转发规则 -""" - - -class GetBGPServiceFwdRuleRequestSchema(schema.RequestSchema): - """GetBGPServiceFwdRule - 获取转发规则""" - - fields = { - "BgpIP": fields.Str(required=False, dump_to="BgpIP"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleIndex": fields.Int(required=False, dump_to="RuleIndex"), - } - - -class GetBGPServiceFwdRuleResponseSchema(schema.ResponseSchema): - """GetBGPServiceFwdRule - 获取转发规则""" - - fields = { - "AvailLoad": fields.Int(required=False, load_from="AvailLoad"), - "AvailNonload": fields.Int(required=False, load_from="AvailNonload"), - "IpRuleExist": fields.Bool(required=False, load_from="IpRuleExist"), - "RuleCnt": fields.Int(required=True, load_from="RuleCnt"), - "RuleInfo": fields.List( - models.BGPFwdRuleSchema(), required=True, load_from="RuleInfo" - ), - } - - -""" -API: GetBGPServiceIP - -获取BGP高防IP的信息 -""" - - -class GetBGPServiceIPRequestSchema(schema.RequestSchema): - """GetBGPServiceIP - 获取BGP高防IP的信息""" - - fields = { - "BgpIP": fields.Str(required=False, dump_to="BgpIP"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class GetBGPServiceIPResponseSchema(schema.ResponseSchema): - """GetBGPServiceIP - 获取BGP高防IP的信息""" - - fields = { - "AvailableIPQuota": fields.Int( - required=True, load_from="AvailableIPQuota" - ), - "GameIPInfo": fields.List( - models.GameIpInfoTotalSchema(), - required=True, - load_from="GameIPInfo", - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: GetBuyNapServicePrice - -获取高防价格 -""" - - -class GetBuyNapServicePriceRequestSchema(schema.RequestSchema): - """GetBuyNapServicePrice - 获取高防价格""" - - fields = { - "AccessMode": fields.Str( - required=False, dump_to="AccessMode" - ), # Deprecated, will be removed at 1.0 - "AreaLine": fields.Str(required=True, dump_to="AreaLine"), - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "DefenceDDosBaseFlowArr": fields.List(fields.Str()), - "DefenceDDosMaxFlowArr": fields.List(fields.Str()), - "EngineRoom": fields.List(fields.Str()), - "LineType": fields.Str(required=True, dump_to="LineType"), - "Quantity": fields.Str(required=True, dump_to="Quantity"), - "SrcBandwidth": fields.Str(required=True, dump_to="SrcBandwidth"), - } - - -class GetBuyNapServicePriceResponseSchema(schema.ResponseSchema): - """GetBuyNapServicePrice - 获取高防价格""" - - fields = { - "ChargeIPQuota": fields.Int(required=True, load_from="ChargeIPQuota"), - "FreeIPQuota": fields.Int(required=True, load_from="FreeIPQuota"), - "Message": fields.Str(required=True, load_from="Message"), - "Price": fields.Float(required=True, load_from="Price"), - "UdpFreeIpQuota": fields.Int(required=True, load_from="UdpFreeIpQuota"), - } - - -""" -API: GetNapAllowListDomain - -获取域名允许列表 -""" - - -class GetNapAllowListDomainRequestSchema(schema.RequestSchema): - """GetNapAllowListDomain - 获取域名允许列表""" - - fields = { - "Domain": fields.Str(required=False, dump_to="Domain"), - "DomainLike": fields.Str(required=False, dump_to="DomainLike"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class GetNapAllowListDomainResponseSchema(schema.ResponseSchema): - """GetNapAllowListDomain - 获取域名允许列表""" - - fields = { - "DomainList": fields.List( - models.BlockAllowDomainEntrySchema(), - required=True, - load_from="DomainList", - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: GetNapServiceConfig - -获取高防服务配置 -""" - - -class GetNapServiceConfigRequestSchema(schema.RequestSchema): - """GetNapServiceConfig - 获取高防服务配置""" - - fields = { - "AreaLine": fields.Str(required=False, dump_to="AreaLine"), - "EngineRoom": fields.Str(required=False, dump_to="EngineRoom"), - "LineType": fields.Str(required=False, dump_to="LineType"), - "NapType": fields.Int(required=False, dump_to="NapType"), - } - - -class GetNapServiceConfigResponseSchema(schema.ResponseSchema): - """GetNapServiceConfig - 获取高防服务配置""" - - fields = { - "NapServiceConfig": fields.List( - models.NapServiceConfigEntrySchema(), - required=True, - load_from="NapServiceConfig", - ), - } - - -""" -API: ModifyHighProtectGameIPInfo - -修改高防IP信息 -""" - - -class ModifyHighProtectGameIPInfoRequestSchema(schema.RequestSchema): - """ModifyHighProtectGameIPInfo - 修改高防IP信息""" - - fields = { - "DefenceIp": fields.Str(required=True, dump_to="DefenceIp"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "UserIP": fields.Str(required=True, dump_to="UserIP"), - } - - -class ModifyHighProtectGameIPInfoResponseSchema(schema.ResponseSchema): - """ModifyHighProtectGameIPInfo - 修改高防IP信息""" - - fields = {} - - -""" -API: ModifyHighProtectGameService - -修改高防信息 -""" - - -class ModifyHighProtectGameServiceRequestSchema(schema.RequestSchema): - """ModifyHighProtectGameService - 修改高防信息""" - - fields = { - "HighProtectGameServiceName": fields.Str( - required=False, dump_to="HighProtectGameServiceName" - ), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class ModifyHighProtectGameServiceResponseSchema(schema.ResponseSchema): - """ModifyHighProtectGameService - 修改高防信息""" - - fields = {} - - -""" -API: ModifyNapServiceAutoRenew - -修改高防服务自动续费开关 -""" - - -class ModifyNapServiceAutoRenewRequestSchema(schema.RequestSchema): - """ModifyNapServiceAutoRenew - 修改高防服务自动续费开关""" - - fields = { - "AutoRenew": fields.Int(required=True, dump_to="AutoRenew"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class ModifyNapServiceAutoRenewResponseSchema(schema.ResponseSchema): - """ModifyNapServiceAutoRenew - 修改高防服务自动续费开关""" - - fields = {} - - -""" -API: RenewHighProtectGameService - -续费高防服务 -""" - - -class RenewHighProtectGameServiceRequestSchema(schema.RequestSchema): - """RenewHighProtectGameService - 续费高防服务""" - - fields = { - "AreaLine": fields.Str(required=True, dump_to="AreaLine"), - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "DefenceDDosBaseFlowArr": fields.List(fields.Str()), - "DefenceDDosMaxFlowArr": fields.List(fields.Str()), - "DefenceType": fields.Str(required=False, dump_to="DefenceType"), - "EngineRoom": fields.List(fields.Str()), - "LineType": fields.Str(required=True, dump_to="LineType"), - "Quantity": fields.Int(required=True, dump_to="Quantity"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "SrcBandwidth": fields.Int(required=True, dump_to="SrcBandwidth"), - } - - -class RenewHighProtectGameServiceResponseSchema(schema.ResponseSchema): - """RenewHighProtectGameService - 续费高防服务""" - - fields = { - "ResourceInfo": models.ResourceInfoSchema(), - } - - -""" -API: SetNapDomainEntryRemark - -设置域名条目备注 -""" - - -class SetNapDomainEntryRemarkRequestSchema(schema.RequestSchema): - """SetNapDomainEntryRemark - 设置域名条目备注""" - - fields = { - "Domain": fields.Str(required=True, dump_to="Domain"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class SetNapDomainEntryRemarkResponseSchema(schema.ResponseSchema): - """SetNapDomainEntryRemark - 设置域名条目备注""" - - fields = {} - - -""" -API: SetNapFwdRuleRemark - -设置高防转发规则备注信息 -""" - - -class SetNapFwdRuleRemarkRequestSchema(schema.RequestSchema): - """SetNapFwdRuleRemark - 设置高防转发规则备注信息""" - - fields = { - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleIndex": fields.Str(required=True, dump_to="RuleIndex"), - } - - -class SetNapFwdRuleRemarkResponseSchema(schema.ResponseSchema): - """SetNapFwdRuleRemark - 设置高防转发规则备注信息""" - - fields = {} - - -""" -API: SetNapIpRemark - -设置高防IP的备注信息 -""" - - -class SetNapIpRemarkRequestSchema(schema.RequestSchema): - """SetNapIpRemark - 设置高防IP的备注信息""" - - fields = { - "NapIp": fields.Str(required=True, dump_to="NapIp"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class SetNapIpRemarkResponseSchema(schema.ResponseSchema): - """SetNapIpRemark - 设置高防IP的备注信息""" - - fields = {} - - -""" -API: UnBindNapIP - -直连高防:将高防EIP从资源上解绑 -""" - - -class UnBindNapIPRequestSchema(schema.RequestSchema): - """UnBindNapIP - 直连高防:将高防EIP从资源上解绑""" - - fields = { - "BindResourceId": fields.Str(required=True, dump_to="BindResourceId"), - "EIPId": fields.Str(required=True, dump_to="EIPId"), - "NapIp": fields.Str(required=True, dump_to="NapIp"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "ResourceType": fields.Str(required=True, dump_to="ResourceType"), - } - - -class UnBindNapIPResponseSchema(schema.ResponseSchema): - """UnBindNapIP - 直连高防:将高防EIP从资源上解绑""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateBGPServiceFwdRule - -用于修改BGP高防的规则信息 -""" - - -class UpdateBGPServiceFwdRuleRequestSchema(schema.RequestSchema): - """UpdateBGPServiceFwdRule - 用于修改BGP高防的规则信息""" - - fields = { - "BackupIP": fields.Str(required=False, dump_to="BackupIP"), - "BackupPort": fields.Int(required=False, dump_to="BackupPort"), - "BgpIP": fields.Str(required=True, dump_to="BgpIP"), - "BgpIPPort": fields.Int(required=False, dump_to="BgpIPPort"), - "FwdType": fields.Str(required=False, dump_to="FwdType"), - "LoadBalance": fields.Str(required=False, dump_to="LoadBalance"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleID": fields.Str(required=True, dump_to="RuleID"), - "RuleIndex": fields.Int(required=True, dump_to="RuleIndex"), - "SourceAddrArr": fields.List(fields.Str()), - "SourceDetect": fields.Int(required=False, dump_to="SourceDetect"), - "SourcePortArr": fields.List(fields.Str()), - "SourceToaIDArr": fields.List(fields.Str()), - } - - -class UpdateBGPServiceFwdRuleResponseSchema(schema.ResponseSchema): - """UpdateBGPServiceFwdRule - 用于修改BGP高防的规则信息""" - - fields = { - "RuleIndex": fields.Int(required=False, load_from="RuleIndex"), - } - - -""" -API: UpdateNapFwdRuleDomainResolution - -手动触发域名回源转发规则更新 -""" - - -class UpdateNapFwdRuleDomainResolutionRequestSchema(schema.RequestSchema): - """UpdateNapFwdRuleDomainResolution - 手动触发域名回源转发规则更新""" - - fields = { - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleIndex": fields.Int(required=True, dump_to="RuleIndex"), - } - - -class UpdateNapFwdRuleDomainResolutionResponseSchema(schema.ResponseSchema): - """UpdateNapFwdRuleDomainResolution - 手动触发域名回源转发规则更新""" - - fields = {} - - -""" -API: UpgradeHighProtectGameService - -升降级高防服务 -""" - - -class UpgradeHighProtectGameServiceRequestSchema(schema.RequestSchema): - """UpgradeHighProtectGameService - 升降级高防服务""" - - fields = { - "AreaLine": fields.Str(required=True, dump_to="AreaLine"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "DefenceDDosBaseFlowArr": fields.List(fields.Str()), - "DefenceDDosMaxFlowArr": fields.List(fields.Str()), - "DefenceType": fields.Str(required=False, dump_to="DefenceType"), - "EngineRoom": fields.List(fields.Str()), - "LineType": fields.Str(required=True, dump_to="LineType"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "SrcBandwidth": fields.Int(required=True, dump_to="SrcBandwidth"), - } - - -class UpgradeHighProtectGameServiceResponseSchema(schema.ResponseSchema): - """UpgradeHighProtectGameService - 升降级高防服务""" - - fields = { - "ResourceInfo": models.ResourceInfoSchema(), - } diff --git a/ucloud/services/uads/schemas/models.py b/ucloud/services/uads/schemas/models.py deleted file mode 100644 index 4f011a25..00000000 --- a/ucloud/services/uads/schemas/models.py +++ /dev/null @@ -1,199 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class DomainConfigResultSchema(schema.ResponseSchema): - """DomainConfigResult - 域名配置结果""" - - fields = { - "Code": fields.Int(required=True, load_from="Code"), - "Domain": fields.Str(required=True, load_from="Domain"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -class ResourceInfoSchema(schema.ResponseSchema): - """ResourceInfo - 资源信息""" - - fields = { - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - } - - -class GameIpInfoTotalSchema(schema.ResponseSchema): - """GameIpInfoTotal - 高防ip信息统一描述结构""" - - fields = { - "Cname": fields.Str(required=False, load_from="Cname"), - "DefenceIP": fields.Str(required=False, load_from="DefenceIP"), - "LineType": fields.Str(required=False, load_from="LineType"), - "Remark": fields.Str(required=False, load_from="Remark"), - "RuleCnt": fields.Int(required=False, load_from="RuleCnt"), - "SrcIP": fields.List(fields.Str()), - "Status": fields.Str(required=False, load_from="Status"), - } - - -class NetStatEntrySchema(schema.ResponseSchema): - """NetStatEntry - 统计条目""" - - fields = { - "Bps": fields.Float(required=False, load_from="Bps"), - "Pps": fields.Int(required=False, load_from="Pps"), - } - - -class NetStatsSchema(schema.ResponseSchema): - """NetStats - 网络统计""" - - fields = { - "Drop": NetStatEntrySchema(), - "Egress": NetStatEntrySchema(), - "Ingress": NetStatEntrySchema(), - "Time": fields.Int(required=False, load_from="Time"), - } - - -class ServiceInfoSchema(schema.ResponseSchema): - """ServiceInfo - 高防服务信息""" - - fields = { - "AccessMode": fields.Str(required=False, load_from="AccessMode"), - "AreaLine": fields.Str(required=False, load_from="AreaLine"), - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DefenceDDosBaseFlowArr": fields.List(fields.Int()), - "DefenceDDosMaxFlowArr": fields.List(fields.Int()), - "DefenceStatus": fields.Str(required=False, load_from="DefenceStatus"), - "DefenceType": fields.Str(required=False, load_from="DefenceType"), - "EngineRoom": fields.List(fields.Str()), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "ForwardType": fields.Str(required=False, load_from="ForwardType"), - "GameId": fields.Int(required=False, load_from="GameId"), - "LineType": fields.Str(required=False, load_from="LineType"), - "Name": fields.Str(required=False, load_from="Name"), - "NapType": fields.Int(required=False, load_from="NapType"), - "ProjectId": fields.Str(required=False, load_from="ProjectId"), - "RegionId": fields.Int(required=False, load_from="RegionId"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "SrcBandwidth": fields.Int(required=False, load_from="SrcBandwidth"), - "Vendor": fields.Int(required=False, load_from="Vendor"), - } - - -class ResouceSchema(schema.ResponseSchema): - """Resouce - 资源信息""" - - fields = { - "EIPId": fields.Str(required=False, load_from="EIPId"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceName": fields.Str(required=False, load_from="ResourceName"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class EIPAddrSetSchema(schema.ResponseSchema): - """EIPAddrSet - EIP地址信息""" - - fields = { - "EIPType": fields.Str(required=False, load_from="EIPType"), - "IP": fields.Str(required=False, load_from="IP"), - "OperatorName": fields.Str(required=False, load_from="OperatorName"), - } - - -class IPInfoSchema(schema.ResponseSchema): - """IPInfo - 高防IP信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EIPAddr": fields.List(EIPAddrSetSchema()), - "EIPId": fields.Str(required=False, load_from="EIPId"), - "EIPRegion": fields.Str(required=False, load_from="EIPRegion"), - "Resource": ResouceSchema(), - "Status": fields.Str(required=False, load_from="Status"), - "Tag": fields.Str(required=False, load_from="Tag"), - } - - -class FwdSourceInfoConfSchema(schema.ResponseSchema): - """FwdSourceInfoConf - 转发规则,回源信息配置详细结构""" - - fields = { - "IPList": fields.List(fields.Str()), - "Port": fields.Int(required=False, load_from="Port"), - "Source": fields.Str(required=False, load_from="Source"), - "Toa": fields.Int(required=False, load_from="Toa"), - } - - -class FwdSourceInfoSchema(schema.ResponseSchema): - """FwdSourceInfo - 转发规则,回源配置信息""" - - fields = { - "Conf": fields.List(FwdSourceInfoConfSchema()), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class FwdClientProxyInfoSchema(schema.ResponseSchema): - """FwdClientProxyInfo - 转发规则,回源代理配置列表""" - - fields = { - "Count": fields.Int(required=False, load_from="Count"), - "IPList": fields.List(fields.Str()), - } - - -class BGPFwdRuleSchema(schema.ResponseSchema): - """BGPFwdRule - BGP高防的转发规则信息""" - - fields = { - "BackupIP": fields.Str(required=False, load_from="BackupIP"), - "BackupPort": fields.Int(required=False, load_from="BackupPort"), - "BgpIP": fields.Str(required=False, load_from="BgpIP"), - "BgpIPPort": fields.Int(required=False, load_from="BgpIPPort"), - "ClientProxyInfo": FwdClientProxyInfoSchema(), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "FwdType": fields.Str(required=False, load_from="FwdType"), - "LoadBalance": fields.Str(required=False, load_from="LoadBalance"), - "Remark": fields.Str(required=False, load_from="Remark"), - "RuleID": fields.Str(required=False, load_from="RuleID"), - "RuleIndex": fields.Int(required=False, load_from="RuleIndex"), - "SourceDetect": fields.Int(required=False, load_from="SourceDetect"), - "SourceInfo": FwdSourceInfoSchema(), - "Status": fields.Str(required=False, load_from="Status"), - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - } - - -class BlockAllowDomainEntrySchema(schema.ResponseSchema): - """BlockAllowDomainEntry - 阻止/允许域名条目""" - - fields = { - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Domain": fields.Str(required=True, load_from="Domain"), - "Remark": fields.Str(required=True, load_from="Remark"), - "Status": fields.Int(required=True, load_from="Status"), - } - - -class NapServiceConfigEntrySchema(schema.ResponseSchema): - """NapServiceConfigEntry - 高防服务配置条目""" - - fields = { - "AreaLine": fields.Str(required=False, load_from="AreaLine"), - "DR": fields.Str(), - "DayPay": fields.Str(), - "Domain": fields.Str(), - "DomainSrc": fields.Str(), - "DynamicPay": fields.Str(), - "EngineRoom": fields.Str(required=False, load_from="EngineRoom"), - "LineType": fields.Str(required=False, load_from="LineType"), - "MonthPay": fields.Str(), - "NapType": fields.Int(required=False, load_from="NapType"), - "YearPay": fields.Str(), - } diff --git a/ucloud/services/ubill/client.py b/ucloud/services/ubill/client.py deleted file mode 100644 index c47b2d53..00000000 --- a/ucloud/services/ubill/client.py +++ /dev/null @@ -1,248 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ubill.schemas import apis - - -class UBillClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UBillClient, self).__init__(config, transport, middleware, logger) - - def create_renew(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateRenew - 创建单个续费订单 - - **Request** - - - **Quantity** (int) - (Required) 续费周期数[1~10],按月计费资源可传值为0,表示续费到月底 - - **ResourceId** (str) - (Required) 需要续费资源ID - - **Response** - - - **OrderNo** (str) - 订单号 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateRenewRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateRenew", d, **kwargs) - return apis.CreateRenewResponseSchema().loads(resp) - - def get_balance(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """GetBalance - 获取账户余额 - - **Request** - - - **Response** - - - **AccountInfo** (dict) - 见 **AccountInfo** 模型定义 - - **Response Model** - - **AccountInfo** - - **Amount** (str) - 账户余额 - - **AmountAvailable** (str) - 账户可用余额 - - **AmountCredit** (str) - 信用账户余额 - - **AmountFree** (str) - 赠送账户余额 - - **AmountFreeze** (str) - 冻结账户金额 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetBalanceRequestSchema().dumps(d) - - resp = self.invoke("GetBalance", d, **kwargs) - return apis.GetBalanceResponseSchema().loads(resp) - - def get_bill_data_file_url( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetBillDataFileUrl - 生成账单数据文件下载的 url,包含三类文件,1. 已支付总览账单(支持CSV和PDF,从2023年03月开始支持PDF);2. 未支付总览文件(支持CSV,只有当月账期可以查看);3 账单详情文件(支持CSV)。 备注:文件生成有延迟,若返回值 IsValid=‘no’,需要使用者发起重试。 - - **Request** - - - **BillType** (int) - (Required) 账单类型,枚举值:\\ > 0: 账单总览报表; \\ > 1: 账单明细报表 - - **BillingCycle** (str) - (Required) 账期: YYYY-MM格式的字符串,例如 ”2021-08“ - - **BillPeriod** (int) - 账期: 时间戳格式,已弃用,请使用BillingCycle - - **Format** (str) - 文件格式,枚举值:\\ > ”csv“: csv格式;\\ > ”pdf“: pdf格式(已支付总览文件 从2023年03月开始支持PDF) - - **PaidType** (int) - 账单支付状态, (获取账单明细报表,不需要填写该参数),枚举值:\\ > 0: 0待支付总览账单(只支持当前月份的账期);\\ > 1: 已支付账单总览 - - **RequireVersion** (str) - 账单语言版本,枚举值:\\ > ”“: 默认中文;\\ > ”EN“: 英文版本 - - **Version** (str) - 文件版本,固定值"v1"。 - - **Response** - - - **FileUrl** (str) - 交易账单文件下载URL - - **IsValid** (str) - 是否有对应数据文件。(该参数返回no,表示文件正在生成中,需要用户发起重试获取。 - - """ - # build request - d = {} - req and d.update(req) - d = apis.GetBillDataFileUrlRequestSchema().dumps(d) - - resp = self.invoke("GetBillDataFileUrl", d, **kwargs) - return apis.GetBillDataFileUrlResponseSchema().loads(resp) - - def list_u_bill_detail( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUBillDetail - 获取某个账期内的所有消费。 - - **Request** - - - **BillingCycle** (str) - (Required) 账期,YYYY-MM,比如2021-08,只支持2018-05之后的查询 - - **ChargeType** (str) - 计费方式 (筛选项, 默认全部)。枚举值:\\ > Year:按年\\ > Month:按月 \\ > Day:按天 \\ > Dynamic:按时 \\ > Used:按量 \\ > Donate:赠送 \\ > Trial:试用 \\ > Post:后付费 \\ > Spot:抢占式 - - **Limit** (int) - 每页数量,默认值25,最大值:100。 - - **Offset** (int) - 数据偏移量 (默认0) - - **OrderType** (str) - 订单类型 (筛选项, 默认全部) 。枚举值:\\ > OT_BUY:新购 \\ > OT_RENEW:续费 \\ > OT_UPGRADE:升级 \\ > OT_DOWNGRADE:降级 \\ > OT_SUSPEND:结算 \\ > OT_ADDITIONAL:补单 \\ > OT_REFUND:删除 \\ > OT_POSTPAID_RENEW:过期 \\ > OT_POSTPAID_PAYMENT:后付费 \\ > OT_RECOVER:删除恢复 - - **PaidState** (int) - 支付状态 (筛选项, 1:仅显示未支付订单; 2:仅显示已支付订单; 0:两者都显示) 当前月份 传递1或者0,会返回历史所有未支付账单;历史月份不支持查询未支付,请勿传递1 - - **ProjectName** (str) - 项目名称 (筛选项, 默认全部) - - **ResourceIds** (list) - 资源ID(筛选项, 默认全部) 支持多筛选,多筛选请在请求参数中添加多个字段例ResourceIds.0: uhost-bzgf1gh5,ResourceIds.1: uhost-gu1xpspa, - - **ResourceTypes** (list) - 产品类型 (筛选项, 默认全部),支持多筛选,多筛选请在请求参数中添加多个字段。枚举值:\\ > uhost:云主机 \\ > udisk:普通云硬盘 \\ > udisk_ssd:SSD云硬盘 \\ > rssd:RSSD云硬盘 \\ > snapshot:云快照 \\ > uimage:云主机镜像 \\ > isolation_group:硬件隔离组 \\ > udisk_system_disk:云硬盘系统盘 \\ > phost:裸金属云主机 \\ > udset:资源池 \\ > udhost:专区宿主 \\ > rack:托管云机位 \\ > hybrid_rack:托管云机柜 \\ > hybrid_machine:托管云物理机 \\ > userver:金翼物理机 \\ > hybrid_host:托管云物理云主机 \\ > hybrid_vip_service:启明VIP服务 \\ > hybrid_public_net:外网-IP段 \\ > hybrid_public_bw:外网-带宽 \\ > rack_bw:网络 \\ > ulink:内网-云互通 \\ > hybrid_others:耗材 \\ > uconnect:专线 \\ > hybrid_switch:交换机 \\ > hybrid_port:交换机端口 \\ > shared_bandwidth:共享带宽 \\ > eip:弹性IP \\ > traffic:流量 \\ > bandwidth:带宽包 \\ > vpn:VPN网关 \\ > firewall:防火墙 \\ > vip:内网IP \\ > UAnycastClean:Anycast全球清洗防护包 \\ > AnycastEIP:AnycastEIP \\ > ulb:负载均衡 \\ > vlb:专享型ULB \\ > ssl:证书管理 \\ > subnet:子网 \\ > natgw:NAT网关 \\ > vpc:虚拟私有网络 \\ > acl:访问控制列表 \\ > udpn:高速通道 \\ > vpngw:VPN网关 \\ > remotevpngw:客户网关 \\ > vpn_tunnel:隧道 \\ > udee:域名要素引擎 \\ > ugaa:全球动态加速 \\ > upath:线路管理 \\ > Roma:罗马 \\ > ufs:文件存储 \\ > ufile:对象存储 \\ > udataark:数据方舟 \\ > uarchive:归档存储 \\ > ucdn:云分发 \\ > uodn:开放式分发节点 \\ > uodn2:边缘分发节点 \\ > umem:云内存存储 \\ > umemcache:单机版memcache \\ > uredis:主备版redis \\ > udb:云数据库 \\ > mongodb:MongoDB \\ > sqlserver:SQLServer \\ > postgresql:PostgreSQL \\ > utsdb:时序数据库 \\ > uddb:分布式数据库 \\ > tidb:分布式NewSQL数据库 \\ > Hadoop:托管Hadoop集群 \\ > HadoopHost:托管Hadoop集群节点 \\ > udw:云数据仓库 \\ > ues:弹性搜索 \\ > uscheduler:调度系统 \\ > ukafka:Kafka消息队列 \\ > usql_end:数据湖分析 \\ > UFlink:Flink实时计算 \\ > ukafka_host:Kafka消息队列节点 \\ > UKafkaSinker:Kafka连接器 \\ > message_queue:消息队列 \\ > UAPIGateway:API网关 \\ > ucs:通用计算 \\ > docker_uhost:节点 \\ > uiot:UIoT-Core \\ > uai_service:AI在线服务 \\ > uai_training:AI训练服务 \\ > UAI-Censor:AI内容审核 \\ > uvideo:云点播 \\ > ulive:云直播 \\ > umedia:媒体工厂 \\ > VideoSDK:视频工具 \\ > UKMS:密钥管理服务 \\ > SDefense:高防 \\ > ADS-HD:华东高防 \\ > ADS-abroad:海外高防 \\ > uclean:清洗 \\ > waf:WEB应用防火墙 \\ > uws:WEB漏洞扫描 \\ > uhids:主机入侵检测 \\ > uencrypt:加密服务 \\ > fortress_host:堡垒机 \\ > db_audit:数据库审计 \\ > usa:云安全中心 \\ > udbcp:等保咨询 \\ > usms:短信包 \\ > udnr:域名注册服务 \\ > hegui:备案 \\ > ussl:SSL证书唯一标识 \\ > umarket:应用市场 \\ > urtc:实时音视频 \\ > umr:MapReduce \\ > utss:UCloud技术支持服务 \\ > store_box:店铺盒子 \\ > ukv:容量型KV存储 \\ > ucloudperation:云合作 \\ > umon_network:网络质量监控 \\ > uaccess_box:UBox \\ > UOPS:运维服务 \\ > TeuProduct:非标-企业 \\ > TeuHumanResource:服务-企业 \\ > UBI:数据可视化分析 \\ > First_tier_Bandwidth:ODN一线城市带宽 \\ > Second_tier_Bandwidth:ODN二线城市带宽 \\ > ODN-EDU-BW:ODN教育网带宽 \\ > uodn_docker_resource:ODN容器 \\ > UAI-Solution:AI解决方案 \\ > USNAPSHOT:磁盘快照服务 \\ > ServiceFee:一次性收费 \\ > UCloudAntiDDoS-NorthChinaBGP:高防-华北BGP \\ > Cube:容器实例 \\ > UHybrid-EBN:混合云-企业网 \\ > UHybrid-VBS:混合云-虚拟边界交换机 \\ > UHybrid-EBNBandwidth:混合云-企业网带宽 \\ > UCGS:云游戏 \\ > USDP:智能大数据平台 \\ > UIoT-Stack:物联网平台系统套件 \\ > uiotedgebox:物联网边缘盒子 \\ > UClickhouse:云数据库仓库UClickHouse \\ > UDNS:云解析 \\ > UFS-SMB:SMB文件系统 \\ > EPC:云极高性能计算节点 \\ > EPCCluster:高性能计算集群 \\ > Instance:海外站云主机 \\ > UGA3:全球动态加速 \\ > uhybrid_xzone:混合云-金翼XZone \\ > udts:数据传输服务 \\ > uk8s_service:容器云 \\ > UIW:无间盾反欺诈系统 \\ > ISMS:视频短信 \\ > PLiveUPRO:Polyv云直播U享版 \\ > UNVS:号码认证 \\ > UVMS:语音消息服务 \\ > UGame:云游戏 \\ > UHive:UHive \\ > UDoris:UDoris \\ > USLK:短链工具 \\ > UPCA:UPCA \\ > URCM:富信消息 \\ > HTTPDNS:HTTP DNS \\ > UAdsSp:DDOS防御服务包 \\ > UPhone-eip:云手机(eip) \\ > UPhone-share-bandwidth:云手机(共享带宽) \\ > UCloud Phone Server:云手机服务器 \\ > UMongoDBMember:云数据库 MongoDB UDB 集群内节点成员 \\ > UPhone-NetworkResource:云手机(网络资源) \\ > UOL:海外直播加速 \\ > UDBProxy:云数据库读写分离中间件 \\ > UDBProxyMember:云数据库读写分离中间件集群内成员 \\ > UPgSQL:UDB For PgSQL \\ > UMongoDB:UMongoDB \\ > UPresto:UPresto \\ > UDBC:UDBC \\ > CAAS:CAAS \\ > UPhone:云手机 \\ > NVAS:混合云-网络增值服务 \\ > UNPP:号码隐私保护 \\ > UNPP:企业名片 \\ > UMongoDBVirtualMember:云数据库 MongoDB UDB集群内虚拟节点 \\ > CF-antiddos:CF高防服务 \\ > UAM:优信 \\ > UAIModelFactory:人工智能模型工厂 \\ > UGNBW:云联网带宽包 \\ > UDAS:数据库自治服务 \\ > URM:资源迁移 \\ > UDTS-DI:数据传输服务-数据集成 \\ > ALB:应用型负载均衡 \\ > UTrafficPack:共享流量包 \\ > ULHost:轻量应用云主机 \\ > UWSCBandwith:UWAN智联-接入带宽包 \\ > MySQLBackup:MySQL 备份服务 \\ > SkyMirror:天镜 \\ > UCustomImage:自定义镜像 \\ > UDTS-DIS:数据传输服务-数据集成子任务 \\ > utm:流量镜像 \\ > NLB:网络型负载均衡 \\ > ALS:ALB监听器 \\ > NLS:NLB监听器 \\ > ARS:ALB服务节点 \\ > NRS:NLB服务节点 \\ > UAIM:卡片消息 \\ > UWSC:UWAN智联 \\ > LBIP:负载均衡内网IP \\ > ULogstash:Logstash服务 \\ > UWCE:UWAN智联-CE客户网关 \\ > UWSC-Tunnel:UWAN智联-VPN隧道 \\ > UNDT:网络拨测 \\ > UHBW:托管带宽包 \\ > UHNet:托管网络 \\ > UH-VRrouter:托管虚拟路由器 \\ > XC:楼内线 \\ > UModelVerse:模型服务平台 \\ > ULogstash-Node:Logstash Node服务 \\ > CloudWatch:云监控 \\ > UGN:云联网 \\ > epsrv:终端节点服务 \\ > ep:终端节点 \\ > uwcpe:CPE智能网关 \\ > uwcpetunnel:CPE隧道 \\ > USCS:安全定制服务 \\ > UAAA:应用仓库加速 \\ > ULogService:日志服务 \\ > UXZONE-GPU:金翼GPU \\ > UReach:优睿达 \\ > UPLVR:专线虚拟路由器 \\ > maxir:云数据仓库MAXIR \\ > maxirvector:云数据仓库MAXIR向量版 \\ > UPFS:文件存储UPFS \\ > UMarketplace:云市场 \\ > IPRP:IP资源池 \\ > ExclusiveHosts:包销宿主机 \\ > RedisReplicate:Redis 从库 \\ > SecurityCenter:云安全中心 \\ > PrivateLink:私有链接 \\ > UMongoDBBackup:MongoDB备份服务 \\ > TiDBCluster:分布式数据库 TiDB Cluster \\ > MAXIRDPS:MAXIR DPS \\ > Label:标签 \\ > NVAS:混合云网络增值服务 \\ > UIBUDS:互联网事业部开发服务 \\ > KafkaGroup:Kafka消费组 \\ > RLM:实时无损监控告警 \\ > USG:安全组 \\ > CF-antiddos:CF高防服务 \\ > UClickhouseNode:云数据仓库UClickhouse节点 \\ > HPCExpress:盘柜直达服务 \\ > UDI:数据智能 \\ > UMountPoint:文件系统挂载点 \\ > UPrometheus:托管Prometheus服务 \\ > AnycastCleanPromotion:全球清洗促销 \\ > USMC:服务器迁移中心 \\ > UK8SPod:UK8SPod 类型资源 \\ > UAS:弹性伸缩 \\ > Manul:统一存储 \\ > UDas:分部式应用服务 \\ > USecLog:安全日志审计 \\ > UKafkaSinkerNode:Kafka连接器节点 \\ > IPv6Address:IPv6地址 \\ > UFlink-Node:Flink实时计算节点 \\ > UContract:电子合同 \\ > NAT64:IPv6转换 \\ > OBJ_TYPE_UDDBAC:UDDB分析节点 \\ > OBJ_TYPE_SYS_UDISK_SSD:SSD云硬盘系统盘 \\ > utoken:令牌服务 \\ > UATP:API测试平台 \\ > udb_region:跨可用区高可用数据库 \\ > compshareImage:算力镜像 \\ > commImage:算力社区镜像 \\ > MAXIR AI:知识洞察 \\ > UCNest:算力云巢 \\ > IPV6 Gateway:IPV6公网网关 \\ > UCNest ExIP:算力云巢外网IP \\ > IPV6 Address:IPV6地址 \\ > UDBProxy RoGroup for MySQL:数据库代理只读组 \\ > SSD Essential:经济型SSD云盘 \\ > RSSD Essential:经济型RSSD云盘 \\ > RocketMQ Message Queue Node:消息队列节点 \\ > Runc Instance:Runc 实例 \\ > Runc Image:Runc 镜像 \\ > UCDC:专属云平台服务 \\ > Other:其他 - - **ShowZero** (int) - 是否显示0元订单 (0 不显示, 1 显示, 默认0) - - **UserEmail** (str) - 用户邮箱,可以根据用户邮箱来进行筛选 - - **Response** - - - **Items** (list) - 见 **BillDetailItem** 模型定义 - - **TotalCount** (int) - 账单明细总长度 - - **Response Model** - - **ItemDetail** - - **ProductName** (str) - 产品小类名称 - - **Value** (str) - 产品小类规格 - - - **ResourceExtendInfo** - - **KeyId** (str) - 资源标识健 - - **Value** (str) - 资源标识值 - - - **BillDetailItem** - - **Admin** (int) - 是否为主账号。枚举值:\\ > 0:子账号 \\ > 1:主账号 - - **Amount** (str) - 订单总金额 - - **AmountCoupon** (str) - 代金券抵扣 - - **AmountFree** (str) - 赠送金额抵扣 - - **AmountReal** (str) - 现金账户支付 - - **AzGroupCName** (str) - 可用区 - - **BusinessGroup** (str) - 业务组 - - **ChargeType** (str) - 计费方式 (筛选项, 默认全部)。枚举值:\\ > Year:按年\\ > Month:按月 \\ > Day:按天 \\ > Dynamic:按时 \\ > Used:按量 \\ > Donate:赠送 \\ > Trial:试用 \\ > Post:后付费 \\ > Spot:抢占式 - - **CreateTime** (int) - 创建时间(时间戳) - - **EndTime** (int) - 结束时间(时间戳) - - **ItemDetails** (list) - 见 **ItemDetail** 模型定义 - - **OrderNo** (str) - 订单号 - - **OrderType** (str) - 订单类型 (筛选项, 默认全部) 。枚举值:\\ > OT_BUY:新购 \\ > OT_RENEW:续费 \\ > OT_UPGRADE:升级 \\ > OT_DOWNGRADE:降级 \\ > OT_SUSPEND:结算 \\ > OT_ADDITIONAL:补单 \\ > OT_REFUND:删除 \\ > OT_POSTPAID_RENEW:过期 \\ > OT_POSTPAID_PAYMENT:后付费 \\ > OT_RECOVER:删除恢复 - - **ProjectId** (str) - 项目id - - **ProjectName** (str) - 项目名称 - - **ResourceExtendInfo** (list) - 见 **ResourceExtendInfo** 模型定义 - - **ResourceId** (str) - 资源ID - - **ResourceLabel** (dict) - 资源标签。字符串键值对的map:{"cs_label": "cs_label_value"} - - **ResourceType** (str) - 产品类型 (筛选项, 默认全部),支持多筛选,多筛选请在请求参数中添加多个字段。枚举值:\\ > uhost:云主机 \\ > udisk:普通云硬盘 \\ > udisk_ssd:SSD云硬盘 \\ > rssd:RSSD云硬盘 \\ > snapshot:云快照 \\ > uimage:云主机镜像 \\ > isolation_group:硬件隔离组 \\ > udisk_system_disk:云硬盘系统盘 \\ > phost:裸金属云主机 \\ > udset:资源池 \\ > udhost:专区宿主 \\ > rack:托管云机位 \\ > hybrid_rack:托管云机柜 \\ > hybrid_machine:托管云物理机 \\ > userver:金翼物理机 \\ > hybrid_host:托管云物理云主机 \\ > hybrid_vip_service:启明VIP服务 \\ > hybrid_public_net:外网-IP段 \\ > hybrid_public_bw:外网-带宽 \\ > rack_bw:网络 \\ > ulink:内网-云互通 \\ > hybrid_others:耗材 \\ > uconnect:专线 \\ > hybrid_switch:交换机 \\ > hybrid_port:交换机端口 \\ > shared_bandwidth:共享带宽 \\ > eip:弹性IP \\ > traffic:流量 \\ > bandwidth:带宽包 \\ > vpn:VPN网关 \\ > firewall:防火墙 \\ > vip:内网IP \\ > UAnycastClean:Anycast全球清洗防护包 \\ > AnycastEIP:AnycastEIP \\ > ulb:负载均衡 \\ > vlb:专享型ULB \\ > ssl:证书管理 \\ > subnet:子网 \\ > natgw:NAT网关 \\ > vpc:虚拟私有网络 \\ > acl:访问控制列表 \\ > udpn:高速通道 \\ > vpngw:VPN网关 \\ > remotevpngw:客户网关 \\ > vpn_tunnel:隧道 \\ > udee:域名要素引擎 \\ > ugaa:全球动态加速 \\ > upath:线路管理 \\ > Roma:罗马 \\ > ufs:文件存储 \\ > ufile:对象存储 \\ > udataark:数据方舟 \\ > uarchive:归档存储 \\ > ucdn:云分发 \\ > uodn:开放式分发节点 \\ > uodn2:边缘分发节点 \\ > umem:云内存存储 \\ > umemcache:单机版memcache \\ > uredis:主备版redis \\ > udb:云数据库 \\ > mongodb:MongoDB \\ > sqlserver:SQLServer \\ > postgresql:PostgreSQL \\ > utsdb:时序数据库 \\ > uddb:分布式数据库 \\ > tidb:分布式NewSQL数据库 \\ > Hadoop:托管Hadoop集群 \\ > HadoopHost:托管Hadoop集群节点 \\ > udw:云数据仓库 \\ > ues:弹性搜索 \\ > uscheduler:调度系统 \\ > ukafka:Kafka消息队列 \\ > usql_end:数据湖分析 \\ > UFlink:Flink实时计算 \\ > ukafka_host:Kafka消息队列节点 \\ > UKafkaSinker:Kafka连接器 \\ > message_queue:消息队列 \\ > UAPIGateway:API网关 \\ > ucs:通用计算 \\ > docker_uhost:节点 \\ > uiot:UIoT-Core \\ > uai_service:AI在线服务 \\ > uai_training:AI训练服务 \\ > UAI-Censor:AI内容审核 \\ > uvideo:云点播 \\ > ulive:云直播 \\ > umedia:媒体工厂 \\ > VideoSDK:视频工具 \\ > UKMS:密钥管理服务 \\ > SDefense:高防 \\ > ADS-HD:华东高防 \\ > ADS-abroad:海外高防 \\ > uclean:清洗 \\ > waf:WEB应用防火墙 \\ > uws:WEB漏洞扫描 \\ > uhids:主机入侵检测 \\ > uencrypt:加密服务 \\ > fortress_host:堡垒机 \\ > db_audit:数据库审计 \\ > usa:云安全中心 \\ > udbcp:等保咨询 \\ > usms:短信包 \\ > udnr:域名注册服务 \\ > hegui:备案 \\ > ussl:SSL证书唯一标识 \\ > umarket:应用市场 \\ > urtc:实时音视频 \\ > umr:MapReduce \\ > utss:UCloud技术支持服务 \\ > store_box:店铺盒子 \\ > ukv:容量型KV存储 \\ > ucloudperation:云合作 \\ > umon_network:网络质量监控 \\ > uaccess_box:UBox \\ > UOPS:运维服务 \\ > TeuProduct:非标-企业 \\ > TeuHumanResource:服务-企业 \\ > UBI:数据可视化分析 \\ > First_tier_Bandwidth:ODN一线城市带宽 \\ > Second_tier_Bandwidth:ODN二线城市带宽 \\ > ODN-EDU-BW:ODN教育网带宽 \\ > uodn_docker_resource:ODN容器 \\ > UAI-Solution:AI解决方案 \\ > USNAPSHOT:磁盘快照服务 \\ > ServiceFee:一次性收费 \\ > UCloudAntiDDoS-NorthChinaBGP:高防-华北BGP \\ > Cube:容器实例 \\ > UHybrid-EBN:混合云-企业网 \\ > UHybrid-VBS:混合云-虚拟边界交换机 \\ > UHybrid-EBNBandwidth:混合云-企业网带宽 \\ > UCGS:云游戏 \\ > USDP:智能大数据平台 \\ > UIoT-Stack:物联网平台系统套件 \\ > uiotedgebox:物联网边缘盒子 \\ > UClickhouse:云数据库仓库UClickHouse \\ > UDNS:云解析 \\ > UFS-SMB:SMB文件系统 \\ > EPC:云极高性能计算节点 \\ > EPCCluster:高性能计算集群 \\ > Instance:海外站云主机 \\ > UGA3:全球动态加速 \\ > uhybrid_xzone:混合云-金翼XZone \\ > udts:数据传输服务 \\ > uk8s_service:容器云 \\ > UIW:无间盾反欺诈系统 \\ > ISMS:视频短信 \\ > PLiveUPRO:Polyv云直播U享版 \\ > UNVS:号码认证 \\ > UVMS:语音消息服务 \\ > UGame:云游戏 \\ > UHive:UHive \\ > UDoris:UDoris \\ > USLK:短链工具 \\ > UPCA:UPCA \\ > URCM:富信消息 \\ > HTTPDNS:HTTP DNS \\ > UAdsSp:DDOS防御服务包 \\ > UPhone-eip:云手机(eip) \\ > UPhone-share-bandwidth:云手机(共享带宽) \\ > UCloud Phone Server:云手机服务器 \\ > UMongoDBMember:云数据库 MongoDB UDB 集群内节点成员 \\ > UPhone-NetworkResource:云手机(网络资源) \\ > UOL:海外直播加速 \\ > UDBProxy:云数据库读写分离中间件 \\ > UDBProxyMember:云数据库读写分离中间件集群内成员 \\ > UPgSQL:UDB For PgSQL \\ > UMongoDB:UMongoDB \\ > UPresto:UPresto \\ > UDBC:UDBC \\ > CAAS:CAAS \\ > UPhone:云手机 \\ > NVAS:混合云-网络增值服务 \\ > UNPP:号码隐私保护 \\ > UNPP:企业名片 \\ > UMongoDBVirtualMember:云数据库 MongoDB UDB集群内虚拟节点 \\ > CF-antiddos:CF高防服务 \\ > UAM:优信 \\ > UAIModelFactory:人工智能模型工厂 \\ > UGNBW:云联网带宽包 \\ > UDAS:数据库自治服务 \\ > URM:资源迁移 \\ > UDTS-DI:数据传输服务-数据集成 \\ > ALB:应用型负载均衡 \\ > UTrafficPack:共享流量包 \\ > ULHost:轻量应用云主机 \\ > UWSCBandwith:UWAN智联-接入带宽包 \\ > MySQLBackup:MySQL 备份服务 \\ > SkyMirror:天镜 \\ > UCustomImage:自定义镜像 \\ > UDTS-DIS:数据传输服务-数据集成子任务 \\ > utm:流量镜像 \\ > NLB:网络型负载均衡 \\ > ALS:ALB监听器 \\ > NLS:NLB监听器 \\ > ARS:ALB服务节点 \\ > NRS:NLB服务节点 \\ > UAIM:卡片消息 \\ > UWSC:UWAN智联 \\ > LBIP:负载均衡内网IP \\ > ULogstash:Logstash服务 \\ > UWCE:UWAN智联-CE客户网关 \\ > UWSC-Tunnel:UWAN智联-VPN隧道 \\ > UNDT:网络拨测 \\ > UHBW:托管带宽包 \\ > UHNet:托管网络 \\ > UH-VRrouter:托管虚拟路由器 \\ > XC:楼内线 \\ > UModelVerse:模型服务平台 \\ > ULogstash-Node:Logstash Node服务 \\ > CloudWatch:云监控 \\ > UGN:云联网 \\ > epsrv:终端节点服务 \\ > ep:终端节点 \\ > uwcpe:CPE智能网关 \\ > uwcpetunnel:CPE隧道 \\ > USCS:安全定制服务 \\ > UAAA:应用仓库加速 \\ > ULogService:日志服务 \\ > UXZONE-GPU:金翼GPU \\ > UReach:优睿达 \\ > UPLVR:专线虚拟路由器 \\ > maxir:云数据仓库MAXIR \\ > maxirvector:云数据仓库MAXIR向量版 \\ > UPFS:文件存储UPFS \\ > UMarketplace:云市场 \\ > IPRP:IP资源池 \\ > ExclusiveHosts:包销宿主机 \\ > RedisReplicate:Redis 从库 \\ > SecurityCenter:云安全中心 \\ > PrivateLink:私有链接 \\ > UMongoDBBackup:MongoDB备份服务 \\ > TiDBCluster:分布式数据库 TiDB Cluster \\ > MAXIRDPS:MAXIR DPS \\ > Label:标签 \\ > NVAS:混合云网络增值服务 \\ > UIBUDS:互联网事业部开发服务 \\ > KafkaGroup:Kafka消费组 \\ > RLM:实时无损监控告警 \\ > USG:安全组 \\ > CF-antiddos:CF高防服务 \\ > UClickhouseNode:云数据仓库UClickhouse节点 \\ > HPCExpress:盘柜直达服务 \\ > UDI:数据智能 \\ > UMountPoint:文件系统挂载点 \\ > UPrometheus:托管Prometheus服务 \\ > AnycastCleanPromotion:全球清洗促销 \\ > USMC:服务器迁移中心 \\ > UK8SPod:UK8SPod 类型资源 \\ > UAS:弹性伸缩 \\ > Manul:统一存储 \\ > UDas:分部式应用服务 \\ > USecLog:安全日志审计 \\ > UKafkaSinkerNode:Kafka连接器节点 \\ > IPv6Address:IPv6地址 \\ > UFlink-Node:Flink实时计算节点 \\ > UContract:电子合同 \\ > NAT64:IPv6转换 \\ > OBJ_TYPE_UDDBAC:UDDB分析节点 \\ > OBJ_TYPE_SYS_UDISK_SSD:SSD云硬盘系统盘 \\ > utoken:令牌服务 \\ > UATP:API测试平台 \\ > udb_region:跨可用区高可用数据库 \\ > compshareImage:算力镜像 \\ > commImage:算力社区镜像 \\ > MAXIR AI:知识洞察 \\ > UCNest:算力云巢 \\ > IPV6 Gateway:IPV6公网网关 \\ > UCNest ExIP:算力云巢外网IP \\ > IPV6 Address:IPV6地址 \\ > UDBProxy RoGroup for MySQL:数据库代理只读组 \\ > SSD Essential:经济型SSD云盘 \\ > RSSD Essential:经济型RSSD云盘 \\ > RocketMQ Message Queue Node:消息队列节点 \\ > Runc Instance:Runc 实例 \\ > Runc Image:Runc 镜像 \\ > UCDC:专属云平台服务 \\ > Other:其他 - - **ResourceTypeCode** (int) - 产品类型代码 - - **ShowHover** (int) - 订单支付状态。枚举值:\\> 0:未支付 \\ > 1:已支付 - - **StartTime** (int) - 开始时间(时间戳) - - **UserDisplayName** (str) - 账户昵称 - - **UserEmail** (str) - 账户邮箱 - - **UserName** (str) - 账户名 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListUBillDetailRequestSchema().dumps(d) - - resp = self.invoke("ListUBillDetail", d, **kwargs) - return apis.ListUBillDetailResponseSchema().loads(resp) - - def list_u_bill_overview( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUBillOverview - 账单总览。可按产品/项目/用户纬度获取某个账期内账单总览信息。 - - **Request** - - - **BillingCycle** (str) - (Required) 账期,YYYY-MM格式,例如2022-02,只支持2018-05之后的查询 - - **Dimension** (str) - (Required) 账单维度, product 按产品聚合,project 按项目聚合,user 按子账号聚合 - - **HideUnpaid** (int) - 是否显示已入账账单, 1 已入账, 0 待入账 (默认0 ) - - **Response** - - - **Items** (list) - 见 **BillOverviewItem** 模型定义 - - **TotalCount** (int) - 账单总览数据总数 - - **TotalPaidAmount** (str) - 已入账订单总额(已入账时显示) - - **TotalPaidAmountReal** (str) - 现金账户扣款总额 (已入账时显示) - - **TotalUnpaidAmount** (str) - 待入账订单总额(待入账时显示) - - **Response Model** - - **BillOverviewItem** - - **Admin** (int) - 该账户是否为主账号,1 主账号,0 子账号(账单维度按子账号筛选时显示) - - **Amount** (str) - 订单总金额 - - **AmountCoupon** (str) - 代金券抵扣(已入账时显示) - - **AmountFree** (str) - 赠送金额抵扣(已入账时显示) - - **AmountReal** (str) - 现金账户支付(已入账时显示) - - **Dimension** (str) - 账单维度, product 按产品维度聚合,project 按项目维度聚合,user 按子账号维度聚合 - - **ProductCategory** (str) - 产品分类 (账单维度按产品筛选时显示) - - **ProjectName** (str) - 项目名称(账单维度按项目筛选时显示) - - **ResourceType** (str) - 产品类型 (账单维度按产品筛选时显示) - - **ResourceTypeCode** (int) - 产品类型代码(账单维度按产品筛选时显示) - - **UserDisplayName** (str) - 账户昵称(账单维度按子账号筛选时显示) - - **UserEmail** (str) - 账户邮箱(账单维度按子账号筛选时显示) - - **UserName** (str) - 账户名 (账单维度按子账号筛选时显示) - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListUBillOverviewRequestSchema().dumps(d) - - resp = self.invoke("ListUBillOverview", d, **kwargs) - return apis.ListUBillOverviewResponseSchema().loads(resp) - - def modify_auto_renew_flag( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyAutoRenewFlag - 修改资源自动续费标识 - - **Request** - - - **Flag** (str) - (Required) 开关标识(TURN_ON: 打开; TURN_OFF: 关闭) - - **ResourceId** (str) - (Required) 资源ID - - **Response** - - - **Fail** (int) - 操作失败资源数量 - - **ResultSet** (list) - 见 **ResultSet** 模型定义 - - **Success** (int) - 操作成功资源数量 - - **Response Model** - - **ResultSet** - - **Message** (str) - 错误信息描述 - - **ResourceId** (str) - 资源ID - - **RetCode** (int) - 续费结果(0:成功,失败返回错误码) - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ModifyAutoRenewFlagRequestSchema().dumps(d) - - resp = self.invoke("ModifyAutoRenewFlag", d, **kwargs) - return apis.ModifyAutoRenewFlagResponseSchema().loads(resp) diff --git a/ucloud/services/uclickhouse/client.py b/ucloud/services/uclickhouse/client.py deleted file mode 100644 index 2ff64b64..00000000 --- a/ucloud/services/uclickhouse/client.py +++ /dev/null @@ -1,447 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uclickhouse.schemas import apis - - -class UClickhouseClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UClickhouseClient, self).__init__( - config, transport, middleware, logger - ) - - def create_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUClickhouseCluster - 创建UClickhouse集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AdminPassword** (str) - (Required) 集群管理员密码,密码规则:1.密码长度限8-32个字符2.不能包含[A-Z],[a-z],[0-9]和[@#%^*+=_;:,?!&()-]之外的字符3.需要同时包含两项或以上(大写字母/小写字母/数字/特殊符号) - - **ClickhouseMachineTypeId** (str) - (Required) 集群机型,可通过GetUClickhouseClusterCreateOption接口获取具体值 - - **ClickhouseVersion** (str) - (Required) Clickhouse版本,可通过GetUClickhouseClusterCreateOption接口获取具体版本 - - **DataDiskType** (str) - (Required) 数据盘类型,可通过GetUClickhouseClusterCreateOption接口获取具体值 - - **SubnetId** (str) - (Required) 子网ID - - **VPCId** (str) - (Required) VPC ID - - **BackupId** (str) - 备份任务ID,从备份恢复时,该字段必传,此值为备份任务ID,可以从原集群备份任务列表(ListUClickhouseBackups)获取 - - **ChargeType** (str) - 付费类型,枚举值:Year(年付),Month(月付),Dynamic(时付),默认值为Month,月付 - - **ClusterName** (str) - 实例名称名称规则:1.长度为1-50位的字符2.不能包含_,中文,[A-Z],[a-z],[0-9]之外的非法字符,集群名称默认为clickhouse - - **DataDiskSize** (int) - 数据盘大小,最小100,步长为50,默认值为100,单位GB - - **IsMultiZone** (str) - 是否多可用区,默认为false - - **IsSecGroup** (str) - 是否开启安全组,true为开启,false为不开启,默认为false,不开启安全组 - - **IsZookeeperHA** (bool) - 是否Zookeeper高可用,true为zookeeper高可用,false为非高可用,默认为true,高可用 - - **Labels** (list) - 见 **CreateUClickhouseClusterParamLabels** 模型定义 - - **MultiZones** (list) - 【数组】可用区名称,IsMultiZone为true时,必传,可通过ListUClickhouseAvailableZone获取支持的可用区 - - **Quantity** (int) - 购买时长,默认值为1。月付时,此参数传0,代表购买至月末 - - **ReplicateCount** (int) - 副本数量,取值为1或2,1为单副本(非高可用),2为双副本(高可用),默认值为高可用(即为2) - - **SecGroupIds** (str) - 安全组ID,IsSecGroup为true时,必传 - - **ShardCount** (int) - 分片数量,若传递,则至少1个分片,默认值为1 - - **ZookeeperDataDiskSize** (str) - Zookeeper数据盘大小,IsZookeeperHA为true时,必传,最小100,步长为50 - - **ZookeeperDataDiskType** (str) - Zookeeper数据盘类型,IsZookeeperHA为true时,必传,可通过GetUClickhouseClusterCreateOption接口获取具体值 - - **ZookeeperMachineTypeId** (str) - Zookeeper机型ID,IsZookeeperHA为true时,必传,可通过GetUClickhouseClusterCreateOption接口获取具体值 - - **Response** - - - **Data** (dict) - 见 **CreateUClickhouseClusterResponseData** 模型定义 - - **Message** (str) - 返回信息 - - **Request Model** - - **CreateUClickhouseClusterParamLabels** - - **Key** (str) - 标签的key - - **Value** (str) - 标签的value - - - **Response Model** - - **CreateUClickhouseClusterResponseData** - - **ClusterId** (str) - 集群ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUClickhouseClusterRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUClickhouseCluster", d, **kwargs) - return apis.CreateUClickhouseClusterResponseSchema().loads(resp) - - def describe_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUClickhouseCluster - 获取集群信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Response** - - - **Data** (dict) - 见 **DescribeUClickhouseClusterResponseData** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **ZookeeperNode** - - **CPU** (int) - CPU - - **ClusterId** (str) - 集群ID - - **CreateTimestamp** (int) - 创建时间 - - **DataDiskSize** (int) - 数据盘大小 - - **DataDiskType** (str) - 数据盘类型 - - **MachineType** (str) - 机型 - - **Memory** (int) - 内存 - - **NodeId** (str) - 节点ID - - **NodeName** (str) - 节点名称 - - **ResourceId** (str) - 资源ID - - **ServiceStatus** (str) - 服务状态:RUNNING(运行中)、STARTING(启动中)、STOPPED(已停止)、RESTARTING(重启中) - - **SysDiskSize** (int) - 系统盘大小 - - **SysDiskType** (str) - 系统盘类型 - - **Zone** (str) - 可用区名称 - - **ZookeeperMyId** (str) - zookeeper的myid - - - **ClickhouseNode** - - **CPU** (int) - CPU大小 - - **ClusterId** (str) - 集群ID - - **CreateTimestamp** (int) - 创建时间 - - **DataDiskSize** (int) - 数据盘大小,GB - - **DataDiskType** (str) - 数据盘类型 - - **IPv4** (str) - ipv4 - - **MachineType** (str) - 机型 - - **Memory** (int) - 内存,GB - - **NodeId** (str) - 节点ID - - **NodeName** (str) - 节点名称 - - **ResourceId** (str) - 资源ID - - **ServiceStatus** (str) - 服务状态:RUNNING(运行中)、STARTING(启动中)、STOPPED(已停止)、RESTARTING(重启中) - - **ShardGroup** (str) - 分片组 - - **SysDiskSize** (int) - 系统盘大小,GB - - **SysDiskType** (str) - 系统盘类型 - - **Zone** (str) - 可用区名称 - - - **Payment** - - **ChargeType** (str) - 支付类型 - - **CreateTimestamp** (int) - 创建时间 - - **ExpireTimestamp** (int) - 过期时间 - - **OriginalPrice** (int) - 原始价格 - - **Price** (int) - 价格 - - **ResourceId** (str) - 资源ID - - - **ClickhouseCluster** - - **ClickhouseDataDiskSize** (int) - Clickhouse数据盘大小 - - **ClickhouseDataDiskType** (str) - Clickhouse数据盘类型 - - **ClickhouseMachineTypeId** (str) - Clickhouse机型ID - - **ClickhouseMachineTypeName** (str) - Clickhouse机型名称 - - **ClickhouseNodeCPU** (int) - Clickhouse节点CPU - - **ClickhouseNodeMemory** (int) - Clickhouse内存 - - **ClickhouseVersion** (str) - 集群版本 - - **ClusterId** (str) - 集群ID - - **ClusterName** (str) - 集群名称 - - **CreateTimestamp** (int) - 集群创建时间 - - **ExpireTimestamp** (float) - 实例过期时间 - - **IsBackup** (str) - 实例是否开启备份 - - **IsSecgroup** (str) - 实例是否开启安全组 - - **IsTieredStorage** (str) - 实例是否开启冷热分层 - - **IsZookeeperHA** (str) - Zookeeper是否高可用 - - **MachineType** (str) - 机型 - - **MultiZones** (list) - 实例所在可用区 - - **OrganizationId** (int) - 项目ID - - **RegionId** (int) - 地域ID - - **ReplicateCount** (int) - 副本数 - - **ShardCount** (int) - 分片数 - - **Status** (str) - 集群状态:CREATING(创建中)、RUNNING(运行中)、RESIZING(变配中)、RESTARTING(重启中)、UPGRADING(升级中)、DESTROYING(销毁中)、DESTROYED(已删除)、CREATE_FAILED(创建失败)、RESTART_FAILED(重启失败)、DESTROY_FAILED(删除失败)、RESIZE_FAILED(变配失败)、BACKUP_RESTORING(备份恢复中)、BACKUP_RESTORE_FAILED(备份恢复失败)、EXPANDING(扩容中)、EXPAND_FAILED(扩容失败) - - **SubnetId** (str) - 子网ID - - **TopOrganizationId** (int) - 公司ID - - **VPCId** (str) - VPCID - - **ZookeeperDataDiskSize** (int) - Zookeeper数据盘大小 - - **ZookeeperDataDiskType** (str) - Zookeeper数据盘类型 - - **ZookeeperMachineTypeId** (str) - Zookeeper机型ID - - **ZookeeperMachineTypeName** (str) - Zookeeper机型名称 - - **ZookeeperNodeCPU** (int) - Zookeeper节点CPU - - **ZookeeperNodeMemory** (int) - Zookeeper节点内存 - - **ZookeeperVersion** (str) - Zookeeper版本 - - - **DescribeUClickhouseClusterResponseData** - - **ClickhouseNodes** (list) - 见 **ClickhouseNode** 模型定义 - - **Cluster** (dict) - 见 **ClickhouseCluster** 模型定义 - - **Payment** (dict) - 见 **Payment** 模型定义 - - **ZookeeperNodes** (list) - 见 **ZookeeperNode** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUClickhouseClusterRequestSchema().dumps(d) - - resp = self.invoke("DescribeUClickhouseCluster", d, **kwargs) - return apis.DescribeUClickhouseClusterResponseSchema().loads(resp) - - def destroy_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DestroyUClickhouseCluster - 删除CK集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DestroyUClickhouseClusterRequestSchema().dumps(d) - - resp = self.invoke("DestroyUClickhouseCluster", d, **kwargs) - return apis.DestroyUClickhouseClusterResponseSchema().loads(resp) - - def expand_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ExpandUClickhouseCluster - 集群水平扩容 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **TotalNodeCount** (int) - (Required) 扩容后集群的节点数量,集群为高可用时,需要传入偶数个节点 - - **SyncNodeId** (str) - 水平扩容时,选择某一个原节点的ID,用于同步表结构/用户信息。不传递时,表示不同步表结构/用户信息,仅水平扩容节点数量 - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ExpandUClickhouseClusterRequestSchema().dumps(d) - - resp = self.invoke("ExpandUClickhouseCluster", d, **kwargs) - return apis.ExpandUClickhouseClusterResponseSchema().loads(resp) - - def get_u_clickhouse_cluster_create_option( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUClickhouseClusterCreateOption - 获取Clickhouse的创建配置项 - - **Request** - - - **ProjectId** (str) - (Config) 项目Id - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **Data** (dict) - 见 **GetCreateUClickhouseClusterOptionResponseData** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **ClickhouseDataDisk** - - **DefaultDataDiskSize** (int) - 默认大小,GB - - **DiskType** (str) - 磁盘类型 - - **MaxDiskSize** (int) - 最大值,GB - - **MinDiskSize** (int) - 最小值,GB - - **Step** (int) - 步长,GB - - - **ClickhouseMachineTypeOption** - - **CPU** (int) - CPU大小 - - **ClickhouseMachineTypeId** (str) - Clickhouse机型ID - - **DataDisks** (list) - 见 **ClickhouseDataDisk** 模型定义 - - **MachineType** (str) - 机型 - - **Memory** (int) - 内存大小,GB - - **NodeCounts** (list) - 允许创建的节点个数 - - - **ClickhouseMachineType** - - **ClickhouseMachineTypeName** (str) - CK机型名称 - - **ClickhouseMachineTypeOptions** (list) - 见 **ClickhouseMachineTypeOption** 模型定义 - - **IsSecgroupMachineType** (str) - 机型是否支持安全组 - - - **ClickhouseVersion** - - **Version** (str) - 版本号 - - **VersionName** (str) - 版本名称 - - - **GetCreateUClickhouseClusterOptionResponseData** - - **ClickhouseMachineTypes** (list) - 见 **ClickhouseMachineType** 模型定义 - - **ClickhouseVersions** (list) - 见 **ClickhouseVersion** 模型定义 - - **MaxNodeCount** (int) - 实例可创建的最大节点数量 - - **ZookeeperMachineTypes** (list) - 见 **ClickhouseMachineType** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUClickhouseClusterCreateOptionRequestSchema().dumps(d) - - resp = self.invoke("GetUClickhouseClusterCreateOption", d, **kwargs) - return apis.GetUClickhouseClusterCreateOptionResponseSchema().loads( - resp - ) - - def list_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUClickhouseCluster - 获取UClickhouse集群列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **Data** (dict) - 见 **ListUClickhouseClusterResponseData** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **ClickhouseCluster** - - **ClickhouseDataDiskSize** (int) - Clickhouse数据盘大小 - - **ClickhouseDataDiskType** (str) - Clickhouse数据盘类型 - - **ClickhouseMachineTypeId** (str) - Clickhouse机型ID - - **ClickhouseMachineTypeName** (str) - Clickhouse机型名称 - - **ClickhouseNodeCPU** (int) - Clickhouse节点CPU - - **ClickhouseNodeMemory** (int) - Clickhouse内存 - - **ClickhouseVersion** (str) - 集群版本 - - **ClusterId** (str) - 集群ID - - **ClusterName** (str) - 集群名称 - - **CreateTimestamp** (int) - 集群创建时间 - - **ExpireTimestamp** (float) - 实例过期时间 - - **IsBackup** (str) - 实例是否开启备份 - - **IsSecgroup** (str) - 实例是否开启安全组 - - **IsTieredStorage** (str) - 实例是否开启冷热分层 - - **IsZookeeperHA** (str) - Zookeeper是否高可用 - - **MachineType** (str) - 机型 - - **MultiZones** (list) - 实例所在可用区 - - **OrganizationId** (int) - 项目ID - - **RegionId** (int) - 地域ID - - **ReplicateCount** (int) - 副本数 - - **ShardCount** (int) - 分片数 - - **Status** (str) - 集群状态:CREATING(创建中)、RUNNING(运行中)、RESIZING(变配中)、RESTARTING(重启中)、UPGRADING(升级中)、DESTROYING(销毁中)、DESTROYED(已删除)、CREATE_FAILED(创建失败)、RESTART_FAILED(重启失败)、DESTROY_FAILED(删除失败)、RESIZE_FAILED(变配失败)、BACKUP_RESTORING(备份恢复中)、BACKUP_RESTORE_FAILED(备份恢复失败)、EXPANDING(扩容中)、EXPAND_FAILED(扩容失败) - - **SubnetId** (str) - 子网ID - - **TopOrganizationId** (int) - 公司ID - - **VPCId** (str) - VPCID - - **ZookeeperDataDiskSize** (int) - Zookeeper数据盘大小 - - **ZookeeperDataDiskType** (str) - Zookeeper数据盘类型 - - **ZookeeperMachineTypeId** (str) - Zookeeper机型ID - - **ZookeeperMachineTypeName** (str) - Zookeeper机型名称 - - **ZookeeperNodeCPU** (int) - Zookeeper节点CPU - - **ZookeeperNodeMemory** (int) - Zookeeper节点内存 - - **ZookeeperVersion** (str) - Zookeeper版本 - - - **ListUClickhouseClusterResponseData** - - **Clusters** (dict) - 见 **ClickhouseCluster** 模型定义 - - **TotalCount** (int) - 集群总数 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUClickhouseClusterRequestSchema().dumps(d) - - resp = self.invoke("ListUClickhouseCluster", d, **kwargs) - return apis.ListUClickhouseClusterResponseSchema().loads(resp) - - def resize_u_clickhouse_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeUClickhouseCluster - 集群改配 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **IsZooKeeperNode** (bool) - 是否为zookeeper节点,为true时表示升级zookeeper节点规格,为false时表示升级clickhouse节点规格,默认为false - - **TargetDataDiskSize** (int) - 目标磁盘大小,单位GB,只能扩容,与TargetMachineTypeId不能同时为空 - - **TargetMachineTypeId** (str) - 目标机型ID,可通过GetUClickhouseClusterCreateOption接口获取具体值,与TargetDataDiskSize不能同时为空 - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeUClickhouseClusterRequestSchema().dumps(d) - - resp = self.invoke("ResizeUClickhouseCluster", d, **kwargs) - return apis.ResizeUClickhouseClusterResponseSchema().loads(resp) - - def restart_u_clickhouse_cluster_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RestartUClickhouseClusterService - 重启集群的UClickhouse服务 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RestartUClickhouseClusterServiceRequestSchema().dumps(d) - - resp = self.invoke("RestartUClickhouseClusterService", d, **kwargs) - return apis.RestartUClickhouseClusterServiceResponseSchema().loads(resp) diff --git a/ucloud/services/uclickhouse/schemas/apis.py b/ucloud/services/uclickhouse/schemas/apis.py deleted file mode 100644 index 0808ee63..00000000 --- a/ucloud/services/uclickhouse/schemas/apis.py +++ /dev/null @@ -1,260 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uclickhouse.schemas import models - -""" UClickhouse API Schema -""" - - -""" -API: CreateUClickhouseCluster - -创建UClickhouse集群 -""" - - -class CreateUClickhouseClusterParamLabelsSchema(schema.RequestSchema): - """CreateUClickhouseClusterParamLabels -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - } - - -class CreateUClickhouseClusterRequestSchema(schema.RequestSchema): - """CreateUClickhouseCluster - 创建UClickhouse集群""" - - fields = { - "AdminPassword": fields.Str(required=True, dump_to="AdminPassword"), - "BackupId": fields.Str(required=False, dump_to="BackupId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "ClickhouseMachineTypeId": fields.Str( - required=True, dump_to="ClickhouseMachineTypeId" - ), - "ClickhouseVersion": fields.Str( - required=True, dump_to="ClickhouseVersion" - ), - "ClusterName": fields.Str(required=False, dump_to="ClusterName"), - "DataDiskSize": fields.Int(required=False, dump_to="DataDiskSize"), - "DataDiskType": fields.Str(required=True, dump_to="DataDiskType"), - "IsMultiZone": fields.Str(required=False, dump_to="IsMultiZone"), - "IsSecGroup": fields.Str(required=False, dump_to="IsSecGroup"), - "IsZookeeperHA": fields.Bool(required=False, dump_to="IsZookeeperHA"), - "Labels": fields.List(CreateUClickhouseClusterParamLabelsSchema()), - "MultiZones": fields.List(fields.Str()), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReplicateCount": fields.Int(required=False, dump_to="ReplicateCount"), - "SecGroupIds": fields.Str(required=False, dump_to="SecGroupIds"), - "ShardCount": fields.Int(required=False, dump_to="ShardCount"), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "ZookeeperDataDiskSize": fields.Str( - required=False, dump_to="ZookeeperDataDiskSize" - ), - "ZookeeperDataDiskType": fields.Str( - required=False, dump_to="ZookeeperDataDiskType" - ), - "ZookeeperMachineTypeId": fields.Str( - required=False, dump_to="ZookeeperMachineTypeId" - ), - } - - -class CreateUClickhouseClusterResponseSchema(schema.ResponseSchema): - """CreateUClickhouseCluster - 创建UClickhouse集群""" - - fields = { - "Data": models.CreateUClickhouseClusterResponseDataSchema(), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeUClickhouseCluster - -获取集群信息 -""" - - -class DescribeUClickhouseClusterRequestSchema(schema.RequestSchema): - """DescribeUClickhouseCluster - 获取集群信息""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeUClickhouseClusterResponseSchema(schema.ResponseSchema): - """DescribeUClickhouseCluster - 获取集群信息""" - - fields = { - "Data": models.DescribeUClickhouseClusterResponseDataSchema(), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DestroyUClickhouseCluster - -删除CK集群 -""" - - -class DestroyUClickhouseClusterRequestSchema(schema.RequestSchema): - """DestroyUClickhouseCluster - 删除CK集群""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DestroyUClickhouseClusterResponseSchema(schema.ResponseSchema): - """DestroyUClickhouseCluster - 删除CK集群""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ExpandUClickhouseCluster - -集群水平扩容 -""" - - -class ExpandUClickhouseClusterRequestSchema(schema.RequestSchema): - """ExpandUClickhouseCluster - 集群水平扩容""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SyncNodeId": fields.Str(required=False, dump_to="SyncNodeId"), - "TotalNodeCount": fields.Int(required=True, dump_to="TotalNodeCount"), - } - - -class ExpandUClickhouseClusterResponseSchema(schema.ResponseSchema): - """ExpandUClickhouseCluster - 集群水平扩容""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUClickhouseClusterCreateOption - -获取Clickhouse的创建配置项 -""" - - -class GetUClickhouseClusterCreateOptionRequestSchema(schema.RequestSchema): - """GetUClickhouseClusterCreateOption - 获取Clickhouse的创建配置项""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetUClickhouseClusterCreateOptionResponseSchema(schema.ResponseSchema): - """GetUClickhouseClusterCreateOption - 获取Clickhouse的创建配置项""" - - fields = { - "Data": models.GetCreateUClickhouseClusterOptionResponseDataSchema(), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUClickhouseCluster - -获取UClickhouse集群列表 -""" - - -class ListUClickhouseClusterRequestSchema(schema.RequestSchema): - """ListUClickhouseCluster - 获取UClickhouse集群列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ListUClickhouseClusterResponseSchema(schema.ResponseSchema): - """ListUClickhouseCluster - 获取UClickhouse集群列表""" - - fields = { - "Data": models.ListUClickhouseClusterResponseDataSchema(), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ResizeUClickhouseCluster - -集群改配 -""" - - -class ResizeUClickhouseClusterRequestSchema(schema.RequestSchema): - """ResizeUClickhouseCluster - 集群改配""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "IsZooKeeperNode": fields.Bool( - required=False, dump_to="IsZooKeeperNode" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TargetDataDiskSize": fields.Int( - required=False, dump_to="TargetDataDiskSize" - ), - "TargetMachineTypeId": fields.Str( - required=False, dump_to="TargetMachineTypeId" - ), - } - - -class ResizeUClickhouseClusterResponseSchema(schema.ResponseSchema): - """ResizeUClickhouseCluster - 集群改配""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: RestartUClickhouseClusterService - -重启集群的UClickhouse服务 -""" - - -class RestartUClickhouseClusterServiceRequestSchema(schema.RequestSchema): - """RestartUClickhouseClusterService - 重启集群的UClickhouse服务""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class RestartUClickhouseClusterServiceResponseSchema(schema.ResponseSchema): - """RestartUClickhouseClusterService - 重启集群的UClickhouse服务""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } diff --git a/ucloud/services/uclickhouse/schemas/models.py b/ucloud/services/uclickhouse/schemas/models.py deleted file mode 100644 index 307d250c..00000000 --- a/ucloud/services/uclickhouse/schemas/models.py +++ /dev/null @@ -1,239 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class CreateUClickhouseClusterResponseDataSchema(schema.ResponseSchema): - """CreateUClickhouseClusterResponseData -""" - - fields = { - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - } - - -class ClickhouseNodeSchema(schema.ResponseSchema): - """ClickhouseNode -""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "CreateTimestamp": fields.Int( - required=True, load_from="CreateTimestamp" - ), - "DataDiskSize": fields.Int(required=True, load_from="DataDiskSize"), - "DataDiskType": fields.Str(required=True, load_from="DataDiskType"), - "IPv4": fields.Str(required=True, load_from="IPv4"), - "MachineType": fields.Str(required=True, load_from="MachineType"), - "Memory": fields.Int(required=True, load_from="Memory"), - "NodeId": fields.Str(required=True, load_from="NodeId"), - "NodeName": fields.Str(required=True, load_from="NodeName"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - "ServiceStatus": fields.Str(required=True, load_from="ServiceStatus"), - "ShardGroup": fields.Str(required=True, load_from="ShardGroup"), - "SysDiskSize": fields.Int(required=True, load_from="SysDiskSize"), - "SysDiskType": fields.Str(required=True, load_from="SysDiskType"), - "Zone": fields.Str(required=True, load_from="Zone"), - } - - -class ClickhouseClusterSchema(schema.ResponseSchema): - """ClickhouseCluster -""" - - fields = { - "ClickhouseDataDiskSize": fields.Int( - required=True, load_from="ClickhouseDataDiskSize" - ), - "ClickhouseDataDiskType": fields.Str( - required=True, load_from="ClickhouseDataDiskType" - ), - "ClickhouseMachineTypeId": fields.Str( - required=True, load_from="ClickhouseMachineTypeId" - ), - "ClickhouseMachineTypeName": fields.Str( - required=True, load_from="ClickhouseMachineTypeName" - ), - "ClickhouseNodeCPU": fields.Int( - required=True, load_from="ClickhouseNodeCPU" - ), - "ClickhouseNodeMemory": fields.Int( - required=True, load_from="ClickhouseNodeMemory" - ), - "ClickhouseVersion": fields.Str( - required=True, load_from="ClickhouseVersion" - ), - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "ClusterName": fields.Str(required=True, load_from="ClusterName"), - "CreateTimestamp": fields.Int( - required=True, load_from="CreateTimestamp" - ), - "ExpireTimestamp": fields.Float( - required=True, load_from="ExpireTimestamp" - ), - "IsBackup": fields.Str(required=True, load_from="IsBackup"), - "IsSecgroup": fields.Str(required=True, load_from="IsSecgroup"), - "IsTieredStorage": fields.Str( - required=True, load_from="IsTieredStorage" - ), - "IsZookeeperHA": fields.Str(required=True, load_from="IsZookeeperHA"), - "MachineType": fields.Str(required=True, load_from="MachineType"), - "MultiZones": fields.List(fields.Str()), - "OrganizationId": fields.Int(required=True, load_from="OrganizationId"), - "RegionId": fields.Int(required=True, load_from="RegionId"), - "ReplicateCount": fields.Int(required=True, load_from="ReplicateCount"), - "ShardCount": fields.Int(required=True, load_from="ShardCount"), - "Status": fields.Str(required=True, load_from="Status"), - "SubnetId": fields.Str(required=True, load_from="SubnetId"), - "TopOrganizationId": fields.Int( - required=True, load_from="TopOrganizationId" - ), - "VPCId": fields.Str(required=True, load_from="VPCId"), - "ZookeeperDataDiskSize": fields.Int( - required=True, load_from="ZookeeperDataDiskSize" - ), - "ZookeeperDataDiskType": fields.Str( - required=True, load_from="ZookeeperDataDiskType" - ), - "ZookeeperMachineTypeId": fields.Str( - required=True, load_from="ZookeeperMachineTypeId" - ), - "ZookeeperMachineTypeName": fields.Str( - required=True, load_from="ZookeeperMachineTypeName" - ), - "ZookeeperNodeCPU": fields.Int( - required=True, load_from="ZookeeperNodeCPU" - ), - "ZookeeperNodeMemory": fields.Int( - required=True, load_from="ZookeeperNodeMemory" - ), - "ZookeeperVersion": fields.Str( - required=True, load_from="ZookeeperVersion" - ), - } - - -class PaymentSchema(schema.ResponseSchema): - """Payment -""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTimestamp": fields.Int( - required=True, load_from="CreateTimestamp" - ), - "ExpireTimestamp": fields.Int( - required=True, load_from="ExpireTimestamp" - ), - "OriginalPrice": fields.Int(required=True, load_from="OriginalPrice"), - "Price": fields.Int(required=True, load_from="Price"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - } - - -class ZookeeperNodeSchema(schema.ResponseSchema): - """ZookeeperNode -""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "CreateTimestamp": fields.Int( - required=True, load_from="CreateTimestamp" - ), - "DataDiskSize": fields.Int(required=True, load_from="DataDiskSize"), - "DataDiskType": fields.Str(required=True, load_from="DataDiskType"), - "MachineType": fields.Str(required=True, load_from="MachineType"), - "Memory": fields.Int(required=True, load_from="Memory"), - "NodeId": fields.Str(required=True, load_from="NodeId"), - "NodeName": fields.Str(required=True, load_from="NodeName"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - "ServiceStatus": fields.Str(required=True, load_from="ServiceStatus"), - "SysDiskSize": fields.Int(required=True, load_from="SysDiskSize"), - "SysDiskType": fields.Str(required=True, load_from="SysDiskType"), - "Zone": fields.Str(required=True, load_from="Zone"), - "ZookeeperMyId": fields.Str(required=True, load_from="ZookeeperMyId"), - } - - -class DescribeUClickhouseClusterResponseDataSchema(schema.ResponseSchema): - """DescribeUClickhouseClusterResponseData -""" - - fields = { - "ClickhouseNodes": fields.List(ClickhouseNodeSchema()), - "Cluster": ClickhouseClusterSchema(), - "Payment": PaymentSchema(), - "ZookeeperNodes": fields.List(ZookeeperNodeSchema()), - } - - -class ClickhouseDataDiskSchema(schema.ResponseSchema): - """ClickhouseDataDisk -""" - - fields = { - "DefaultDataDiskSize": fields.Int( - required=True, load_from="DefaultDataDiskSize" - ), - "DiskType": fields.Str(required=True, load_from="DiskType"), - "MaxDiskSize": fields.Int(required=True, load_from="MaxDiskSize"), - "MinDiskSize": fields.Int(required=True, load_from="MinDiskSize"), - "Step": fields.Int(required=True, load_from="Step"), - } - - -class ClickhouseVersionSchema(schema.ResponseSchema): - """ClickhouseVersion -""" - - fields = { - "Version": fields.Str(required=True, load_from="Version"), - "VersionName": fields.Str(required=True, load_from="VersionName"), - } - - -class ClickhouseMachineTypeOptionSchema(schema.ResponseSchema): - """ClickhouseMachineTypeOption -""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "ClickhouseMachineTypeId": fields.Str( - required=True, load_from="ClickhouseMachineTypeId" - ), - "DataDisks": fields.List(ClickhouseDataDiskSchema()), - "MachineType": fields.Str(required=True, load_from="MachineType"), - "Memory": fields.Int(required=True, load_from="Memory"), - "NodeCounts": fields.List(fields.Int()), - } - - -class ClickhouseMachineTypeSchema(schema.ResponseSchema): - """ClickhouseMachineType -""" - - fields = { - "ClickhouseMachineTypeName": fields.Str( - required=True, load_from="ClickhouseMachineTypeName" - ), - "ClickhouseMachineTypeOptions": fields.List( - ClickhouseMachineTypeOptionSchema() - ), - "IsSecgroupMachineType": fields.Str( - required=True, load_from="IsSecgroupMachineType" - ), - } - - -class GetCreateUClickhouseClusterOptionResponseDataSchema( - schema.ResponseSchema -): - """GetCreateUClickhouseClusterOptionResponseData -""" - - fields = { - "ClickhouseMachineTypes": fields.List(ClickhouseMachineTypeSchema()), - "ClickhouseVersions": fields.List(ClickhouseVersionSchema()), - "MaxNodeCount": fields.Int(required=True, load_from="MaxNodeCount"), - "ZookeeperMachineTypes": fields.List(ClickhouseMachineTypeSchema()), - } - - -class ListUClickhouseClusterResponseDataSchema(schema.ResponseSchema): - """ListUClickhouseClusterResponseData -""" - - fields = { - "Clusters": ClickhouseClusterSchema(), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } diff --git a/ucloud/services/ucompshare/client.py b/ucloud/services/ucompshare/client.py deleted file mode 100644 index 671d1006..00000000 --- a/ucloud/services/ucompshare/client.py +++ /dev/null @@ -1,3297 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ucompshare.schemas import apis - - -class UCompShareClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UCompShareClient, self).__init__( - config, transport, middleware, logger - ) - - def attach_compshare_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AttachCompshareDisk - 将一个可用的UDisk挂载到某台主机上 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UDiskId** (str) - (Required) 需要挂载的UDisk实例ID. - - **EnableCrossPodAttach** (str) - 是否允许跨pod挂载(Yes:允许跨pod挂载,No:不允许跨pod挂载,不填默认No) - - **UHostId** (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AttachCompshareDiskRequestSchema().dumps(d) - - resp = self.invoke("AttachCompshareDisk", d, **kwargs) - return apis.AttachCompshareDiskResponseSchema().loads(resp) - - def attach_us_33(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """AttachUS3 - 挂载us3 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AttachUS3RequestSchema().dumps(d) - - resp = self.invoke("AttachUS3", d, **kwargs) - return apis.AttachUS3ResponseSchema().loads(resp) - - def check_comp_share_net_optimizer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CheckCompShareNetOptimizer - 检查算力平台账号是否开通访问加速 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Optimized** (bool) - 是否已开通 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CheckCompShareNetOptimizerRequestSchema().dumps(d) - - resp = self.invoke("CheckCompShareNetOptimizer", d, **kwargs) - return apis.CheckCompShareNetOptimizerResponseSchema().loads(resp) - - def check_ul_host_resource_capacity( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID。如:"ulh.c1m1s40b30t800" - - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage `_ 获取 - - **ChargeType** (str) - 计费模式。枚举值: \\ > Year,按年付费; \\ > Month,按月付费;\\ > ThirtyDay,30天期付费,跨境电商相关套餐使用此计费方式;默认:Month - - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 - - **Name** (str) - 轻量应用主机名称。默认:套餐ID。请遵照 `字段规范 `_ 设定实例名称。 - - **Quantity** (int) - 购买时长。默认:1。不支持购买到月末 - - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall `_ 。 - - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 - - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 - - **Response** - - - **Message** (str) - 错误信息 - - **ResourceEnough** (bool) - 资源是否充足 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CheckULHostResourceCapacityRequestSchema().dumps(d) - - resp = self.invoke("CheckULHostResourceCapacity", d, **kwargs) - return apis.CheckULHostResourceCapacityResponseSchema().loads(resp) - - def copy_comp_share_custom_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CopyCompShareCustomImage - 复制算力平台镜像 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **TargetImageName** (str) - 目标镜像名称 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **NewCompShareImageId** (str) - 复制后的镜像Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CopyCompShareCustomImageRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CopyCompShareCustomImage", d, **kwargs) - return apis.CopyCompShareCustomImageResponseSchema().loads(resp) - - def create_comp_share_custom_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateCompShareCustomImage - 制作算力平台实例自制镜像 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Name** (str) - (Required) 镜像名称。不允许与账号下其他镜像名称重复 - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Description** (str) - 镜像描述信息 - - **Softwares** (dict) - 见 **CreateCompShareCustomImageParamSoftwares** 模型定义 - - **Response** - - - **CompShareImageId** (str) - 镜像Id - - **Request Model** - - **CreateCompShareCustomImageParamSoftwares** - - **Application** (list) - 【array of string】镜像的应用列表 - - **CUDAVersion** (str) - 镜像CUDA版本 - - **Framework** (str) - 镜像框架名称 - - **FrameworkVersion** (str) - 镜像框架版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateCompShareCustomImageRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateCompShareCustomImage", d, **kwargs) - return apis.CreateCompShareCustomImageResponseSchema().loads(resp) - - def create_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateCompShareInstance - 创建轻量级算力平台主机资源 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CPU** (int) - (Required) 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。默认值: 4。 - - **CompShareImageId** (str) - (Required) 镜像ID - - **GPU** (int) - (Required) GPU卡核心数。仅GPU机型支持此字段(可选范围与MachineType+GpuType相关) - - **GpuType** (str) - (Required) GPU类型,枚举值["K80", "P40", "V100", "T4","T4A", "T4S","2080Ti","2080Ti-4C","1080Ti", "T4/4", "MI100", "V100S",2080","2080TiS","2080TiPro","3090","A100"],MachineType为G时必填 - - **MachineType** (str) - (Required) 云主机机型(V2.0),在本字段和字段UHostType中,仅需要其中1个字段即可。枚举值["N", "C", "G", "O", "OS", "OM", "OPRO", "OMAX", "O.BM", "O.EPC"]。参考 `云主机机型说明 `_ 。 - - **Memory** (int) - (Required) 内存大小。单位:MB。范围 :[1024, 262144],取值为1024的倍数(可选范围参考控制台)。默认值:8192 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 计费模式。枚举值为: \\ > Month,按月付费;\\ > Day,按天付费;\\ > Dynamic,按小时预付费 \\ > Postpay,按小时后付费(支持关机不收费,目前仅部分可用区支持,请联系您的客户经理) \\ > Spot计费为抢占式实例(内测阶段) \\ 默认为月付 - - **Disks** (list) - 见 **CreateCompShareInstanceParamDisks** 模型定义 - - **EnableUS3** (bool) - 是否挂载云存储(仅容器实例支持此操作) - - **LoginMode** (str) - 主机登陆模式。密码(默认选项): Password - - **MinimalCpuPlatform** (str) - 最低cpu平台,枚举值["Intel/Auto", "Intel/IvyBridge", "Intel/Haswell", "Intel/Broadwell", "Intel/Skylake", "Intel/Cascadelake", "Intel/CascadelakeR", "Intel/IceLake", "Amd/Epyc2", "Amd/Auto","Ampere/Auto","Ampere/Altra", "Auto"],默认值是"Intel/Auto", "Auto" 自动分配Amd或者Intel cpu平台。 - - **Name** (str) - 实例名称 - - **Password** (str) - UHost密码。请遵照 `字段规范 `_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64UGFzc3dvcmQx。 - - **Quantity** (int) - 购买时长。默认:值 1。按小时购买(Dynamic/Postpay)时无需此参数。 月付时,此参数传0,代表购买至月末。 - - **SecurityGroupId** (str) - 防火墙Id - - **Response** - - - **UHostIds** (list) - UHost实例Id集合 - - **Request Model** - - **CreateCompShareInstanceParamDisks** - - **IsBoot** (bool) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 `_ 。 - - **Type** (str) - 磁盘类型。请参考 `磁盘类型 `_ 。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateCompShareInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateCompShareInstance", d, **kwargs) - return apis.CreateCompShareInstanceResponseSchema().loads(resp) - - def create_comp_share_team( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateCompShareTeam - 创建团队 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Name** (str) - (Required) 团队名称 - - **Description** (str) - 团队简介 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateCompShareTeamRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateCompShareTeam", d, **kwargs) - return apis.CreateCompShareTeamResponseSchema().loads(resp) - - def create_comp_share_team_relation( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateCompShareTeamRelation - 发送团队邀请 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TeamId** (int) - (Required) 团队Id - - **UserInfo** (list) - 见 **CreateCompShareTeamRelationParamUserInfo** 模型定义 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ErrorMap** (dict) - 错误信息Map:key:被邀请成员的公司Id ,value :报错信息ErrorInfo(object),ErrorInfo.Message 报错信息,ErrorInfo.Code 报错Code - - **Request Model** - - **CreateCompShareTeamRelationParamUserInfo** - - **RemarkName** (str) - 被邀请成员的备注名称 - - **UserCompanyId** (int) - 被邀请成员的公司Id - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateCompShareTeamRelationRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateCompShareTeamRelation", d, **kwargs) - return apis.CreateCompShareTeamRelationResponseSchema().loads(resp) - - def create_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateULHostInstance - 创建轻量应用云主机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID。如:"ulh.c1m1s40b30t800" - - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage `_ 获取 - - **Password** (str) - (Required) ULHost密码。请遵照 `字段规范 `_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64 - - **ChargeType** (str) - 计费模式。枚举值: \\ > Year,按年付费; \\ > Month,按月付费;\\ > ThirtyDay,30天期付费,跨境电商相关套餐使用此计费方式;默认:Month - - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 - - **Name** (str) - 轻量应用主机名称。默认:套餐ID。请遵照 `字段规范 `_ 设定实例名称。 - - **Quantity** (int) - 购买时长。默认:1。不支持购买到月末 - - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall `_ 。 - - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 - - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - 实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateULHostInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateULHostInstance", d, **kwargs) - return apis.CreateULHostInstanceResponseSchema().loads(resp) - - def delete_comp_share_stop_scheduler( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteCompShareStopScheduler - 删除实例定时关机任务 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteCompShareStopSchedulerRequestSchema().dumps(d) - - resp = self.invoke("DeleteCompShareStopScheduler", d, **kwargs) - return apis.DeleteCompShareStopSchedulerResponseSchema().loads(resp) - - def delete_comp_share_team( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteCompShareTeam - 删除团队 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TeamId** (int) - (Required) 团队Id - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteCompShareTeamRequestSchema().dumps(d) - - resp = self.invoke("DeleteCompShareTeam", d, **kwargs) - return apis.DeleteCompShareTeamResponseSchema().loads(resp) - - def delete_compshare_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteCompshareDisk - 卸载并删除算力磁盘 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **OrganizationID** (int) - (Required) 项目id - - **TopOrganizationID** (int) - (Required) 公司id - - **UDiskId** (str) - (Required) 磁盘ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **UHostId** (str) - 主机ID - - **Response** - - - **UDiskId** (str) - 已删除磁盘id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteCompshareDiskRequestSchema().dumps(d) - - resp = self.invoke("DeleteCompshareDisk", d, **kwargs) - return apis.DeleteCompshareDiskResponseSchema().loads(resp) - - def describe_available_comp_share_instance_types( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeAvailableCompShareInstanceTypes - 获取某个地域下可售/售罄的所有机型信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **MachineTypes** (list) - 指定机型列表 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **AvailableInstanceTypes** (list) - 见 **AvailableInstanceTypes** 模型定义 - - **Status** (str) - 当前区域是否可售 - - **Response Model** - - **Performance** - - **Rate** (int) - 交互展示参数,可忽略 - - **Value** (float) - 值,单位是TFlops - - - **FeatureModes** - - **MinimalCpuPlatform** (list) - 这个特性必须是列出来的CPU平台及以上的CPU才支持 - - **Name** (str) - 模式|特性名称 - - **RelatedToImageFeature** (list) - 为镜像上支持这个特性的标签。例如DescribeImage返回的字段Features包含HotPlug,说明该镜像支持热升级。 - - - **Features** - - **Modes** (list) - 见 **FeatureModes** 模型定义 - - **Name** (str) - 可支持的特性名称。目前支持的特性网络增强|NetCapability、热升级|Hotplug - - - **GraphicsMemory** - - **Rate** (int) - 交互展示参数,可忽略 - - **Value** (int) - 值,单位是GB - - - **Collection** - - **Cpu** (int) - CPU规格 - - **Memory** (list) - 内存规格 - - **MinimalCpuPlatform** (list) - CPU和内存规格只能在列出来的CPU平台支持 - - - **MachineSizes** - - **Collection** (list) - 见 **Collection** 模型定义 - - **Gpu** (int) - Gpu为GPU可支持的规格即GPU颗数,非GPU机型,Gpu为0 - - - **CpuPlatforms** - - **Amd** (list) - 返回AMD的CPU平台信息,例如:AMD: ['Amd/Epyc2'] - - **Ampere** (list) - 返回Arm的CPU平台信息,例如:Ampere: ['Ampere/Altra'] - - **Intel** (list) - 返回Intel的CPU平台信息,例如:Intel: ['Intel/CascadeLake','Intel/CascadelakeR','Intel/IceLake'] - - - **BootDiskInfo** - - **Features** (list) - 磁盘可支持的服务 - - **InstantResize** (bool) - 系统盘是否允许扩容,如果是本地盘,则不允许扩容,InstantResize为false。 - - **MaximalSize** (int) - MaximalSize为磁盘最大值 - - **Name** (str) - 系统盘类别,包含普通云盘|CLOUD_NORMAL、SSD云盘|CLOUD_SSD和RSSD云盘|CLOUD_RSSD。普通本地盘只包含普通本地盘|LOCAL_NORMAL一种。SSD本地盘只包含SSD本地盘|LOCAL_SSD一种。 - - - **DataDiskInfo** - - **Features** (list) - 数据盘可支持的服务 - - **MaximalSize** (int) - MaximalSize为磁盘最大值 - - **MinimalSize** (int) - 磁盘最小值,如果没有该字段,最小值取基础镜像Size值即可(linux为20G,windows为40G)。 - - **Name** (str) - 数据盘类别,包含普通云盘|CLOUD_NORMAL、SSD云盘|CLOUD_SSD和RSSD云盘|CLOUD_RSSD。普通本地盘只包含普通本地盘|LOCAL_NORMAL一种。SSD本地盘只包含SSD本地盘|LOCAL_SSD一种。 - - - **Disks** - - **BootDisk** (list) - 见 **BootDiskInfo** 模型定义 - - **DataDisk** (list) - 见 **DataDiskInfo** 模型定义 - - **Name** (str) - 磁盘介质类别信息,磁盘主要分类如下:云盘|cloudDisk、普通本地盘|normalLocalDisk和SSD本地盘|ssdLocalDisk。 - - - **AvailableInstanceTypes** - - **CpuPlatforms** (dict) - 见 **CpuPlatforms** 模型定义 - - **Disks** (list) - 见 **Disks** 模型定义 - - **Features** (list) - 见 **Features** 模型定义 - - **GraphicsMemory** (dict) - 见 **GraphicsMemory** 模型定义 - - **InstanceType** (str) - 实例类型,枚举值["uhost", "spot"] - - **MachineClass** (str) - 区分是否是GPU机型:GPU机型|GPU,非GPU机型|Normal。 - - **MachineSizes** (list) - 见 **MachineSizes** 模型定义 - - **Name** (str) - 机型名称:快杰O型|O 、快杰共享型|OM 、快杰内存型|OMEM 、 快杰PRO型|OPRO、通用N型|N、高主频C型|C和GPU G型|G等 - - **ParentType** (str) - 父机型 - - **Performance** (dict) - 见 **Performance** 模型定义 - - **Status** (str) - 机型状态:可售|Normal 、 公测|Beta、售罄|Soldout、隐藏|Hidden - - **Zone** (str) - 可用区信息 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeAvailableCompShareInstanceTypesRequestSchema().dumps(d) - - resp = self.invoke( - "DescribeAvailableCompShareInstanceTypes", d, **kwargs - ) - return ( - apis.DescribeAvailableCompShareInstanceTypesResponseSchema().loads( - resp - ) - ) - - def describe_community_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCommunityImages - 获取社区镜像列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Author** (str) - 搜索指定作者发布的镜像 - - **CompShareImageId** (str) - 镜像Id。支持指定镜像Id查询 - - **Limit** (str) - 返回数据长度,默认为20,最大100 - - **Name** (str) - 镜像名称。模糊搜索 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **SortCondition** (dict) - 见 **DescribeCommunityImagesParamSortCondition** 模型定义 - - **Tag** (str) - 按标签名称搜索,精确匹配 - - **Response** - - - **ImageSet** (list) - 见 **CompShareImage** 模型定义 - - **TotalCount** (int) - 总数量 - - **Request Model** - - **DescribeCommunityImagesParamSortCondition** - - **ASC** (str) - 是否升序排列 - - **Field** (str) - 排序条件。- Favor:按热度排序,获取热点镜像;- PubTime:按发布时间排序,获取最新社区镜像;- Price 按价格排序;- CreatedCount 按使用量排序;默认:"PubTime" - - - **Response Model** - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (str) - 创建时间戳 - - **CreatedCount** (str) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (str) - 镜像收藏计数 - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (str) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCommunityImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeCommunityImages", d, **kwargs) - return apis.DescribeCommunityImagesResponseSchema().loads(resp) - - def describe_comp_share_custom_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareCustomImages - 获取自制镜像列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **CompShareImageId** (str) - 指定镜像Id查询 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **ImageSet** (list) - 见 **CompShareImage** 模型定义 - - **TotalCount** (int) - 总数量 - - **Response Model** - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (int) - 创建时间戳 - - **CreatedCount** (int) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (int) - 镜像收藏计数 - - **GroupId** (str) - 镜像组id - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (int) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **VersionDesc** (str) - 版本描述 - - **VersionName** (str) - 版本名称 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareCustomImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareCustomImages", d, **kwargs) - return apis.DescribeCompShareCustomImagesResponseSchema().loads(resp) - - def describe_comp_share_gpu_inventory( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareGpuInventory - 查询GPU卡余量库存 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **GpuInventoryByZone** (dict) - 返回为嵌套map:,key为池子名称 (Exclusive:独占,Spot :抢占) value : 库存余量信息map {key 可用区ID,value:GPU卡余量map (key:GPU机型,value:余量GPU卡数量),举例:{"Exclusive":{10027:{"2080":10}}}} - - **SpotUnsupportedGpuTypes** (list) - 不支持抢占的GPU机型 - - **UpdateTime** (int) - 缓存更新时间(5min更新一次) - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareGpuInventoryRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareGpuInventory", d, **kwargs) - return apis.DescribeCompShareGpuInventoryResponseSchema().loads(resp) - - def describe_comp_share_image_share_accounts( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareImageShareAccounts - 获取镜像共享的账号列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **Response** - - - **AccountSet** (list) - 见 **Projects** 模型定义 - - **Response Model** - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareImageShareAccountsRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareImageShareAccounts", d, **kwargs) - return apis.DescribeCompShareImageShareAccountsResponseSchema().loads( - resp - ) - - def describe_comp_share_image_tags( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareImageTags - 获取镜像标签列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Tags** (list) - 【Array of string】镜像标签列表 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareImageTagsRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareImageTags", d, **kwargs) - return apis.DescribeCompShareImageTagsResponseSchema().loads(resp) - - def describe_comp_share_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareImages - 可获取平台、应用镜像信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Author** (str) - 镜像作者昵称 - - **CompShareImageId** (str) - 镜像Id。支持指定Id查询 - - **ImageType** (str) - 镜像类型。枚举值- System 平台镜像- App 应用镜像默认:System - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Name** (str) - 镜像名称。支持模糊搜索 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Tag** (str) - 镜像标签 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ImageSet** (list) - 见 **CompShareImage** 模型定义 - - **TotalCount** (int) - 总数量 - - **Response Model** - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (str) - 创建时间戳 - - **CreatedCount** (str) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (str) - 镜像收藏计数 - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (str) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareImages", d, **kwargs) - return apis.DescribeCompShareImagesResponseSchema().loads(resp) - - def describe_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareInstance - 获取用户所有地域下主机资源信息列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **UHostIds** (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。 - - **WithoutGpu** (bool) - 无卡GPU - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **TotalCount** (int) - UHostInstance总数 - - **UHostSet** (list) - 见 **CompShareInstanceSet** 模型定义 - - **Response Model** - - **GpuMonitorInfo** - - **GPU** (str) - GPU卡名称 - - **GpuUsageRate** (str) - GPU卡使用率 - - **MemoryUsageRate** (str) - GPU显存使用率 - - - **MonitorMessage** - - **CpuUsageRate** (str) - CPU使用率 - - **GpuInfo** (list) - 见 **GpuMonitorInfo** 模型定义 - - **MemUsageRate** (str) - 内存使用率 - - - **WithoutGpuSpec** - - **Cpu** (int) - cpu - - **Gpu** (int) - gpu - - **Memory** (int) - 内存 - - - **UHostIPSet** - - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) - - **Default** (str) - 内网 Private 类型下,表示是否为默认网卡。true: 是默认网卡;其他值:不是。 - - **IP** (str) - IP地址 - - **IPId** (str) - 外网IP资源ID 。(内网IP无对应的资源ID) - - **IPMode** (str) - IPv4/IPv6; - - **Mac** (str) - 内网 Private 类型下,当前网卡的Mac。 - - **NetworkInterfaceId** (str) - 弹性网卡为默认网卡时,返回对应的 ID 值 - - **SubnetId** (str) - IP地址对应的子网 ID。(北京一不支持,字段返回为空) - - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private - - **VPCId** (str) - IP地址对应的VPC ID。(北京一不支持,字段返回为空) - - **Weight** (int) - 当前EIP的权重。权重最大的为当前的出口IP。 - - - **UHostDiskSet** - - **DiskId** (str) - 磁盘ID - - **DiskType** (str) - 磁盘类型。请参考 `磁盘类型 `_ 。 - - **Drive** (str) - 磁盘盘符 - - **Encrypted** (str) - "true": 加密盘 "false":非加密盘 - - **IsBoot** (str) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Name** (str) - UDisk名字(仅当磁盘是UDisk时返回) - - **Size** (int) - 磁盘大小,单位: GB - - **Type** (str) - 【建议不再使用】磁盘类型。系统盘: Boot,数据盘: Data,网络盘:Udisk - - - **SoftwareAddr** - - **Name** (str) - 软件名称 - - **URL** (str) - 软件地址 - - - **DiskPriceInfo** - - **ChargeType** (str) - 计费类型 - - **IsBoot** (bool) - 是否为系统盘 - - **Price** (float) - 磁盘价格 - - - **GraphicsMemory** - - **Rate** (int) - 交互展示参数,可忽略 - - **Value** (int) - 值,单位是GB - - - **CompShareInstanceSet** - - **AutoRenew** (str) - 是否自动续费,自动续费:“Yes”,不自动续费:“No” - - **CPU** (int) - 虚拟CPU核数,单位: 个 - - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按时付费;Postpay,按需付费 - - **CompShareImageBillId** (str) - 用于镜像计费的Id - - **CompShareImageId** (str) - 镜像Id - - **CompShareImageName** (str) - 镜像名称 - - **CompShareImageOwnerAlias** (str) - 镜像来源 - - **CompShareImagePrice** (float) - 镜像价格 - - **CompShareImageStatus** (str) - 镜像状态 - - **CompShareImageType** (str) - 镜像类型- System 系统镜像- App 应用镜像- Custom 自制镜像- Community 社区镜像 - - **CpuArch** (str) - CPU架构。"x86_64"/"i386"等 - - **CpuPlatform** (str) - CPU平台。如"Intel/Auto"、"Amd/Auto"等等 - - **CreateTime** (int) - 创建时间 - - **DiscountType** (int) - 主机折扣类型 1:夜间折扣 2:节日折扣 - - **DiskPriceInfo** (list) - 见 **DiskPriceInfo** 模型定义 - - **DiskSet** (list) - 见 **UHostDiskSet** 模型定义 - - **ExpireTime** (int) - 过期时间 - - **GPU** (int) - GPU个数 - - **GpuType** (str) - GPU类型。如: "4090" - - **GraphicsMemory** (dict) - 见 **GraphicsMemory** 模型定义 - - **IPSet** (list) - 见 **UHostIPSet** 模型定义 - - **InstancePrice** (float) - 主机价格 - - **InstanceType** (str) - 实例类型。"UHost": 普通主机;"Container": 容器主机 - - **IsExpire** (str) - 是否过期。Yes:已过期;No:未过期 - - **MachineType** (str) - 机型信息 - - **Memory** (int) - 内存大小,单位:MB - - **MonitorMessages** (dict) - 见 **MonitorMessage** 模型定义 - - **Name** (str) - 实例名称 - - **OsName** (str) - 虚机镜像的名称 - - **OsType** (str) - 虚机镜像操作系统类型。"Linux"\"Windows" - - **Password** (str) - 主机密码。由Base64编码 - - **PostPayPowerOffBillingResource** (list) - 见 **DiskPriceInfo** 模型定义 - - **ReleaseTime** (int) - 释放时间(关机时候返回) - - **Remark** (str) - 实例备注 - - **Softwares** (list) - 见 **SoftwareAddr** 模型定义 - - **SshLoginCommand** (str) - SSH登录命令 - - **StartTime** (int) - 主机启动时间 - - **State** (str) - 实例状态,枚举值:\\ >初始化: Initializing; \\ >启动中: Starting; \\> 运行中: Running; \\> 关机中: Stopping; \\ >关机: Stopped \\ >安装失败: Install Fail; \\ >重启中: Rebooting; \\ >升级改配中: Resizing; \\ > 未知(空字符串,获取状态超时或出错): - - **StopSchedulerTime** (int) - 计划关机时间 - - **StopTime** (int) - 定时关机时间 - - **SupportWithoutGpuStart** (bool) - 此实例是否支持无卡开机 - - **Tag** (str) - 实例业务组 - - **TotalDiskSpace** (int) - 总的数据盘存储空间 - - **UHostId** (str) - 实例Id - - **UpdateTime** (int) - 虚机状态更新时间 - - **WithoutGpuSpec** (dict) - 见 **WithoutGpuSpec** 模型定义 - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareInstance", d, **kwargs) - return apis.DescribeCompShareInstanceResponseSchema().loads(resp) - - def describe_comp_share_machine_type_families( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareMachineTypeFamilies - 获取实例规格族列表(所有机型的信息) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。因为子账号要iam鉴权而填写 - - **Response** - - - **MachineTypes** (list) - 机型配置列表 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeCompShareMachineTypeFamiliesRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareMachineTypeFamilies", d, **kwargs) - return apis.DescribeCompShareMachineTypeFamiliesResponseSchema().loads( - resp - ) - - def describe_comp_share_sharing_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareSharingImages - 获取算力平台共享镜像列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - 镜像Id - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ImageSet** (list) - 见 **CompShareImage** 模型定义 - - **TotalCount** (int) - 总数 - - **Response Model** - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **AutoStart** (bool) - 是否支持自启动 default:false - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (int) - 创建时间戳 - - **CreatedCount** (int) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (int) - 镜像收藏计数 - - **GroupId** (str) - 镜像组id - - **ImageCharge** (bool) - 是否镜像收费 default: false - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **ImageUseTime** (int) - 镜像使用时长 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (int) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **SourceGpuType** (str) - 自制镜像来源机型 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **VersionDesc** (str) - 版本描述 - - **VersionName** (str) - 版本名称 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareSharingImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareSharingImages", d, **kwargs) - return apis.DescribeCompShareSharingImagesResponseSchema().loads(resp) - - def describe_comp_share_software_port( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareSoftwarePort - 获取算力平台应用及端口号列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **SoftwarePort** (list) - 见 **SoftwarePort** 模型定义 - - **Response Model** - - **SoftwarePort** - - **Port** (int) - 端口号。范围: [1, 65535] - - **Software** (str) - 应用名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareSoftwarePortRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareSoftwarePort", d, **kwargs) - return apis.DescribeCompShareSoftwarePortResponseSchema().loads(resp) - - def describe_comp_share_support_zone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeCompShareSupportZone - 获取支持的可用区信息列表 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **ZoneInfo** (list) - 见 **SupportZone** 模型定义 - - **Response Model** - - **SupportZone** - - **Describe** (str) - 可用区显示名称 - - **Region** (str) - 地域名称 - - **RegionId** (int) - 地域ID - - **Zone** (str) - 可用区名称 - - **ZoneId** (int) - 可用区ID - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeCompShareSupportZoneRequestSchema().dumps(d) - - resp = self.invoke("DescribeCompShareSupportZone", d, **kwargs) - return apis.DescribeCompShareSupportZoneResponseSchema().loads(resp) - - def describe_model_repository_models( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeModelRepositoryModels - 模型仓库模型列表 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Name** (str) - 模型名称 - - **Tags** (str) - 模型标签列表, 标签之间英文逗号:"," 相连接 - - **Response** - - - **Models** (list) - 见 **ModelRepositoryModel** 模型定义 - - **Response Model** - - **ModelRepositoryModel** - - **CreateTime** (int) - 创建时间 - - **Name** (str) - 模型名称 - - **Path** (str) - 模型路径 - - **Size** (str) - 模型大小 - - **Tag** (str) - 模型标签 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeModelRepositoryModelsRequestSchema().dumps(d) - - resp = self.invoke("DescribeModelRepositoryModels", d, **kwargs) - return apis.DescribeModelRepositoryModelsResponseSchema().loads(resp) - - def describe_model_repository_tags( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeModelRepositoryTags - 模型仓库标签列表 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Tags** (list) - 标签列表 - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeModelRepositoryTagsRequestSchema().dumps(d) - - resp = self.invoke("DescribeModelRepositoryTags", d, **kwargs) - return apis.DescribeModelRepositoryTagsResponseSchema().loads(resp) - - def describe_self_community_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeSelfCommunityImages - 个人中心社区镜像查询 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **CompShareImageId** (str) - 镜像ID - - **GroupId** (str) - 版本组ID - - **Response** - - - **AvailableTotalCount** (int) - 仅计算当前ImageSetGroup中已发布的镜像信息,若某个Group中不存在已上线,则不统计 - - **ImageSetGroup** (list) - 见 **CompshareImageGroup** 模型定义 - - **TotalCount** (int) - 镜像总数 - - **Response Model** - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **AutoStart** (bool) - 是否支持自启动 default:false - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (int) - 创建时间戳 - - **CreatedCount** (int) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (int) - 镜像收藏计数 - - **GroupId** (str) - 镜像组id - - **ImageCharge** (bool) - 是否镜像收费 default: false - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **ImageUseTime** (int) - 镜像使用时长 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (int) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **SourceGpuType** (str) - 自制镜像来源机型 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **VersionDesc** (str) - 版本描述 - - **VersionName** (str) - 版本名称 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - **CompshareImageGroup** - - **CreatedCount** (int) - 引用创建次数 - - **Data** (list) - 见 **CompShareImage** 模型定义 - - **FavoritesCount** (int) - 收藏数 - - **GroupId** (str) - 版本组ID - - **ImageDesc** (str) - 镜像描述 - - **ImageName** (str) - 镜像名称 - - **ImageUseTime** (int) - 镜像使用时长 , 单位:小时 - - **IsFavorite** (bool) - 是否被收藏 - - **RecommendCount** (int) - 推荐数 - - **Status** (str) - 镜像组状态 Available 可用;UnAvailable 不可用 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSelfCommunityImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeSelfCommunityImages", d, **kwargs) - return apis.DescribeSelfCommunityImagesResponseSchema().loads(resp) - - def describe_team_member_order( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeTeamMemberOrder - 获取团队订单 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **VirtualCompanyId** (int) - (Required) 团队虚拟账号ID - - **ChargeTypes** (list) - 付费方式 - - **Limit** (int) - 返回数据长度,默认为25,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **OrderBy** (str) - 排序参数 - - **OrderDir** (str) - 排序方式 - - **OrderNos** (list) - 订单号 - - **OrderStates** (list) - 订单状态 - - **OrderTypes** (list) - 订单类型 - - **Regions** (list) - 可用区 - - **ResourceIds** (list) - 资源ID - - **ResourceTypes** (list) - 产品类型 - - **Response** - - - **Limit** (int) - 分页大小 - - **Offset** (int) - 分页偏移 - - **OrderInfos** (list) - 见 **OrderInfo** 模型定义 - - **Total** (int) - 总条数 - - **Response Model** - - **OrderDetailItem** - - **ProductName** (str) - 产品名 - - **Value** (str) - 配置 - - - **ResourceTagItem** - - **KeyId** (str) - 标识名称 - - **Value** (str) - 标识信息 - - - **OrderInfo** - - **Amount** (str) - 订单金额 - - **AmountCoupon** (str) - 优惠券金额 - - **AmountFree** (str) - 赠金 - - **AmountReal** (str) - 真实金额 - - **ChargeType** (str) - 付费方式 - - **Count** (int) - 购买数量 - - **CreateTime** (int) - 创建时间 - - **EndTime** (int) - 订单结束时间 - - **OrderDetail** (list) - 见 **OrderDetailItem** 模型定义 - - **OrderDetailOld** (list) - 见 **OrderDetailItem** 模型定义 - - **OrderNo** (str) - 订单号 - - **OrderState** (str) - 订单状态 - - **OrderType** (str) - 订单类型 - - **OriginalPrice** (str) - 折扣率 - - **ProjectName** (str) - 项目名称 - - **Quantity** (str) - 购买量 - - **RegionId** (str) - 可用区 - - **ResourceId** (str) - 资源ID - - **ResourceTag** (list) - 见 **ResourceTagItem** 模型定义 - - **ResourceType** (str) - 产品类型 - - **SpotDiscount** (str) - 抢占式折扣,仅抢占式才展示 - - **StartTime** (int) - 订单起始时间 - - **TradeNo** (str) - 交易号 - - **UpdateTime** (int) - 更新时间 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeTeamMemberOrderRequestSchema().dumps(d) - - resp = self.invoke("DescribeTeamMemberOrder", d, **kwargs) - return apis.DescribeTeamMemberOrderResponseSchema().loads(resp) - - def describe_team_member_order_count( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeTeamMemberOrderCount - 获取团队成员订单总览 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **VirtualCompanyId** (int) - (Required) 团队虚拟账号ID - - **ChargeTypes** (str) - 付费方式 - - **OrderStates** (str) - 订单状态 - - **OrderTypes** (str) - 订单类型 - - **Regions** (str) - 可用区 - - **ResourceTypes** (str) - 产品类型 - - **Response** - - - **Amount** (str) - 订单总金额 - - **AmountCoupon** (str) - 代金券 - - **AmountFree** (str) - 赠送金额 - - **AmountReal** (str) - 真实金额 - - **TotalCount** (int) - 订单数量 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeTeamMemberOrderCountRequestSchema().dumps(d) - - resp = self.invoke("DescribeTeamMemberOrderCount", d, **kwargs) - return apis.DescribeTeamMemberOrderCountResponseSchema().loads(resp) - - def describe_team_member_unpaid_order( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeTeamMemberUnpaidOrder - 获取团队队员未支付订单 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **VirtualCompanyId** (int) - (Required) 团队虚拟账号ID - - **ChargeTypes** (list) - 付费方式 - - **Limit** (int) - 返回数据长度,默认为25,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **OrderBy** (str) - 排序参数 - - **OrderDir** (str) - 排序方式 - - **OrderNos** (list) - 订单号 - - **OrderStates** (list) - 订单状态 - - **OrderTypes** (list) - 订单类型 - - **Regions** (list) - 可用区 - - **ResourceIds** (list) - 资源ID - - **ResourceTypes** (list) - 产品类型 - - **Response** - - - **Limit** (int) - 分页大小 - - **Offset** (int) - 分页偏移 - - **OrderInfos** (list) - 见 **UnpaidOrderInfo** 模型定义 - - **Total** (int) - 总条数 - - **Response Model** - - **UnpaidOrderDetail** - - **BillItemId** (str) - 计费对象的资源ID - - **Multiple** (int) - 配置大小 - - **ProductId** (int) - 产品子类 - - **PurchaseValue** (int) - 资源有效期 - - - **UnpaidOrderInfo** - - **Amount** (int) - 金额 - - **ChargeType** (str) - 付费方式 - - **CreateTime** (int) - 创建时间 - - **EndTime** (int) - 订单结束时间 - - **OrderDetail** (list) - 见 **UnpaidOrderDetail** 模型定义 - - **OrderNo** (str) - 订单号 - - **OrderState** (str) - 订单状态 - - **OrderType** (str) - 订单类型 - - **OriginalPrice** (str) - 折扣率 - - **Quantity** (str) - 购买量 - - **RegionId** (str) - 可用区 - - **ResourceId** (str) - 资源短ID - - **ResourceType** (str) - 产品类型 - - **StartTime** (int) - 订单起始时间 - - **TradeNo** (str) - 交易号 - - **UpdateTime** (int) - 更新时间 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeTeamMemberUnpaidOrderRequestSchema().dumps(d) - - resp = self.invoke("DescribeTeamMemberUnpaidOrder", d, **kwargs) - return apis.DescribeTeamMemberUnpaidOrderResponseSchema().loads(resp) - - def describe_team_member_unpaid_order_count( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeTeamMemberUnpaidOrderCount - 获取团队成员未支付订单总览 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **VirtualCompanyId** (int) - (Required) 虚拟账号公司ID - - **ChargeTypes** (list) - 付费方式 - - **OrderStates** (list) - 订单状态 - - **OrderTypes** (list) - 订单类型 - - **OrganizationId** (int) - 组织ID - - **Regions** (list) - 可用区 - - **ResourceIds** (str) - 资源ID - - **ResourceTypes** (int) - 产品类型 - - **TransactionNos** (list) - 交易流水号 - - **Response** - - - **Amount** (str) - 欠费订单总金额 - - **TotalCount** (int) - 欠费订单数 - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeTeamMemberUnpaidOrderCountRequestSchema().dumps(d) - - resp = self.invoke("DescribeTeamMemberUnpaidOrderCount", d, **kwargs) - return apis.DescribeTeamMemberUnpaidOrderCountResponseSchema().loads( - resp - ) - - def describe_ul_host_bundles( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostBundles - 获取轻量应用云主机套餐列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **Bundles** (list) - 见 **Bundle** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **Bundle** - - **Bandwidth** (int) - 外网带宽。单位:Mbps。 - - **BundleId** (str) - 套餐ID。 - - **CPU** (int) - CPU核数。 - - **Memory** (int) - 内存大小。单位:MB。 - - **SysDiskSpace** (int) - 系统盘大小。单位:GB。 - - **TrafficPacket** (int) - 流量包大小。单位:GB。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostBundlesRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostBundles", d, **kwargs) - return apis.DescribeULHostBundlesResponseSchema().loads(resp) - - def describe_ul_host_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostImage - 获取指定数据中心镜像列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ImageId** (str) - 镜像Id - - **ImageIds** (list) - 镜像Id列表 - - **ImageType** (str) - 镜像类型。标准镜像:Base,应用镜像:App, 自定义镜像:Custom,默认返回所有类型 - - **Limit** (int) - 返回数据长度,默认为20 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **OsType** (str) - 操作系统类型:Linux, Windows 默认返回所有类型 - - **Scene** (str) - 使用场景,当ImageType为"App"时生效。- Normal 常规专区- CrossBorder 跨境专区默认返回所有 - - **Tag** (str) - 业务组Id。默认:Default - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ImageSet** (list) - 见 **ULHostImageSet** 模型定义 - - **TotalCount** (int) - 满足条件的镜像总数 - - **Response Model** - - **ULHostImageSet** - - **CreateTime** (int) - 创建时间,格式为Unix时间戳 - - **DisplayName** (str) - 用于控制台显示的名称 - - **Features** (list) - 特殊状态标识,目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra(网络增强2.0), NetEnhanced_Extreme(网络增强3.0), HotPlug(热升级), GPU(GPU镜像),CloudInit, IPv6(支持IPv6网络),RssdAttachable(支持RSSD云盘),Vgpu_AMD(支持AMD的vgpu),Vgpu_NVIDIA(支持NVIDIA的vgpu),Aarch64_Type(支持arm64架构) - - **ImageDescription** (str) - 镜像描述 - - **ImageId** (str) - 镜像ID - - **ImageLogoLink** (str) - 应用镜像图标url - - **ImageName** (str) - 镜像名称 - - **ImageSize** (int) - 镜像大小 - - **ImageType** (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom - - **IntegratedSoftware** (str) - 集成软件名称(仅行业镜像将返回这个值) - - **MaintainEol** (str) - 系统EOL的时间,格式:YYYY/MM/DD - - **MinimalCPU** (str) - 默认值为空'''。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell” - - **OsName** (str) - 操作系统名称 - - **OsType** (str) - 操作系统类型:Linux,Windows - - **SceneCategories** (list) - 场景分类,目前包含Featured(精选),PreInstalledDrivers(预装驱动),AIPainting(AI绘画),AIModels(AI模型),HPC(高性能计算) - - **State** (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable,复制中:Copying - - **Tag** (str) - 业务组 - - **Zone** (str) - 可用区,参见 `可用区列表 `_ - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostImageRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostImage", d, **kwargs) - return apis.DescribeULHostImageResponseSchema().loads(resp) - - def describe_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostInstance - 获取轻量应用云主机列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ULHostIds** (list) - 【数组】轻量应用云主机ID。 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostInstanceSets** (list) - 见 **ULHostInstanceSet** 模型定义 - - **Response Model** - - **ExclusiveUTPInfo** - - **AvailableSize** (int) - 当前周期剩余流量 - - **CreateTime** (int) - 创建时间 - - **ExcessSize** (int) - 当前周期超出限额的流量 - - **LastResetTime** (int) - 上次重置时间 - - **NextResetTime** (int) - 下次重置时间 - - **TotalSize** (int) - 当前周期总流量 - - **UsedSize** (int) - 当前周期已使用流量 - - - **UHostIPSet** - - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) - - **Default** (str) - 内网 Private 类型下,表示是否为默认网卡。true: 是默认网卡;其他值:不是。 - - **IP** (str) - IP地址 - - **IPId** (str) - 外网IP资源ID 。(内网IP无对应的资源ID) - - **IPMode** (str) - IPv4/IPv6; - - **Mac** (str) - 内网 Private 类型下,当前网卡的Mac。 - - **NetworkInterfaceId** (str) - 弹性网卡为默认网卡时,返回对应的 ID 值 - - **SubnetId** (str) - IP地址对应的子网 ID。(北京一不支持,字段返回为空) - - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private - - **VPCId** (str) - IP地址对应的VPC ID。(北京一不支持,字段返回为空) - - **Weight** (int) - 当前EIP的权重。权重最大的为当前的出口IP。 - - - **ULHostDiskSet** - - **DiskId** (str) - 磁盘Id - - **DiskType** (str) - 磁盘类型。如:"CLOUD_RSSD"、"CLOUD_SSD" - - **Drive** (str) - 磁盘盘符。系统盘:"vda" - - **IsBoot** (str) - 是否为系统盘。是:"True";否:"False" - - **Size** (int) - 磁盘大小。单位:GB - - **Type** (str) - 磁盘类型。系统盘:"Boot";数据盘:"Data" - - - **ULHostInstanceSet** - - **Apps** (list) - 【数组】镜像包含的应用列表。 - - **AutoRenew** (str) - 是否自动续费。枚举值:Yes/No - - **CPU** (int) - CPU核数。 - - **ChargeType** (str) - 计费模式。枚举值:Month/Year - - **CreateTime** (int) - 创建时间。Unix时间戳 - - **DiskSet** (list) - 见 **ULHostDiskSet** 模型定义 - - **EIPExclusiveUTPInfo** (dict) - 见 **ExclusiveUTPInfo** 模型定义 - - **ExpireTime** (int) - 过期时间。Unix时间戳 - - **IPSet** (list) - 见 **UHostIPSet** 模型定义 - - **ImageId** (str) - 镜像Id。 - - **ImageName** (str) - 镜像名称。 - - **IsExpire** (str) - 是否过期。枚举值:Yes/No - - **Memory** (int) - 内存。单位:MB - - **Name** (str) - 实例名称。默认套餐Id - - **Remark** (str) - 备注。 - - **State** (str) - 实例状态。枚举值:\\ >初始化: Initializing; \\ >启动中: Starting; \\> 运行中: Running; \\> 关机中: Stopping; \\ >关机: Stopped \\ >安装失败: Install Fail; \\ >重启中: Rebooting; \\ > 未知(空字符串,获取状态超时或出错):"" - - **Tag** (str) - 业务组。 - - **ULHostId** (str) - 实例Id。 - - **Zone** (str) - 可用区。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostInstance", d, **kwargs) - return apis.DescribeULHostInstanceResponseSchema().loads(resp) - - def describe_user_community_images( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUserCommunityImages - 获取社区镜像列表(登录状态) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Author** (str) - 搜索指定作者发布的镜像 - - **CompShareImageId** (str) - 镜像Id。支持指定镜像Id查询 - - **FuzzySearch** (str) - 模糊搜索,支持 镜像名称、作者名称 - - **IsFree** (bool) - 是否只筛选免费镜像 - - **IsOfficial** (bool) - 是否只筛选官方镜像 - - **Limit** (str) - 返回数据长度,默认为20,最大100 - - **Name** (str) - 镜像名称。模糊搜索 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **SortCondition** (dict) - 见 **DescribeUserCommunityImagesParamSortCondition** 模型定义 - - **Tag** (str) - 按标签名称搜索,精确匹配 - - **Response** - - - **AvailableTotalCount** (int) - 版本组可用数量 - - **ImageSetGroup** (list) - 见 **CompshareImageGroup** 模型定义 - - **TotalCount** (int) - 总数量 - - **Request Model** - - **DescribeUserCommunityImagesParamSortCondition** - - **ASC** (str) - 是否升序排列 - - **Field** (str) - 排序条件。- Favor:按热度排序,获取热点镜像;- PubTime:按发布时间排序,获取最新社区镜像;- Price 按价格排序;- CreatedCount 按使用量排序;- ImageUseTime 镜像使用时长排序- FavoritesCount 收藏数排序默认:"PubTime" - - - **Response Model** - - **Software** - - **Applications** (list) - 【array of string】应用列表 - - **CUDAVersion** (str) - CUDA版本 - - **Framework** (str) - 框架名称 - - **FrameworkVersion** (str) - 框架版本 - - - **Projects** - - **AccountId** (str) - 账号Id - - **AccountName** (str) - 账号昵称 - - - **CompShareImage** - - **AuthInfo** (int) - 镜像作者认证信息 - - **Author** (str) - 镜像作者昵称 - - **AutoStart** (bool) - 是否支持自启动 default:false - - **CompShareImageId** (str) - 镜像Id - - **Container** (str) - 是否为容器镜像。- True 容器镜像- False 虚机镜像 - - **Cover** (str) - 镜像封面URL - - **CreateTime** (int) - 创建时间戳 - - **CreatedCount** (int) - 镜像引用创建计数 - - **Description** (str) - 镜像描述信息 - - **FailedReason** (str) - 镜像制作失败错误原因 - - **FavoritesCount** (int) - 镜像收藏计数 - - **GroupId** (str) - 镜像组id - - **ImageCharge** (bool) - 是否镜像收费 default: false - - **ImageOwnerAlias** (str) - 镜像来源。- Official 平台镜像;- Community 社区镜像 - - **ImageType** (str) - 镜像类型。- System 平台提供的公共镜像;- App 平台提供的应用镜像;- Custom 自制镜像;- Community 社区镜像 - - **ImageUseTime** (int) - 镜像使用时长 - - **IsOfficial** (bool) - 来源是否为官方镜像【仅自制镜像信息返回该字段】 - - **Name** (str) - 镜像名称 - - **Owner** (dict) - 见 **Projects** 模型定义 - - **Price** (float) - 镜像价格。单位:元 - - **PubTime** (int) - 发布时间戳 - - **Readme** (str) - 镜像详细描述。仅指定镜像Id查询时返回 - - **Size** (int) - 镜像大小。单位MB - - **Softwares** (dict) - 见 **Software** 模型定义 - - **SourceGpuType** (str) - 自制镜像来源机型 - - **Status** (str) - 镜像状态。- Making 制作中;- Available 可用;- UnAvailable 不可用;- Reviewing 审核中;- Offline 已下线 - - **Tags** (list) - 【array of string】镜像标签 - - **VersionDesc** (str) - 版本描述 - - **VersionName** (str) - 版本名称 - - **Visibility** (int) - 可见性。0:私密镜像;1:公开至镜像社区 - - - **CompshareImageGroup** - - **CreatedCount** (int) - 引用创建次数 - - **Data** (list) - 见 **CompShareImage** 模型定义 - - **FavoritesCount** (int) - 收藏数 - - **GroupId** (str) - 版本组ID - - **ImageDesc** (str) - 镜像描述 - - **ImageName** (str) - 镜像名称 - - **ImageUseTime** (int) - 镜像使用时长 , 单位:小时 - - **IsFavorite** (bool) - 是否被收藏 - - **RecommendCount** (int) - 推荐数 - - **Status** (str) - 镜像组状态 Available 可用;UnAvailable 不可用 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUserCommunityImagesRequestSchema().dumps(d) - - resp = self.invoke("DescribeUserCommunityImages", d, **kwargs) - return apis.DescribeUserCommunityImagesResponseSchema().loads(resp) - - def detach_compshare_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DetachCompshareDisk - 卸载某个已经挂载在指定UHost实例上的UDisk - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UDiskId** (str) - (Required) 需要卸载的UDisk实例ID - - **UHostId** (str) - UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DetachCompshareDiskRequestSchema().dumps(d) - - resp = self.invoke("DetachCompshareDisk", d, **kwargs) - return apis.DetachCompshareDiskResponseSchema().loads(resp) - - def download_team_order( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DownloadTeamOrder - 下载团队订单 - - **Request** - - - **TeamId** (int) - (Required) 团队ID - - **BeginTime** (int) - 起始时间,需使用时间戳 - - **EndTime** (int) - 结束时间,需使用时间戳,结束时间需大于起始时间 - - **OrderStates** (list) - 订单状态 - - **VirtualCompanyId** (int) - 团队虚拟账号ID - - **Response** - - - **Amount** (str) - 总金额 - - **AmountCoupon** (str) - 代金券 - - **AmountFree** (str) - 赠金 - - **AmountReal** (str) - 现金 - - **ChargeType** (str) - 计费方式 - - **CreateTime** (int) - 创建时间 - - **EndTime** (int) - 结束时间 - - **OrderNo** (str) - 订单号 - - **OrderType** (str) - 订单类型 - - **RemarkName** (str) - 成员备注 - - **ResourceId** (str) - 资源ID - - **ResourceType** (str) - 产品类型 - - **StartTime** (int) - 开始时间 - - **VirtualCompanyId** (int) - 成员ID - - """ - # build request - d = {} - req and d.update(req) - d = apis.DownloadTeamOrderRequestSchema().dumps(d) - - resp = self.invoke("DownloadTeamOrder", d, **kwargs) - return apis.DownloadTeamOrderResponseSchema().loads(resp) - - def get_comp_share_attached_disk_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareAttachedDiskUpgradePrice - 获取算力平台实例磁盘升级价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskId** (str) - (Required) 磁盘Id - - **DiskSpace** (str) - (Required) 目标大小。单位:GB - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **ListPrice** (float) - 列表价 - - **ListPriceDetail** (dict) - 见 **DiskUpgradePriceDetail** 模型定义 - - **OriginalPrice** (float) - 原价 - - **OriginalPriceDetail** (dict) - 见 **DiskUpgradePriceDetail** 模型定义 - - **Price** (float) - 升级价格 - - **PriceDetail** (dict) - 见 **DiskUpgradePriceDetail** 模型定义 - - **Response Model** - - **DiskUpgradePriceDetail** - - **Snapshot** (float) - 快照价格 - - **UDisk** (float) - 磁盘价格 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareAttachedDiskUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareAttachedDiskUpgradePrice", d, **kwargs) - return apis.GetCompShareAttachedDiskUpgradePriceResponseSchema().loads( - resp - ) - - def get_comp_share_image_create_progress( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareImageCreateProgress - 获取算力平台镜像制作进度 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Process** (float) - 处理进度 0 ~ 100 - - **RemainingDuration** (str) - 预估剩余总时间 单位秒 - - **TotalDuration** (str) - 预估处理总时间 单位秒 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareImageCreateProgressRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareImageCreateProgress", d, **kwargs) - return apis.GetCompShareImageCreateProgressResponseSchema().loads(resp) - - def get_comp_share_instance_monitor( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareInstanceMonitor - 获取实例监控指标 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostIds** (list) - 【数组】UHost主机的资源ID,例如UHostIds.0代表希望获取信息 的主机1,UHostIds.1代表主机2。 如果不传入,则返回当前Region 所有符合条件的UHost实例。 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareInstanceMonitorRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareInstanceMonitor", d, **kwargs) - return apis.GetCompShareInstanceMonitorResponseSchema().loads(resp) - - def get_comp_share_instance_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareInstancePrice - 获取算力平台实例价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时付费;\\ Day,按天付费\\ 如果不传某个枚举值,默认返回月付价格 - - **CompShareImageId** (str) - 镜像Id - - **Cpu** (str) - CPU核数。可选范围参照控制台。默认值: 16 - - **Disks** (list) - 见 **GetCompShareInstancePriceParamDisks** 模型定义 - - **Gpu** (str) - GPU卡核心数。默认值:1 - - **GpuType** (str) - GpuType。枚举值:["4090"] - - **Memory** (str) - 内存大小。单位:MB。取值为1024的倍数(可选范围参照好控制台)。默认值:32768 - - **Response** - - - **ListPriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **OriginalPriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **PriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **Request Model** - - **GetCompShareInstancePriceParamDisks** - - **IsBoot** (bool) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 `_ 。 - - **Type** (str) - 磁盘类型。请参考 `磁盘类型 `_ 。 - - - **Response Model** - - **CompSharePriceDetail** - - **ChargeType** (str) - 计费类型 - - **CompShareImage** (float) - 镜像价格/Gpu/小时 - - **Disks** (float) - 磁盘价格 - - **Instance** (float) - 实例价格 - - **InstanceDiscountType** (int) - 主机折扣类型 1:夜间折扣 2:节日折扣 - - **ListPrice** (str) - 列表价 - - **OriginalPrice** (float) - 原价 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareInstancePriceRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareInstancePrice", d, **kwargs) - return apis.GetCompShareInstancePriceResponseSchema().loads(resp) - - def get_comp_share_instance_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareInstanceUpgradePrice - 获取算力平台实例升降级价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) UHost Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **CompShareImageId** (str) - 镜像Id - - **Cpu** (int) - 目标Cpu核心数。默认原配置 - - **Gpu** (int) - 目标Gpu卡数。默认原配置 - - **Memory** (int) - 目标内存大小。单位:MB。默认原配置 - - **Response** - - - **ListPrice** (float) - 列表价 - - **OriginalPrice** (float) - 原价 - - **Price** (float) - 价格 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareInstanceUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareInstanceUpgradePrice", d, **kwargs) - return apis.GetCompShareInstanceUpgradePriceResponseSchema().loads(resp) - - def get_comp_share_instance_user_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareInstanceUserPrice - 获取算力平台实例用户价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 计费模式。枚举值为: \\ > Year,按年付费; \\ > Month,按月付费;\\ > Dynamic,按小时付费;\\ Day,按天付费\\ 如果不传某个枚举值,默认返回月付价格 - - **CompShareImageId** (str) - 镜像Id - - **Cpu** (str) - CPU核数。可选范围参照控制台。默认值: 16 - - **Disks** (list) - 见 **GetCompShareInstanceUserPriceParamDisks** 模型定义 - - **Gpu** (str) - GPU卡核心数。默认值:1 - - **GpuType** (str) - GpuType。枚举值:["4090"] - - **Memory** (str) - 内存大小。单位:MB。取值为1024的倍数(可选范围参照好控制台)。默认值:32768 - - **Response** - - - **ListPriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **OriginalPriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **PriceDetail** (list) - 见 **CompSharePriceDetail** 模型定义 - - **Request Model** - - **GetCompShareInstanceUserPriceParamDisks** - - **IsBoot** (bool) - 是否是系统盘。枚举值:\\ > True,是系统盘 \\ > False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Size** (int) - 磁盘大小,单位GB。请参考 `磁盘类型 `_ 。 - - **Type** (str) - 磁盘类型。请参考 `磁盘类型 `_ 。 - - - **Response Model** - - **CompSharePriceDetail** - - **ChargeType** (str) - 计费类型 - - **CompShareImage** (float) - 镜像价格/Gpu/小时 - - **Disks** (float) - 磁盘价格 - - **Instance** (float) - 实例价格 - - **InstanceDiscountType** (int) - 主机折扣类型 1:夜间折扣 2:节日折扣 - - **ListPrice** (str) - 列表价 - - **OriginalPrice** (float) - 原价 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareInstanceUserPriceRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareInstanceUserPrice", d, **kwargs) - return apis.GetCompShareInstanceUserPriceResponseSchema().loads(resp) - - def get_comp_share_refund_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareRefundPrice - 获取算力平台实例删除扣除费用。包括主机、磁盘等资源的费用 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostIds** (list) - (Required) 【数组】UHost实例ID。参见 `DescribeUHostInstance `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **RefundPriceSet** (list) - 见 **UHostRefundPriceSet** 模型定义 - - **Response Model** - - **UHostRefundPriceSet** - - **Code** (int) - 实例操作结果的错误码。0为成功 - - **ErrMessage** (str) - 当 Code 非 0 时提供详细的描述信息 - - **RefundPrice** (float) - 实例的删除退费金额 - - **UHostId** (str) - UHost实例ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareRefundPriceRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareRefundPrice", d, **kwargs) - return apis.GetCompShareRefundPriceResponseSchema().loads(resp) - - def get_comp_share_team_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetCompShareTeamInfo - 获取团队详细信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TeamId** (int) - (Required) 团队Id - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - **Team** (dict) - 见 **CompShareTeamDetailInfo** 模型定义 - - **TeamRelation** (list) - 见 **TeamRelation** 模型定义 - - **Response Model** - - **CompShareTeamDetailInfo** - - **CompanyId** (int) - 管理者公司Id - - **Deleted** (int) - 删除状态 0: 未删除 1: 已删除 - - **Description** (str) - 团队简介 - - **Id** (int) - 团队Id - - **Name** (str) - 团队名称 - - - **TeamRelation** - - **AllocateAmount** (int) - 已分配金额 - - **AvailableAmount** (int) - 余额 - - **CreateTime** (int) - 邀请时间 - - **RemarkName** (str) - 备注名称 - - **Status** (str) - 邀请状态:Pending(待同意)、Joined(已加入)、Rejected(拒绝)、Canceled(取消) - - **TeamId** (int) - 团队ID - - **TeamName** (str) - 团队名称 - - **UserCompanyId** (int) - 成员公司Id - - **VirtualCompanyId** (int) - 虚拟账号公司Id - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetCompShareTeamInfoRequestSchema().dumps(d) - - resp = self.invoke("GetCompShareTeamInfo", d, **kwargs) - return apis.GetCompShareTeamInfoResponseSchema().loads(resp) - - def get_open_claw_model_list( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetOpenClawModelList - 获取OpenClaw模型列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **Models** (dict) - 见 **OpenClawModelInfo** 模型定义 - - **Response Model** - - **OpenClawModelInfo** - - **Id** (str) - 模型Id - - **Name** (str) - 模型名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetOpenClawModelListRequestSchema().dumps(d) - - resp = self.invoke("GetOpenClawModelList", d, **kwargs) - return apis.GetOpenClawModelListResponseSchema().loads(resp) - - def get_software_url( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetSoftwareURL - 获取算力平台实例应用URL - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Software** (str) - (Required) 应用名称 - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **URL** (str) - 应用的URL - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetSoftwareURLRequestSchema().dumps(d) - - resp = self.invoke("GetSoftwareURL", d, **kwargs) - return apis.GetSoftwareURLResponseSchema().loads(resp) - - def get_ul_host_instance_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID - - **ChargeType** (str) - 获取指定计费模式的价格。枚举值:\\ > Year,按年付费; \\ > Month。未指定时,返回所有计费模式价格 - - **Count** (int) - 购买台数,范围[1,5]。默认:1 - - **Quantity** (int) - 购买时长。默认: 1。不支持购买到月末 - - **Response** - - - **Message** (str) - 错误信息 - - **PriceSet** (list) - 见 **ULHostPriceSet** 模型定义 - - **Response Model** - - **ULHostPriceSet** - - **ChargeType** (str) - 计费模式 - - **OriginalPrice** (float) - 原价 - - **Price** (float) - 价格 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetULHostInstancePriceRequestSchema().dumps(d) - - resp = self.invoke("GetULHostInstancePrice", d, **kwargs) - return apis.GetULHostInstancePriceResponseSchema().loads(resp) - - def get_ul_host_renew_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetULHostRenewPrice - 获取主机续费价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **ChargeType** (str) - 计费类型。支持:Year/Month;默认:Month - - **Response** - - - **PriceSet** (list) - 见 **ULHostPriceSet** 模型定义 - - **Response Model** - - **ULHostPriceSet** - - **ChargeType** (str) - 计费模式 - - **OriginalPrice** (float) - 原价 - - **Price** (float) - 价格 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetULHostRenewPriceRequestSchema().dumps(d) - - resp = self.invoke("GetULHostRenewPrice", d, **kwargs) - return apis.GetULHostRenewPriceResponseSchema().loads(resp) - - def list_comp_share_team( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListCompShareTeam - 获取团队列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Teams** (list) - 见 **CompShareTeamInfo** 模型定义 - - **Response Model** - - **CompShareTeamInfo** - - **CompanyId** (int) - 管理者公司Id - - **Description** (str) - 团队简介 - - **Id** (int) - 团队Id - - **MemberCount** (int) - 成员数量 - - **Name** (str) - 团队名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListCompShareTeamRequestSchema().dumps(d) - - resp = self.invoke("ListCompShareTeam", d, **kwargs) - return apis.ListCompShareTeamResponseSchema().loads(resp) - - def list_comp_share_team_invite( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListCompShareTeamInvite - 获取邀请成员的列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TeamId** (int) - 团队ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Invites** (list) - 见 **CompShareTeamInviteInfo** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **CompShareTeamInviteInfo** - - **CreateTime** (int) - 邀请时间 - - **RemarkName** (str) - 备注名称 - - **Status** (str) - 邀请状态:Pending(待同意)、Joined(已加入)、Rejected(拒绝)、Canceled(取消) - - **TeamId** (int) - 团队ID - - **TeamName** (str) - 团队名称 - - **UserCompanyId** (int) - 成员公司Id - - **VirtualCompanyId** (int) - 虚拟账号公司Id - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListCompShareTeamInviteRequestSchema().dumps(d) - - resp = self.invoke("ListCompShareTeamInvite", d, **kwargs) - return apis.ListCompShareTeamInviteResponseSchema().loads(resp) - - def list_comp_share_team_joined( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListCompShareTeamJoined - 获取加入团队信息列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Status** (str) - 邀请状态:Pending(待同意)、Joined(已加入)、Rejected(拒绝)、Canceled(取消) - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **JoinedTeams** (list) - 见 **CompShareTeamJoinedInfo** 模型定义 - - **Response Model** - - **CompShareTeamJoinedInfo** - - **CreateTime** (int) - 邀请时间 - - **IsPersonalAccount** (bool) - 当前是否为个人账号 - - **RemarkName** (str) - 备注名称 - - **Status** (str) - 邀请状态:Pending(待同意)、Joined(已加入)、Rejected(拒绝)、Canceled(取消) - - **TeamId** (int) - 团队ID - - **TeamName** (str) - 团队名称 - - **UserCompanyId** (int) - 成员公司Id - - **VirtualCompanyId** (int) - 虚拟账号公司Id - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListCompShareTeamJoinedRequestSchema().dumps(d) - - resp = self.invoke("ListCompShareTeamJoined", d, **kwargs) - return apis.ListCompShareTeamJoinedResponseSchema().loads(resp) - - def list_comp_share_team_operate_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListCompShareTeamOperateLog - 获取团队操作日志列表 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **Limit** (int) - 返回数据长度,默认为25,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **OperateType** (list) - 操作类型,详细参考返回值 - - **OrderByASC** (bool) - 排序方式:true表示按创建时间升序,false表示降序(默认) - - **Status** (list) - 操作状态,详细参考返回值 - - **Response** - - - **Logs** (list) - 见 **CompShareTeamOperateLogInfo** 模型定义 - - **OperateTypeList** (list) - 操作类型枚举列表 - - **StatusList** (list) - 状态枚举列表 - - **Total** (int) - 总条目数 - - **Response Model** - - **CompShareTeamOperateLogInfo** - - **Content** (str) - 操作内容 - - **CreateTime** (int) - 操作日志的创建时间 - - **OperateType** (str) - 操作类型 - - **Status** (str) - 操作状态 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListCompShareTeamOperateLogRequestSchema().dumps(d) - - resp = self.invoke("ListCompShareTeamOperateLog", d, **kwargs) - return apis.ListCompShareTeamOperateLogResponseSchema().loads(resp) - - def list_member_product_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListMemberProductType - 获取成员订单产品类型 - - **Request** - - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **TeamId** (int) - (Required) 团队ID - - **OrderStates** (list) - 订单状态 - - **VirtualCompanyId** (int) - 成员虚拟ID - - **Response** - - - **ProductTypeList** (list) - 产品类型列表 - - """ - # build request - d = {} - req and d.update(req) - d = apis.ListMemberProductTypeRequestSchema().dumps(d) - - resp = self.invoke("ListMemberProductType", d, **kwargs) - return apis.ListMemberProductTypeResponseSchema().loads(resp) - - def modify_comp_share_image_share_account( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyCompShareImageShareAccount - 管理镜像的共享账号列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **AddAccounts** (list) - 添加被共享的账号Id,每次最多10个。与RemoveAccounts.N不能同时为空 - - **RemoveAccounts** (list) - 移除被共享的账号Id,每次最多10个。与AddAccounts.N不能同时为空 - - **Response** - - - **InvalidAccounts** (list) - 无效的账号Id列表 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyCompShareImageShareAccountRequestSchema().dumps(d) - - resp = self.invoke("ModifyCompShareImageShareAccount", d, **kwargs) - return apis.ModifyCompShareImageShareAccountResponseSchema().loads(resp) - - def modify_comp_share_instance_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyCompShareInstanceName - 修改算力平台实例名称 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Name** (str) - (Required) 名称 - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyCompShareInstanceNameRequestSchema().dumps(d) - - resp = self.invoke("ModifyCompShareInstanceName", d, **kwargs) - return apis.ModifyCompShareInstanceNameResponseSchema().loads(resp) - - def modify_ul_host_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例Id - - **Name** (str) - 名称。和Remark至少选择一个进行修改 - - **Remark** (str) - 备注。和Name至少选择一个进行修改 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - ULHost实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyULHostAttributeRequestSchema().dumps(d) - - resp = self.invoke("ModifyULHostAttribute", d, **kwargs) - return apis.ModifyULHostAttributeResponseSchema().loads(resp) - - def poweroff_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.PoweroffULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("PoweroffULHostInstance", d, **kwargs) - return apis.PoweroffULHostInstanceResponseSchema().loads(resp) - - def publish_comp_share_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """PublishCompShareImage - 将自制镜像发布到镜像社区 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **Price** (float) - (Required) 镜像价格。单位:元,支持00.00 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **AutoStart** (str) - 是否支持自启动 false: 不支持 true:支持 - - **CommunityImageName** (str) - 发布社区镜像名称 - - **Cover** (str) - 封面。base64编码的图片 - - **Description** (str) - 镜像描述信息 - - **Readme** (str) - 镜像详情描述【富文本】 - - **Softwares** (dict) - 见 **PublishCompShareImageParamSoftwares** 模型定义 - - **Tags** (list) - 【array of string】镜像标签。最多支持3个标签 - - **Response** - - - **Request Model** - - **PublishCompShareImageParamSoftwares** - - **Applications** (list) - 镜像应用列表 - - **CUDAVersion** (str) - 镜像CUDA版本 - - **Framework** (str) - 镜像框架名称 - - **FrameworkVersion** (str) - 镜像框架版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.PublishCompShareImageRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("PublishCompShareImage", d, **kwargs) - return apis.PublishCompShareImageResponseSchema().loads(resp) - - def reboot_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RebootCompShareInstance - 重启轻量算力平台实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RebootCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("RebootCompShareInstance", d, **kwargs) - return apis.RebootCompShareInstanceResponseSchema().loads(resp) - - def reboot_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RebootULHostInstance - 重新启动UHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RebootULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("RebootULHostInstance", d, **kwargs) - return apis.RebootULHostInstanceResponseSchema().loads(resp) - - def reinstall_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ReinstallCompShareInstance - 重装算力平台实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Password** (str) - 实例的新密码 - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ReinstallCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("ReinstallCompShareInstance", d, **kwargs) - return apis.ReinstallCompShareInstanceResponseSchema().loads(resp) - - def reinstall_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ReinstallULHostInstance - 重装轻量应用云主机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ImageId** (str) - (Required) 镜像Id。暂不支持使用自定义镜像重装 - - **Password** (str) - (Required) 登陆密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64 UGFzc3dvcmQx - - **ULHostId** (str) - (Required) 实例Id - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ReinstallULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("ReinstallULHostInstance", d, **kwargs) - return apis.ReinstallULHostInstanceResponseSchema().loads(resp) - - def reset_comp_share_instance_password( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResetCompShareInstancePassword - 重置算力平台实例密码 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Password** (str) - (Required) 新密码。需经Base64编码 - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResetCompShareInstancePasswordRequestSchema().dumps(d) - - resp = self.invoke("ResetCompShareInstancePassword", d, **kwargs) - return apis.ResetCompShareInstancePasswordResponseSchema().loads(resp) - - def reset_ul_host_instance_password( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Password** (str) - (Required) ULHost新密码(密码格式使用BASE64编码) - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResetULHostInstancePasswordRequestSchema().dumps(d) - - resp = self.invoke("ResetULHostInstancePassword", d, **kwargs) - return apis.ResetULHostInstancePasswordResponseSchema().loads(resp) - - def resize_comp_share_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeCompShareDisk - 修改磁盘 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (int) - (Required) 大小 - - **UDiskId** (str) - (Required) 磁盘id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UDiskId** (str) - 磁盘id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeCompShareDiskRequestSchema().dumps(d) - - resp = self.invoke("ResizeCompShareDisk", d, **kwargs) - return apis.ResizeCompShareDiskResponseSchema().loads(resp) - - def resize_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeCompShareInstance - 修改算力平台实例配置 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Cpu** (int) - 目标Cpu核心数 - - **DiskId** (str) - 磁盘Id - - **DiskSpace** (str) - 目标磁盘大小 - - **Gpu** (int) - 目标Gpu卡数 - - **Memory** (int) - 目标内存大小 - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("ResizeCompShareInstance", d, **kwargs) - return apis.ResizeCompShareInstanceResponseSchema().loads(resp) - - def set_comp_share_team_relation( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetCompShareTeamRelation - 设置邀请信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Status** (str) - (Required) 发送邀请操作:Agree(同意)、Reject(拒绝)、Cancel(取消)、UpdateRemarkName(更改备注) - - **TeamId** (str) - (Required) 团队Id - - **RemarkName** (str) - 备注名称 - - **UserCompanyId** (str) - 取消邀请的成员公司Id - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.SetCompShareTeamRelationRequestSchema().dumps(d) - - resp = self.invoke("SetCompShareTeamRelation", d, **kwargs) - return apis.SetCompShareTeamRelationResponseSchema().loads(resp) - - def start_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartCompShareInstance - 启动算力平台实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("StartCompShareInstance", d, **kwargs) - return apis.StartCompShareInstanceResponseSchema().loads(resp) - - def start_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartULHostInstance - 启动处于关闭状态的UHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("StartULHostInstance", d, **kwargs) - return apis.StartULHostInstanceResponseSchema().loads(resp) - - def stop_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopCompShareInstance - 关闭算力平台实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("StopCompShareInstance", d, **kwargs) - return apis.StopCompShareInstanceResponseSchema().loads(resp) - - def stop_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopULHostInstance - 指停止处于运行状态的ULHost实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID。 - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("StopULHostInstance", d, **kwargs) - return apis.StopULHostInstanceResponseSchema().loads(resp) - - def terminate_comp_share_custom_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """TerminateCompShareCustomImage - 删除算力平台自制镜像 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.TerminateCompShareCustomImageRequestSchema().dumps(d) - - resp = self.invoke("TerminateCompShareCustomImage", d, **kwargs) - return apis.TerminateCompShareCustomImageResponseSchema().loads(resp) - - def terminate_comp_share_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """TerminateCompShareInstance - 删除轻量算力共享平台虚机实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UHostId** (str) - (Required) 虚机资源id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **UHostId** (str) - 虚机资源id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.TerminateCompShareInstanceRequestSchema().dumps(d) - - resp = self.invoke("TerminateCompShareInstance", d, **kwargs) - return apis.TerminateCompShareInstanceResponseSchema().loads(resp) - - def terminate_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost资源Id - - **ReleaseUDisk** (bool) - 删除主机时是否同时删除挂载的数据盘。默认为false。 - - **Response** - - - **InRecycle** (str) - 用于判断主机删除时是否进入回收站。放入回收站:"Yes", 彻底删除:“No”。 - - **ULHostId** (str) - ULHost 实例 Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.TerminateULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("TerminateULHostInstance", d, **kwargs) - return apis.TerminateULHostInstanceResponseSchema().loads(resp) - - def update_comp_share_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateCompShareImage - 编辑算力平台自制镜像信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **CompShareImageId** (str) - (Required) 镜像Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Cover** (str) - 镜像封面图。Base64编码后的字符串 - - **Description** (str) - 镜像描述信息 - - **Framework** (str) - 镜像框架信息 - - **Readme** (str) - 镜像详情描述信息,支持富文本 - - **Softwares** (str) - 镜像软件信息 - - **Tags** (list) - 镜像标签列表,最多支持3个标签 - - **Visibility** (int) - 可见性 0:私密;1:公开 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateCompShareImageRequestSchema().dumps(d) - - resp = self.invoke("UpdateCompShareImage", d, **kwargs) - return apis.UpdateCompShareImageResponseSchema().loads(resp) - - def update_comp_share_stop_scheduler( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateCompShareStopScheduler - 更新实例定时关机时间,若不存在则新建此定时任务 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **StopTime** (int) - (Required) 定时关机时间 - - **UHostId** (str) - (Required) UHost实例ID。【UHostId和HostId必须选填一个,本字段即将废弃,建议使用HostId】 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateCompShareStopSchedulerRequestSchema().dumps(d) - - resp = self.invoke("UpdateCompShareStopScheduler", d, **kwargs) - return apis.UpdateCompShareStopSchedulerResponseSchema().loads(resp) - - def update_comp_share_team( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateCompShareTeam - 更改团队信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Description** (str) - 团队简介 - - **Name** (str) - 团队名称 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateCompShareTeamRequestSchema().dumps(d) - - resp = self.invoke("UpdateCompShareTeam", d, **kwargs) - return apis.UpdateCompShareTeamResponseSchema().loads(resp) diff --git a/ucloud/services/ucompshare/schemas/apis.py b/ucloud/services/ucompshare/schemas/apis.py deleted file mode 100644 index 8703af5c..00000000 --- a/ucloud/services/ucompshare/schemas/apis.py +++ /dev/null @@ -1,2542 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ucompshare.schemas import models - -""" UCompShare API Schema -""" - - -""" -API: AttachCompshareDisk - -将一个可用的UDisk挂载到某台主机上 -""" - - -class AttachCompshareDiskRequestSchema(schema.RequestSchema): - """AttachCompshareDisk - 将一个可用的UDisk挂载到某台主机上""" - - fields = { - "EnableCrossPodAttach": fields.Str( - required=False, dump_to="EnableCrossPodAttach" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UDiskId": fields.Str(required=True, dump_to="UDiskId"), - "UHostId": fields.Str(required=False, dump_to="UHostId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class AttachCompshareDiskResponseSchema(schema.ResponseSchema): - """AttachCompshareDisk - 将一个可用的UDisk挂载到某台主机上""" - - fields = {} - - -""" -API: AttachUS3 - -挂载us3 -""" - - -class AttachUS3RequestSchema(schema.RequestSchema): - """AttachUS3 - 挂载us3""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class AttachUS3ResponseSchema(schema.ResponseSchema): - """AttachUS3 - 挂载us3""" - - fields = {} - - -""" -API: CheckCompShareNetOptimizer - -检查算力平台账号是否开通访问加速 -""" - - -class CheckCompShareNetOptimizerRequestSchema(schema.RequestSchema): - """CheckCompShareNetOptimizer - 检查算力平台账号是否开通访问加速""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CheckCompShareNetOptimizerResponseSchema(schema.ResponseSchema): - """CheckCompShareNetOptimizer - 检查算力平台账号是否开通访问加速""" - - fields = { - "Optimized": fields.Bool(required=True, load_from="Optimized"), - } - - -""" -API: CheckULHostResourceCapacity - -检查轻量应用云主机资源余量 -""" - - -class CheckULHostResourceCapacityRequestSchema(schema.RequestSchema): - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityGroupId": fields.Str( - required=False, dump_to="SecurityGroupId" - ), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class CheckULHostResourceCapacityResponseSchema(schema.ResponseSchema): - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ResourceEnough": fields.Bool( - required=True, load_from="ResourceEnough" - ), - } - - -""" -API: CopyCompShareCustomImage - -复制算力平台镜像 -""" - - -class CopyCompShareCustomImageRequestSchema(schema.RequestSchema): - """CopyCompShareCustomImage - 复制算力平台镜像""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TargetImageName": fields.Str( - required=False, dump_to="TargetImageName" - ), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class CopyCompShareCustomImageResponseSchema(schema.ResponseSchema): - """CopyCompShareCustomImage - 复制算力平台镜像""" - - fields = { - "NewCompShareImageId": fields.Str( - required=True, load_from="NewCompShareImageId" - ), - } - - -""" -API: CreateCompShareCustomImage - -制作算力平台实例自制镜像 -""" - - -class CreateCompShareCustomImageParamSoftwaresSchema(schema.RequestSchema): - """CreateCompShareCustomImageParamSoftwares -""" - - fields = { - "Application": fields.List(fields.Str()), - "CUDAVersion": fields.Str(required=False, dump_to="CUDAVersion"), - "Framework": fields.Str(required=False, dump_to="Framework"), - "FrameworkVersion": fields.Str( - required=False, dump_to="FrameworkVersion" - ), - } - - -class CreateCompShareCustomImageRequestSchema(schema.RequestSchema): - """CreateCompShareCustomImage - 制作算力平台实例自制镜像""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Softwares": CreateCompShareCustomImageParamSoftwaresSchema( - required=False, dump_to="Softwares" - ), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateCompShareCustomImageResponseSchema(schema.ResponseSchema): - """CreateCompShareCustomImage - 制作算力平台实例自制镜像""" - - fields = { - "CompShareImageId": fields.Str( - required=True, load_from="CompShareImageId" - ), - } - - -""" -API: CreateCompShareInstance - -创建轻量级算力平台主机资源 -""" - - -class CreateCompShareInstanceParamDisksSchema(schema.RequestSchema): - """CreateCompShareInstanceParamDisks -""" - - fields = { - "IsBoot": fields.Bool(required=True, dump_to="IsBoot"), - "Size": fields.Int(required=True, dump_to="Size"), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class CreateCompShareInstanceRequestSchema(schema.RequestSchema): - """CreateCompShareInstance - 创建轻量级算力平台主机资源""" - - fields = { - "CPU": fields.Int(required=True, dump_to="CPU"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "Disks": fields.List(CreateCompShareInstanceParamDisksSchema()), - "EnableUS3": fields.Bool(required=False, dump_to="EnableUS3"), - "GPU": fields.Int(required=True, dump_to="GPU"), - "GpuType": fields.Str(required=True, dump_to="GpuType"), - "LoginMode": fields.Str(required=False, dump_to="LoginMode"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "Memory": fields.Int(required=True, dump_to="Memory"), - "MinimalCpuPlatform": fields.Str( - required=False, dump_to="MinimalCpuPlatform" - ), - "Name": fields.Str(required=False, dump_to="Name"), - "Password": fields.Str(required=False, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityGroupId": fields.Str( - required=False, dump_to="SecurityGroupId" - ), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateCompShareInstanceResponseSchema(schema.ResponseSchema): - """CreateCompShareInstance - 创建轻量级算力平台主机资源""" - - fields = { - "UHostIds": fields.List( - fields.Str(), required=True, load_from="UHostIds" - ), - } - - -""" -API: CreateCompShareTeam - -创建团队 -""" - - -class CreateCompShareTeamRequestSchema(schema.RequestSchema): - """CreateCompShareTeam - 创建团队""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class CreateCompShareTeamResponseSchema(schema.ResponseSchema): - """CreateCompShareTeam - 创建团队""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: CreateCompShareTeamRelation - -发送团队邀请 -""" - - -class CreateCompShareTeamRelationParamUserInfoSchema(schema.RequestSchema): - """CreateCompShareTeamRelationParamUserInfo -""" - - fields = { - "RemarkName": fields.Str(required=False, dump_to="RemarkName"), - "UserCompanyId": fields.Int(required=True, dump_to="UserCompanyId"), - } - - -class CreateCompShareTeamRelationRequestSchema(schema.RequestSchema): - """CreateCompShareTeamRelation - 发送团队邀请""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "UserInfo": fields.List( - CreateCompShareTeamRelationParamUserInfoSchema() - ), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class CreateCompShareTeamRelationResponseSchema(schema.ResponseSchema): - """CreateCompShareTeamRelation - 发送团队邀请""" - - fields = { - "ErrorMap": fields.Str(), - } - - -""" -API: CreateULHostInstance - -创建轻量应用云主机 -""" - - -class CreateULHostInstanceRequestSchema(schema.RequestSchema): - """CreateULHostInstance - 创建轻量应用云主机""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Name": fields.Str(required=False, dump_to="Name"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityGroupId": fields.Str( - required=False, dump_to="SecurityGroupId" - ), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class CreateULHostInstanceResponseSchema(schema.ResponseSchema): - """CreateULHostInstance - 创建轻量应用云主机""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: DeleteCompShareStopScheduler - -删除实例定时关机任务 -""" - - -class DeleteCompShareStopSchedulerRequestSchema(schema.RequestSchema): - """DeleteCompShareStopScheduler - 删除实例定时关机任务""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DeleteCompShareStopSchedulerResponseSchema(schema.ResponseSchema): - """DeleteCompShareStopScheduler - 删除实例定时关机任务""" - - fields = {} - - -""" -API: DeleteCompShareTeam - -删除团队 -""" - - -class DeleteCompShareTeamRequestSchema(schema.RequestSchema): - """DeleteCompShareTeam - 删除团队""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DeleteCompShareTeamResponseSchema(schema.ResponseSchema): - """DeleteCompShareTeam - 删除团队""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteCompshareDisk - -卸载并删除算力磁盘 -""" - - -class DeleteCompshareDiskRequestSchema(schema.RequestSchema): - """DeleteCompshareDisk - 卸载并删除算力磁盘""" - - fields = { - "OrganizationID": fields.Int(required=True, dump_to="OrganizationID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TopOrganizationID": fields.Int( - required=True, dump_to="TopOrganizationID" - ), - "UDiskId": fields.Str(required=True, dump_to="UDiskId"), - "UHostId": fields.Str(required=False, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteCompshareDiskResponseSchema(schema.ResponseSchema): - """DeleteCompshareDisk - 卸载并删除算力磁盘""" - - fields = { - "UDiskId": fields.Str(required=True, load_from="UDiskId"), - } - - -""" -API: DescribeAvailableCompShareInstanceTypes - -获取某个地域下可售/售罄的所有机型信息 -""" - - -class DescribeAvailableCompShareInstanceTypesRequestSchema( - schema.RequestSchema -): - """DescribeAvailableCompShareInstanceTypes - 获取某个地域下可售/售罄的所有机型信息""" - - fields = { - "MachineTypes": fields.List(fields.Str()), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeAvailableCompShareInstanceTypesResponseSchema( - schema.ResponseSchema -): - """DescribeAvailableCompShareInstanceTypes - 获取某个地域下可售/售罄的所有机型信息""" - - fields = { - "AvailableInstanceTypes": fields.List( - models.AvailableInstanceTypesSchema(), - required=True, - load_from="AvailableInstanceTypes", - ), - "Status": fields.Str(required=False, load_from="Status"), - } - - -""" -API: DescribeCommunityImages - -获取社区镜像列表 -""" - - -class DescribeCommunityImagesParamSortConditionSchema(schema.RequestSchema): - """DescribeCommunityImagesParamSortCondition -""" - - fields = { - "ASC": fields.Str(required=False, dump_to="ASC"), - "Field": fields.Str(required=False, dump_to="Field"), - } - - -class DescribeCommunityImagesRequestSchema(schema.RequestSchema): - """DescribeCommunityImages - 获取社区镜像列表""" - - fields = { - "Author": fields.Str(required=False, dump_to="Author"), - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Limit": fields.Str(required=False, dump_to="Limit"), - "Name": fields.Str(required=False, dump_to="Name"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SortCondition": DescribeCommunityImagesParamSortConditionSchema( - required=False, dump_to="SortCondition" - ), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeCommunityImagesResponseSchema(schema.ResponseSchema): - """DescribeCommunityImages - 获取社区镜像列表""" - - fields = { - "ImageSet": fields.List( - models.CompShareImageSchema(), required=False, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeCompShareCustomImages - -获取自制镜像列表 -""" - - -class DescribeCompShareCustomImagesRequestSchema(schema.RequestSchema): - """DescribeCompShareCustomImages - 获取自制镜像列表""" - - fields = { - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeCompShareCustomImagesResponseSchema(schema.ResponseSchema): - """DescribeCompShareCustomImages - 获取自制镜像列表""" - - fields = { - "ImageSet": fields.List( - models.CompShareImageSchema(), required=True, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeCompShareGpuInventory - -查询GPU卡余量库存 -""" - - -class DescribeCompShareGpuInventoryRequestSchema(schema.RequestSchema): - """DescribeCompShareGpuInventory - 查询GPU卡余量库存""" - - fields = { - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeCompShareGpuInventoryResponseSchema(schema.ResponseSchema): - """DescribeCompShareGpuInventory - 查询GPU卡余量库存""" - - fields = { - "GpuInventoryByZone": fields.Str(), - "SpotUnsupportedGpuTypes": fields.List( - fields.Str(), required=False, load_from="SpotUnsupportedGpuTypes" - ), - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - } - - -""" -API: DescribeCompShareImageShareAccounts - -获取镜像共享的账号列表 -""" - - -class DescribeCompShareImageShareAccountsRequestSchema(schema.RequestSchema): - """DescribeCompShareImageShareAccounts - 获取镜像共享的账号列表""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeCompShareImageShareAccountsResponseSchema(schema.ResponseSchema): - """DescribeCompShareImageShareAccounts - 获取镜像共享的账号列表""" - - fields = { - "AccountSet": fields.List( - models.ProjectsSchema(), required=True, load_from="AccountSet" - ), - } - - -""" -API: DescribeCompShareImageTags - -获取镜像标签列表 -""" - - -class DescribeCompShareImageTagsRequestSchema(schema.RequestSchema): - """DescribeCompShareImageTags - 获取镜像标签列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeCompShareImageTagsResponseSchema(schema.ResponseSchema): - """DescribeCompShareImageTags - 获取镜像标签列表""" - - fields = { - "Tags": fields.List(fields.Str(), required=True, load_from="Tags"), - } - - -""" -API: DescribeCompShareImages - -可获取平台、应用镜像信息 -""" - - -class DescribeCompShareImagesRequestSchema(schema.RequestSchema): - """DescribeCompShareImages - 可获取平台、应用镜像信息""" - - fields = { - "Author": fields.Str(required=False, dump_to="Author"), - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "ImageType": fields.Str(required=False, dump_to="ImageType"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Name": fields.Str(required=False, dump_to="Name"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeCompShareImagesResponseSchema(schema.ResponseSchema): - """DescribeCompShareImages - 可获取平台、应用镜像信息""" - - fields = { - "ImageSet": fields.List( - models.CompShareImageSchema(), required=True, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeCompShareInstance - -获取用户所有地域下主机资源信息列表 -""" - - -class DescribeCompShareInstanceRequestSchema(schema.RequestSchema): - """DescribeCompShareInstance - 获取用户所有地域下主机资源信息列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "UHostIds": fields.List(fields.Str()), - "WithoutGpu": fields.Bool(required=False, dump_to="WithoutGpu"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeCompShareInstanceResponseSchema(schema.ResponseSchema): - """DescribeCompShareInstance - 获取用户所有地域下主机资源信息列表""" - - fields = { - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - "UHostSet": fields.List( - models.CompShareInstanceSetSchema(), - required=True, - load_from="UHostSet", - ), - } - - -""" -API: DescribeCompShareMachineTypeFamilies - -获取实例规格族列表(所有机型的信息) -""" - - -class DescribeCompShareMachineTypeFamiliesRequestSchema(schema.RequestSchema): - """DescribeCompShareMachineTypeFamilies - 获取实例规格族列表(所有机型的信息)""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class DescribeCompShareMachineTypeFamiliesResponseSchema(schema.ResponseSchema): - """DescribeCompShareMachineTypeFamilies - 获取实例规格族列表(所有机型的信息)""" - - fields = { - "MachineTypes": fields.List( - fields.Str(), required=True, load_from="MachineTypes" - ), - } - - -""" -API: DescribeCompShareSharingImages - -获取算力平台共享镜像列表 -""" - - -class DescribeCompShareSharingImagesRequestSchema(schema.RequestSchema): - """DescribeCompShareSharingImages - 获取算力平台共享镜像列表""" - - fields = { - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeCompShareSharingImagesResponseSchema(schema.ResponseSchema): - """DescribeCompShareSharingImages - 获取算力平台共享镜像列表""" - - fields = { - "ImageSet": fields.List( - models.CompShareImageSchema(), required=True, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeCompShareSoftwarePort - -获取算力平台应用及端口号列表 -""" - - -class DescribeCompShareSoftwarePortRequestSchema(schema.RequestSchema): - """DescribeCompShareSoftwarePort - 获取算力平台应用及端口号列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeCompShareSoftwarePortResponseSchema(schema.ResponseSchema): - """DescribeCompShareSoftwarePort - 获取算力平台应用及端口号列表""" - - fields = { - "SoftwarePort": fields.List( - models.SoftwarePortSchema(), required=True, load_from="SoftwarePort" - ), - } - - -""" -API: DescribeCompShareSupportZone - -获取支持的可用区信息列表 -""" - - -class DescribeCompShareSupportZoneRequestSchema(schema.RequestSchema): - """DescribeCompShareSupportZone - 获取支持的可用区信息列表""" - - fields = { - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeCompShareSupportZoneResponseSchema(schema.ResponseSchema): - """DescribeCompShareSupportZone - 获取支持的可用区信息列表""" - - fields = { - "ZoneInfo": fields.List( - models.SupportZoneSchema(), required=True, load_from="ZoneInfo" - ), - } - - -""" -API: DescribeModelRepositoryModels - -模型仓库模型列表 -""" - - -class DescribeModelRepositoryModelsRequestSchema(schema.RequestSchema): - """DescribeModelRepositoryModels - 模型仓库模型列表""" - - fields = { - "Name": fields.Str(required=False, dump_to="Name"), - "Region": fields.Str(required=True, dump_to="Region"), - "Tags": fields.Str(required=False, dump_to="Tags"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeModelRepositoryModelsResponseSchema(schema.ResponseSchema): - """DescribeModelRepositoryModels - 模型仓库模型列表""" - - fields = { - "Models": fields.List( - models.ModelRepositoryModelSchema(), - required=True, - load_from="Models", - ), - } - - -""" -API: DescribeModelRepositoryTags - -模型仓库标签列表 -""" - - -class DescribeModelRepositoryTagsRequestSchema(schema.RequestSchema): - """DescribeModelRepositoryTags - 模型仓库标签列表""" - - fields = { - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeModelRepositoryTagsResponseSchema(schema.ResponseSchema): - """DescribeModelRepositoryTags - 模型仓库标签列表""" - - fields = { - "Tags": fields.List(fields.Str(), required=True, load_from="Tags"), - } - - -""" -API: DescribeSelfCommunityImages - -个人中心社区镜像查询 -""" - - -class DescribeSelfCommunityImagesRequestSchema(schema.RequestSchema): - """DescribeSelfCommunityImages - 个人中心社区镜像查询""" - - fields = { - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "GroupId": fields.Str(required=False, dump_to="GroupId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeSelfCommunityImagesResponseSchema(schema.ResponseSchema): - """DescribeSelfCommunityImages - 个人中心社区镜像查询""" - - fields = { - "AvailableTotalCount": fields.Int( - required=True, load_from="AvailableTotalCount" - ), - "ImageSetGroup": fields.List( - models.CompshareImageGroupSchema(), - required=True, - load_from="ImageSetGroup", - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeTeamMemberOrder - -获取团队订单 -""" - - -class DescribeTeamMemberOrderRequestSchema(schema.RequestSchema): - """DescribeTeamMemberOrder - 获取团队订单""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "ChargeTypes": fields.List(fields.Str()), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "OrderBy": fields.Str(required=False, dump_to="OrderBy"), - "OrderDir": fields.Str(required=False, dump_to="OrderDir"), - "OrderNos": fields.List(fields.Str()), - "OrderStates": fields.List(fields.Str()), - "OrderTypes": fields.List(fields.Str()), - "Regions": fields.List(fields.Int()), - "ResourceIds": fields.List(fields.Str()), - "ResourceTypes": fields.List(fields.Int()), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "VirtualCompanyId": fields.Int( - required=True, dump_to="VirtualCompanyId" - ), - } - - -class DescribeTeamMemberOrderResponseSchema(schema.ResponseSchema): - """DescribeTeamMemberOrder - 获取团队订单""" - - fields = { - "Limit": fields.Int(required=True, load_from="Limit"), - "Offset": fields.Int(required=True, load_from="Offset"), - "OrderInfos": fields.List( - models.OrderInfoSchema(), required=True, load_from="OrderInfos" - ), - "Total": fields.Int(required=True, load_from="Total"), - } - - -""" -API: DescribeTeamMemberOrderCount - -获取团队成员订单总览 -""" - - -class DescribeTeamMemberOrderCountRequestSchema(schema.RequestSchema): - """DescribeTeamMemberOrderCount - 获取团队成员订单总览""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "ChargeTypes": fields.Str(required=False, dump_to="ChargeTypes"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "OrderStates": fields.Str(required=False, dump_to="OrderStates"), - "OrderTypes": fields.Str(required=False, dump_to="OrderTypes"), - "Regions": fields.Str(required=False, dump_to="Regions"), - "ResourceTypes": fields.Str(required=False, dump_to="ResourceTypes"), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "VirtualCompanyId": fields.Int( - required=True, dump_to="VirtualCompanyId" - ), - } - - -class DescribeTeamMemberOrderCountResponseSchema(schema.ResponseSchema): - """DescribeTeamMemberOrderCount - 获取团队成员订单总览""" - - fields = { - "Amount": fields.Str(required=True, load_from="Amount"), - "AmountCoupon": fields.Str(required=True, load_from="AmountCoupon"), - "AmountFree": fields.Str(required=True, load_from="AmountFree"), - "AmountReal": fields.Str(required=True, load_from="AmountReal"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeTeamMemberUnpaidOrder - -获取团队队员未支付订单 -""" - - -class DescribeTeamMemberUnpaidOrderRequestSchema(schema.RequestSchema): - """DescribeTeamMemberUnpaidOrder - 获取团队队员未支付订单""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "ChargeTypes": fields.List(fields.Str()), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "OrderBy": fields.Str(required=False, dump_to="OrderBy"), - "OrderDir": fields.Str(required=False, dump_to="OrderDir"), - "OrderNos": fields.List(fields.Str()), - "OrderStates": fields.List(fields.Str()), - "OrderTypes": fields.List(fields.Str()), - "Regions": fields.List(fields.Int()), - "ResourceIds": fields.List(fields.Str()), - "ResourceTypes": fields.List(fields.Int()), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "VirtualCompanyId": fields.Int( - required=True, dump_to="VirtualCompanyId" - ), - } - - -class DescribeTeamMemberUnpaidOrderResponseSchema(schema.ResponseSchema): - """DescribeTeamMemberUnpaidOrder - 获取团队队员未支付订单""" - - fields = { - "Limit": fields.Int(required=True, load_from="Limit"), - "Offset": fields.Int(required=True, load_from="Offset"), - "OrderInfos": fields.List( - models.UnpaidOrderInfoSchema(), - required=True, - load_from="OrderInfos", - ), - "Total": fields.Int(required=True, load_from="Total"), - } - - -""" -API: DescribeTeamMemberUnpaidOrderCount - -获取团队成员未支付订单总览 -""" - - -class DescribeTeamMemberUnpaidOrderCountRequestSchema(schema.RequestSchema): - """DescribeTeamMemberUnpaidOrderCount - 获取团队成员未支付订单总览""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "ChargeTypes": fields.List(fields.Str()), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "OrderStates": fields.List(fields.Str()), - "OrderTypes": fields.List(fields.Str()), - "OrganizationId": fields.Int(required=False, dump_to="OrganizationId"), - "Regions": fields.List(fields.Int()), - "ResourceIds": fields.Str(required=False, dump_to="ResourceIds"), - "ResourceTypes": fields.Int(required=False, dump_to="ResourceTypes"), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "TransactionNos": fields.List(fields.Str()), - "VirtualCompanyId": fields.Int( - required=True, dump_to="VirtualCompanyId" - ), - } - - -class DescribeTeamMemberUnpaidOrderCountResponseSchema(schema.ResponseSchema): - """DescribeTeamMemberUnpaidOrderCount - 获取团队成员未支付订单总览""" - - fields = { - "Amount": fields.Str(required=True, load_from="Amount"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeULHostBundles - -获取轻量应用云主机套餐列表 -""" - - -class DescribeULHostBundlesRequestSchema(schema.RequestSchema): - """DescribeULHostBundles - 获取轻量应用云主机套餐列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeULHostBundlesResponseSchema(schema.ResponseSchema): - """DescribeULHostBundles - 获取轻量应用云主机套餐列表""" - - fields = { - "Bundles": fields.List( - models.BundleSchema(), required=True, load_from="Bundles" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeULHostImage - -获取指定数据中心镜像列表 -""" - - -class DescribeULHostImageRequestSchema(schema.RequestSchema): - """DescribeULHostImage - 获取指定数据中心镜像列表""" - - fields = { - "ImageId": fields.Str(required=False, dump_to="ImageId"), - "ImageIds": fields.List(fields.Str()), - "ImageType": fields.Str(required=False, dump_to="ImageType"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "OsType": fields.Str(required=False, dump_to="OsType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Scene": fields.Str(required=False, dump_to="Scene"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeULHostImageResponseSchema(schema.ResponseSchema): - """DescribeULHostImage - 获取指定数据中心镜像列表""" - - fields = { - "ImageSet": fields.List( - models.ULHostImageSetSchema(), required=False, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeULHostInstance - -获取轻量应用云主机列表 -""" - - -class DescribeULHostInstanceRequestSchema(schema.RequestSchema): - """DescribeULHostInstance - 获取轻量应用云主机列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostIds": fields.List(fields.Str()), - } - - -class DescribeULHostInstanceResponseSchema(schema.ResponseSchema): - """DescribeULHostInstance - 获取轻量应用云主机列表""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostInstanceSets": fields.List( - models.ULHostInstanceSetSchema(), - required=True, - load_from="ULHostInstanceSets", - ), - } - - -""" -API: DescribeUserCommunityImages - -获取社区镜像列表(登录状态) -""" - - -class DescribeUserCommunityImagesParamSortConditionSchema(schema.RequestSchema): - """DescribeUserCommunityImagesParamSortCondition -""" - - fields = { - "ASC": fields.Str(required=False, dump_to="ASC"), - "Field": fields.Str(required=False, dump_to="Field"), - } - - -class DescribeUserCommunityImagesRequestSchema(schema.RequestSchema): - """DescribeUserCommunityImages - 获取社区镜像列表(登录状态)""" - - fields = { - "Author": fields.Str(required=False, dump_to="Author"), - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "FuzzySearch": fields.Str(required=False, dump_to="FuzzySearch"), - "IsFree": fields.Bool(required=False, dump_to="IsFree"), - "IsOfficial": fields.Bool(required=False, dump_to="IsOfficial"), - "Limit": fields.Str(required=False, dump_to="Limit"), - "Name": fields.Str(required=False, dump_to="Name"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SortCondition": DescribeUserCommunityImagesParamSortConditionSchema( - required=False, dump_to="SortCondition" - ), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeUserCommunityImagesResponseSchema(schema.ResponseSchema): - """DescribeUserCommunityImages - 获取社区镜像列表(登录状态)""" - - fields = { - "AvailableTotalCount": fields.Int( - required=False, load_from="AvailableTotalCount" - ), - "ImageSetGroup": fields.List( - models.CompshareImageGroupSchema(), - required=False, - load_from="ImageSetGroup", - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DetachCompshareDisk - -卸载某个已经挂载在指定UHost实例上的UDisk -""" - - -class DetachCompshareDiskRequestSchema(schema.RequestSchema): - """DetachCompshareDisk - 卸载某个已经挂载在指定UHost实例上的UDisk""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UDiskId": fields.Str(required=True, dump_to="UDiskId"), - "UHostId": fields.Str(required=False, dump_to="UHostId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DetachCompshareDiskResponseSchema(schema.ResponseSchema): - """DetachCompshareDisk - 卸载某个已经挂载在指定UHost实例上的UDisk""" - - fields = {} - - -""" -API: DownloadTeamOrder - -下载团队订单 -""" - - -class DownloadTeamOrderRequestSchema(schema.RequestSchema): - """DownloadTeamOrder - 下载团队订单""" - - fields = { - "BeginTime": fields.Int(required=False, dump_to="BeginTime"), - "EndTime": fields.Int(required=False, dump_to="EndTime"), - "OrderStates": fields.List(fields.Str()), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "VirtualCompanyId": fields.Int( - required=False, dump_to="VirtualCompanyId" - ), - } - - -class DownloadTeamOrderResponseSchema(schema.ResponseSchema): - """DownloadTeamOrder - 下载团队订单""" - - fields = { - "Amount": fields.Str(required=True, load_from="Amount"), - "AmountCoupon": fields.Str(required=True, load_from="AmountCoupon"), - "AmountFree": fields.Str(required=True, load_from="AmountFree"), - "AmountReal": fields.Str(required=True, load_from="AmountReal"), - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "EndTime": fields.Int(required=True, load_from="EndTime"), - "OrderNo": fields.Str(required=True, load_from="OrderNo"), - "OrderType": fields.Str(required=True, load_from="OrderType"), - "RemarkName": fields.Str(required=True, load_from="RemarkName"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - "ResourceType": fields.Str(required=True, load_from="ResourceType"), - "StartTime": fields.Int(required=True, load_from="StartTime"), - "VirtualCompanyId": fields.Int( - required=True, load_from="VirtualCompanyId" - ), - } - - -""" -API: GetCompShareAttachedDiskUpgradePrice - -获取算力平台实例磁盘升级价格 -""" - - -class GetCompShareAttachedDiskUpgradePriceRequestSchema(schema.RequestSchema): - """GetCompShareAttachedDiskUpgradePrice - 获取算力平台实例磁盘升级价格""" - - fields = { - "DiskId": fields.Str(required=True, dump_to="DiskId"), - "DiskSpace": fields.Str(required=True, dump_to="DiskSpace"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareAttachedDiskUpgradePriceResponseSchema(schema.ResponseSchema): - """GetCompShareAttachedDiskUpgradePrice - 获取算力平台实例磁盘升级价格""" - - fields = { - "ListPrice": fields.Float(required=True, load_from="ListPrice"), - "ListPriceDetail": models.DiskUpgradePriceDetailSchema(), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "OriginalPriceDetail": models.DiskUpgradePriceDetailSchema(), - "Price": fields.Float(required=True, load_from="Price"), - "PriceDetail": models.DiskUpgradePriceDetailSchema(), - } - - -""" -API: GetCompShareImageCreateProgress - -获取算力平台镜像制作进度 -""" - - -class GetCompShareImageCreateProgressRequestSchema(schema.RequestSchema): - """GetCompShareImageCreateProgress - 获取算力平台镜像制作进度""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareImageCreateProgressResponseSchema(schema.ResponseSchema): - """GetCompShareImageCreateProgress - 获取算力平台镜像制作进度""" - - fields = { - "Process": fields.Float(required=True, load_from="Process"), - "RemainingDuration": fields.Str( - required=True, load_from="RemainingDuration" - ), - "TotalDuration": fields.Str(required=True, load_from="TotalDuration"), - } - - -""" -API: GetCompShareInstanceMonitor - -获取实例监控指标 -""" - - -class GetCompShareInstanceMonitorRequestSchema(schema.RequestSchema): - """GetCompShareInstanceMonitor - 获取实例监控指标""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostIds": fields.List(fields.Str()), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class GetCompShareInstanceMonitorResponseSchema(schema.ResponseSchema): - """GetCompShareInstanceMonitor - 获取实例监控指标""" - - fields = {} - - -""" -API: GetCompShareInstancePrice - -获取算力平台实例价格 -""" - - -class GetCompShareInstancePriceParamDisksSchema(schema.RequestSchema): - """GetCompShareInstancePriceParamDisks -""" - - fields = { - "IsBoot": fields.Bool(required=False, dump_to="IsBoot"), - "Size": fields.Int(required=False, dump_to="Size"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class GetCompShareInstancePriceRequestSchema(schema.RequestSchema): - """GetCompShareInstancePrice - 获取算力平台实例价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Cpu": fields.Str(required=False, dump_to="Cpu"), - "Disks": fields.List(GetCompShareInstancePriceParamDisksSchema()), - "Gpu": fields.Str(required=False, dump_to="Gpu"), - "GpuType": fields.Str(required=False, dump_to="GpuType"), - "Memory": fields.Str(required=False, dump_to="Memory"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareInstancePriceResponseSchema(schema.ResponseSchema): - """GetCompShareInstancePrice - 获取算力平台实例价格""" - - fields = { - "ListPriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="ListPriceDetail", - ), - "OriginalPriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="OriginalPriceDetail", - ), - "PriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="PriceDetail", - ), - } - - -""" -API: GetCompShareInstanceUpgradePrice - -获取算力平台实例升降级价格 -""" - - -class GetCompShareInstanceUpgradePriceRequestSchema(schema.RequestSchema): - """GetCompShareInstanceUpgradePrice - 获取算力平台实例升降级价格""" - - fields = { - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Cpu": fields.Int(required=False, dump_to="Cpu"), - "Gpu": fields.Int(required=False, dump_to="Gpu"), - "Memory": fields.Int(required=False, dump_to="Memory"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareInstanceUpgradePriceResponseSchema(schema.ResponseSchema): - """GetCompShareInstanceUpgradePrice - 获取算力平台实例升降级价格""" - - fields = { - "ListPrice": fields.Float(required=True, load_from="ListPrice"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -""" -API: GetCompShareInstanceUserPrice - -获取算力平台实例用户价格 -""" - - -class GetCompShareInstanceUserPriceParamDisksSchema(schema.RequestSchema): - """GetCompShareInstanceUserPriceParamDisks -""" - - fields = { - "IsBoot": fields.Bool(required=False, dump_to="IsBoot"), - "Size": fields.Int(required=False, dump_to="Size"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class GetCompShareInstanceUserPriceRequestSchema(schema.RequestSchema): - """GetCompShareInstanceUserPrice - 获取算力平台实例用户价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CompShareImageId": fields.Str( - required=False, dump_to="CompShareImageId" - ), - "Cpu": fields.Str(required=False, dump_to="Cpu"), - "Disks": fields.List(GetCompShareInstanceUserPriceParamDisksSchema()), - "Gpu": fields.Str(required=False, dump_to="Gpu"), - "GpuType": fields.Str(required=False, dump_to="GpuType"), - "Memory": fields.Str(required=False, dump_to="Memory"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareInstanceUserPriceResponseSchema(schema.ResponseSchema): - """GetCompShareInstanceUserPrice - 获取算力平台实例用户价格""" - - fields = { - "ListPriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="ListPriceDetail", - ), - "OriginalPriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="OriginalPriceDetail", - ), - "PriceDetail": fields.List( - models.CompSharePriceDetailSchema(), - required=False, - load_from="PriceDetail", - ), - } - - -""" -API: GetCompShareRefundPrice - -获取算力平台实例删除扣除费用。包括主机、磁盘等资源的费用 -""" - - -class GetCompShareRefundPriceRequestSchema(schema.RequestSchema): - """GetCompShareRefundPrice - 获取算力平台实例删除扣除费用。包括主机、磁盘等资源的费用""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostIds": fields.List(fields.Str()), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetCompShareRefundPriceResponseSchema(schema.ResponseSchema): - """GetCompShareRefundPrice - 获取算力平台实例删除扣除费用。包括主机、磁盘等资源的费用""" - - fields = { - "RefundPriceSet": fields.List( - models.UHostRefundPriceSetSchema(), - required=True, - load_from="RefundPriceSet", - ), - } - - -""" -API: GetCompShareTeamInfo - -获取团队详细信息 -""" - - -class GetCompShareTeamInfoRequestSchema(schema.RequestSchema): - """GetCompShareTeamInfo - 获取团队详细信息""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class GetCompShareTeamInfoResponseSchema(schema.ResponseSchema): - """GetCompShareTeamInfo - 获取团队详细信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Team": models.CompShareTeamDetailInfoSchema(), - "TeamRelation": fields.List( - models.TeamRelationSchema(), - required=False, - load_from="TeamRelation", - ), - } - - -""" -API: GetOpenClawModelList - -获取OpenClaw模型列表 -""" - - -class GetOpenClawModelListRequestSchema(schema.RequestSchema): - """GetOpenClawModelList - 获取OpenClaw模型列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class GetOpenClawModelListResponseSchema(schema.ResponseSchema): - """GetOpenClawModelList - 获取OpenClaw模型列表""" - - fields = { - "Models": models.OpenClawModelInfoSchema(), - } - - -""" -API: GetSoftwareURL - -获取算力平台实例应用URL -""" - - -class GetSoftwareURLRequestSchema(schema.RequestSchema): - """GetSoftwareURL - 获取算力平台实例应用URL""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Software": fields.Str(required=True, dump_to="Software"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetSoftwareURLResponseSchema(schema.ResponseSchema): - """GetSoftwareURL - 获取算力平台实例应用URL""" - - fields = { - "URL": fields.Str(required=True, load_from="URL"), - } - - -""" -API: GetULHostInstancePrice - -获取轻量应用云主机套餐价格 -""" - - -class GetULHostInstancePriceRequestSchema(schema.RequestSchema): - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "Count": fields.Int(required=False, dump_to="Count"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetULHostInstancePriceResponseSchema(schema.ResponseSchema): - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "PriceSet": fields.List( - models.ULHostPriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: GetULHostRenewPrice - -获取主机续费价格 -""" - - -class GetULHostRenewPriceRequestSchema(schema.RequestSchema): - """GetULHostRenewPrice - 获取主机续费价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class GetULHostRenewPriceResponseSchema(schema.ResponseSchema): - """GetULHostRenewPrice - 获取主机续费价格""" - - fields = { - "PriceSet": fields.List( - models.ULHostPriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: ListCompShareTeam - -获取团队列表 -""" - - -class ListCompShareTeamRequestSchema(schema.RequestSchema): - """ListCompShareTeam - 获取团队列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListCompShareTeamResponseSchema(schema.ResponseSchema): - """ListCompShareTeam - 获取团队列表""" - - fields = { - "Teams": fields.List( - models.CompShareTeamInfoSchema(), required=False, load_from="Teams" - ), - } - - -""" -API: ListCompShareTeamInvite - -获取邀请成员的列表 -""" - - -class ListCompShareTeamInviteRequestSchema(schema.RequestSchema): - """ListCompShareTeamInvite - 获取邀请成员的列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "TeamId": fields.Int(required=False, dump_to="TeamId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListCompShareTeamInviteResponseSchema(schema.ResponseSchema): - """ListCompShareTeamInvite - 获取邀请成员的列表""" - - fields = { - "Invites": fields.List( - models.CompShareTeamInviteInfoSchema(), - required=True, - load_from="Invites", - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListCompShareTeamJoined - -获取加入团队信息列表 -""" - - -class ListCompShareTeamJoinedRequestSchema(schema.RequestSchema): - """ListCompShareTeamJoined - 获取加入团队信息列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Status": fields.Str(required=False, dump_to="Status"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListCompShareTeamJoinedResponseSchema(schema.ResponseSchema): - """ListCompShareTeamJoined - 获取加入团队信息列表""" - - fields = { - "JoinedTeams": fields.List( - models.CompShareTeamJoinedInfoSchema(), - required=True, - load_from="JoinedTeams", - ), - } - - -""" -API: ListCompShareTeamOperateLog - -获取团队操作日志列表 -""" - - -class ListCompShareTeamOperateLogRequestSchema(schema.RequestSchema): - """ListCompShareTeamOperateLog - 获取团队操作日志列表""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "OperateType": fields.List(fields.Str()), - "OrderByASC": fields.Bool(required=False, dump_to="OrderByASC"), - "Status": fields.List(fields.Str()), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - } - - -class ListCompShareTeamOperateLogResponseSchema(schema.ResponseSchema): - """ListCompShareTeamOperateLog - 获取团队操作日志列表""" - - fields = { - "Logs": fields.List( - models.CompShareTeamOperateLogInfoSchema(), - required=True, - load_from="Logs", - ), - "OperateTypeList": fields.List( - fields.Str(), required=False, load_from="OperateTypeList" - ), - "StatusList": fields.List( - fields.Str(), required=False, load_from="StatusList" - ), - "Total": fields.Int(required=True, load_from="Total"), - } - - -""" -API: ListMemberProductType - -获取成员订单产品类型 -""" - - -class ListMemberProductTypeRequestSchema(schema.RequestSchema): - """ListMemberProductType - 获取成员订单产品类型""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "OrderStates": fields.List(fields.Str()), - "TeamId": fields.Int(required=True, dump_to="TeamId"), - "VirtualCompanyId": fields.Int( - required=False, dump_to="VirtualCompanyId" - ), - } - - -class ListMemberProductTypeResponseSchema(schema.ResponseSchema): - """ListMemberProductType - 获取成员订单产品类型""" - - fields = { - "ProductTypeList": fields.List( - fields.Str(), required=True, load_from="ProductTypeList" - ), - } - - -""" -API: ModifyCompShareImageShareAccount - -管理镜像的共享账号列表 -""" - - -class ModifyCompShareImageShareAccountRequestSchema(schema.RequestSchema): - """ModifyCompShareImageShareAccount - 管理镜像的共享账号列表""" - - fields = { - "AddAccounts": fields.List(fields.Int()), - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RemoveAccounts": fields.List(fields.Int()), - } - - -class ModifyCompShareImageShareAccountResponseSchema(schema.ResponseSchema): - """ModifyCompShareImageShareAccount - 管理镜像的共享账号列表""" - - fields = { - "InvalidAccounts": fields.List( - fields.Int(), required=False, load_from="InvalidAccounts" - ), - } - - -""" -API: ModifyCompShareInstanceName - -修改算力平台实例名称 -""" - - -class ModifyCompShareInstanceNameRequestSchema(schema.RequestSchema): - """ModifyCompShareInstanceName - 修改算力平台实例名称""" - - fields = { - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ModifyCompShareInstanceNameResponseSchema(schema.ResponseSchema): - """ModifyCompShareInstanceName - 修改算力平台实例名称""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: ModifyULHostAttribute - -修改指定ULHost实例属性信息,包含名称和备注 -""" - - -class ModifyULHostAttributeRequestSchema(schema.RequestSchema): - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注""" - - fields = { - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ModifyULHostAttributeResponseSchema(schema.ResponseSchema): - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: PoweroffULHostInstance - -直接关闭UHost实例电源,无需等待实例正常关闭。 -""" - - -class PoweroffULHostInstanceRequestSchema(schema.RequestSchema): - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class PoweroffULHostInstanceResponseSchema(schema.ResponseSchema): - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。""" - - fields = { - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: PublishCompShareImage - -将自制镜像发布到镜像社区 -""" - - -class PublishCompShareImageParamSoftwaresSchema(schema.RequestSchema): - """PublishCompShareImageParamSoftwares -""" - - fields = { - "Applications": fields.List(fields.Str()), - "CUDAVersion": fields.Str(required=False, dump_to="CUDAVersion"), - "Framework": fields.Str(required=False, dump_to="Framework"), - "FrameworkVersion": fields.Str( - required=False, dump_to="FrameworkVersion" - ), - } - - -class PublishCompShareImageRequestSchema(schema.RequestSchema): - """PublishCompShareImage - 将自制镜像发布到镜像社区""" - - fields = { - "AutoStart": fields.Str(required=False, dump_to="AutoStart"), - "CommunityImageName": fields.Str( - required=False, dump_to="CommunityImageName" - ), - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "Cover": fields.Str(required=False, dump_to="Cover"), - "Description": fields.Str(required=False, dump_to="Description"), - "Price": fields.Float(required=True, dump_to="Price"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Readme": fields.Str(required=False, dump_to="Readme"), - "Region": fields.Str(required=True, dump_to="Region"), - "Softwares": PublishCompShareImageParamSoftwaresSchema( - required=False, dump_to="Softwares" - ), - "Tags": fields.List(fields.Str()), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class PublishCompShareImageResponseSchema(schema.ResponseSchema): - """PublishCompShareImage - 将自制镜像发布到镜像社区""" - - fields = {} - - -""" -API: RebootCompShareInstance - -重启轻量算力平台实例 -""" - - -class RebootCompShareInstanceRequestSchema(schema.RequestSchema): - """RebootCompShareInstance - 重启轻量算力平台实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class RebootCompShareInstanceResponseSchema(schema.ResponseSchema): - """RebootCompShareInstance - 重启轻量算力平台实例""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: RebootULHostInstance - -重新启动UHost实例。 -""" - - -class RebootULHostInstanceRequestSchema(schema.RequestSchema): - """RebootULHostInstance - 重新启动UHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class RebootULHostInstanceResponseSchema(schema.ResponseSchema): - """RebootULHostInstance - 重新启动UHost实例。""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: ReinstallCompShareInstance - -重装算力平台实例 -""" - - -class ReinstallCompShareInstanceRequestSchema(schema.RequestSchema): - """ReinstallCompShareInstance - 重装算力平台实例""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "Password": fields.Str(required=False, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ReinstallCompShareInstanceResponseSchema(schema.ResponseSchema): - """ReinstallCompShareInstance - 重装算力平台实例""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: ReinstallULHostInstance - -重装轻量应用云主机 -""" - - -class ReinstallULHostInstanceRequestSchema(schema.RequestSchema): - """ReinstallULHostInstance - 重装轻量应用云主机""" - - fields = { - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ReinstallULHostInstanceResponseSchema(schema.ResponseSchema): - """ReinstallULHostInstance - 重装轻量应用云主机""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: ResetCompShareInstancePassword - -重置算力平台实例密码 -""" - - -class ResetCompShareInstancePasswordRequestSchema(schema.RequestSchema): - """ResetCompShareInstancePassword - 重置算力平台实例密码""" - - fields = { - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ResetCompShareInstancePasswordResponseSchema(schema.ResponseSchema): - """ResetCompShareInstancePassword - 重置算力平台实例密码""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: ResetULHostInstancePassword - -重置轻量应用云主机管理员密码。 -""" - - -class ResetULHostInstancePasswordRequestSchema(schema.RequestSchema): - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。""" - - fields = { - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ResetULHostInstancePasswordResponseSchema(schema.ResponseSchema): - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。""" - - fields = { - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: ResizeCompShareDisk - -修改磁盘 -""" - - -class ResizeCompShareDiskRequestSchema(schema.RequestSchema): - """ResizeCompShareDisk - 修改磁盘""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Int(required=True, dump_to="Size"), - "UDiskId": fields.Str(required=True, dump_to="UDiskId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ResizeCompShareDiskResponseSchema(schema.ResponseSchema): - """ResizeCompShareDisk - 修改磁盘""" - - fields = { - "UDiskId": fields.Str(required=True, load_from="UDiskId"), - } - - -""" -API: ResizeCompShareInstance - -修改算力平台实例配置 -""" - - -class ResizeCompShareInstanceRequestSchema(schema.RequestSchema): - """ResizeCompShareInstance - 修改算力平台实例配置""" - - fields = { - "Cpu": fields.Int(required=False, dump_to="Cpu"), - "DiskId": fields.Str(required=False, dump_to="DiskId"), - "DiskSpace": fields.Str(required=False, dump_to="DiskSpace"), - "Gpu": fields.Int(required=False, dump_to="Gpu"), - "Memory": fields.Int(required=False, dump_to="Memory"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ResizeCompShareInstanceResponseSchema(schema.ResponseSchema): - """ResizeCompShareInstance - 修改算力平台实例配置""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: SetCompShareTeamRelation - -设置邀请信息 -""" - - -class SetCompShareTeamRelationRequestSchema(schema.RequestSchema): - """SetCompShareTeamRelation - 设置邀请信息""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "RemarkName": fields.Str(required=False, dump_to="RemarkName"), - "Status": fields.Str(required=True, dump_to="Status"), - "TeamId": fields.Str(required=True, dump_to="TeamId"), - "UserCompanyId": fields.Str(required=False, dump_to="UserCompanyId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class SetCompShareTeamRelationResponseSchema(schema.ResponseSchema): - """SetCompShareTeamRelation - 设置邀请信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: StartCompShareInstance - -启动算力平台实例 -""" - - -class StartCompShareInstanceRequestSchema(schema.RequestSchema): - """StartCompShareInstance - 启动算力平台实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StartCompShareInstanceResponseSchema(schema.ResponseSchema): - """StartCompShareInstance - 启动算力平台实例""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: StartULHostInstance - -启动处于关闭状态的UHost实例。 -""" - - -class StartULHostInstanceRequestSchema(schema.RequestSchema): - """StartULHostInstance - 启动处于关闭状态的UHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class StartULHostInstanceResponseSchema(schema.ResponseSchema): - """StartULHostInstance - 启动处于关闭状态的UHost实例。""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: StopCompShareInstance - -关闭算力平台实例 -""" - - -class StopCompShareInstanceRequestSchema(schema.RequestSchema): - """StopCompShareInstance - 关闭算力平台实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StopCompShareInstanceResponseSchema(schema.ResponseSchema): - """StopCompShareInstance - 关闭算力平台实例""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: StopULHostInstance - -指停止处于运行状态的ULHost实例 -""" - - -class StopULHostInstanceRequestSchema(schema.RequestSchema): - """StopULHostInstance - 指停止处于运行状态的ULHost实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class StopULHostInstanceResponseSchema(schema.ResponseSchema): - """StopULHostInstance - 指停止处于运行状态的ULHost实例""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: TerminateCompShareCustomImage - -删除算力平台自制镜像 -""" - - -class TerminateCompShareCustomImageRequestSchema(schema.RequestSchema): - """TerminateCompShareCustomImage - 删除算力平台自制镜像""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class TerminateCompShareCustomImageResponseSchema(schema.ResponseSchema): - """TerminateCompShareCustomImage - 删除算力平台自制镜像""" - - fields = {} - - -""" -API: TerminateCompShareInstance - -删除轻量算力共享平台虚机实例 -""" - - -class TerminateCompShareInstanceRequestSchema(schema.RequestSchema): - """TerminateCompShareInstance - 删除轻量算力共享平台虚机实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class TerminateCompShareInstanceResponseSchema(schema.ResponseSchema): - """TerminateCompShareInstance - 删除轻量算力共享平台虚机实例""" - - fields = { - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -""" -API: TerminateULHostInstance - -删除指定数据中心的ULHost实例。 -""" - - -class TerminateULHostInstanceRequestSchema(schema.RequestSchema): - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReleaseUDisk": fields.Bool(required=False, dump_to="ReleaseUDisk"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class TerminateULHostInstanceResponseSchema(schema.ResponseSchema): - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。""" - - fields = { - "InRecycle": fields.Str(required=True, load_from="InRecycle"), - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: UpdateCompShareImage - -编辑算力平台自制镜像信息 -""" - - -class UpdateCompShareImageRequestSchema(schema.RequestSchema): - """UpdateCompShareImage - 编辑算力平台自制镜像信息""" - - fields = { - "CompShareImageId": fields.Str( - required=True, dump_to="CompShareImageId" - ), - "Cover": fields.Str(required=False, dump_to="Cover"), - "Description": fields.Str(required=False, dump_to="Description"), - "Framework": fields.Str(required=False, dump_to="Framework"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Readme": fields.Str(required=False, dump_to="Readme"), - "Region": fields.Str(required=True, dump_to="Region"), - "Softwares": fields.Str(required=False, dump_to="Softwares"), - "Tags": fields.List(fields.Str()), - "Visibility": fields.Int(required=False, dump_to="Visibility"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpdateCompShareImageResponseSchema(schema.ResponseSchema): - """UpdateCompShareImage - 编辑算力平台自制镜像信息""" - - fields = {} - - -""" -API: UpdateCompShareStopScheduler - -更新实例定时关机时间,若不存在则新建此定时任务 -""" - - -class UpdateCompShareStopSchedulerRequestSchema(schema.RequestSchema): - """UpdateCompShareStopScheduler - 更新实例定时关机时间,若不存在则新建此定时任务""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "StopTime": fields.Int(required=True, dump_to="StopTime"), - "UHostId": fields.Str(required=True, dump_to="UHostId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class UpdateCompShareStopSchedulerResponseSchema(schema.ResponseSchema): - """UpdateCompShareStopScheduler - 更新实例定时关机时间,若不存在则新建此定时任务""" - - fields = {} - - -""" -API: UpdateCompShareTeam - -更改团队信息 -""" - - -class UpdateCompShareTeamRequestSchema(schema.RequestSchema): - """UpdateCompShareTeam - 更改团队信息""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class UpdateCompShareTeamResponseSchema(schema.ResponseSchema): - """UpdateCompShareTeam - 更改团队信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/ucompshare/schemas/models.py b/ucloud/services/ucompshare/schemas/models.py deleted file mode 100644 index 5cbd9758..00000000 --- a/ucloud/services/ucompshare/schemas/models.py +++ /dev/null @@ -1,764 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class CpuPlatformsSchema(schema.ResponseSchema): - """CpuPlatforms - CPU平台信息""" - - fields = { - "Amd": fields.List(fields.Str()), - "Ampere": fields.List(fields.Str()), - "Intel": fields.List(fields.Str()), - } - - -class BootDiskInfoSchema(schema.ResponseSchema): - """BootDiskInfo - 系统盘信息""" - - fields = { - "Features": fields.List(fields.Str()), - "InstantResize": fields.Bool(required=False, load_from="InstantResize"), - "MaximalSize": fields.Int(required=False, load_from="MaximalSize"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class DataDiskInfoSchema(schema.ResponseSchema): - """DataDiskInfo - 数据盘信息""" - - fields = { - "Features": fields.List(fields.Str()), - "MaximalSize": fields.Int(required=False, load_from="MaximalSize"), - "MinimalSize": fields.Int(required=False, load_from="MinimalSize"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class DisksSchema(schema.ResponseSchema): - """Disks - 磁盘信息""" - - fields = { - "BootDisk": fields.List(BootDiskInfoSchema()), - "DataDisk": fields.List(DataDiskInfoSchema()), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class CollectionSchema(schema.ResponseSchema): - """Collection - CPU和内存可支持的规格""" - - fields = { - "Cpu": fields.Int(required=False, load_from="Cpu"), - "Memory": fields.List(fields.Int()), - "MinimalCpuPlatform": fields.List(fields.Str()), - } - - -class MachineSizesSchema(schema.ResponseSchema): - """MachineSizes - GPU、CPU和内存信息""" - - fields = { - "Collection": fields.List(CollectionSchema()), - "Gpu": fields.Int(required=False, load_from="Gpu"), - } - - -class PerformanceSchema(schema.ResponseSchema): - """Performance - GPU的性能指标""" - - fields = { - "Rate": fields.Int(required=False, load_from="Rate"), - "Value": fields.Float(required=False, load_from="Value"), - } - - -class FeatureModesSchema(schema.ResponseSchema): - """FeatureModes - 可以支持的模式类别""" - - fields = { - "MinimalCpuPlatform": fields.List(fields.Str()), - "Name": fields.Str(required=False, load_from="Name"), - "RelatedToImageFeature": fields.List(fields.Str()), - } - - -class FeaturesSchema(schema.ResponseSchema): - """Features - 虚机可支持的特性""" - - fields = { - "Modes": fields.List(FeatureModesSchema()), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class GraphicsMemorySchema(schema.ResponseSchema): - """GraphicsMemory - GPU的显存指标""" - - fields = { - "Rate": fields.Int(required=False, load_from="Rate"), - "Value": fields.Int(required=False, load_from="Value"), - } - - -class AvailableInstanceTypesSchema(schema.ResponseSchema): - """AvailableInstanceTypes - https://ushare.ucloudadmin.com/pages/viewpage.action?pageId=104662646""" - - fields = { - "CpuPlatforms": CpuPlatformsSchema(), - "Disks": fields.List(DisksSchema()), - "Features": fields.List(FeaturesSchema()), - "GraphicsMemory": GraphicsMemorySchema(), - "InstanceType": fields.Str(required=True, load_from="InstanceType"), - "MachineClass": fields.Str(required=False, load_from="MachineClass"), - "MachineSizes": fields.List(MachineSizesSchema()), - "Name": fields.Str(required=False, load_from="Name"), - "ParentType": fields.Str(required=False, load_from="ParentType"), - "Performance": PerformanceSchema(), - "Status": fields.Str(required=False, load_from="Status"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class ProjectsSchema(schema.ResponseSchema): - """Projects - 项目详情""" - - fields = { - "AccountId": fields.Str(required=False, load_from="AccountId"), - "AccountName": fields.Str(required=False, load_from="AccountName"), - } - - -class SoftwareSchema(schema.ResponseSchema): - """Software -""" - - fields = { - "Applications": fields.List(fields.Str()), - "CUDAVersion": fields.Str(required=False, load_from="CUDAVersion"), - "Framework": fields.Str(required=False, load_from="Framework"), - "FrameworkVersion": fields.Str( - required=False, load_from="FrameworkVersion" - ), - } - - -class CompShareImageSchema(schema.ResponseSchema): - """CompShareImage - 算力共享平台镜像详情""" - - fields = { - "AuthInfo": fields.Int(required=False, load_from="AuthInfo"), - "Author": fields.Str(required=False, load_from="Author"), - "AutoStart": fields.Bool(required=False, load_from="AutoStart"), - "CompShareImageId": fields.Str( - required=False, load_from="CompShareImageId" - ), - "Container": fields.Str(required=False, load_from="Container"), - "Cover": fields.Str(required=False, load_from="Cover"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "CreatedCount": fields.Int(required=False, load_from="CreatedCount"), - "Description": fields.Str(required=False, load_from="Description"), - "FailedReason": fields.Str(required=False, load_from="FailedReason"), - "FavoritesCount": fields.Int( - required=False, load_from="FavoritesCount" - ), - "GroupId": fields.Str(required=False, load_from="GroupId"), - "ImageCharge": fields.Bool(required=False, load_from="ImageCharge"), - "ImageOwnerAlias": fields.Str( - required=False, load_from="ImageOwnerAlias" - ), - "ImageType": fields.Str(required=False, load_from="ImageType"), - "ImageUseTime": fields.Int(required=False, load_from="ImageUseTime"), - "IsOfficial": fields.Bool(required=False, load_from="IsOfficial"), - "Name": fields.Str(required=False, load_from="Name"), - "Owner": ProjectsSchema(), - "Price": fields.Float(required=False, load_from="Price"), - "PubTime": fields.Int(required=False, load_from="PubTime"), - "Readme": fields.Str(required=False, load_from="Readme"), - "Size": fields.Int(required=False, load_from="Size"), - "Softwares": SoftwareSchema(), - "SourceGpuType": fields.Str(required=False, load_from="SourceGpuType"), - "Status": fields.Str(required=False, load_from="Status"), - "Tags": fields.List(fields.Str()), - "VersionDesc": fields.Str(required=False, load_from="VersionDesc"), - "VersionName": fields.Str(required=False, load_from="VersionName"), - "Visibility": fields.Int(required=False, load_from="Visibility"), - } - - -class UHostIPSetSchema(schema.ResponseSchema): - """UHostIPSet -""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "Default": fields.Str(required=False, load_from="Default"), - "IP": fields.Str(required=False, load_from="IP"), - "IPId": fields.Str(required=False, load_from="IPId"), - "IPMode": fields.Str(required=True, load_from="IPMode"), - "Mac": fields.Str(required=False, load_from="Mac"), - "NetworkInterfaceId": fields.Str( - required=False, load_from="NetworkInterfaceId" - ), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Type": fields.Str(required=False, load_from="Type"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class GpuMonitorInfoSchema(schema.ResponseSchema): - """GpuMonitorInfo - GPU卡监控信息""" - - fields = { - "GPU": fields.Str(required=False, load_from="GPU"), - "GpuUsageRate": fields.Str(required=False, load_from="GpuUsageRate"), - "MemoryUsageRate": fields.Str( - required=False, load_from="MemoryUsageRate" - ), - } - - -class MonitorMessageSchema(schema.ResponseSchema): - """MonitorMessage - 监控信息""" - - fields = { - "CpuUsageRate": fields.Str(required=False, load_from="CpuUsageRate"), - "GpuInfo": fields.List(GpuMonitorInfoSchema()), - "MemUsageRate": fields.Str(required=False, load_from="MemUsageRate"), - } - - -class DiskPriceInfoSchema(schema.ResponseSchema): - """DiskPriceInfo - 磁盘价格信息列表""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "IsBoot": fields.Bool(required=False, load_from="IsBoot"), - "Price": fields.Float(required=False, load_from="Price"), - } - - -class WithoutGpuSpecSchema(schema.ResponseSchema): - """WithoutGpuSpec - 无卡云主机规格信息""" - - fields = { - "Cpu": fields.Int(required=False, load_from="Cpu"), - "Gpu": fields.Int(required=False, load_from="Gpu"), - "Memory": fields.Int(required=False, load_from="Memory"), - } - - -class SoftwareAddrSchema(schema.ResponseSchema): - """SoftwareAddr -""" - - fields = { - "Name": fields.Str(required=False, load_from="Name"), - "URL": fields.Str(required=False, load_from="URL"), - } - - -class UHostDiskSetSchema(schema.ResponseSchema): - """UHostDiskSet -""" - - fields = { - "BackupType": fields.Str( - required=False, load_from="BackupType" - ), # Deprecated, will be removed at 1.0 - "DiskId": fields.Str(required=False, load_from="DiskId"), - "DiskType": fields.Str(required=True, load_from="DiskType"), - "Drive": fields.Str(required=False, load_from="Drive"), - "Encrypted": fields.Str(required=False, load_from="Encrypted"), - "IsBoot": fields.Str(required=True, load_from="IsBoot"), - "Name": fields.Str(required=False, load_from="Name"), - "Size": fields.Int(required=False, load_from="Size"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class CompShareInstanceSetSchema(schema.ResponseSchema): - """CompShareInstanceSet - 算力平台实例详情""" - - fields = { - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "CPU": fields.Int(required=False, load_from="CPU"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CompShareImageBillId": fields.Str( - required=False, load_from="CompShareImageBillId" - ), - "CompShareImageId": fields.Str( - required=False, load_from="CompShareImageId" - ), - "CompShareImageName": fields.Str( - required=False, load_from="CompShareImageName" - ), - "CompShareImageOwnerAlias": fields.Str( - required=False, load_from="CompShareImageOwnerAlias" - ), - "CompShareImagePrice": fields.Float( - required=False, load_from="CompShareImagePrice" - ), - "CompShareImageStatus": fields.Str( - required=False, load_from="CompShareImageStatus" - ), - "CompShareImageType": fields.Str( - required=False, load_from="CompShareImageType" - ), - "CpuArch": fields.Str(required=False, load_from="CpuArch"), - "CpuPlatform": fields.Str(required=False, load_from="CpuPlatform"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DiscountType": fields.Int(required=False, load_from="DiscountType"), - "DiskPriceInfo": fields.List(DiskPriceInfoSchema()), - "DiskSet": fields.List(UHostDiskSetSchema()), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "GPU": fields.Int(required=False, load_from="GPU"), - "GpuType": fields.Str(required=False, load_from="GpuType"), - "GraphicsMemory": GraphicsMemorySchema(), - "HostIp": fields.Str( - required=False, load_from="HostIp" - ), # Deprecated, will be removed at 1.0 - "HugepageCfg": fields.Str( - required=False, load_from="HugepageCfg" - ), # Deprecated, will be removed at 1.0 - "IPSet": fields.List(UHostIPSetSchema()), - "InstancePrice": fields.Float( - required=False, load_from="InstancePrice" - ), - "InstanceType": fields.Str(required=False, load_from="InstanceType"), - "IsExpire": fields.Str(required=False, load_from="IsExpire"), - "MachineType": fields.Str(required=False, load_from="MachineType"), - "Memory": fields.Int(required=False, load_from="Memory"), - "MonitorMessages": MonitorMessageSchema(), - "Name": fields.Str(required=False, load_from="Name"), - "OsName": fields.Str(required=False, load_from="OsName"), - "OsType": fields.Str(required=False, load_from="OsType"), - "Password": fields.Str(required=False, load_from="Password"), - "PodId": fields.Str( - required=False, load_from="PodId" - ), # Deprecated, will be removed at 1.0 - "PostPayPowerOffBillingResource": fields.List(DiskPriceInfoSchema()), - "PostPayShutdown": fields.Bool( - required=False, load_from="PostPayShutdown" - ), # Deprecated, will be removed at 1.0 - "QemuFullVersion": fields.Str( - required=False, load_from="QemuFullVersion" - ), # Deprecated, will be removed at 1.0 - "QemuVersion": fields.Str( - required=False, load_from="QemuVersion" - ), # Deprecated, will be removed at 1.0 - "ReleaseTime": fields.Int(required=False, load_from="ReleaseTime"), - "Remark": fields.Str(required=False, load_from="Remark"), - "SetId": fields.Int( - required=False, load_from="SetId" - ), # Deprecated, will be removed at 1.0 - "Softwares": fields.List(SoftwareAddrSchema()), - "SshLoginCommand": fields.Str( - required=False, load_from="SshLoginCommand" - ), - "StartTime": fields.Int(required=False, load_from="StartTime"), - "State": fields.Str(required=False, load_from="State"), - "StopSchedulerTime": fields.Int( - required=False, load_from="StopSchedulerTime" - ), - "StopTime": fields.Int(required=False, load_from="StopTime"), - "SupportWithoutGpuStart": fields.Bool( - required=False, load_from="SupportWithoutGpuStart" - ), - "Tag": fields.Str(required=False, load_from="Tag"), - "TotalDiskSpace": fields.Int( - required=False, load_from="TotalDiskSpace" - ), - "UHostId": fields.Str(required=False, load_from="UHostId"), - "UUID": fields.Str( - required=False, load_from="UUID" - ), # Deprecated, will be removed at 1.0 - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - "WithoutGpuSpec": WithoutGpuSpecSchema(), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class SoftwarePortSchema(schema.ResponseSchema): - """SoftwarePort - 应用端口信息""" - - fields = { - "Port": fields.Int(required=False, load_from="Port"), - "Software": fields.Str(required=False, load_from="Software"), - } - - -class SupportZoneSchema(schema.ResponseSchema): - """SupportZone - compshare支持的可用区信息列表""" - - fields = { - "Describe": fields.Str(required=False, load_from="Describe"), - "Region": fields.Str(required=False, load_from="Region"), - "RegionId": fields.Int(required=False, load_from="RegionId"), - "Zone": fields.Str(required=False, load_from="Zone"), - "ZoneId": fields.Int(required=False, load_from="ZoneId"), - } - - -class ModelRepositoryModelSchema(schema.ResponseSchema): - """ModelRepositoryModel - 模型库模型信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Name": fields.Str(required=False, load_from="Name"), - "Path": fields.Str(required=False, load_from="Path"), - "Size": fields.Str(required=False, load_from="Size"), - "Tag": fields.Str(required=False, load_from="Tag"), - } - - -class CompshareImageGroupSchema(schema.ResponseSchema): - """CompshareImageGroup - 镜像组信息""" - - fields = { - "CreatedCount": fields.Int(required=False, load_from="CreatedCount"), - "Data": fields.List(CompShareImageSchema()), - "FavoritesCount": fields.Int( - required=False, load_from="FavoritesCount" - ), - "GroupId": fields.Str(required=False, load_from="GroupId"), - "ImageDesc": fields.Str(required=False, load_from="ImageDesc"), - "ImageName": fields.Str(required=False, load_from="ImageName"), - "ImageUseTime": fields.Int(required=False, load_from="ImageUseTime"), - "IsFavorite": fields.Bool(required=False, load_from="IsFavorite"), - "RecommendCount": fields.Int( - required=False, load_from="RecommendCount" - ), - "Status": fields.Str(required=False, load_from="Status"), - } - - -class ResourceTagItemSchema(schema.ResponseSchema): - """ResourceTagItem - 资源标识""" - - fields = { - "KeyId": fields.Str(required=False, load_from="KeyId"), - "Value": fields.Str(required=False, load_from="Value"), - } - - -class OrderDetailItemSchema(schema.ResponseSchema): - """OrderDetailItem - 配置详情""" - - fields = { - "ProductName": fields.Str(required=False, load_from="ProductName"), - "Value": fields.Str(required=False, load_from="Value"), - } - - -class OrderInfoSchema(schema.ResponseSchema): - """OrderInfo - 订单信息""" - - fields = { - "Amount": fields.Str(required=False, load_from="Amount"), - "AmountCoupon": fields.Str(required=False, load_from="AmountCoupon"), - "AmountFree": fields.Str(required=False, load_from="AmountFree"), - "AmountReal": fields.Str(required=False, load_from="AmountReal"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "Count": fields.Int(required=False, load_from="Count"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EndTime": fields.Int(required=False, load_from="EndTime"), - "OrderDetail": fields.List(OrderDetailItemSchema()), - "OrderDetailOld": fields.List(OrderDetailItemSchema()), - "OrderNo": fields.Str(required=False, load_from="OrderNo"), - "OrderState": fields.Str(required=False, load_from="OrderState"), - "OrderType": fields.Str(required=False, load_from="OrderType"), - "OriginalPrice": fields.Str(required=False, load_from="OriginalPrice"), - "ProjectName": fields.Str(required=False, load_from="ProjectName"), - "Quantity": fields.Str(required=False, load_from="Quantity"), - "RegionId": fields.Str(required=False, load_from="RegionId"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceTag": fields.List(ResourceTagItemSchema()), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "SpotDiscount": fields.Str(required=False, load_from="SpotDiscount"), - "StartTime": fields.Int(required=False, load_from="StartTime"), - "TradeNo": fields.Str(required=False, load_from="TradeNo"), - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - } - - -class UnpaidOrderDetailSchema(schema.ResponseSchema): - """UnpaidOrderDetail - 未支付订单详情""" - - fields = { - "BillItemId": fields.Str(required=False, load_from="BillItemId"), - "Multiple": fields.Int(required=False, load_from="Multiple"), - "ProductId": fields.Int(required=False, load_from="ProductId"), - "PurchaseValue": fields.Int(required=False, load_from="PurchaseValue"), - } - - -class UnpaidOrderInfoSchema(schema.ResponseSchema): - """UnpaidOrderInfo - 未支付订单信息""" - - fields = { - "Amount": fields.Int(required=False, load_from="Amount"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EndTime": fields.Int(required=False, load_from="EndTime"), - "OrderDetail": fields.List(UnpaidOrderDetailSchema()), - "OrderNo": fields.Str(required=False, load_from="OrderNo"), - "OrderState": fields.Str(required=False, load_from="OrderState"), - "OrderType": fields.Str(required=False, load_from="OrderType"), - "OriginalPrice": fields.Str(required=False, load_from="OriginalPrice"), - "Quantity": fields.Str(required=False, load_from="Quantity"), - "RegionId": fields.Str(required=False, load_from="RegionId"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "StartTime": fields.Int(required=False, load_from="StartTime"), - "TradeNo": fields.Str(required=False, load_from="TradeNo"), - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - } - - -class BundleSchema(schema.ResponseSchema): - """Bundle - 轻量应用云主机套餐""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BundleId": fields.Str(required=False, load_from="BundleId"), - "CPU": fields.Int(required=False, load_from="CPU"), - "Memory": fields.Int(required=False, load_from="Memory"), - "SysDiskSpace": fields.Int(required=False, load_from="SysDiskSpace"), - "TrafficPacket": fields.Int(required=False, load_from="TrafficPacket"), - } - - -class ULHostImageSetSchema(schema.ResponseSchema): - """ULHostImageSet - DescribeULHostImage""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "Features": fields.List(fields.Str()), - "ImageDescription": fields.Str( - required=False, load_from="ImageDescription" - ), - "ImageId": fields.Str(required=False, load_from="ImageId"), - "ImageLogoLink": fields.Str(required=False, load_from="ImageLogoLink"), - "ImageName": fields.Str(required=False, load_from="ImageName"), - "ImageSize": fields.Int(required=False, load_from="ImageSize"), - "ImageType": fields.Str(required=False, load_from="ImageType"), - "IntegratedSoftware": fields.Str( - required=False, load_from="IntegratedSoftware" - ), - "MaintainEol": fields.Str(required=False, load_from="MaintainEol"), - "MinimalCPU": fields.Str(required=False, load_from="MinimalCPU"), - "OsName": fields.Str(required=False, load_from="OsName"), - "OsType": fields.Str(required=False, load_from="OsType"), - "SceneCategories": fields.List(fields.Str()), - "State": fields.Str(required=False, load_from="State"), - "Tag": fields.Str(required=False, load_from="Tag"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class ULHostDiskSetSchema(schema.ResponseSchema): - """ULHostDiskSet - 轻量应用主机的磁盘信息""" - - fields = { - "DiskId": fields.Str(required=False, load_from="DiskId"), - "DiskType": fields.Str(required=False, load_from="DiskType"), - "Drive": fields.Str(required=False, load_from="Drive"), - "IsBoot": fields.Str(required=False, load_from="IsBoot"), - "Size": fields.Int(required=False, load_from="Size"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class ExclusiveUTPInfoSchema(schema.ResponseSchema): - """ExclusiveUTPInfo - 流量包详情""" - - fields = { - "AvailableSize": fields.Int(required=False, load_from="AvailableSize"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExcessSize": fields.Int(required=False, load_from="ExcessSize"), - "LastResetTime": fields.Int(required=False, load_from="LastResetTime"), - "NextResetTime": fields.Int(required=False, load_from="NextResetTime"), - "TotalSize": fields.Int(required=False, load_from="TotalSize"), - "UsedSize": fields.Int(required=False, load_from="UsedSize"), - } - - -class ULHostInstanceSetSchema(schema.ResponseSchema): - """ULHostInstanceSet - 轻量应用云主机详情""" - - fields = { - "Apps": fields.List(fields.Str()), - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "CPU": fields.Int(required=False, load_from="CPU"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DiskSet": fields.List(ULHostDiskSetSchema()), - "EIPExclusiveUTPInfo": ExclusiveUTPInfoSchema(), - "ExclusiveUTPInfo": ExclusiveUTPInfoSchema( - required=False, load_from="ExclusiveUTPInfo" - ), # Deprecated, will be removed at 1.0 - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "IPSet": fields.List(UHostIPSetSchema()), - "ImageId": fields.Str(required=False, load_from="ImageId"), - "ImageName": fields.Str(required=False, load_from="ImageName"), - "IsExpire": fields.Str(required=False, load_from="IsExpire"), - "Memory": fields.Int(required=False, load_from="Memory"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "State": fields.Str(required=False, load_from="State"), - "Tag": fields.Str(required=False, load_from="Tag"), - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class DiskUpgradePriceDetailSchema(schema.ResponseSchema): - """DiskUpgradePriceDetail -""" - - fields = { - "Snapshot": fields.Float(required=False, load_from="Snapshot"), - "UDisk": fields.Float(required=False, load_from="UDisk"), - } - - -class CompSharePriceDetailSchema(schema.ResponseSchema): - """CompSharePriceDetail - 算力平台实例询价详情""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CompShareImage": fields.Float( - required=False, load_from="CompShareImage" - ), - "Disks": fields.Float(required=False, load_from="Disks"), - "Instance": fields.Float(required=False, load_from="Instance"), - "InstanceDiscountType": fields.Int( - required=False, load_from="InstanceDiscountType" - ), - "ListPrice": fields.Str(required=False, load_from="ListPrice"), - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - } - - -class UHostRefundPriceSetSchema(schema.ResponseSchema): - """UHostRefundPriceSet - 删除退费详情""" - - fields = { - "Code": fields.Int(required=True, load_from="Code"), - "ErrMessage": fields.Str(required=False, load_from="ErrMessage"), - "RefundPrice": fields.Float(required=False, load_from="RefundPrice"), - "UHostId": fields.Str(required=True, load_from="UHostId"), - } - - -class CompShareTeamDetailInfoSchema(schema.ResponseSchema): - """CompShareTeamDetailInfo - 团队信息""" - - fields = { - "CompanyId": fields.Int(required=False, load_from="CompanyId"), - "Deleted": fields.Int(required=False, load_from="Deleted"), - "Description": fields.Str(required=False, load_from="Description"), - "Id": fields.Int(required=False, load_from="Id"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class TeamRelationSchema(schema.ResponseSchema): - """TeamRelation - 团队关系信息""" - - fields = { - "AllocateAmount": fields.Int( - required=False, load_from="AllocateAmount" - ), - "AvailableAmount": fields.Int( - required=False, load_from="AvailableAmount" - ), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "RemarkName": fields.Str(required=False, load_from="RemarkName"), - "Status": fields.Str(required=False, load_from="Status"), - "TeamId": fields.Int(required=False, load_from="TeamId"), - "TeamName": fields.Str(required=False, load_from="TeamName"), - "UserCompanyId": fields.Int(required=False, load_from="UserCompanyId"), - "VirtualCompanyId": fields.Int( - required=False, load_from="VirtualCompanyId" - ), - } - - -class OpenClawModelInfoSchema(schema.ResponseSchema): - """OpenClawModelInfo - OpenClaw 模型信息""" - - fields = { - "Id": fields.Str(required=False, load_from="Id"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class ULHostPriceSetSchema(schema.ResponseSchema): - """ULHostPriceSet - 轻量应用主机价格详情""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - "Price": fields.Float(required=False, load_from="Price"), - } - - -class CompShareTeamInfoSchema(schema.ResponseSchema): - """CompShareTeamInfo - 团队列表信息Detail""" - - fields = { - "CompanyId": fields.Int(required=False, load_from="CompanyId"), - "Description": fields.Str(required=False, load_from="Description"), - "Id": fields.Int(required=False, load_from="Id"), - "MemberCount": fields.Int(required=False, load_from="MemberCount"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class CompShareTeamInviteInfoSchema(schema.ResponseSchema): - """CompShareTeamInviteInfo - 邀请成员信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "RemarkName": fields.Str(required=False, load_from="RemarkName"), - "Status": fields.Str(required=False, load_from="Status"), - "TeamId": fields.Int(required=False, load_from="TeamId"), - "TeamName": fields.Str(required=False, load_from="TeamName"), - "UserCompanyId": fields.Int(required=False, load_from="UserCompanyId"), - "VirtualCompanyId": fields.Int( - required=False, load_from="VirtualCompanyId" - ), - } - - -class CompShareTeamJoinedInfoSchema(schema.ResponseSchema): - """CompShareTeamJoinedInfo - 加入成员信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "IsPersonalAccount": fields.Bool( - required=False, load_from="IsPersonalAccount" - ), - "RemarkName": fields.Str(required=False, load_from="RemarkName"), - "Status": fields.Str(required=False, load_from="Status"), - "TeamId": fields.Int(required=False, load_from="TeamId"), - "TeamName": fields.Str(required=False, load_from="TeamName"), - "UserCompanyId": fields.Int(required=False, load_from="UserCompanyId"), - "VirtualCompanyId": fields.Int( - required=False, load_from="VirtualCompanyId" - ), - } - - -class CompShareTeamOperateLogInfoSchema(schema.ResponseSchema): - """CompShareTeamOperateLogInfo - 算力团队操作日志信息""" - - fields = { - "Content": fields.Str(required=False, load_from="Content"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "OperateType": fields.Str(required=False, load_from="OperateType"), - "Status": fields.Str(required=False, load_from="Status"), - } diff --git a/ucloud/services/udbproxy/client.py b/ucloud/services/udbproxy/client.py deleted file mode 100644 index fa673b3e..00000000 --- a/ucloud/services/udbproxy/client.py +++ /dev/null @@ -1,67 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.udbproxy.schemas import apis - - -class UDBProxyClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UDBProxyClient, self).__init__( - config, transport, middleware, logger - ) - - def list_udb_proxy_client( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUDBProxyClient - 查询代理客户端连接IP信息(实时) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **UDBProxyID** (str) - (Required) 代理ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **NodeClientInfos** (list) - 见 **NodeClientInfo** 模型定义 - - **UDBProxyID** (str) - 代理ID - - **Response Model** - - **NodeClientInfo** - - **ID** (str) - 代理节点ID - - **IP** (str) - 代理节点IP - - **Records** (list) - 见 **ProxyProcesslist** 模型定义 - - - **ProxyProcesslist** - - **ClientHost** (str) - 代理连接DB地址 - - **Command** (str) - 显示当前连接的执行的命令 - - **DB** (str) - 当前执行的命令是在哪一个数据库上。如果没有指定数据库,则该值为 NULL - - **DBID** (str) - 数据库资源ID - - **Host** (str) - 代理连接DB地址 - - **ID** (int) - 当前连接DB进程ID - - **Info** (str) - 一般记录的是线程执行的语句 - - **Role** (str) - 数据库角色(主库/从库) - - **State** (str) - 线程的状态,和 Command 对应 - - **Time** (int) - 表示该线程处于当前状态的时间 - - **User** (str) - 启动这个线程的用户 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUDBProxyClientRequestSchema().dumps(d) - - resp = self.invoke("ListUDBProxyClient", d, **kwargs) - return apis.ListUDBProxyClientResponseSchema().loads(resp) diff --git a/ucloud/services/udbproxy/schemas/apis.py b/ucloud/services/udbproxy/schemas/apis.py deleted file mode 100644 index 6eb145cc..00000000 --- a/ucloud/services/udbproxy/schemas/apis.py +++ /dev/null @@ -1,38 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.udbproxy.schemas import models - -""" UDBProxy API Schema -""" - - -""" -API: ListUDBProxyClient - -查询代理客户端连接IP信息(实时) -""" - - -class ListUDBProxyClientRequestSchema(schema.RequestSchema): - """ListUDBProxyClient - 查询代理客户端连接IP信息(实时)""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "UDBProxyID": fields.Str(required=True, dump_to="UDBProxyID"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUDBProxyClientResponseSchema(schema.ResponseSchema): - """ListUDBProxyClient - 查询代理客户端连接IP信息(实时)""" - - fields = { - "NodeClientInfos": fields.List( - models.NodeClientInfoSchema(), - required=True, - load_from="NodeClientInfos", - ), - "UDBProxyID": fields.Str(required=True, load_from="UDBProxyID"), - } diff --git a/ucloud/services/udbproxy/schemas/models.py b/ucloud/services/udbproxy/schemas/models.py deleted file mode 100644 index a3d79e87..00000000 --- a/ucloud/services/udbproxy/schemas/models.py +++ /dev/null @@ -1,31 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class ProxyProcesslistSchema(schema.ResponseSchema): - """ProxyProcesslist - 连接代理信息""" - - fields = { - "ClientHost": fields.Str(required=True, load_from="ClientHost"), - "Command": fields.Str(required=True, load_from="Command"), - "DB": fields.Str(required=True, load_from="DB"), - "DBID": fields.Str(required=True, load_from="DBID"), - "Host": fields.Str(required=True, load_from="Host"), - "ID": fields.Int(required=True, load_from="ID"), - "Info": fields.Str(required=True, load_from="Info"), - "Role": fields.Str(required=True, load_from="Role"), - "State": fields.Str(required=True, load_from="State"), - "Time": fields.Int(required=True, load_from="Time"), - "User": fields.Str(required=True, load_from="User"), - } - - -class NodeClientInfoSchema(schema.ResponseSchema): - """NodeClientInfo - 代理节点来源IP信息""" - - fields = { - "ID": fields.Str(required=False, load_from="ID"), - "IP": fields.Str(required=False, load_from="IP"), - "Records": fields.List(ProxyProcesslistSchema()), - } diff --git a/ucloud/services/udi/client.py b/ucloud/services/udi/client.py deleted file mode 100644 index bc236f06..00000000 --- a/ucloud/services/udi/client.py +++ /dev/null @@ -1,250 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.udi.schemas import apis - - -class UDIClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UDIClient, self).__init__(config, transport, middleware, logger) - - def create_function_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateFunctionTemplate - 创建功能参数模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ContainerFormat** (str) - (Required) 文件输出格式 - - **EncodeFormat** (str) - (Required) 编码格式 - - **Function** (str) - (Required) 功能名称 - - **ProjectName** (str) - (Required) 项目名称 - - **TemplateName** (str) - (Required) 模板名称 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **AudioBitRate** (str) - 音频比特率 - - **AudioBitRateCustom** (str) - 自定义音频比特率 - - **AudioChannel** (str) - 音频声道 - - **AudioSampleRate** (str) - 音频采样率 - - **CRF** (str) - CRF压缩率 - - **CRFCustom** (str) - 自定义CRF压缩率 - - **FrameRate** (str) - 帧率 - - **FrameRateCustom** (str) - 自定义帧率 - - **Resolution** (str) - 分辨率 - - **ResolutionHeight** (str) - 分辨率高 - - **ResolutionWidth** (str) - 分辨率宽 - - **VideoBitRate** (str) - 视频比特率 - - **VideoBitRateCustom** (str) - 自定义视频比特率 - - **Response** - - - **TemplateId** (str) - 创建的模板ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateFunctionTemplateRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateFunctionTemplate", d, **kwargs) - return apis.CreateFunctionTemplateResponseSchema().loads(resp) - - def create_media_task( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateMediaTask - 创建一个多媒体任务 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Bucket** (str) - (Required) Bucket名称 - - **DstKey** (str) - (Required) 目标生成文件 - - **Function** (str) - (Required) 功能名称:例VideoTranscode - - **FunctionParamTemplateId** (str) - (Required) 功能的参数模板ID,需要事先创建模板才可用,也可以使用预设模板,详细可通过DescribeFunctionTemplate接口查询 - - **SrcKey** (str) - (Required) 源文件 - - **StorageBackend** (str) - (Required) 存储源 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **TaskId** (str) - 任务ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateMediaTaskRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateMediaTask", d, **kwargs) - return apis.CreateMediaTaskResponseSchema().loads(resp) - - def delete_function_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteFunctionTemplate - 删除功能模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TemplateId** (str) - (Required) 要删除的模板ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteFunctionTemplateRequestSchema().dumps(d) - - resp = self.invoke("DeleteFunctionTemplate", d, **kwargs) - return apis.DeleteFunctionTemplateResponseSchema().loads(resp) - - def describe_function_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeFunctionTemplate - 获取功能模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Type** (str) - 功能模板类型:预设(preset)自定义(custom),为空则获取两种类型 - - **Response** - - - **Templates** (list) - 见 **FunctionTemplate** 模型定义 - - **Response Model** - - **FunctionTemplate** - - **FunctionName** (str) - - - **Id** (str) - - - **Name** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeFunctionTemplateRequestSchema().dumps(d) - - resp = self.invoke("DescribeFunctionTemplate", d, **kwargs) - return apis.DescribeFunctionTemplateResponseSchema().loads(resp) - - def describe_media_functions( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeMediaFunctions - 描述当前支持的多媒体功能以及对应功能需要的参数信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Function** (str) - 要查询的Function名称,为空则返回所有支持的Function - - **Response** - - - **Functions** (list) - 见 **Function** 模型定义 - - **Response Model** - - **Function** - - **DisplayName** (str) - - - **FunctionName** (str) - - - **InputType** (str) - - - **OutputType** (str) - - - **SupportParams** (list) - 见 **ParamOption** 模型定义 - - - **ParamOption** - - **DisplayName** (str) - - - **OptionalValues** (list) - - - **ParamName** (str) - - - **Required** (bool) - - - **WhenValueCustom** (list) - 见 **ParamCustom** 模型定义 - - - **ParamCustom** - - **Max** (int) - - - **Min** (int) - - - **ParamName** (str) - - - **ParamType** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeMediaFunctionsRequestSchema().dumps(d) - - resp = self.invoke("DescribeMediaFunctions", d, **kwargs) - return apis.DescribeMediaFunctionsResponseSchema().loads(resp) - - def describe_media_task( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeMediaTask - 查询任务状态 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **TaskId** (str) - 要查询的任务ID,为空则查询所有 - - **Response** - - - **Tasks** (list) - 见 **MediaTask** 模型定义 - - **Response Model** - - **MediaTask** - - **Function** (str) - - - **Id** (str) - - - **Status** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeMediaTaskRequestSchema().dumps(d) - - resp = self.invoke("DescribeMediaTask", d, **kwargs) - return apis.DescribeMediaTaskResponseSchema().loads(resp) diff --git a/ucloud/services/udi/schemas/apis.py b/ucloud/services/udi/schemas/apis.py deleted file mode 100644 index 26db4c18..00000000 --- a/ucloud/services/udi/schemas/apis.py +++ /dev/null @@ -1,205 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.udi.schemas import models - -""" UDI API Schema -""" - - -""" -API: CreateFunctionTemplate - -创建功能参数模板 -""" - - -class CreateFunctionTemplateRequestSchema(schema.RequestSchema): - """CreateFunctionTemplate - 创建功能参数模板""" - - fields = { - "AudioBitRate": fields.Str(required=False, dump_to="AudioBitRate"), - "AudioBitRateCustom": fields.Str( - required=False, dump_to="AudioBitRateCustom" - ), - "AudioChannel": fields.Str(required=False, dump_to="AudioChannel"), - "AudioSampleRate": fields.Str( - required=False, dump_to="AudioSampleRate" - ), - "CRF": fields.Str(required=False, dump_to="CRF"), - "CRFCustom": fields.Str(required=False, dump_to="CRFCustom"), - "ContainerFormat": fields.Str(required=True, dump_to="ContainerFormat"), - "EncodeFormat": fields.Str(required=True, dump_to="EncodeFormat"), - "FrameRate": fields.Str(required=False, dump_to="FrameRate"), - "FrameRateCustom": fields.Str( - required=False, dump_to="FrameRateCustom" - ), - "Function": fields.Str(required=True, dump_to="Function"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ProjectName": fields.Str(required=True, dump_to="ProjectName"), - "Region": fields.Str(required=True, dump_to="Region"), - "Resolution": fields.Str(required=False, dump_to="Resolution"), - "ResolutionHeight": fields.Str( - required=False, dump_to="ResolutionHeight" - ), - "ResolutionWidth": fields.Str( - required=False, dump_to="ResolutionWidth" - ), - "TemplateName": fields.Str(required=True, dump_to="TemplateName"), - "VideoBitRate": fields.Str(required=False, dump_to="VideoBitRate"), - "VideoBitRateCustom": fields.Str( - required=False, dump_to="VideoBitRateCustom" - ), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateFunctionTemplateResponseSchema(schema.ResponseSchema): - """CreateFunctionTemplate - 创建功能参数模板""" - - fields = { - "TemplateId": fields.Str(required=True, load_from="TemplateId"), - } - - -""" -API: CreateMediaTask - -创建一个多媒体任务 -""" - - -class CreateMediaTaskRequestSchema(schema.RequestSchema): - """CreateMediaTask - 创建一个多媒体任务""" - - fields = { - "Bucket": fields.Str(required=True, dump_to="Bucket"), - "DstKey": fields.Str(required=True, dump_to="DstKey"), - "Function": fields.Str(required=True, dump_to="Function"), - "FunctionParamTemplateId": fields.Str( - required=True, dump_to="FunctionParamTemplateId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SrcKey": fields.Str(required=True, dump_to="SrcKey"), - "StorageBackend": fields.Str(required=True, dump_to="StorageBackend"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateMediaTaskResponseSchema(schema.ResponseSchema): - """CreateMediaTask - 创建一个多媒体任务""" - - fields = { - "TaskId": fields.Str(required=False, load_from="TaskId"), - } - - -""" -API: DeleteFunctionTemplate - -删除功能模板 -""" - - -class DeleteFunctionTemplateRequestSchema(schema.RequestSchema): - """DeleteFunctionTemplate - 删除功能模板""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TemplateId": fields.Str(required=True, dump_to="TemplateId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteFunctionTemplateResponseSchema(schema.ResponseSchema): - """DeleteFunctionTemplate - 删除功能模板""" - - fields = {} - - -""" -API: DescribeFunctionTemplate - -获取功能模板 -""" - - -class DescribeFunctionTemplateRequestSchema(schema.RequestSchema): - """DescribeFunctionTemplate - 获取功能模板""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Type": fields.Str(required=False, dump_to="Type"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeFunctionTemplateResponseSchema(schema.ResponseSchema): - """DescribeFunctionTemplate - 获取功能模板""" - - fields = { - "Templates": fields.List( - models.FunctionTemplateSchema(), - required=False, - load_from="Templates", - ), - } - - -""" -API: DescribeMediaFunctions - -描述当前支持的多媒体功能以及对应功能需要的参数信息 -""" - - -class DescribeMediaFunctionsRequestSchema(schema.RequestSchema): - """DescribeMediaFunctions - 描述当前支持的多媒体功能以及对应功能需要的参数信息""" - - fields = { - "Function": fields.Str(required=False, dump_to="Function"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeMediaFunctionsResponseSchema(schema.ResponseSchema): - """DescribeMediaFunctions - 描述当前支持的多媒体功能以及对应功能需要的参数信息""" - - fields = { - "Functions": fields.List( - models.FunctionSchema(), required=False, load_from="Functions" - ), - } - - -""" -API: DescribeMediaTask - -查询任务状态 -""" - - -class DescribeMediaTaskRequestSchema(schema.RequestSchema): - """DescribeMediaTask - 查询任务状态""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TaskId": fields.Str(required=False, dump_to="TaskId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeMediaTaskResponseSchema(schema.ResponseSchema): - """DescribeMediaTask - 查询任务状态""" - - fields = { - "Tasks": fields.List( - models.MediaTaskSchema(), required=False, load_from="Tasks" - ), - } diff --git a/ucloud/services/udi/schemas/models.py b/ucloud/services/udi/schemas/models.py deleted file mode 100644 index 84e49c91..00000000 --- a/ucloud/services/udi/schemas/models.py +++ /dev/null @@ -1,58 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class FunctionTemplateSchema(schema.ResponseSchema): - """FunctionTemplate -""" - - fields = { - "FunctionName": fields.Str(required=False, load_from="FunctionName"), - "Id": fields.Str(required=False, load_from="Id"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class ParamCustomSchema(schema.ResponseSchema): - """ParamCustom -""" - - fields = { - "Max": fields.Int(required=False, load_from="Max"), - "Min": fields.Int(required=False, load_from="Min"), - "ParamName": fields.Str(required=False, load_from="ParamName"), - "ParamType": fields.Str(required=False, load_from="ParamType"), - } - - -class ParamOptionSchema(schema.ResponseSchema): - """ParamOption -""" - - fields = { - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "OptionalValues": fields.List(fields.Str()), - "ParamName": fields.Str(required=False, load_from="ParamName"), - "Required": fields.Bool(required=False, load_from="Required"), - "WhenValueCustom": fields.List(ParamCustomSchema()), - } - - -class FunctionSchema(schema.ResponseSchema): - """Function -""" - - fields = { - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "FunctionName": fields.Str(required=False, load_from="FunctionName"), - "InputType": fields.Str(required=False, load_from="InputType"), - "OutputType": fields.Str(required=False, load_from="OutputType"), - "SupportParams": fields.List(ParamOptionSchema()), - } - - -class MediaTaskSchema(schema.ResponseSchema): - """MediaTask -""" - - fields = { - "Function": fields.Str(required=False, load_from="Function"), - "Id": fields.Str(required=False, load_from="Id"), - "Status": fields.Str(required=False, load_from="Status"), - } diff --git a/ucloud/services/udns/client.py b/ucloud/services/udns/client.py deleted file mode 100644 index f5b14842..00000000 --- a/ucloud/services/udns/client.py +++ /dev/null @@ -1,385 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.udns.schemas import apis - - -class UDNSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UDNSClient, self).__init__(config, transport, middleware, logger) - - def associate_udns_zone_vpc( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AssociateUDNSZoneVPC - 绑定域名与VPC - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **VPCId** (str) - (Required) VPC资源ID - - **VPCProjectId** (str) - (Required) VPC所属项目ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AssociateUDNSZoneVPCRequestSchema().dumps(d) - - resp = self.invoke("AssociateUDNSZoneVPC", d, **kwargs) - return apis.AssociateUDNSZoneVPCResponseSchema().loads(resp) - - def create_udns_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUDNSRecord - 创建域名记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **Name** (str) - (Required) 主机记录 - - **Type** (str) - (Required) 记录类型。枚举值,“A”,"CNAME","MX","AAAA","SRV","PTR","TXT"。 - - **Value** (str) - (Required) 数值组,支持逗号分割。格式为:Value|权重|IsEnabled,其中权重支持1-10,IsEnabled为枚举值(1为启用,0为禁用)。输入格式示例:192.168.1.1|1|1,192.168.1.2|10|0。 - - **ValueType** (str) - (Required) 值类型。枚举值,“Normal”,标准;“Multivalue”,多值返回。仅在值为“Multivalue”时,Value的权重生效。 - - **Remark** (str) - 记录的备注信息 - - **TTL** (int) - TTL值,范围为5-600,单位为秒。默认为5 - - **Response** - - - **DNSRecordId** (str) - 域名记录的资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUDNSRecordRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUDNSRecord", d, **kwargs) - return apis.CreateUDNSRecordResponseSchema().loads(resp) - - def create_udns_zone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUDNSZone - 创建域名 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneName** (str) - (Required) 域名字符串 - - **Type** (str) - (Required) 域名类型。枚举值,“private”,内网DNS;“public”,公网DNS,暂只支持private。 - - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按需付费,默认为按月付费 - - **CouponId** (str) - 代金券ID,默认不使用 - - **IsRecursionEnabled** (str) - 是否支持迭代。枚举值,"enable",支持迭代; "disable",不支持迭代 - - **Quantity** (int) - 购买时长,默认为1 - - **Remark** (str) - 备注 - - **Tag** (str) - 所属业务组名称 - - **Response** - - - **DNSZoneId** (str) - 域名资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUDNSZoneRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUDNSZone", d, **kwargs) - return apis.CreateUDNSZoneResponseSchema().loads(resp) - - def delete_udns_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUDNSRecord - 删除域名记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **RecordIds** (list) - (Required) 域名记录资源ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUDNSRecordRequestSchema().dumps(d) - - resp = self.invoke("DeleteUDNSRecord", d, **kwargs) - return apis.DeleteUDNSRecordResponseSchema().loads(resp) - - def describe_udns_domain( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUDNSDomain - zone下所有域名的rr记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneName** (str) - (Required) zone名称 - - **VPCId** (str) - (Required) VPI资源ID - - **Limit** (int) - 返回数量 - - **Offset** (int) - 查询数量偏移 - - **Response** - - - **RecordInfos** (list) - 见 **RecordInfo** 模型定义 - - **TotalCount** (int) - 总条数 - - **Response Model** - - **ValueSet** - - **Data** (str) - 主机记录 - - **IsEnabled** (int) - 是否启用 - - **Weight** (int) - 权重 - - - **RecordInfo** - - **Name** (str) - 主机记录 - - **RecordId** (str) - 域名记录资源ID - - **Remark** (str) - 记录备注信息 - - **TTL** (int) - TTL值,单位为秒 - - **Type** (str) - 记录类型 - - **ValueSet** (list) - 见 **ValueSet** 模型定义 - - **ValueType** (str) - 记录策略,标准或随机应答 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUDNSDomainRequestSchema().dumps(d) - - resp = self.invoke("DescribeUDNSDomain", d, **kwargs) - return apis.DescribeUDNSDomainResponseSchema().loads(resp) - - def describe_udns_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUDNSRecord - 获取域名记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **Limit** (int) - 数据分页值, 默认为20 - - **Offset** (int) - 数据偏移量, 默认为0 - - **Query** (str) - 模糊查询记录 - - **RecordIds** (list) - 域名记录资源ID - - **SortDir** (str) - 排序方式,支持asc desc - - **SortKey** (str) - 排序字段,只支持host update_time - - **Response** - - - **RecordInfos** (list) - 见 **RecordInfo** 模型定义 - - **TotalCount** (int) - 资源数量 - - **Response Model** - - **ValueSet** - - **Data** (str) - 主机记录 - - **IsEnabled** (int) - 是否启用 - - **Weight** (int) - 权重 - - - **RecordInfo** - - **Name** (str) - 主机记录 - - **RecordId** (str) - 域名记录资源ID - - **Remark** (str) - 记录备注信息 - - **TTL** (int) - TTL值,单位为秒 - - **Type** (str) - 记录类型 - - **ValueSet** (list) - 见 **ValueSet** 模型定义 - - **ValueType** (str) - 记录策略,标准或随机应答 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUDNSRecordRequestSchema().dumps(d) - - resp = self.invoke("DescribeUDNSRecord", d, **kwargs) - return apis.DescribeUDNSRecordResponseSchema().loads(resp) - - def describe_udns_zone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUDNSZone - 获取域名信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneIds** (list) - 域名资源ID - - **Limit** (int) - 数据分页值, 默认为20 - - **Offset** (int) - 数据偏移量, 默认为0 - - **Response** - - - **DNSZoneInfos** (list) - 见 **ZoneInfo** 模型定义 - - **TotalCount** (int) - 符合查询条件的域名数量 - - **Response Model** - - **VPCInfo** - - **Name** (str) - VPC名称 - - **Network** (list) - VPC地址空间 - - **VPCId** (str) - VPC ID - - **VPCProjectId** (str) - VPC所属项目ID - - **VPCType** (str) - VPC类型:Normal 公有云 Hybrid 托管云 - - - **ZoneInfo** - - **ChargeType** (str) - 计费类型(Dynamic、Month、Year) - - **CreateTime** (int) - 创建时间 - - **DNSZoneId** (str) - UDNS私有域名 Zone ID - - **DNSZoneName** (str) - 域名名称 - - **ExpireTime** (int) - 过期时间 - - **IsAutoRenew** (str) - 是否开启自动续费(Yes No) - - **IsRecursionEnabled** (str) - 是否支持迭代。枚举值,"enable",支持迭代; "disable",不支持迭代 - - **RecordInfos** (list) - 记录相关ID - - **Remark** (str) - 备注 - - **Tag** (str) - 业务组 - - **VPCInfos** (list) - 见 **VPCInfo** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUDNSZoneRequestSchema().dumps(d) - - resp = self.invoke("DescribeUDNSZone", d, **kwargs) - return apis.DescribeUDNSZoneResponseSchema().loads(resp) - - def disassociate_udns_zone_vpc( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DisassociateUDNSZoneVPC - 解绑域名和VPC - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **VPCId** (str) - (Required) VPC资源ID - - **VPCProjectId** (str) - (Required) VPC所属项目ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DisassociateUDNSZoneVPCRequestSchema().dumps(d) - - resp = self.invoke("DisassociateUDNSZoneVPC", d, **kwargs) - return apis.DisassociateUDNSZoneVPCResponseSchema().loads(resp) - - def modify_udns_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUDNSRecord - 修改域名记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **RecordId** (str) - (Required) 域名记录资源ID - - **Remark** (str) - 记录的备注信息 - - **TTL** (int) - TTL值,单位为秒 - - **Type** (str) - 记录类型。枚举值,“A”,"CNAME","MX","AAAA","SRV","PTR","TXT"。 - - **Value** (str) - 数值组,支持逗号分割。格式为:Value|权重|Enable,其中权重支持1-10,Enable为枚举值(1为启用,0为禁用)。输入格式示例:192.168.1.1|1|1,192.168.1.2|10|0。 - - **ValueType** (str) - 值类型。枚举值,“Normal”,标准;“Multivalue”,多值返回。仅在值为“Multivalue”时,Value的权重生效。 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUDNSRecordRequestSchema().dumps(d) - - resp = self.invoke("ModifyUDNSRecord", d, **kwargs) - return apis.ModifyUDNSRecordResponseSchema().loads(resp) - - def modify_udns_zone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUDNSZone - 修改域名备注/递归查询状态 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DNSZoneId** (str) - (Required) 域名资源ID - - **IsRecursionEnabled** (str) - 是否支持迭代。枚举值,"enable",支持迭代; "disable",不支持迭代 - - **Remark** (str) - 备注 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUDNSZoneRequestSchema().dumps(d) - - resp = self.invoke("ModifyUDNSZone", d, **kwargs) - return apis.ModifyUDNSZoneResponseSchema().loads(resp) diff --git a/ucloud/services/udns/schemas/apis.py b/ucloud/services/udns/schemas/apis.py deleted file mode 100644 index 1436d21c..00000000 --- a/ucloud/services/udns/schemas/apis.py +++ /dev/null @@ -1,297 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.udns.schemas import models - -""" UDNS API Schema -""" - - -""" -API: AssociateUDNSZoneVPC - -绑定域名与VPC -""" - - -class AssociateUDNSZoneVPCRequestSchema(schema.RequestSchema): - """AssociateUDNSZoneVPC - 绑定域名与VPC""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "VPCProjectId": fields.Str(required=True, dump_to="VPCProjectId"), - } - - -class AssociateUDNSZoneVPCResponseSchema(schema.ResponseSchema): - """AssociateUDNSZoneVPC - 绑定域名与VPC""" - - fields = {} - - -""" -API: CreateUDNSRecord - -创建域名记录 -""" - - -class CreateUDNSRecordRequestSchema(schema.RequestSchema): - """CreateUDNSRecord - 创建域名记录""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "TTL": fields.Int(required=False, dump_to="TTL"), - "Type": fields.Str(required=True, dump_to="Type"), - "Value": fields.Str(required=True, dump_to="Value"), - "ValueType": fields.Str(required=True, dump_to="ValueType"), - } - - -class CreateUDNSRecordResponseSchema(schema.ResponseSchema): - """CreateUDNSRecord - 创建域名记录""" - - fields = { - "DNSRecordId": fields.Str(required=True, load_from="DNSRecordId"), - } - - -""" -API: CreateUDNSZone - -创建域名 -""" - - -class CreateUDNSZoneRequestSchema(schema.RequestSchema): - """CreateUDNSZone - 创建域名""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "DNSZoneName": fields.Str(required=True, dump_to="DNSZoneName"), - "IsRecursionEnabled": fields.Str( - required=False, dump_to="IsRecursionEnabled" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class CreateUDNSZoneResponseSchema(schema.ResponseSchema): - """CreateUDNSZone - 创建域名""" - - fields = { - "DNSZoneId": fields.Str(required=True, load_from="DNSZoneId"), - } - - -""" -API: DeleteUDNSRecord - -删除域名记录 -""" - - -class DeleteUDNSRecordRequestSchema(schema.RequestSchema): - """DeleteUDNSRecord - 删除域名记录""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "RecordIds": fields.List(fields.Str()), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteUDNSRecordResponseSchema(schema.ResponseSchema): - """DeleteUDNSRecord - 删除域名记录""" - - fields = {} - - -""" -API: DescribeUDNSDomain - -zone下所有域名的rr记录 -""" - - -class DescribeUDNSDomainRequestSchema(schema.RequestSchema): - """DescribeUDNSDomain - zone下所有域名的rr记录""" - - fields = { - "DNSZoneName": fields.Str(required=True, dump_to="DNSZoneName"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - } - - -class DescribeUDNSDomainResponseSchema(schema.ResponseSchema): - """DescribeUDNSDomain - zone下所有域名的rr记录""" - - fields = { - "RecordInfos": fields.List( - models.RecordInfoSchema(), required=True, load_from="RecordInfos" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUDNSRecord - -获取域名记录 -""" - - -class DescribeUDNSRecordRequestSchema(schema.RequestSchema): - """DescribeUDNSRecord - 获取域名记录""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Query": fields.Str(required=False, dump_to="Query"), - "RecordIds": fields.List(fields.Str()), - "Region": fields.Str(required=True, dump_to="Region"), - "SortDir": fields.Str(required=False, dump_to="SortDir"), - "SortKey": fields.Str(required=False, dump_to="SortKey"), - } - - -class DescribeUDNSRecordResponseSchema(schema.ResponseSchema): - """DescribeUDNSRecord - 获取域名记录""" - - fields = { - "RecordInfos": fields.List( - models.RecordInfoSchema(), required=False, load_from="RecordInfos" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUDNSZone - -获取域名信息 -""" - - -class DescribeUDNSZoneRequestSchema(schema.RequestSchema): - """DescribeUDNSZone - 获取域名信息""" - - fields = { - "DNSZoneIds": fields.List(fields.Str()), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeUDNSZoneResponseSchema(schema.ResponseSchema): - """DescribeUDNSZone - 获取域名信息""" - - fields = { - "DNSZoneInfos": fields.List( - models.ZoneInfoSchema(), required=False, load_from="DNSZoneInfos" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DisassociateUDNSZoneVPC - -解绑域名和VPC -""" - - -class DisassociateUDNSZoneVPCRequestSchema(schema.RequestSchema): - """DisassociateUDNSZoneVPC - 解绑域名和VPC""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "VPCProjectId": fields.Str(required=True, dump_to="VPCProjectId"), - } - - -class DisassociateUDNSZoneVPCResponseSchema(schema.ResponseSchema): - """DisassociateUDNSZoneVPC - 解绑域名和VPC""" - - fields = {} - - -""" -API: ModifyUDNSRecord - -修改域名记录 -""" - - -class ModifyUDNSRecordRequestSchema(schema.RequestSchema): - """ModifyUDNSRecord - 修改域名记录""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "RecordId": fields.Str(required=True, dump_to="RecordId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "TTL": fields.Int(required=False, dump_to="TTL"), - "Type": fields.Str(required=False, dump_to="Type"), - "Value": fields.Str(required=False, dump_to="Value"), - "ValueType": fields.Str(required=False, dump_to="ValueType"), - } - - -class ModifyUDNSRecordResponseSchema(schema.ResponseSchema): - """ModifyUDNSRecord - 修改域名记录""" - - fields = {} - - -""" -API: ModifyUDNSZone - -修改域名备注/递归查询状态 -""" - - -class ModifyUDNSZoneRequestSchema(schema.RequestSchema): - """ModifyUDNSZone - 修改域名备注/递归查询状态""" - - fields = { - "DNSZoneId": fields.Str(required=True, dump_to="DNSZoneId"), - "IsRecursionEnabled": fields.Str( - required=False, dump_to="IsRecursionEnabled" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - } - - -class ModifyUDNSZoneResponseSchema(schema.ResponseSchema): - """ModifyUDNSZone - 修改域名备注/递归查询状态""" - - fields = {} diff --git a/ucloud/services/udns/schemas/models.py b/ucloud/services/udns/schemas/models.py deleted file mode 100644 index a06de6fd..00000000 --- a/ucloud/services/udns/schemas/models.py +++ /dev/null @@ -1,59 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class ValueSetSchema(schema.ResponseSchema): - """ValueSet - RecordInfos""" - - fields = { - "Data": fields.Str(required=True, load_from="Data"), - "IsEnabled": fields.Int(required=True, load_from="IsEnabled"), - "Weight": fields.Int(required=True, load_from="Weight"), - } - - -class RecordInfoSchema(schema.ResponseSchema): - """RecordInfo - DescribeUDNSRecord""" - - fields = { - "Name": fields.Str(required=True, load_from="Name"), - "RecordId": fields.Str(required=True, load_from="RecordId"), - "Remark": fields.Str(required=True, load_from="Remark"), - "TTL": fields.Int(required=True, load_from="TTL"), - "Type": fields.Str(required=True, load_from="Type"), - "ValueSet": fields.List(ValueSetSchema()), - "ValueType": fields.Str(required=True, load_from="ValueType"), - } - - -class VPCInfoSchema(schema.ResponseSchema): - """VPCInfo - ZoneInfo""" - - fields = { - "Name": fields.Str(required=False, load_from="Name"), - "Network": fields.List(fields.Str()), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "VPCProjectId": fields.Str(required=False, load_from="VPCProjectId"), - "VPCType": fields.Str(required=False, load_from="VPCType"), - } - - -class ZoneInfoSchema(schema.ResponseSchema): - """ZoneInfo - DescribeUDNSZone""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "DNSZoneId": fields.Str(required=True, load_from="DNSZoneId"), - "DNSZoneName": fields.Str(required=True, load_from="DNSZoneName"), - "ExpireTime": fields.Int(required=True, load_from="ExpireTime"), - "IsAutoRenew": fields.Str(required=True, load_from="IsAutoRenew"), - "IsRecursionEnabled": fields.Str( - required=True, load_from="IsRecursionEnabled" - ), - "RecordInfos": fields.List(fields.Str()), - "Remark": fields.Str(required=True, load_from="Remark"), - "Tag": fields.Str(required=True, load_from="Tag"), - "VPCInfos": fields.List(VPCInfoSchema()), - } diff --git a/ucloud/services/ues/client.py b/ucloud/services/ues/client.py deleted file mode 100644 index c2fc8962..00000000 --- a/ucloud/services/ues/client.py +++ /dev/null @@ -1,421 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ues.schemas import apis - - -class UESClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UESClient, self).__init__(config, transport, middleware, logger) - - def create_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUESInstance - 创建实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AppVersion** (str) - (Required) 应用服务版本号,支持的类型通过GetUESAppVersion AppVersionList[].AppVersion - - **InstanceName** (str) - (Required) 实例名称 - - **KibanaNodeConf** (str) - (Required) Kibana节点配置, 支持的机型可通过GetUESNodeConf NodeConfList[].NodeConf - - **KibanaNodeDiskConf** (str) - (Required) Kibana节点磁盘类型 - - **NodeConf** (str) - (Required) 节点配置标识, 支持的机型可通过GetUESNodeConf NodeConfList[].NodeConf - - **NodeDiskConf** (str) - (Required) 磁盘类型 - - **SubnetId** (str) - (Required) 子网ID标识 - - **VPCId** (str) - (Required) VPCID标识 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **AppName** (str) - 应用名称,支持的类型通过GetUESAppVersion AppVersionList[].AppName, 默认为elasticsearch - - **BusinessId** (str) - 业务组ID标识 - - **ChargeType** (str) - 计费类型,默认为Month - - **CoordinatingNodeConf** (str) - Coordinating节点机型配置,, 支持的机型可通过GetUESNodeConf NodeConfList[].NodeConf, 默认为空 - - **CoordinatingNodeDiskConf** (str) - Coordinating节点磁盘类型 - - **CoordinatingNodeSize** (int) - Coordinating节点数量 - - **IsMultiZone** (bool) - 是否为多可用区,默认为false - - **IsSecGroup** (bool) - 是否开启安全组,默认为false - - **MasterConf** (str) - 主节点类型标示,支持的机型可通过GetUESNodeConf NodeConfList[].NodeConf, 默认为空 - - **MultiZones** (list) - 多可用区名称,默认空数组 [] - - **NodeDiskSize** (int) - 节点磁盘大小,默认为100G - - **NodeSize** (int) - 节点个数,默认数目为3 - - **Quantity** (int) - 计费长度,默认为1 - - **Remark** (str) - 备注,默认为空 - - **SecGroupIds** (list) - 安全组ID,开启安全组必填,至多可以同时绑定5个安全组 - - **ServicePasswd** (str) - 服务用户密码,默认为changeme - - **ServiceUserName** (str) - elasticsearch 服务用户名称,默认为elastic;OpenSearch 服务用户名称,固定为admin - - **Response** - - - **InstanceId** (str) - 实例ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUESInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUESInstance", d, **kwargs) - return apis.CreateUESInstanceResponseSchema().loads(resp) - - def delete_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUESInstance - 删除实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUESInstanceRequestSchema().dumps(d) - - resp = self.invoke("DeleteUESInstance", d, **kwargs) - return apis.DeleteUESInstanceResponseSchema().loads(resp) - - def describe_ues_instance_v2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUESInstanceV2 - 查询指定实例详细信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 集群实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Result** (dict) - 见 **ClusterNodeV2Info** 模型定义 - - **Response Model** - - **ClusterV2Info** - - **BusinessId** (str) - 项目组ID标识 - - **Region** (str) - 地域 - - **ServiceVersion** (str) - 服务版本号 - - **State** (str) - 服务集群状态 - - **SubnetId** (str) - 子网ID标识 - - **UESInstanceId** (str) - 服务集群ID标识 - - **UESInstanceName** (str) - 服务集群名称 - - **VPCId** (str) - VPCID标识 - - **Vip** (str) - Vip - - **Zone** (str) - 可用区 - - - **NodeV2Info** - - **CPU** (int) - 节点cpu数量 - - **DiskSize** (int) - 节点磁盘大小 - - **DiskType** (str) - 节点磁盘类型 - - **Memory** (int) - 节点内存大小 - - **NodeConf** (str) - 节点配置标识 - - **NodeIP** (str) - 节点IP - - **NodeId** (str) - 节点ID - - **NodeName** (str) - 节点名称 - - **NodeRole** (str) - 节点类型 - - **NodeState** (str) - 节点状态 - - - **ClusterNodeV2Info** - - **ClusterInfo** (dict) - 见 **ClusterV2Info** 模型定义 - - **NodeInfoList** (list) - 见 **NodeV2Info** 模型定义 - - **RequestId** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUESInstanceV2RequestSchema().dumps(d) - - resp = self.invoke("DescribeUESInstanceV2", d, **kwargs) - return apis.DescribeUESInstanceV2ResponseSchema().loads(resp) - - def expand_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ExpandUESInstance - 扩容实例节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeCount** (int) - (Required) 扩容后对应类型节点的数目 - - **NodeRole** (str) - (Required) 节点类型(compute、coordinating) - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ExpandUESInstanceRequestSchema().dumps(d) - - resp = self.invoke("ExpandUESInstance", d, **kwargs) - return apis.ExpandUESInstanceResponseSchema().loads(resp) - - def get_ues_app_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUESAppVersion - 获取服务应用版本列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **AppVersionList** (list) - 见 **AppVersion** 模型定义 - - **Message** (str) - 错误信息 - - **TotalCount** (int) - 服务应用版本个数 - - **Response Model** - - **AppVersion** - - **AppName** (str) - 应用名称,默认值为elasticsearch - - **AppVersion** (str) - 应用版本号 - - **IsMultiZone** (bool) - 是否支持多区部署,默认为false - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUESAppVersionRequestSchema().dumps(d) - - resp = self.invoke("GetUESAppVersion", d, **kwargs) - return apis.GetUESAppVersionResponseSchema().loads(resp) - - def get_ues_disk_size_limitation( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUESDiskSizeLimitation - 获取磁盘容量限制 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DiskSizeLimitationSet** (list) - 见 **DiskSizeLimitation** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **DiskSizeLimitation** - - **DiskType** (str) - 数据盘类别,包含普通云盘|CLOUD_NORMAL、SSD云盘|CLOUD_SSD和RSSD云盘|CLOUD_RSSD。普通本地盘只包含普通本地盘|LOCAL_NORMAL一种。SSD本地盘只包含SSD本地盘|LOCAL_SSD一种。 - - **MaxSize** (int) - 最大值,单位GB - - **MinSize** (int) - 最小值,单位GB - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUESDiskSizeLimitationRequestSchema().dumps(d) - - resp = self.invoke("GetUESDiskSizeLimitation", d, **kwargs) - return apis.GetUESDiskSizeLimitationResponseSchema().loads(resp) - - def get_ues_node_conf( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUESNodeConf - 获取节点配置列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - **NodeConfList** (list) - 见 **NodeConf** 模型定义 - - **TotalCount** (int) - 所有节点配置信息的个数 - - **Response Model** - - **NodeConf** - - **CPU** (int) - CPU数量 - - **DiskSize** (int) - 磁盘大小,单位为GB - - **DiskType** (str) - 磁盘类型[RSSD|SSD] - - **IsSecGroup** (bool) - 是否支持安全组[true|false] - - **Memory** (int) - 内存,单位为GB - - **NodeConf** (str) - 节点配置标识 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUESNodeConfRequestSchema().dumps(d) - - resp = self.invoke("GetUESNodeConf", d, **kwargs) - return apis.GetUESNodeConfResponseSchema().loads(resp) - - def list_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUESInstance - 获取实例列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 返回数据长度, 默认为30 - - **Offset** (int) - 数据偏移量, 默认为0 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterSet** (list) - 见 **ClusterInfo** 模型定义 - - **Message** (str) - 错误信息 - - **TotalCount** (int) - 实例个数 - - **Response Model** - - **ClusterInfo** - - **AppName** (str) - 应用名称 - - **AppVersion** (str) - 应用服务版本号 - - **BusinessId** (str) - 项目组ID标识 - - **ChargeType** (str) - 计费类型,默认为Month - - **CreateTime** (int) - 创建时间 - - **ExpireTime** (int) - 失效时间 - - **InstanceId** (str) - 实例资源ID - - **InstanceName** (str) - 实例名称 - - **IsSecGroup** (bool) - 是否开启安全组 - - **MultiZones** (list) - 多可用区 - - **NodeCount** (int) - 节点个数,默认为集群大小 - - **Resizable** (bool) - 是否支持改配 - - **RunTime** (int) - 实例运行时长 - - **ServiceVersion** (str) - 服务版本号(弃用) - - **State** (str) - 实例状态 - - **SubnetId** (str) - 子网ID标识 - - **Tag** (str) - 业务组 - - **UESInstanceId** (str) - 服务集群ID标识(弃用) - - **UESInstanceName** (str) - 服务集群名称(弃用) - - **VPCId** (str) - VPCID标识 - - **Vip** (str) - VIP地址信息 - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUESInstanceRequestSchema().dumps(d) - - resp = self.invoke("ListUESInstance", d, **kwargs) - return apis.ListUESInstanceResponseSchema().loads(resp) - - def resize_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeUESInstance - 改配实例节点配置 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeRole** (str) - (Required) 节点类型(compute、master、coordinating、kibana、dashboard) - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ForceResizing** (bool) - 进行改配操作是否强制检查集群健康状态,默认为false - - **NodeConf** (str) - 改配节点类型,NodeDiskSize为0,基于NodeRole 进行改配 - - **NodeDiskSize** (int) - 改配节点磁盘大小,NodeConf 为空字符串,基于NodeRole 进行改配 - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeUESInstanceRequestSchema().dumps(d) - - resp = self.invoke("ResizeUESInstance", d, **kwargs) - return apis.ResizeUESInstanceResponseSchema().loads(resp) - - def restart_ues_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RestartUESInstance - 重启实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RestartUESInstanceRequestSchema().dumps(d) - - resp = self.invoke("RestartUESInstance", d, **kwargs) - return apis.RestartUESInstanceResponseSchema().loads(resp) diff --git a/ucloud/services/ues/schemas/apis.py b/ucloud/services/ues/schemas/apis.py deleted file mode 100644 index a48db2c1..00000000 --- a/ucloud/services/ues/schemas/apis.py +++ /dev/null @@ -1,323 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ues.schemas import models - -""" UES API Schema -""" - - -""" -API: CreateUESInstance - -创建实例 -""" - - -class CreateUESInstanceRequestSchema(schema.RequestSchema): - """CreateUESInstance - 创建实例""" - - fields = { - "AppName": fields.Str(required=False, dump_to="AppName"), - "AppVersion": fields.Str(required=True, dump_to="AppVersion"), - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CoordinatingNodeConf": fields.Str( - required=False, dump_to="CoordinatingNodeConf" - ), - "CoordinatingNodeDiskConf": fields.Str( - required=False, dump_to="CoordinatingNodeDiskConf" - ), - "CoordinatingNodeSize": fields.Int( - required=False, dump_to="CoordinatingNodeSize" - ), - "InstanceName": fields.Str(required=True, dump_to="InstanceName"), - "IsMultiZone": fields.Bool(required=False, dump_to="IsMultiZone"), - "IsSecGroup": fields.Bool(required=False, dump_to="IsSecGroup"), - "KibanaNodeConf": fields.Str(required=True, dump_to="KibanaNodeConf"), - "KibanaNodeDiskConf": fields.Str( - required=True, dump_to="KibanaNodeDiskConf" - ), - "MasterConf": fields.Str(required=False, dump_to="MasterConf"), - "MultiZones": fields.List(fields.Str()), - "NodeConf": fields.Str(required=True, dump_to="NodeConf"), - "NodeDiskConf": fields.Str(required=True, dump_to="NodeDiskConf"), - "NodeDiskSize": fields.Int(required=False, dump_to="NodeDiskSize"), - "NodeSize": fields.Int(required=False, dump_to="NodeSize"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "SecGroupIds": fields.List(fields.Str()), - "ServicePasswd": fields.Str(required=False, dump_to="ServicePasswd"), - "ServiceUserName": fields.Str( - required=False, dump_to="ServiceUserName" - ), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUESInstanceResponseSchema(schema.ResponseSchema): - """CreateUESInstance - 创建实例""" - - fields = { - "InstanceId": fields.Str(required=False, load_from="InstanceId"), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DeleteUESInstance - -删除实例 -""" - - -class DeleteUESInstanceRequestSchema(schema.RequestSchema): - """DeleteUESInstance - 删除实例""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteUESInstanceResponseSchema(schema.ResponseSchema): - """DeleteUESInstance - 删除实例""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeUESInstanceV2 - -查询指定实例详细信息 -""" - - -class DescribeUESInstanceV2RequestSchema(schema.RequestSchema): - """DescribeUESInstanceV2 - 查询指定实例详细信息""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeUESInstanceV2ResponseSchema(schema.ResponseSchema): - """DescribeUESInstanceV2 - 查询指定实例详细信息""" - - fields = { - "Result": models.ClusterNodeV2InfoSchema(), - } - - -""" -API: ExpandUESInstance - -扩容实例节点 -""" - - -class ExpandUESInstanceRequestSchema(schema.RequestSchema): - """ExpandUESInstance - 扩容实例节点""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "NodeRole": fields.Str(required=True, dump_to="NodeRole"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ExpandUESInstanceResponseSchema(schema.ResponseSchema): - """ExpandUESInstance - 扩容实例节点""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: GetUESAppVersion - -获取服务应用版本列表 -""" - - -class GetUESAppVersionRequestSchema(schema.RequestSchema): - """GetUESAppVersion - 获取服务应用版本列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUESAppVersionResponseSchema(schema.ResponseSchema): - """GetUESAppVersion - 获取服务应用版本列表""" - - fields = { - "AppVersionList": fields.List( - models.AppVersionSchema(), required=True, load_from="AppVersionList" - ), - "Message": fields.Str(required=False, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: GetUESDiskSizeLimitation - -获取磁盘容量限制 -""" - - -class GetUESDiskSizeLimitationRequestSchema(schema.RequestSchema): - """GetUESDiskSizeLimitation - 获取磁盘容量限制""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUESDiskSizeLimitationResponseSchema(schema.ResponseSchema): - """GetUESDiskSizeLimitation - 获取磁盘容量限制""" - - fields = { - "DiskSizeLimitationSet": fields.List( - models.DiskSizeLimitationSchema(), - required=False, - load_from="DiskSizeLimitationSet", - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: GetUESNodeConf - -获取节点配置列表 -""" - - -class GetUESNodeConfRequestSchema(schema.RequestSchema): - """GetUESNodeConf - 获取节点配置列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUESNodeConfResponseSchema(schema.ResponseSchema): - """GetUESNodeConf - 获取节点配置列表""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - "NodeConfList": fields.List( - models.NodeConfSchema(), required=True, load_from="NodeConfList" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListUESInstance - -获取实例列表 -""" - - -class ListUESInstanceRequestSchema(schema.RequestSchema): - """ListUESInstance - 获取实例列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListUESInstanceResponseSchema(schema.ResponseSchema): - """ListUESInstance - 获取实例列表""" - - fields = { - "ClusterSet": fields.List( - models.ClusterInfoSchema(), required=True, load_from="ClusterSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ResizeUESInstance - -改配实例节点配置 -""" - - -class ResizeUESInstanceRequestSchema(schema.RequestSchema): - """ResizeUESInstance - 改配实例节点配置""" - - fields = { - "ForceResizing": fields.Bool(required=False, dump_to="ForceResizing"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeConf": fields.Str(required=False, dump_to="NodeConf"), - "NodeDiskSize": fields.Int(required=False, dump_to="NodeDiskSize"), - "NodeRole": fields.Str(required=True, dump_to="NodeRole"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ResizeUESInstanceResponseSchema(schema.ResponseSchema): - """ResizeUESInstance - 改配实例节点配置""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: RestartUESInstance - -重启实例 -""" - - -class RestartUESInstanceRequestSchema(schema.RequestSchema): - """RestartUESInstance - 重启实例""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class RestartUESInstanceResponseSchema(schema.ResponseSchema): - """RestartUESInstance - 重启实例""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } diff --git a/ucloud/services/ues/schemas/models.py b/ucloud/services/ues/schemas/models.py deleted file mode 100644 index fb3fccc6..00000000 --- a/ucloud/services/ues/schemas/models.py +++ /dev/null @@ -1,115 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class NodeV2InfoSchema(schema.ResponseSchema): - """NodeV2Info - 节点信息详情""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "DiskSize": fields.Int(required=True, load_from="DiskSize"), - "DiskType": fields.Str(required=True, load_from="DiskType"), - "Memory": fields.Int(required=True, load_from="Memory"), - "NodeConf": fields.Str(required=True, load_from="NodeConf"), - "NodeIP": fields.Str(required=True, load_from="NodeIP"), - "NodeId": fields.Str(required=True, load_from="NodeId"), - "NodeName": fields.Str(required=True, load_from="NodeName"), - "NodeRole": fields.Str(required=True, load_from="NodeRole"), - "NodeState": fields.Str(required=True, load_from="NodeState"), - } - - -class ClusterV2InfoSchema(schema.ResponseSchema): - """ClusterV2Info - 集群信息""" - - fields = { - "BusinessId": fields.Str(required=False, load_from="BusinessId"), - "Region": fields.Str(required=False, load_from="Region"), - "ServiceVersion": fields.Str(required=True, load_from="ServiceVersion"), - "State": fields.Str(required=True, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "UESInstanceId": fields.Str(required=True, load_from="UESInstanceId"), - "UESInstanceName": fields.Str( - required=True, load_from="UESInstanceName" - ), - "VPCId": fields.Str(required=True, load_from="VPCId"), - "Vip": fields.Str(required=False, load_from="Vip"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class ClusterNodeV2InfoSchema(schema.ResponseSchema): - """ClusterNodeV2Info -""" - - fields = { - "ClusterInfo": ClusterV2InfoSchema(), - "NodeInfoList": fields.List(NodeV2InfoSchema()), - "RequestId": fields.Str(required=False, load_from="RequestId"), - } - - -class AppVersionSchema(schema.ResponseSchema): - """AppVersion - ES可选版本详情""" - - fields = { - "AppName": fields.Str(required=True, load_from="AppName"), - "AppVersion": fields.Str(required=True, load_from="AppVersion"), - "IsMultiZone": fields.Bool(required=True, load_from="IsMultiZone"), - } - - -class DiskSizeLimitationSchema(schema.ResponseSchema): - """DiskSizeLimitation -""" - - fields = { - "DiskType": fields.Str(required=False, load_from="DiskType"), - "MaxSize": fields.Int(required=False, load_from="MaxSize"), - "MinSize": fields.Int(required=False, load_from="MinSize"), - } - - -class NodeConfSchema(schema.ResponseSchema): - """NodeConf - 节点配置信息详情""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "DiskSize": fields.Int(required=True, load_from="DiskSize"), - "DiskType": fields.Str(required=True, load_from="DiskType"), - "IsSecGroup": fields.Bool(required=True, load_from="IsSecGroup"), - "Memory": fields.Int(required=True, load_from="Memory"), - "NodeConf": fields.Str(required=True, load_from="NodeConf"), - } - - -class ClusterInfoSchema(schema.ResponseSchema): - """ClusterInfo - 集群信息""" - - fields = { - "AppName": fields.Str(required=True, load_from="AppName"), - "AppVersion": fields.Str(required=True, load_from="AppVersion"), - "BusinessId": fields.Str(required=True, load_from="BusinessId"), - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ExpireTime": fields.Int(required=True, load_from="ExpireTime"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "InstanceName": fields.Str(required=True, load_from="InstanceName"), - "IsSecGroup": fields.Bool(required=False, load_from="IsSecGroup"), - "MultiZones": fields.List(fields.Str()), - "NodeCount": fields.Int(required=True, load_from="NodeCount"), - "Resizable": fields.Bool(required=False, load_from="Resizable"), - "RunTime": fields.Int(required=True, load_from="RunTime"), - "ServiceVersion": fields.Str( - required=False, load_from="ServiceVersion" - ), - "State": fields.Str(required=True, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "UESInstanceId": fields.Str(required=False, load_from="UESInstanceId"), - "UESInstanceName": fields.Str( - required=False, load_from="UESInstanceName" - ), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Vip": fields.Str(required=False, load_from="Vip"), - "Zone": fields.Str(required=True, load_from="Zone"), - } diff --git a/ucloud/services/ufs/__init__.py b/ucloud/services/ufs/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ufs/client.py b/ucloud/services/ufs/client.py deleted file mode 100644 index 256d132d..00000000 --- a/ucloud/services/ufs/client.py +++ /dev/null @@ -1,328 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ufs.schemas import apis - - -class UFSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UFSClient, self).__init__(config, transport, middleware, logger) - - def add_ufs_volume_mount_point( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUFSVolumeMountPoint - 添加文件系统挂载点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **MountPointName** (str) - (Required) 挂载点名称 - - **SubnetId** (str) - (Required) Subnet ID - - **VolumeId** (str) - (Required) 文件系统ID - - **VpcId** (str) - (Required) Vpc ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddUFSVolumeMountPointRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUFSVolumeMountPoint", d, **kwargs) - return apis.AddUFSVolumeMountPointResponseSchema().loads(resp) - - def create_ufs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUFSVolume - 创建文件系统 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ProtocolType** (str) - (Required) 文件系统协议,目前仅支持NFSv4 - - **Size** (int) - (Required) 文件系统大小,单位为GB,必须为100的整数倍,容量型Size最小为500GB,性能型文件系统Size最小为100GB - - **StorageType** (str) - (Required) 文件系统存储类型,Basic表示容量型,Advanced表示性能型 - - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费; Dynamic,按需付费(需开启权限); Trial,试用(需开启权限) 默认为Dynamic - - **CouponId** (str) - 使用的代金券id - - **Quantity** (int) - 购买时长 默认: 1 - - **Remark** (str) - 备注 - - **Tag** (str) - 文件系统所属业务组 - - **VolumeName** (str) - 文件系统名称 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **VolumeId** (str) - 文件系统ID - - **VolumeName** (str) - 文件系统名称 - - **VolumeStatus** (str) - 文件系统挂载点状态 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUFSVolumeRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUFSVolume", d, **kwargs) - return apis.CreateUFSVolumeResponseSchema().loads(resp) - - def describe_ufs_volume_2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUFSVolume2 - 获取文件系统列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 文件列表长度 - - **Offset** (int) - 文件列表起始 - - **VolumeId** (str) - 文件系统ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **UFSVolumeInfo2** 模型定义 - - **TotalCount** (int) - 文件系统总数 - - **Response Model** - - **UFSVolumeInfo2** - - **CreateTime** (int) - 文件系统创建时间(unix时间戳) - - **ExpiredTime** (int) - 文件系统过期时间(unix时间戳) - - **IsExpired** (str) - 是否过期 - - **MaxMountPointNum** (int) - 文件系统允许创建的最大挂载点数目 - - **ProtocolType** (str) - 文件系统协议,枚举值,NFSv3表示NFS V3协议,NFSv4表示NFS V4协议 - - **Remark** (str) - 文件系统备注信息 - - **Size** (int) - 文件系统大小,单位GB - - **StorageType** (str) - 文件系统存储类型,枚举值,Basic表示容量型,Advanced表示性能型 - - **Tag** (str) - 文件系统所属业务组 - - **TotalMountPointNum** (int) - 当前文件系统已创建的挂载点数目 - - **UsedSize** (int) - 文件系统当前使用容量,单位GB - - **VolumeId** (str) - 文件系统ID - - **VolumeName** (str) - 文件系统名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUFSVolume2RequestSchema().dumps(d) - - resp = self.invoke("DescribeUFSVolume2", d, **kwargs) - return apis.DescribeUFSVolume2ResponseSchema().loads(resp) - - def describe_ufs_volume_mountpoint( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUFSVolumeMountpoint - 获取文件系统挂载点信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VolumeId** (str) - (Required) 文件系统ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **MountPointInfo** 模型定义 - - **MaxMountPointNum** (int) - 文件系统能创建的最大挂载点数目 - - **TotalMountPointNum** (int) - 目前的挂载点总数 - - **Response Model** - - **MountPointInfo** - - **CreateTime** (int) - 文件系统创建时间(unix时间戳) - - **MountPointIp** (str) - ${挂载点IP}:/ - - **MountPointName** (str) - 挂载点名称 - - **SubnetDescription** (str) - Subnet ID + 网段的形式,方便前端展示 - - **SubnetId** (str) - Subnet ID - - **VpcId** (str) - Vpc ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUFSVolumeMountpointRequestSchema().dumps(d) - - resp = self.invoke("DescribeUFSVolumeMountpoint", d, **kwargs) - return apis.DescribeUFSVolumeMountpointResponseSchema().loads(resp) - - def describe_ufs_volume_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUFSVolumePrice - 获取文件系统价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (int) - (Required) 文件系统大小,单位为GB,新架构容量型最小容量为500GB,以100GB递增,最大不超过100TB。新架构性能型最小容量为100GB,以100GB递增,最大不超过20TB - - **StorageType** (str) - (Required) 文件存储类型,枚举值,Basic表示容量型产品,Advanced表示性能型产品 - - **ChargeType** (str) - Year, Month, Dynamic,Trial,默认: Dynamic - - **Quantity** (int) - 购买UFS的时长, 默认为1 - - **VolumeId** (str) - 文件系统id,第一次创建文件系统时不需要传这个参数 - - **Response** - - - **DataSet** (list) - 见 **UFSPriceDataSet** 模型定义 - - **Response Model** - - **UFSPriceDataSet** - - **ChargeName** (str) - “UFS” - - **ChargeType** (str) - Year, Month, Dynamic,Trial - - **Price** (float) - 价格 (单位: 分) - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUFSVolumePriceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUFSVolumePrice", d, **kwargs) - return apis.DescribeUFSVolumePriceResponseSchema().loads(resp) - - def extend_ufs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ExtendUFSVolume - 文件系统扩容 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (int) - (Required) 文件系统大小,单位为GB,最大不超过20T,香港容量型必须为100的整数倍,Size最小为500GB,北京,上海,广州的容量型必须为1024的整数倍,Size最小为1024GB。性能型文件系统Size最小为100GB - - **VolumeId** (str) - (Required) 文件系统ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ExtendUFSVolumeRequestSchema().dumps(d) - - resp = self.invoke("ExtendUFSVolume", d, **kwargs) - return apis.ExtendUFSVolumeResponseSchema().loads(resp) - - def remove_ufs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveUFSVolume - 删除UFS文件系统 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VolumeId** (str) - (Required) 文件系统ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RemoveUFSVolumeRequestSchema().dumps(d) - - resp = self.invoke("RemoveUFSVolume", d, **kwargs) - return apis.RemoveUFSVolumeResponseSchema().loads(resp) - - def remove_ufs_volume_mount_point( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveUFSVolumeMountPoint - 删除文件系统挂载点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SubnetId** (str) - (Required) Subnet ID - - **VolumeId** (str) - (Required) 文件系统ID - - **VpcId** (str) - (Required) Vpc ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RemoveUFSVolumeMountPointRequestSchema().dumps(d) - - resp = self.invoke("RemoveUFSVolumeMountPoint", d, **kwargs) - return apis.RemoveUFSVolumeMountPointResponseSchema().loads(resp) - - def update_ufs_volume_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUFSVolumeInfo - 更改文件系统相关信息(名称/备注) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VolumeId** (str) - (Required) 文件系统ID - - **Remark** (str) - 文件系统备注(文件系统名称/备注至少传入其中一个) - - **VolumeName** (str) - 文件系统名称(文件系统名称/备注至少传入其中一个) - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateUFSVolumeInfoRequestSchema().dumps(d) - - resp = self.invoke("UpdateUFSVolumeInfo", d, **kwargs) - return apis.UpdateUFSVolumeInfoResponseSchema().loads(resp) diff --git a/ucloud/services/ufs/schemas/__init__.py b/ucloud/services/ufs/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ufs/schemas/apis.py b/ucloud/services/ufs/schemas/apis.py deleted file mode 100644 index be8f5f92..00000000 --- a/ucloud/services/ufs/schemas/apis.py +++ /dev/null @@ -1,265 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ufs.schemas import models - -""" UFS API Schema -""" - - -""" -API: AddUFSVolumeMountPoint - -添加文件系统挂载点 -""" - - -class AddUFSVolumeMountPointRequestSchema(schema.RequestSchema): - """AddUFSVolumeMountPoint - 添加文件系统挂载点""" - - fields = { - "MountPointName": fields.Str(required=True, dump_to="MountPointName"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "VpcId": fields.Str(required=True, dump_to="VpcId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class AddUFSVolumeMountPointResponseSchema(schema.ResponseSchema): - """AddUFSVolumeMountPoint - 添加文件系统挂载点""" - - fields = {} - - -""" -API: CreateUFSVolume - -创建文件系统 -""" - - -class CreateUFSVolumeRequestSchema(schema.RequestSchema): - """CreateUFSVolume - 创建文件系统""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ProtocolType": fields.Str(required=True, dump_to="ProtocolType"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Size": fields.Int(required=True, dump_to="Size"), - "StorageType": fields.Str(required=True, dump_to="StorageType"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VolumeName": fields.Str(required=False, dump_to="VolumeName"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class CreateUFSVolumeResponseSchema(schema.ResponseSchema): - """CreateUFSVolume - 创建文件系统""" - - fields = { - "VolumeId": fields.Str(required=True, load_from="VolumeId"), - "VolumeName": fields.Str(required=True, load_from="VolumeName"), - "VolumeStatus": fields.Str(required=True, load_from="VolumeStatus"), - } - - -""" -API: DescribeUFSVolume2 - -获取文件系统列表 -""" - - -class DescribeUFSVolume2RequestSchema(schema.RequestSchema): - """DescribeUFSVolume2 - 获取文件系统列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VolumeId": fields.Str(required=False, dump_to="VolumeId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeUFSVolume2ResponseSchema(schema.ResponseSchema): - """DescribeUFSVolume2 - 获取文件系统列表""" - - fields = { - "DataSet": fields.List( - models.UFSVolumeInfo2Schema(), required=True, load_from="DataSet" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUFSVolumeMountpoint - -获取文件系统挂载点信息 -""" - - -class DescribeUFSVolumeMountpointRequestSchema(schema.RequestSchema): - """DescribeUFSVolumeMountpoint - 获取文件系统挂载点信息""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeUFSVolumeMountpointResponseSchema(schema.ResponseSchema): - """DescribeUFSVolumeMountpoint - 获取文件系统挂载点信息""" - - fields = { - "DataSet": fields.List( - models.MountPointInfoSchema(), required=True, load_from="DataSet" - ), - "MaxMountPointNum": fields.Int( - required=True, load_from="MaxMountPointNum" - ), - "TotalMountPointNum": fields.Int( - required=True, load_from="TotalMountPointNum" - ), - } - - -""" -API: DescribeUFSVolumePrice - -获取文件系统价格 -""" - - -class DescribeUFSVolumePriceRequestSchema(schema.RequestSchema): - """DescribeUFSVolumePrice - 获取文件系统价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Int(required=True, dump_to="Size"), - "StorageType": fields.Str(required=True, dump_to="StorageType"), - "VolumeId": fields.Str(required=False, dump_to="VolumeId"), - } - - -class DescribeUFSVolumePriceResponseSchema(schema.ResponseSchema): - """DescribeUFSVolumePrice - 获取文件系统价格""" - - fields = { - "DataSet": fields.List( - models.UFSPriceDataSetSchema(), required=False, load_from="DataSet" - ), - } - - -""" -API: ExtendUFSVolume - -文件系统扩容 -""" - - -class ExtendUFSVolumeRequestSchema(schema.RequestSchema): - """ExtendUFSVolume - 文件系统扩容""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Int(required=True, dump_to="Size"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ExtendUFSVolumeResponseSchema(schema.ResponseSchema): - """ExtendUFSVolume - 文件系统扩容""" - - fields = {} - - -""" -API: RemoveUFSVolume - -删除UFS文件系统 -""" - - -class RemoveUFSVolumeRequestSchema(schema.RequestSchema): - """RemoveUFSVolume - 删除UFS文件系统""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class RemoveUFSVolumeResponseSchema(schema.ResponseSchema): - """RemoveUFSVolume - 删除UFS文件系统""" - - fields = {} - - -""" -API: RemoveUFSVolumeMountPoint - -删除文件系统挂载点 -""" - - -class RemoveUFSVolumeMountPointRequestSchema(schema.RequestSchema): - """RemoveUFSVolumeMountPoint - 删除文件系统挂载点""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "VpcId": fields.Str(required=True, dump_to="VpcId"), - } - - -class RemoveUFSVolumeMountPointResponseSchema(schema.ResponseSchema): - """RemoveUFSVolumeMountPoint - 删除文件系统挂载点""" - - fields = {} - - -""" -API: UpdateUFSVolumeInfo - -更改文件系统相关信息(名称/备注) -""" - - -class UpdateUFSVolumeInfoRequestSchema(schema.RequestSchema): - """UpdateUFSVolumeInfo - 更改文件系统相关信息(名称/备注)""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "VolumeName": fields.Str(required=False, dump_to="VolumeName"), - } - - -class UpdateUFSVolumeInfoResponseSchema(schema.ResponseSchema): - """UpdateUFSVolumeInfo - 更改文件系统相关信息(名称/备注)""" - - fields = {} diff --git a/ucloud/services/ugn/__init__.py b/ucloud/services/ugn/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ugn/schemas/__init__.py b/ucloud/services/ugn/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ugn/schemas/models.py b/ucloud/services/ugn/schemas/models.py deleted file mode 100644 index e057d80a..00000000 --- a/ucloud/services/ugn/schemas/models.py +++ /dev/null @@ -1,191 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class InterRegionBandwidthSchema(schema.ResponseSchema): - """InterRegionBandwidth - 跨域带宽""" - - fields = { - "Bandwidth": fields.Int(required=True, load_from="Bandwidth"), - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ExpireTime": fields.Int(required=True, load_from="ExpireTime"), - "InterRegionBandwidthId": fields.Str( - required=True, load_from="InterRegionBandwidthId" - ), - "PayMode": fields.Str(required=True, load_from="PayMode"), - "Region0": fields.Str(required=True, load_from="Region0"), - "Region1": fields.Str(required=True, load_from="Region1"), - "State": fields.Int(required=True, load_from="State"), - "UGNId": fields.Str(required=True, load_from="UGNId"), - } - - -class UGNSchema(schema.ResponseSchema): - """UGN - 云联网信息""" - - fields = { - "BwPackageCount": fields.Int(required=True, load_from="BwPackageCount"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Name": fields.Str(required=True, load_from="Name"), - "NetworkCount": fields.Int(required=True, load_from="NetworkCount"), - "Remark": fields.Str(required=True, load_from="Remark"), - "UGNID": fields.Str(required=True, load_from="UGNID"), - } - - -class SimpleRouteSchema(schema.ResponseSchema): - """SimpleRoute - 简洁版云联网路由条目""" - - fields = { - "DstAddr": fields.Str(required=False, load_from="DstAddr"), - "NextHopID": fields.Str(required=False, load_from="NextHopID"), - "NextHopRegion": fields.Str(required=False, load_from="NextHopRegion"), - "NextHopRegionID": fields.Int( - required=False, load_from="NextHopRegionID" - ), - "NextHopType": fields.Str(required=False, load_from="NextHopType"), - "Priority": fields.Int(required=False, load_from="Priority"), - } - - -class SimpleNetworkSchema(schema.ResponseSchema): - """SimpleNetwork - 简洁版云联网网络实例""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Name": fields.Str(required=True, load_from="Name"), - "NetworkID": fields.Str(required=True, load_from="NetworkID"), - "OrgID": fields.Int(required=False, load_from="OrgID"), - "OrgName": fields.Str(required=True, load_from="OrgName"), - "Region": fields.Str(required=True, load_from="Region"), - "RegionID": fields.Int(required=False, load_from="RegionID"), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class SimpleBwPackageSchema(schema.ResponseSchema): - """SimpleBwPackage - 简洁版带宽包""" - - fields = { - "BandWidth": fields.Float(required=True, load_from="BandWidth"), - "ChangePayMode": fields.Str(required=False, load_from="ChangePayMode"), - "ChangeStatus": fields.Int(required=False, load_from="ChangeStatus"), - "ChangeTime": fields.Int(required=False, load_from="ChangeTime"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Name": fields.Str(required=False, load_from="Name"), - "PackageID": fields.Str(required=True, load_from="PackageID"), - "Path": fields.Str(required=True, load_from="Path"), - "PayMode": fields.Str(required=True, load_from="PayMode"), - "Qos": fields.Str(required=True, load_from="Qos"), - "RegionA": fields.Str(required=True, load_from="RegionA"), - "RegionB": fields.Str(required=True, load_from="RegionB"), - "Remark": fields.Str(required=False, load_from="Remark"), - "UGNID": fields.Str(required=True, load_from="UGNID"), - } - - -class InstanceSchema(schema.ResponseSchema): - """Instance - 云联网实例信息""" - - fields = { - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "InstanceOrganizationName": fields.Str( - required=True, load_from="InstanceOrganizationName" - ), - "InstanceProjectId": fields.Str( - required=True, load_from="InstanceProjectId" - ), - "InstanceRegion": fields.Str(required=True, load_from="InstanceRegion"), - "InstanceType": fields.Str(required=True, load_from="InstanceType"), - "Networks": fields.List(fields.Str()), - "State": fields.Int(required=True, load_from="State"), - "UGNId": fields.Str(required=True, load_from="UGNId"), - } - - -class RouteRuleSchema(schema.ResponseSchema): - """RouteRule - 云联网路由规则""" - - fields = { - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "DeriveInstanceId": fields.Str( - required=True, load_from="DeriveInstanceId" - ), - "DeriveInstanceRegion": fields.Str( - required=True, load_from="DeriveInstanceRegion" - ), - "DeriveInstanceType": fields.Str( - required=True, load_from="DeriveInstanceType" - ), - "DeriveRouteRuleId": fields.Str( - required=True, load_from="DeriveRouteRuleId" - ), - "DeriveRouteTableId": fields.Str( - required=True, load_from="DeriveRouteTableId" - ), - "DstAddr": fields.Str(required=True, load_from="DstAddr"), - "Enable": fields.Bool(required=True, load_from="Enable"), - "NextHopId": fields.Str(required=True, load_from="NextHopId"), - "NextHopType": fields.Str(required=True, load_from="NextHopType"), - "Priority": fields.Int(required=True, load_from="Priority"), - "Rollback": fields.Bool(required=True, load_from="Rollback"), - "RouteRuleId": fields.Str(required=True, load_from="RouteRuleId"), - "RouteRuleType": fields.Int(required=True, load_from="RouteRuleType"), - } - - -class SNetworkSchema(schema.ResponseSchema): - """SNetwork - 简洁版云联网网络实例""" - - fields = { - "CreateTime": fields.Str(required=False, load_from="CreateTime"), - "Name": fields.Str(required=True, load_from="Name"), - "NetworkID": fields.Str(required=True, load_from="NetworkID"), - "OrgID": fields.Int(required=False, load_from="OrgID"), - "OrgName": fields.Str(required=True, load_from="OrgName"), - "Region": fields.Str(required=True, load_from="Region"), - "RegionID": fields.Int(required=False, load_from="RegionID"), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class SBwPackageSchema(schema.ResponseSchema): - """SBwPackage - 简洁版带宽包""" - - fields = { - "BandWidth": fields.Int(required=True, load_from="BandWidth"), - "ChangePayMode": fields.Str(required=False, load_from="ChangePayMode"), - "ChangeStatus": fields.Int(required=False, load_from="ChangeStatus"), - "ChangeTime": fields.Int(required=False, load_from="ChangeTime"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Message": fields.Str(required=False, load_from="Message"), - "Name": fields.Str(required=False, load_from="Name"), - "PackageID": fields.Str(required=True, load_from="PackageID"), - "Path": fields.Str(required=True, load_from="Path"), - "PayMode": fields.Str(required=True, load_from="PayMode"), - "Qos": fields.Str(required=True, load_from="Qos"), - "RegionA": fields.Str(required=True, load_from="RegionA"), - "RegionB": fields.Str(required=True, load_from="RegionB"), - "Remark": fields.Str(required=False, load_from="Remark"), - "UGNID": fields.Str(required=True, load_from="UGNID"), - } - - -class RouteSchema(schema.ResponseSchema): - """Route - 云联网路由条目""" - - fields = { - "DstAddr": fields.Str(required=False, load_from="DstAddr"), - "NexthopID": fields.Str(required=False, load_from="NexthopID"), - "NexthopRegion": fields.Str(required=False, load_from="NexthopRegion"), - "NexthopRegionID": fields.Int( - required=False, load_from="NexthopRegionID" - ), - "NexthopType": fields.Str(required=False, load_from="NexthopType"), - "Priority": fields.Int(required=False, load_from="Priority"), - } diff --git a/ucloud/services/uhadoop/__init__.py b/ucloud/services/uhadoop/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhadoop/client.py b/ucloud/services/uhadoop/client.py deleted file mode 100644 index e64826cf..00000000 --- a/ucloud/services/uhadoop/client.py +++ /dev/null @@ -1,481 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uhadoop.schemas import apis - - -class UHadoopClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UHadoopClient, self).__init__( - config, transport, middleware, logger - ) - - def add_uhadoop_instance_node( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUHadoopInstanceNode - 给已有集群添加一定数量的节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeRole** (str) - (Required) 节点的角色,值为task|core|client之一 - - **NodeType** (str) - (Required) 机型,如:o.hadoop2m.medium,可从GetUHadoopNodeType接口获取 - - **BootDiskSize** (str) - 系统盘容量,非裸金属机型必填 - - **BootDiskType** (str) - 系统盘类型,非裸金属机型必填,例如:CLOUD_RSSD - - **DataDiskNum** (str) - 数据盘数量,非裸金属机型时必填 - - **DataDiskSize** (str) - 数据盘容量,非裸金属机型必填 - - **DataDiskType** (str) - 数据盘类型,非裸金属机型必填,例如:CLOUD_RSSD - - **NodeCount** (int) - 节点数量,默认为1 - - **Password** (str) - 密码,NodeRole为client时必填 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddUHadoopInstanceNodeRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUHadoopInstanceNode", d, **kwargs) - return apis.AddUHadoopInstanceNodeResponseSchema().loads(resp) - - def create_uhadoop_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUHadoopInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.FrameworkVersion,访问链接:https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app_by_use_case,响应字段的AppConfigSet[N].FrameworkVersion是框架版本是支持的 UHadoop 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.InstanceGroupConfigs需要获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,响应字段的InstanceTypeSet[N].NodeType是机型名称,响应字段的InstanceTypeSet[N].SuitableRole是机型可用的节点类型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,该接口响应字段的InstanceTypeSet[N].DiskSet[N].DiskMinSize和InstanceTypeSet[N].DiskSet[N].DiskMaxSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ ;\\7.Password,集群机器的登录密码,需要输入base64编码后的内容;\\8.AppConfigs 集群需要安装的组件,访问链接,https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app ,AppConfigSet[N].AppName是组件名称,AppConfigSet[N].AppVersion是组件版本 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AppConfigs** (list) - (Required) 集群需要安装的组件,格式:组件#版本通过ListUHadoopFrameworkApp接口获取,例如:Spark#3.3.0 - - **Framework** (str) - (Required) 框架,值为'Hadoop'|'HDFS'|'MR'|'StarRocks'之一,框架,例如Hadoop|MR|HDFS|StarRocks Hadoop框架包含存储与计算服务 MR集群包含计算服务 HDFS只包含存储服务,StarRocks为StarRocks集群 - - **FrameworkVersion** (str) - (Required) 版本,例如:3.2.1-udh3.0,通过ListUHadoopFrameworkApp接口获取 - - **InstanceGroupConfigs** (list) - (Required) 节点配置,里面包括NodeType(机型),NodeRole(节点类别,值为其中之一:master|core|task),Count(数量),DataDiskType(数据盘类别),DataDiskSize(数据盘大小),DataDiskNum(数据盘数量),BootDiskType(系统盘类型),BootDiskSize(系统盘大小),通过GetUHadoopNodeType接口获取,示例为:InstanceGroupConfigs.0.NodeType=o.hadoop2m.xlargeInstanceGroupConfigs.0.NodeRole=masterInstanceGroupConfigs.0.Count=2InstanceGroupConfigs.0.DataDiskType=CLOUD_RSSDInstanceGroupConfigs.0.DataDiskSize=100InstanceGroupConfigs.0.DataDiskNum=1InstanceGroupConfigs.0.BootDiskType=CLOUD_RSSDInstanceGroupConfigs.0.BootDiskSize=50InstanceGroupConfigs.1.NodeType=o.hadoop2m.xlargeInstanceGroupConfigs.1.NodeRole=coreInstanceGroupConfigs.1.Count=3InstanceGroupConfigs.1.DataDiskType=CLOUD_RSSDInstanceGroupConfigs.1.DataDiskSize=200InstanceGroupConfigs.1.DataDiskNum=1InstanceGroupConfigs.1.BootDiskType=CLOUD_RSSDInstanceGroupConfigs.1.BootDiskSize=50 - - **Password** (str) - (Required) 集群机器的登录密码,需要输入base64编码后的内容 - - **SubnetId** (str) - (Required) 子网ID - - **VPCId** (str) - (Required) VPCId - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BusinessId** (str) - 工作组ID,默认Default - - **ChargeType** (str) - 支付类别,默认:Month - - **InstanceName** (str) - 实例名称,默认为实例ID - - **IsSecurityEnabled** (str) - 是否开启安全组 - - **Quantity** (int) - 数量,默认1 - - **SecGroupIds** (str) - 安全组ID,字符串数组,IsSecurityEnabled为true时生效 - - **StandAloneMetaStore** (str) - 目前只支持传‘udb’ - - **StorgeClusterId** (str) - Framework为‘MR’时,存储集群ID - - **US3AccessKey** (str) - US3 配置公钥,仅支持框架为StarRocks存算分离时传入 - - **US3Bucket** (str) - US3 bucket名称,仅支持框架为StarRocks存算分离时传入 - - **US3SecretKey** (str) - US3 配置私钥,仅支持框架为StarRocks存算分离时传入 - - **US3TokenName** (str) - US3 Token名称,仅支持框架为StarRocks存算分离时传入 - - **Response** - - - **InstanceId** (str) - 实例ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUHadoopInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUHadoopInstance", d, **kwargs) - return apis.CreateUHadoopInstanceResponseSchema().loads(resp) - - def delete_uhadoop_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUHadoopInstance - 删除掉一个uhadoop集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ReleaseEIP** (bool) - 是否释放绑定的EIP。true: 解绑EIP后,并释放;其他值或不填:解绑EIP。 - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUHadoopInstanceRequestSchema().dumps(d) - - resp = self.invoke("DeleteUHadoopInstance", d, **kwargs) - return apis.DeleteUHadoopInstanceResponseSchema().loads(resp) - - def describe_uhadoop_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUHadoopInstance - 描述集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **SubnetId** (str) - 子网ID - - **VPCId** (str) - VPCID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterSet** (list) - 见 **ClusterInfo** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **ClusterInfo** - - **AppConfigCount** (str) - 组件数量 - - **AppConfigSet** (str) - 组件集合 - - **BusinessId** (str) - 业务组ID - - **ChargeType** (str) - 付费类型 - - **CoreCount** (str) - core节点数量 - - **CreateTime** (str) - 创建时间 - - **ExpireTime** (str) - 到期时间 - - **Framework** (str) - 框架,值为'Hadoop'|'HDFS'|'MR'|'StarRocks'之一,框架,例如Hadoop|MR|HDFS|StarRocks Hadoop框架包含存储与计算服务 MR集群包含计算服务 HDFS只包含存储服务,StarRocks为StarRocks集群 - - **HadoopVersion** (str) - Hadoop版本,值为 hadoop3.2.1-udh3.0|hadoop3.3.4-udh3.1|hadoop2.8.5-udh2.2 - - **InstanceId** (str) - 实例ID - - **InstanceName** (str) - 实例名称 - - **IsOpenSecGroup** (str) - 是否开启安全组 - - **MasterCount** (str) - Master节点数量 - - **NodeCount** (str) - 节点数量 - - **NodeSet** (str) - 节点集合 - - **ReleaseVersion** (str) - Uhadoop版本,值为 uhadoop 3.0|uhadoop 2.2|uhadoop 3.1 - - **RunningTime** (str) - 运行时间 - - **State** (str) - 状态,值为以下其中之一,Running(运行中)|Creating(创建中)|CreateFailed(创建失败)|Deploying(部署中)|Updating(变更中) - - **SubnetId** (str) - 子网ID - - **Tag** (str) - 集群Tag - - **TaskCount** (str) - Task节点数量 - - **VPCId** (str) - VPC ID - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUHadoopInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUHadoopInstance", d, **kwargs) - return apis.DescribeUHadoopInstanceResponseSchema().loads(resp) - - def get_uhadoop_node_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUHadoopNodeType - 获取节点类型信息 - - **Request** - - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Framework** (str) - 框架,例如Hadoop|MR|HDFS|StarRocks,Hadoop框架包含存储与计算服务,MR集群包含计算服务,HDFS只包含存储服务,StarRocks为StarRocks集群 - - **FrameworkVersion** (str) - 框架版本,例如3.2.1-udh3.0,通过ListUHadoopFrameworkApp接口获取 - - **NodeRole** (str) - 角色,master|core|task - - **NodeType** (str) - 机型名称 - - **Response** - - - **HostTypeSupportNodeType** (str) - 机型可支持的节点类型 - - **InstanceTypeSet** (list) - 见 **InstanceType** 模型定义 - - **Message** (str) - 错误信息 - - **MetaDataUDBUsable** (bool) - 当前可用区是否支持元数据库使用UDB - - **Response Model** - - **DiskSet** - - **DiskMaxNum** (str) - 最大磁盘数量 - - **DiskMaxSize** (str) - 最大单块盘容量,单位GB - - **DiskMinNum** (str) - 最小磁盘数量 - - **DiskMinSize** (str) - 最小单块盘容量,单位GB - - **DiskNum** (int) - 磁盘数量 - - **DiskType** (list) - 可支持的磁盘类型 - - **SingleDiskSize** (int) - 单块盘大小 - - **Size** (int) - 总磁盘大小 - - **Type** (str) - 磁盘角色,分Data数据盘和Boot系统盘 - - - **InstanceType** - - **CPU** (str) - cpu大小 - - **CPUToMemoryRatio** (str) - cpu内存比 - - **DiskSet** (list) - 见 **DiskSet** 模型定义 - - **GpuCount** (int) - GPU数量 - - **GpuType** (str) - GPU型号 - - **HostType** (str) - 机型种类,可选Outstanding(快杰机型)|General(普通机型)|BareMetal(裸金属机型)|GPU(GPU机型)四种类型 - - **IsOpenSecgroup** (str) - 是否支持开启安全组 - - **IsUsable** (str) - 是否可用,该机型是否支持创建 - - **Memory** (str) - 内存大小 - - **NodeType** (str) - 机型名称 - - **SuitableRole** (list) - 可用的节点类型,值为core|task|master之一 - - - """ - # build request - d = { - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUHadoopNodeTypeRequestSchema().dumps(d) - - resp = self.invoke("GetUHadoopNodeType", d, **kwargs) - return apis.GetUHadoopNodeTypeResponseSchema().loads(resp) - - def list_uhadoop_framework_app( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUHadoopFrameworkApp - 列举可选app - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Framework** (str) - (Required) 框架,值为'Hadoop'|'HDFS'|'MR'|'StarRocks'之一,框架,例如Hadoop|MR|HDFS|StarRocks Hadoop框架包含存储与计算服务 MR集群包含计算服务 HDFS只包含存储服务,StarRocks为StarRocks集群 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **InstanceId** (str) - 实例ID,可选。传的话,过滤出适合此集群的app信息。 - - **Response** - - - **AppConfigSet** (list) - 见 **AppConfig** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **AppConfig** - - **AppName** (str) - 需要安装的应用如:Hive,HBase, Spark,Hue,Pig等其他组件 - - **AppStatus** (str) - 应用的状态(运行中)'Running'|(已停止)'Stopped'|(启动中)'Starting'|(停止中)'Stopping'|(启动失败)'StartFailed'|(停止失败)'StopFailed'|(安装中)'Installing'|(安装失败)'InstallFailed'|(未安装)'NotInstalled', - - **AppVersion** (str) - 应用的版本号(0.13.1,0.98.6 等等) - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUHadoopFrameworkAppRequestSchema().dumps(d) - - resp = self.invoke("ListUHadoopFrameworkApp", d, **kwargs) - return apis.ListUHadoopFrameworkAppResponseSchema().loads(resp) - - def list_uhadoop_framework_app_by_use_case( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUHadoopFrameworkAppByUseCase - 按使用场景列出uhadoop的框架和框架中的应用 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **AppConfigSet** (list) - 见 **AppConfigVersion** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **UseCases** - - **AppVersion** (str) - 组件版本 - - **ClusterCase** (str) - 集群种类 - - **MustHas** (str) - 依赖的组件 - - - **AppConfigVersion** - - **Framework** (str) - 框架,值为'Hadoop'|'HDFS'|'MR'|'StarRocks'之一,框架,例如Hadoop|MR|HDFS|StarRocks Hadoop框架包含存储与计算服务 MR集群包含计算服务 HDFS只包含存储服务,StarRocks为StarRocks集群 - - **FrameworkVersion** (str) - 框架版本 - - **HadoopVersion** (str) - Hadoop版本,值为 hadoop3.2.1-udh3.0|hadoop3.3.4-udh3.1 |hadoop2.8.5-udh2.2 - - **ReleaseVersion** (str) - UHadoop版本,值为 uhadoop 3.0|uhadoop 2.2|uhadoop 3.1 - - **UseCases** (list) - 见 **UseCases** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUHadoopFrameworkAppByUseCaseRequestSchema().dumps(d) - - resp = self.invoke("ListUHadoopFrameworkAppByUseCase", d, **kwargs) - return apis.ListUHadoopFrameworkAppByUseCaseResponseSchema().loads(resp) - - def list_uhadoop_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUHadoopInstance - 列出用户所有的uhadoop集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 获取列表的长度限制,默认值为60 - - **Offset** (int) - 获取列表的偏移,默认值为0 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterSet** (list) - 见 **ListClusterInfo** 模型定义 - - **Message** (str) - 错误信息 - - **TotalCount** (int) - 总数 - - **Response Model** - - **ListClusterInfo** - - **BusinessId** (str) - 业务组ID - - **CreateTime** (str) - 创建时间 - - **Framework** (str) - 框架,值为'Hadoop'|'HDFS'|'MR'|'StarRocks'之一,Hadoop框架包含存储与计算服务,MR集群包含计算服务,HDFS只包含存储服务,StarRocks为StarRocks集群 - - **HadoopVersion** (str) - Hadoop版本,值为 hadoop3.2.1-udh3.0|hadoop3.3.4-udh3.1 |hadoop2.8.5-udh2.2 - - **InstanceId** (str) - 实例ID - - **InstanceName** (str) - 实例名称 - - **ReleaseVersion** (str) - Uhadoop版本,值为 uhadoop 3.0|uhadoop 2.2|uhadoop 3.1 - - **State** (str) - 状态,值为以下其中之一,Running(运行中)|Creating(创建中)|CreateFailed(创建失败)|Deploying(部署中)|Updating(变更中) - - **SubnetId** (str) - 子网ID - - **VPCId** (str) - VPC ID - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUHadoopInstanceRequestSchema().dumps(d) - - resp = self.invoke("ListUHadoopInstance", d, **kwargs) - return apis.ListUHadoopInstanceResponseSchema().loads(resp) - - def restart_uhadoop_service( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RestartUHadoopService - 重启集群服务(包含start|stop|restart) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **ServiceName** (str) - (Required) 要操作的服务名。可通过ListUHadoopFrameworkApp接口获取 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ApplicationVersion** (str) - 应用版本,ApplicationVersion传参时,表示这次操作是整个应用所有服务。 - - **NodeId** (list) - 要操作的NodeId数组。如果传入,则用于过滤操作哪些Node。 - - **NodeRole** (list) - 要操作的NodeRole数组。如果传入,则用于过滤操作哪些Node。值为以下之一master|core|task - - **OnlyStart** (bool) - 只启动。值为false|true之一,默认false,当OnlyStart和OnlyStop同时置为true,则重启。 - - **OnlyStop** (bool) - 只停止。值为false|true之一,默认false。当OnlyStart和OnlyStop同时置为true,则重启。 - - **Response** - - - **Message** (str) - 错误信息 - - **State** (str) - 当前执行状态,running(操作运行中)|success(操作成功)|failed(操作失败)|killed(操作被终止)。 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RestartUHadoopServiceRequestSchema().dumps(d) - - resp = self.invoke("RestartUHadoopService", d, **kwargs) - return apis.RestartUHadoopServiceResponseSchema().loads(resp) - - def upgrade_uhadoop_node( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeUHadoopNode - 升级uhadoop节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeRole** (str) - (Required) 节点角色,支持"master"|"core"|"task" - - **NodeType** (str) - (Required) 节点新机型,通过GetUHadoopNodeType接口获取 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **NodeNames** (list) - 节点名称,当NodeRole不为master时必填 - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpgradeUHadoopNodeRequestSchema().dumps(d) - - resp = self.invoke("UpgradeUHadoopNode", d, **kwargs) - return apis.UpgradeUHadoopNodeResponseSchema().loads(resp) - - def upgrade_uhadoop_node_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeUHadoopNodeDisk - 扩容集群节点磁盘 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DataDiskSize** (int) - (Required) 新的数据盘磁盘大小 - - **InstanceId** (str) - (Required) 实例ID - - **NodeRole** (str) - (Required) 节点角色,值为master|core|task之一 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BootDiskSize** (int) - 系统盘磁盘大小,仅支持云盘裸金属机型(系统盘和数据盘数值同时增加、只会处理系统盘参数) - - **NodeNames** (list) - 节点名称集合,当NodeRole不为master时必填 - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpgradeUHadoopNodeDiskRequestSchema().dumps(d) - - resp = self.invoke("UpgradeUHadoopNodeDisk", d, **kwargs) - return apis.UpgradeUHadoopNodeDiskResponseSchema().loads(resp) diff --git a/ucloud/services/uhadoop/schemas/__init__.py b/ucloud/services/uhadoop/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhadoop/schemas/apis.py b/ucloud/services/uhadoop/schemas/apis.py deleted file mode 100644 index 0093441f..00000000 --- a/ucloud/services/uhadoop/schemas/apis.py +++ /dev/null @@ -1,384 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uhadoop.schemas import models - -""" UHadoop API Schema -""" - - -""" -API: AddUHadoopInstanceNode - -给已有集群添加一定数量的节点 -""" - - -class AddUHadoopInstanceNodeRequestSchema(schema.RequestSchema): - """AddUHadoopInstanceNode - 给已有集群添加一定数量的节点""" - - fields = { - "BootDiskSize": fields.Str(required=False, dump_to="BootDiskSize"), - "BootDiskType": fields.Str(required=False, dump_to="BootDiskType"), - "DataDiskNum": fields.Str(required=False, dump_to="DataDiskNum"), - "DataDiskSize": fields.Str(required=False, dump_to="DataDiskSize"), - "DataDiskType": fields.Str(required=False, dump_to="DataDiskType"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeCount": fields.Int(required=False, dump_to="NodeCount"), - "NodeRole": fields.Str(required=True, dump_to="NodeRole"), - "NodeType": fields.Str(required=True, dump_to="NodeType"), - "Password": fields.Str(required=False, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class AddUHadoopInstanceNodeResponseSchema(schema.ResponseSchema): - """AddUHadoopInstanceNode - 给已有集群添加一定数量的节点""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUHadoopInstance - -创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.FrameworkVersion,访问链接:https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app_by_use_case,响应字段的AppConfigSet[N].FrameworkVersion是框架版本是支持的 UHadoop 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.InstanceGroupConfigs需要获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,响应字段的InstanceTypeSet[N].NodeType是机型名称,响应字段的InstanceTypeSet[N].SuitableRole是机型可用的节点类型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,该接口响应字段的InstanceTypeSet[N].DiskSet[N].DiskMinSize和InstanceTypeSet[N].DiskSet[N].DiskMaxSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ ;\\7.Password,集群机器的登录密码,需要输入base64编码后的内容;\\8.AppConfigs 集群需要安装的组件,访问链接,https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app ,AppConfigSet[N].AppName是组件名称,AppConfigSet[N].AppVersion是组件版本 -""" - - -class CreateUHadoopInstanceRequestSchema(schema.RequestSchema): - """CreateUHadoopInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.FrameworkVersion,访问链接:https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app_by_use_case,响应字段的AppConfigSet[N].FrameworkVersion是框架版本是支持的 UHadoop 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.InstanceGroupConfigs需要获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,响应字段的InstanceTypeSet[N].NodeType是机型名称,响应字段的InstanceTypeSet[N].SuitableRole是机型可用的节点类型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,该接口响应字段的InstanceTypeSet[N].DiskSet[N].DiskMinSize和InstanceTypeSet[N].DiskSet[N].DiskMaxSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ ;\\7.Password,集群机器的登录密码,需要输入base64编码后的内容;\\8.AppConfigs 集群需要安装的组件,访问链接,https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app ,AppConfigSet[N].AppName是组件名称,AppConfigSet[N].AppVersion是组件版本""" - - fields = { - "AppConfig": fields.List( - fields.Str() - ), # Deprecated, will be removed at 1.0 - "AppConfigs": fields.List(fields.Str()), - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "Framework": fields.Str(required=True, dump_to="Framework"), - "FrameworkVersion": fields.Str( - required=True, dump_to="FrameworkVersion" - ), - "InstanceGroupConfigs": fields.List(fields.Str()), - "InstanceName": fields.Str(required=False, dump_to="InstanceName"), - "IsSecurityEnabled": fields.Str( - required=False, dump_to="IsSecurityEnabled" - ), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecGroupIds": fields.Str(required=False, dump_to="SecGroupIds"), - "StandAloneMetaStore": fields.Str( - required=False, dump_to="StandAloneMetaStore" - ), - "StorgeClusterId": fields.Str( - required=False, dump_to="StorgeClusterId" - ), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "US3AccessKey": fields.Str(required=False, dump_to="US3AccessKey"), - "US3Bucket": fields.Str(required=False, dump_to="US3Bucket"), - "US3SecretKey": fields.Str(required=False, dump_to="US3SecretKey"), - "US3TokenName": fields.Str(required=False, dump_to="US3TokenName"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUHadoopInstanceResponseSchema(schema.ResponseSchema): - """CreateUHadoopInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.FrameworkVersion,访问链接:https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app_by_use_case,响应字段的AppConfigSet[N].FrameworkVersion是框架版本是支持的 UHadoop 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.InstanceGroupConfigs需要获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,响应字段的InstanceTypeSet[N].NodeType是机型名称,响应字段的InstanceTypeSet[N].SuitableRole是机型可用的节点类型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/uhadoop-api/get_uhadoop_node_type,该接口响应字段的InstanceTypeSet[N].DiskSet[N].DiskMinSize和InstanceTypeSet[N].DiskSet[N].DiskMaxSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ ;\\7.Password,集群机器的登录密码,需要输入base64编码后的内容;\\8.AppConfigs 集群需要安装的组件,访问链接,https://docs.ucloud.cn/api/uhadoop-api/list_uhadoop_framework_app ,AppConfigSet[N].AppName是组件名称,AppConfigSet[N].AppVersion是组件版本""" - - fields = { - "InstanceId": fields.Str(required=False, load_from="InstanceId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteUHadoopInstance - -删除掉一个uhadoop集群 -""" - - -class DeleteUHadoopInstanceRequestSchema(schema.RequestSchema): - """DeleteUHadoopInstance - 删除掉一个uhadoop集群""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReleaseEIP": fields.Bool(required=False, dump_to="ReleaseEIP"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteUHadoopInstanceResponseSchema(schema.ResponseSchema): - """DeleteUHadoopInstance - 删除掉一个uhadoop集群""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeUHadoopInstance - -描述集群 -""" - - -class DescribeUHadoopInstanceRequestSchema(schema.RequestSchema): - """DescribeUHadoopInstance - 描述集群""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeUHadoopInstanceResponseSchema(schema.ResponseSchema): - """DescribeUHadoopInstance - 描述集群""" - - fields = { - "ClusterSet": fields.List( - models.ClusterInfoSchema(), required=False, load_from="ClusterSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: GetUHadoopNodeType - -获取节点类型信息 -""" - - -class GetUHadoopNodeTypeRequestSchema(schema.RequestSchema): - """GetUHadoopNodeType - 获取节点类型信息""" - - fields = { - "Framework": fields.Str(required=False, dump_to="Framework"), - "FrameworkVersion": fields.Str( - required=False, dump_to="FrameworkVersion" - ), - "NodeRole": fields.Str(required=False, dump_to="NodeRole"), - "NodeType": fields.Str(required=False, dump_to="NodeType"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUHadoopNodeTypeResponseSchema(schema.ResponseSchema): - """GetUHadoopNodeType - 获取节点类型信息""" - - fields = { - "HostTypeSupportNodeType": fields.Str( - required=False, load_from="HostTypeSupportNodeType" - ), - "InstanceTypeSet": fields.List( - models.InstanceTypeSchema(), - required=True, - load_from="InstanceTypeSet", - ), - "Message": fields.Str(required=False, load_from="Message"), - "MetaDataUDBUsable": fields.Bool( - required=False, load_from="MetaDataUDBUsable" - ), - } - - -""" -API: ListUHadoopFrameworkApp - -列举可选app -""" - - -class ListUHadoopFrameworkAppRequestSchema(schema.RequestSchema): - """ListUHadoopFrameworkApp - 列举可选app""" - - fields = { - "Framework": fields.Str(required=True, dump_to="Framework"), - "InstanceId": fields.Str(required=False, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUHadoopFrameworkAppResponseSchema(schema.ResponseSchema): - """ListUHadoopFrameworkApp - 列举可选app""" - - fields = { - "AppConfigSet": fields.List( - models.AppConfigSchema(), required=False, load_from="AppConfigSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUHadoopFrameworkAppByUseCase - -按使用场景列出uhadoop的框架和框架中的应用 -""" - - -class ListUHadoopFrameworkAppByUseCaseRequestSchema(schema.RequestSchema): - """ListUHadoopFrameworkAppByUseCase - 按使用场景列出uhadoop的框架和框架中的应用""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUHadoopFrameworkAppByUseCaseResponseSchema(schema.ResponseSchema): - """ListUHadoopFrameworkAppByUseCase - 按使用场景列出uhadoop的框架和框架中的应用""" - - fields = { - "AppConfigSet": fields.List( - models.AppConfigVersionSchema(), - required=False, - load_from="AppConfigSet", - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUHadoopInstance - -列出用户所有的uhadoop集群 -""" - - -class ListUHadoopInstanceRequestSchema(schema.RequestSchema): - """ListUHadoopInstance - 列出用户所有的uhadoop集群""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListUHadoopInstanceResponseSchema(schema.ResponseSchema): - """ListUHadoopInstance - 列出用户所有的uhadoop集群""" - - fields = { - "ClusterSet": fields.List( - models.ListClusterInfoSchema(), - required=True, - load_from="ClusterSet", - ), - "Message": fields.Str(required=False, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: RestartUHadoopService - -重启集群服务(包含start|stop|restart) -""" - - -class RestartUHadoopServiceRequestSchema(schema.RequestSchema): - """RestartUHadoopService - 重启集群服务(包含start|stop|restart)""" - - fields = { - "ApplicationVersion": fields.Str( - required=False, dump_to="ApplicationVersion" - ), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeId": fields.List(fields.Str()), - "NodeRole": fields.List(fields.Str()), - "OnlyStart": fields.Bool(required=False, dump_to="OnlyStart"), - "OnlyStop": fields.Bool(required=False, dump_to="OnlyStop"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ServiceName": fields.Str(required=True, dump_to="ServiceName"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class RestartUHadoopServiceResponseSchema(schema.ResponseSchema): - """RestartUHadoopService - 重启集群服务(包含start|stop|restart)""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - "State": fields.Str(required=False, load_from="State"), - } - - -""" -API: UpgradeUHadoopNode - -升级uhadoop节点 -""" - - -class UpgradeUHadoopNodeRequestSchema(schema.RequestSchema): - """UpgradeUHadoopNode - 升级uhadoop节点""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeNames": fields.List(fields.Str()), - "NodeRole": fields.Str(required=True, dump_to="NodeRole"), - "NodeType": fields.Str(required=True, dump_to="NodeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpgradeUHadoopNodeResponseSchema(schema.ResponseSchema): - """UpgradeUHadoopNode - 升级uhadoop节点""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: UpgradeUHadoopNodeDisk - -扩容集群节点磁盘 -""" - - -class UpgradeUHadoopNodeDiskRequestSchema(schema.RequestSchema): - """UpgradeUHadoopNodeDisk - 扩容集群节点磁盘""" - - fields = { - "BootDiskSize": fields.Int(required=False, dump_to="BootDiskSize"), - "DataDiskSize": fields.Int(required=True, dump_to="DataDiskSize"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeNames": fields.List(fields.Str()), - "NodeRole": fields.Str(required=True, dump_to="NodeRole"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpgradeUHadoopNodeDiskResponseSchema(schema.ResponseSchema): - """UpgradeUHadoopNodeDisk - 扩容集群节点磁盘""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } diff --git a/ucloud/services/uhadoop/schemas/models.py b/ucloud/services/uhadoop/schemas/models.py deleted file mode 100644 index 56c0ac4a..00000000 --- a/ucloud/services/uhadoop/schemas/models.py +++ /dev/null @@ -1,131 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class ClusterInfoSchema(schema.ResponseSchema): - """ClusterInfo - 集群信息""" - - fields = { - "AppConfigCount": fields.Str( - required=False, load_from="AppConfigCount" - ), - "AppConfigSet": fields.Str(required=False, load_from="AppConfigSet"), - "BusinessId": fields.Str(required=True, load_from="BusinessId"), - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CoreCount": fields.Str(required=True, load_from="CoreCount"), - "CreateTime": fields.Str(required=True, load_from="CreateTime"), - "ExpireTime": fields.Str(required=True, load_from="ExpireTime"), - "Framework": fields.Str(required=True, load_from="Framework"), - "HadoopVersion": fields.Str(required=True, load_from="HadoopVersion"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "InstanceName": fields.Str(required=True, load_from="InstanceName"), - "IsOpenSecGroup": fields.Str( - required=False, load_from="IsOpenSecGroup" - ), - "MasterCount": fields.Str(required=True, load_from="MasterCount"), - "NodeCount": fields.Str(required=False, load_from="NodeCount"), - "NodeSet": fields.Str(required=False, load_from="NodeSet"), - "ReleaseVersion": fields.Str(required=True, load_from="ReleaseVersion"), - "RunningTime": fields.Str(required=False, load_from="RunningTime"), - "State": fields.Str(required=True, load_from="State"), - "SubnetId": fields.Str(required=True, load_from="SubnetId"), - "Tag": fields.Str(required=True, load_from="Tag"), - "TaskCount": fields.Str(required=True, load_from="TaskCount"), - "VPCId": fields.Str(required=True, load_from="VPCId"), - "Zone": fields.Str(required=True, load_from="Zone"), - } - - -class DiskSetSchema(schema.ResponseSchema): - """DiskSet -""" - - fields = { - "DiskMaxNum": fields.Str(required=False, load_from="DiskMaxNum"), - "DiskMaxSize": fields.Str(required=False, load_from="DiskMaxSize"), - "DiskMinNum": fields.Str(required=False, load_from="DiskMinNum"), - "DiskMinSize": fields.Str(required=False, load_from="DiskMinSize"), - "DiskNum": fields.Int(required=False, load_from="DiskNum"), - "DiskType": fields.List(fields.Str()), - "SingleDiskSize": fields.Int( - required=False, load_from="SingleDiskSize" - ), - "Size": fields.Int(required=True, load_from="Size"), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class InstanceTypeSchema(schema.ResponseSchema): - """InstanceType - 机型配置""" - - fields = { - "CPU": fields.Str(required=True, load_from="CPU"), - "CPUToMemoryRatio": fields.Str( - required=True, load_from="CPUToMemoryRatio" - ), - "DiskSet": fields.List(DiskSetSchema()), - "GpuCount": fields.Int(required=False, load_from="GpuCount"), - "GpuType": fields.Str(required=False, load_from="GpuType"), - "HostType": fields.Str(required=True, load_from="HostType"), - "IsOpenSecgroup": fields.Str( - required=False, load_from="IsOpenSecgroup" - ), - "IsUsable": fields.Str(required=True, load_from="IsUsable"), - "Memory": fields.Str(required=True, load_from="Memory"), - "NodeType": fields.Str(required=True, load_from="NodeType"), - "SuitableRole": fields.List(fields.Str()), - } - - -class AppConfigSchema(schema.ResponseSchema): - """AppConfig - 应用配置详情""" - - fields = { - "AppName": fields.Str(required=False, load_from="AppName"), - "AppStatus": fields.Str(required=False, load_from="AppStatus"), - "AppVersion": fields.Str(required=False, load_from="AppVersion"), - } - - -class UseCasesSchema(schema.ResponseSchema): - """UseCases - 框架使用示例""" - - fields = { - "AppVersion": fields.Str(required=False, load_from="AppVersion"), - "ClusterCase": fields.Str(required=False, load_from="ClusterCase"), - "MustHas": fields.Str(required=False, load_from="MustHas"), - } - - -class AppConfigVersionSchema(schema.ResponseSchema): - """AppConfigVersion - 组件版本""" - - fields = { - "Framework": fields.Str(required=False, load_from="Framework"), - "FrameworkVersion": fields.Str( - required=False, load_from="FrameworkVersion" - ), - "HadoopVersion": fields.Str(required=False, load_from="HadoopVersion"), - "ReleaseVersion": fields.Str( - required=False, load_from="ReleaseVersion" - ), - "UseCases": fields.List(UseCasesSchema()), - } - - -class ListClusterInfoSchema(schema.ResponseSchema): - """ListClusterInfo - 集群信息""" - - fields = { - "BusinessId": fields.Str(required=True, load_from="BusinessId"), - "CreateTime": fields.Str(required=True, load_from="CreateTime"), - "Framework": fields.Str(required=True, load_from="Framework"), - "HadoopVersion": fields.Str(required=True, load_from="HadoopVersion"), - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "InstanceName": fields.Str(required=True, load_from="InstanceName"), - "ReleaseVersion": fields.Str(required=True, load_from="ReleaseVersion"), - "State": fields.Str(required=True, load_from="State"), - "SubnetId": fields.Str(required=True, load_from="SubnetId"), - "VPCId": fields.Str(required=True, load_from="VPCId"), - "Zone": fields.Str(required=True, load_from="Zone"), - } diff --git a/ucloud/services/uhids/__init__.py b/ucloud/services/uhids/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhids/client.py b/ucloud/services/uhids/client.py deleted file mode 100644 index 9d6ea608..00000000 --- a/ucloud/services/uhids/client.py +++ /dev/null @@ -1,897 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uhids.schemas import apis - - -class UHIDSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UHIDSClient, self).__init__(config, transport, middleware, logger) - - def add_uhost_sec_base_check_white_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUHostSecBaseCheckWhiteRule - 添加安全基线白名单 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Data** (str) - (Required) 基线白名单规则信息(值为以下字段的json转base64后字符串,json格式:{"Data":[{"IP":{"Type":"ip","IPs":["192.168.3.4","192.168.3.4"]},"RuleID":"B0101001V01","AppName":"Linux","Description":"存在弱口令用户[testUser]","RiskType":"配置缺陷","RiskLevel":"高危","User":"testUser"},{"IP":{"Type":"all","IPs":[]},"RuleID":"B0101001V01","AppName":"Linux","Description":"存在弱口令用户[testUser]","RiskType":"配置缺陷","RiskLevel":"高危","User":"testUser"}]}) - - **Response** - - - **Fail** (int) - 失败数 - - **Success** (int) - 成功数 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AddUHostSecBaseCheckWhiteRuleRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUHostSecBaseCheckWhiteRule", d, **kwargs) - return apis.AddUHostSecBaseCheckWhiteRuleResponseSchema().loads(resp) - - def add_uhost_sec_web_risk_white_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUHostSecWebRiskWhiteRule - 添加webrisk白名单 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Data** (str) - (Required) webrisk白名单规则信息(值为以下字段的json转base64后字符串,json格式:{"Data":[{"IP":{"Type":"subnet","IPs":["192.168.1.0/24","172.36.1.0-172.36.255.255"]},"Type":"不安全的配置","RuleId":"30001","RiskDesc":"未删除的.git目录","Detail":"未删除的.git目录,黑客可以直接下载git相关文件","FileName":"/var/www/html/DiscuzX/install/index.php"},{"IP":{"Type":"all","IPs":[]},"Type":"不安全的配置","RuleId":"30001","RiskDesc":"未删除的.git目录","Detail":"未删除的.git目录,黑客可以直接下载git相关文件","FileName":"/var/www/html/DiscuzX/install/index.php"}]}) - - **Response** - - - **Fail** (int) - 失败数 - - **Success** (int) - 成功数 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AddUHostSecWebRiskWhiteRuleRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUHostSecWebRiskWhiteRule", d, **kwargs) - return apis.AddUHostSecWebRiskWhiteRuleResponseSchema().loads(resp) - - def add_uhostsec_common_login_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUhostsecCommonLoginIp - 添加常用登陆Ip - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **IPs** (str) - (Required) IP白名单列表,多个逗号间隔 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AddUhostsecCommonLoginIpRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUhostsecCommonLoginIp", d, **kwargs) - return apis.AddUhostsecCommonLoginIpResponseSchema().loads(resp) - - def add_uhostsec_common_login_location( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUhostsecCommonLoginLocation - 添加常用登录地 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Data** (str) - (Required) 登录地址信息(值为以下字段的json转base64后字符串,json格式:{"Data":[{"Country":"中国","Province":"广东","City":"深圳"},{"Country":"中国","Province":"广东","City":"广州"}]}) - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AddUhostsecCommonLoginLocationRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUhostsecCommonLoginLocation", d, **kwargs) - return apis.AddUhostsecCommonLoginLocationResponseSchema().loads(resp) - - def agent_os_statistic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AgentOSStatistic - 统计当前主机安装哪些系统,并统计各系统安装数 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Response** - - - **Result** (dict) - 见 **OSList** 模型定义 - - **Response Model** - - **OSVersion** - - **Count** (int) - 该版本系统安装主机数 - - **Name** (str) - 系统名称 - - - **OSInfo** - - **Count** (int) - 主机数 - - **OSType** (str) - 系统类型 - - **Version** (list) - 见 **OSVersion** 模型定义 - - - **OSList** - - **OS** (list) - 见 **OSInfo** 模型定义 - - **Total** (int) - 主机操作系统总数 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AgentOSStatisticRequestSchema().dumps(d) - - resp = self.invoke("AgentOSStatistic", d, **kwargs) - return apis.AgentOSStatisticResponseSchema().loads(resp) - - def agent_warnning_statistic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AgentWarnningStatistic - 统计总主机数,在线数,离线数,有风险主机数,无风险主机数 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Response** - - - **Result** (dict) - 见 **AgentWarnningStatisticInfo** 模型定义 - - **Response Model** - - **AgentWarnningStatisticInfo** - - **AgentTotal** (int) - 主机总数 - - **Offline** (int) - 离线主机数 - - **Online** (int) - 在线主机数 - - **SafeCount** (int) - 无风险主机数 - - **WarnningCount** (int) - 有风险主机数 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AgentWarnningStatisticRequestSchema().dumps(d) - - resp = self.invoke("AgentWarnningStatistic", d, **kwargs) - return apis.AgentWarnningStatisticResponseSchema().loads(resp) - - def buy_bill_point( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BuyBillPoint - 购买付费点数 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AutoBusiness** (bool) - (Required) 是否自动设置企业版(true-是,false-否) - - **AutoRenew** (bool) - (Required) 是否自动续费(true-是,false-否) - - **PointNum** (int) - (Required) 购买数量 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.BuyBillPointRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("BuyBillPoint", d, **kwargs) - return apis.BuyBillPointResponseSchema().loads(resp) - - def del_uhost_sec_base_check_white_rule( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DelUHostSecBaseCheckWhiteRule - 删除安全基线白名单 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **WhiteID** (str) - (Required) 基线白名单ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DelUHostSecBaseCheckWhiteRuleRequestSchema().dumps(d) - - resp = self.invoke("DelUHostSecBaseCheckWhiteRule", d, **kwargs) - return apis.DelUHostSecBaseCheckWhiteRuleResponseSchema().loads(resp) - - def del_uhost_sec_common_login( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DelUHostSecCommonLogin - 删除常用登陆IP或常用登陆地 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **WhiteID** (str) - (Required) 登录白名单ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DelUHostSecCommonLoginRequestSchema().dumps(d) - - resp = self.invoke("DelUHostSecCommonLogin", d, **kwargs) - return apis.DelUHostSecCommonLoginResponseSchema().loads(resp) - - def del_uhost_sec_warnings( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DelUHostSecWarnings - 删除告警 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Data** (str) - (Required) 要删除告警的列表json格式:{"Data":[{"WarnType":"WebShellAlarm","ID":"59e870483ef9f419617b7744"},{"WarnType":"checkCockhorse","ID":"59f67a26812c307b65d72e99"}]})WarnType类型:WebShellAlarm,checkCockhorse,BaseCheck,webRisk,VulCheck2,AbnormalLogin,SshBruteSucceeded - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DelUHostSecWarningsRequestSchema().dumps(d) - - resp = self.invoke("DelUHostSecWarnings", d, **kwargs) - return apis.DelUHostSecWarningsResponseSchema().loads(resp) - - def get_uhosts_ec_agent_deployment_statistics( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUHostsecAgentDeploymentStatistics - 获取当前项目制定工程的Agent部署统计值,包括安装与未安装信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **Installed** (int) - 已安装台数 - - **Uninstalled** (int) - 未安装台数 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUHostsecAgentDeploymentStatisticsRequestSchema().dumps(d) - - resp = self.invoke("GetUHostsecAgentDeploymentStatistics", d, **kwargs) - return apis.GetUHostsecAgentDeploymentStatisticsResponseSchema().loads( - resp - ) - - def get_uhosts_ec_agent_install_script( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUHostsecAgentInstallScript - 不同的项目使用的安装脚本附带的属性值会有差异,这里需要根据每个不同的项目来获取相应的主机安全agent安装脚本下载地址 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **InstallScript** (str) - 安装脚本内容 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUHostsecAgentInstallScriptRequestSchema().dumps(d) - - resp = self.invoke("GetUHostsecAgentInstallScript", d, **kwargs) - return apis.GetUHostsecAgentInstallScriptResponseSchema().loads(resp) - - def get_uhosts_ec_base_check_rule_description( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUHostsecBaseCheckRuleDescription - 获取基线检测指定规则详细描述 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **RuleID** (str) - (Required) 规则ID - - **Response** - - - **Description** (str) - 规则描述 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUHostsecBaseCheckRuleDescriptionRequestSchema().dumps(d) - - resp = self.invoke("GetUHostsecBaseCheckRuleDescription", d, **kwargs) - return apis.GetUHostsecBaseCheckRuleDescriptionResponseSchema().loads( - resp - ) - - def get_uhostsec_agent_deployment_situation_with_ver_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUhostsecAgentDeploymentSituationWithVerInfo - 获取当前项目的主机安装信息,包括IP,当前付费版本等信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Response** - - - **InfoList** (list) - 见 **HostAgentStatusInfo** 模型定义 - - **InstallNum** (int) - 已安装UHIDS的主机数 - - **TotalNum** (int) - 主机总数 - - **UninstallNum** (int) - 未安装UHIDS的主机数 - - **Response Model** - - **NIC** - - **IP** (str) - 网卡ip - - **Mac** (str) - 网卡mac - - - **HostAgentStatusInfo** - - **AgentId** (str) - UHIDS的Agent识别ID - - **HostName** (str) - uhost的备注名 - - **Installed** (bool) - 是否已经安装 - - **Ip** (list) - 主机IP列表 - - **NICs** (list) - 见 **NIC** 模型定义 - - **NowVer** (int) - 此主机当前UHIDS版本信息 - - **OsName** (str) - 系统版本 - - **SetVer** (int) - 用户设置此主机UHIDS版本信息 - - **UHostId** (str) - uhost资源短ID - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUhostsecAgentDeploymentSituationWithVerInfoRequestSchema().dumps( - d - ) - - resp = self.invoke( - "GetUhostsecAgentDeploymentSituationWithVerInfo", d, **kwargs - ) - return apis.GetUhostsecAgentDeploymentSituationWithVerInfoResponseSchema().loads( - resp - ) - - def get_uhostsec_trojan_description( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUhostsecTrojanDescription - 获取某一类木马告警的详细描述信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **TableName** (str) - (Required) 获取指定当前木马对应的告警表名,指定当前木马对应的告警表名,利用告警表名来获取当前的描述信息,可以通过获取ListUHostsecTrojanWarnsResponse的返回信息提供TableName值内容,值:WebShellAlarm、checkCockhorse - - **Response** - - - **Description** (str) - 木马描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUhostsecTrojanDescriptionRequestSchema().dumps(d) - - resp = self.invoke("GetUhostsecTrojanDescription", d, **kwargs) - return apis.GetUhostsecTrojanDescriptionResponseSchema().loads(resp) - - def list_uhosts_ec_warn_days_statistics_v2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUHostsecWarnDaysStatisticsV2 - 获取按天列出各类告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **EndTime** (str) - 统计结束时间(y-m-d hh:mm:ss)。不填写默认为当前时间 - - **StartTime** (str) - 统计开始时间(y-m-d hh:mm:ss)。不填写默认从一周前开始统计 - - **Response** - - - **Statistics** (list) - 见 **Statistics** 模型定义 - - **Response Model** - - **Statistics** - - **AbnormalLogin** (int) - 异常登录告警统计值 - - **BaseCheck** (int) - 安全基线检查告警统计值 - - **Date** (str) - 进行告警统计的时间 - - **SshBruteFailed** (int) - 暴力破解失败统计值 - - **SshBruteSucceeded** (int) - 暴力破解成功告警统计值 - - **Trojan** (int) - 木马告警统计值 - - **VulCheck** (int) - 漏洞检查告警统计值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ListUHostsecWarnDaysStatisticsV2RequestSchema().dumps(d) - - resp = self.invoke("ListUHostsecWarnDaysStatisticsV2", d, **kwargs) - return apis.ListUHostsecWarnDaysStatisticsV2ResponseSchema().loads(resp) - - def list_uhosts_ec_warn_statistics_v2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUHostsecWarnStatisticsV2 - 获取当前账号与项目下的各类主机安全告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **WarnStatistics** (dict) - 见 **WarnStatistics** 模型定义 - - **Response Model** - - **WarnStatistics** - - **AbnormalLogin** (int) - 异常登录告警统计值 - - **BaseCheck** (int) - 安全基线检查告警统计值 - - **SshBruteFailed** (int) - 暴力破解失败统计值 - - **SshBruteSucceeded** (int) - 暴力破解成功告警统计值 - - **Trojan** (int) - 木马告警统计值 - - **VulCheck** (int) - 漏洞检查告警统计值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ListUHostsecWarnStatisticsV2RequestSchema().dumps(d) - - resp = self.invoke("ListUHostsecWarnStatisticsV2", d, **kwargs) - return apis.ListUHostsecWarnStatisticsV2ResponseSchema().loads(resp) - - def list_uhostsec_common_login_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUhostsecCommonLoginIp - 列出公共登录ip列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **Infos** (list) - 见 **IP** 模型定义 - - **Response Model** - - **IP** - - **Account** (str) - 操作账号 - - **CreateTime** (str) - 添加时间 - - **ID** (str) - ID - - **IP** (str) - IP - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ListUhostsecCommonLoginIpRequestSchema().dumps(d) - - resp = self.invoke("ListUhostsecCommonLoginIp", d, **kwargs) - return apis.ListUhostsecCommonLoginIpResponseSchema().loads(resp) - - def list_uhostsec_common_login_location( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUhostsecCommonLoginLocation - 获取公共登录地列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Response** - - - **Infos** (list) - 见 **CommonLoginLocationInfo** 模型定义 - - **Response Model** - - **CommonLoginLocationInfo** - - **Account** (str) - 账号 - - **City** (str) - 城市 - - **Country** (str) - 国家 - - **CreateTime** (str) - 创建/修改时间 - - **Province** (str) - 省份 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ListUhostsecCommonLoginLocationRequestSchema().dumps(d) - - resp = self.invoke("ListUhostsecCommonLoginLocation", d, **kwargs) - return apis.ListUhostsecCommonLoginLocationResponseSchema().loads(resp) - - def opt_business_ver_auto( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """OptBusinessVerAuto - 对自动设置企业版的开关设置 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Open** (bool) - (Required) 开(true)/关(false) - - **Response** - - - **OpenStatus** (bool) - 当前开关状态,false-关闭,true-开启 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.OptBusinessVerAutoRequestSchema().dumps(d) - - resp = self.invoke("OptBusinessVerAuto", d, **kwargs) - return apis.OptBusinessVerAutoResponseSchema().loads(resp) - - def opt_pay_auto_renew( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """OptPayAutoRenew - 自动续费功能的开关 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Open** (bool) - (Required) 开(true)/关(false) - - **Response** - - - **OpenStatus** (bool) - 当前开关状态,false-关闭,true-开启 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.OptPayAutoRenewRequestSchema().dumps(d) - - resp = self.invoke("OptPayAutoRenew", d, **kwargs) - return apis.OptPayAutoRenewResponseSchema().loads(resp) - - def query_bill_point_deduction_flow_by_cycle( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryBillPointDeductionFlowByCycle - 按照周期(目前只支持按天)统计用户计费点数变化(增加/减少/预留)情况 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Type** (str) - (Required) 周期(可用值:day) - - **EndTime** (str) - (可选)查询结束时间,格式xxxx-xx-xx - - **StartTime** (str) - (可选)查询开始时间,格式xxxx-xx-xx - - **Response** - - - **Result** (list) - 见 **CycleBillPointStat** 模型定义 - - **Response Model** - - **CycleBillPointStat** - - **AddPointNum** (int) - 减少的减少 - - **RemainPointNum** (int) - 余留的点数 - - **SubPointNum** (int) - 增加的点数 - - **Time** (str) - 统计时间 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.QueryBillPointDeductionFlowByCycleRequestSchema().dumps(d) - - resp = self.invoke("QueryBillPointDeductionFlowByCycle", d, **kwargs) - return apis.QueryBillPointDeductionFlowByCycleResponseSchema().loads( - resp - ) - - def query_newest_update_time( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryNewestUpdateTime - 查询下载数据最新更新时间 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Response** - - - **Result** (dict) - 见 **DataSignatureNewestUpdateTime** 模型定义 - - **Response Model** - - **DataSignatureNewestUpdateTime** - - **Login** (str) - 登录流水最新更新时间 - - **Torojan** (str) - 木马样本最新更新时间 - - **Vul** (str) - 漏洞最新更新时间 - - **WebBase** (str) - web基线最新更新时间 - - **Webshell** (str) - Webshell最新更新时间 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.QueryNewestUpdateTimeRequestSchema().dumps(d) - - resp = self.invoke("QueryNewestUpdateTime", d, **kwargs) - return apis.QueryNewestUpdateTimeResponseSchema().loads(resp) - - def query_pay_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryPayInfo - 查询用户的付费信息,保护目前未消费点数,点数过期时间,自动续费开关等 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **Response** - - - **AutoBusinessVer** (bool) - 自动企业版开关 - - **AutoRenew** (bool) - 自动续费开关 - - **BillPoint** (int) - 未消费预付费点数 - - **CompanyId** (int) - 公司ID - - **ExpiratTime** (str) - 预付费点数过期时间 - - **OrganizationId** (int) - 项目ID - - **RemainTime** (str) - 预付费点数剩余使用时长 - - **RenewPointNum** (int) - 用户最近一次购买的点数大小 - - **ResourceLongId** (str) - 资源ID - - **UpdateTime** (str) - 更改时间 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.QueryPayInfoRequestSchema().dumps(d) - - resp = self.invoke("QueryPayInfo", d, **kwargs) - return apis.QueryPayInfoResponseSchema().loads(resp) - - def query_uhost_sec_warning_base_checks( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryUHostSecWarningBaseChecks - 查询正在告警的安全基线类型列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Type** (str) - (Required) 过滤BaseCheck告警类型,sys:系统安全检查,app:应用安全检查 - - **Response** - - - **Result** (list) - 见 **BaseCheckWarning** 模型定义 - - **Response Model** - - **BaseCheckWarning** - - **AgentCount** (int) - 影响主机数 - - **AppName** (str) - 应用类 - - **Description** (str) - 风险描述 - - **DescriptionEn** (str) - 风险英文描述 - - **RiskLevel** (str) - 风险等级 - - **RiskType** (str) - 风险类型 - - **RuleID** (str) - 基线规则ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.QueryUHostSecWarningBaseChecksRequestSchema().dumps(d) - - resp = self.invoke("QueryUHostSecWarningBaseChecks", d, **kwargs) - return apis.QueryUHostSecWarningBaseChecksResponseSchema().loads(resp) - - def query_week_report_list( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryWeekReportList - 查询主机安全周报 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **PageIndex** (int) - 第N页 - - **PageSize** (int) - 页大小 - - **Response** - - - **Result** (list) - 见 **WeekReport** 模型定义 - - **Total** (int) - 记录总数 - - **Response Model** - - **WeekReport** - - **FileName** (str) - 文件名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.QueryWeekReportListRequestSchema().dumps(d) - - resp = self.invoke("QueryWeekReportList", d, **kwargs) - return apis.QueryWeekReportListResponseSchema().loads(resp) - - def switch_agent_function_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SwitchAgentFunctionVersion - 对agent在各个功能版本之间切换 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **AgentList** (str) - (Required) 操作的Agent列表,以逗号分隔,如全部则设成ALL - - **ChargeType** (int) - (Required) 付费类型 月付或年付 - - **FuncVersion** (int) - (Required) 功能版本(0-基础版 1-企业版) - - **Coupon** (str) - 代金券 - - **Quantity** (int) - 购买数量 - - **Response** - - - **Records** (dict) - 见 **SwitchAgentRecord** 模型定义 - - **Response Model** - - **SwitchAgentRecord** - - **AgentID** (str) - - - **Message** (str) - - - **RetCode** (int) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SwitchAgentFunctionVersionRequestSchema().dumps(d) - - resp = self.invoke("SwitchAgentFunctionVersion", d, **kwargs) - return apis.SwitchAgentFunctionVersionResponseSchema().loads(resp) - - def vul_statistic_top_n( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """VulStatisticTopN - 某种类型漏洞存在主机的主机数TOP N - - **Request** - - - **ProjectId** (str) - (Config) 项目ID - - **TopN** (int) - 感染主机数量最多的前N个漏洞,最小为10 - - **Response** - - - **Result** (list) - 见 **VulStatisticTopNInfo** 模型定义 - - **Response Model** - - **VulStatisticTopNInfo** - - **AgentCount** (int) - 存在该漏洞的主机数 - - **Name** (str) - 漏洞名称 - - **VulID** (str) - 漏洞ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.VulStatisticTopNRequestSchema().dumps(d) - - resp = self.invoke("VulStatisticTopN", d, **kwargs) - return apis.VulStatisticTopNResponseSchema().loads(resp) diff --git a/ucloud/services/uhids/schemas/__init__.py b/ucloud/services/uhids/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhids/schemas/apis.py b/ucloud/services/uhids/schemas/apis.py deleted file mode 100644 index 65f5f13f..00000000 --- a/ucloud/services/uhids/schemas/apis.py +++ /dev/null @@ -1,719 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uhids.schemas import models - -""" UHIDS API Schema -""" - - -""" -API: AddUHostSecBaseCheckWhiteRule - -添加安全基线白名单 -""" - - -class AddUHostSecBaseCheckWhiteRuleRequestSchema(schema.RequestSchema): - """AddUHostSecBaseCheckWhiteRule - 添加安全基线白名单""" - - fields = { - "Data": fields.Str(required=True, dump_to="Data"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AddUHostSecBaseCheckWhiteRuleResponseSchema(schema.ResponseSchema): - """AddUHostSecBaseCheckWhiteRule - 添加安全基线白名单""" - - fields = { - "Fail": fields.Int(required=False, load_from="Fail"), - "Success": fields.Int(required=False, load_from="Success"), - } - - -""" -API: AddUHostSecWebRiskWhiteRule - -添加webrisk白名单 -""" - - -class AddUHostSecWebRiskWhiteRuleRequestSchema(schema.RequestSchema): - """AddUHostSecWebRiskWhiteRule - 添加webrisk白名单""" - - fields = { - "Data": fields.Str(required=True, dump_to="Data"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AddUHostSecWebRiskWhiteRuleResponseSchema(schema.ResponseSchema): - """AddUHostSecWebRiskWhiteRule - 添加webrisk白名单""" - - fields = { - "Fail": fields.Int(required=False, load_from="Fail"), - "Success": fields.Int(required=False, load_from="Success"), - } - - -""" -API: AddUhostsecCommonLoginIp - -添加常用登陆Ip -""" - - -class AddUhostsecCommonLoginIpRequestSchema(schema.RequestSchema): - """AddUhostsecCommonLoginIp - 添加常用登陆Ip""" - - fields = { - "IPs": fields.Str(required=True, dump_to="IPs"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AddUhostsecCommonLoginIpResponseSchema(schema.ResponseSchema): - """AddUhostsecCommonLoginIp - 添加常用登陆Ip""" - - fields = {} - - -""" -API: AddUhostsecCommonLoginLocation - -添加常用登录地 -""" - - -class AddUhostsecCommonLoginLocationRequestSchema(schema.RequestSchema): - """AddUhostsecCommonLoginLocation - 添加常用登录地""" - - fields = { - "Data": fields.Str(required=True, dump_to="Data"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AddUhostsecCommonLoginLocationResponseSchema(schema.ResponseSchema): - """AddUhostsecCommonLoginLocation - 添加常用登录地""" - - fields = {} - - -""" -API: AgentOSStatistic - -统计当前主机安装哪些系统,并统计各系统安装数 -""" - - -class AgentOSStatisticRequestSchema(schema.RequestSchema): - """AgentOSStatistic - 统计当前主机安装哪些系统,并统计各系统安装数""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AgentOSStatisticResponseSchema(schema.ResponseSchema): - """AgentOSStatistic - 统计当前主机安装哪些系统,并统计各系统安装数""" - - fields = { - "Result": models.OSListSchema(), - } - - -""" -API: AgentWarnningStatistic - -统计总主机数,在线数,离线数,有风险主机数,无风险主机数 -""" - - -class AgentWarnningStatisticRequestSchema(schema.RequestSchema): - """AgentWarnningStatistic - 统计总主机数,在线数,离线数,有风险主机数,无风险主机数""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class AgentWarnningStatisticResponseSchema(schema.ResponseSchema): - """AgentWarnningStatistic - 统计总主机数,在线数,离线数,有风险主机数,无风险主机数""" - - fields = { - "Result": models.AgentWarnningStatisticInfoSchema(), - } - - -""" -API: BuyBillPoint - -购买付费点数 -""" - - -class BuyBillPointRequestSchema(schema.RequestSchema): - """BuyBillPoint - 购买付费点数""" - - fields = { - "AutoBusiness": fields.Bool(required=True, dump_to="AutoBusiness"), - "AutoRenew": fields.Bool(required=True, dump_to="AutoRenew"), - "PointNum": fields.Int(required=True, dump_to="PointNum"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class BuyBillPointResponseSchema(schema.ResponseSchema): - """BuyBillPoint - 购买付费点数""" - - fields = {} - - -""" -API: DelUHostSecBaseCheckWhiteRule - -删除安全基线白名单 -""" - - -class DelUHostSecBaseCheckWhiteRuleRequestSchema(schema.RequestSchema): - """DelUHostSecBaseCheckWhiteRule - 删除安全基线白名单""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "WhiteID": fields.Str(required=True, dump_to="WhiteID"), - } - - -class DelUHostSecBaseCheckWhiteRuleResponseSchema(schema.ResponseSchema): - """DelUHostSecBaseCheckWhiteRule - 删除安全基线白名单""" - - fields = {} - - -""" -API: DelUHostSecCommonLogin - -删除常用登陆IP或常用登陆地 -""" - - -class DelUHostSecCommonLoginRequestSchema(schema.RequestSchema): - """DelUHostSecCommonLogin - 删除常用登陆IP或常用登陆地""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=False, dump_to="Region"), - "WhiteID": fields.Str(required=True, dump_to="WhiteID"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DelUHostSecCommonLoginResponseSchema(schema.ResponseSchema): - """DelUHostSecCommonLogin - 删除常用登陆IP或常用登陆地""" - - fields = {} - - -""" -API: DelUHostSecWarnings - -删除告警 -""" - - -class DelUHostSecWarningsRequestSchema(schema.RequestSchema): - """DelUHostSecWarnings - 删除告警""" - - fields = { - "Data": fields.Str(required=True, dump_to="Data"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class DelUHostSecWarningsResponseSchema(schema.ResponseSchema): - """DelUHostSecWarnings - 删除告警""" - - fields = {} - - -""" -API: GetUHostsecAgentDeploymentStatistics - -获取当前项目制定工程的Agent部署统计值,包括安装与未安装信息 -""" - - -class GetUHostsecAgentDeploymentStatisticsRequestSchema(schema.RequestSchema): - """GetUHostsecAgentDeploymentStatistics - 获取当前项目制定工程的Agent部署统计值,包括安装与未安装信息""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class GetUHostsecAgentDeploymentStatisticsResponseSchema(schema.ResponseSchema): - """GetUHostsecAgentDeploymentStatistics - 获取当前项目制定工程的Agent部署统计值,包括安装与未安装信息""" - - fields = { - "Installed": fields.Int(required=False, load_from="Installed"), - "Uninstalled": fields.Int(required=False, load_from="Uninstalled"), - } - - -""" -API: GetUHostsecAgentInstallScript - -不同的项目使用的安装脚本附带的属性值会有差异,这里需要根据每个不同的项目来获取相应的主机安全agent安装脚本下载地址 -""" - - -class GetUHostsecAgentInstallScriptRequestSchema(schema.RequestSchema): - """GetUHostsecAgentInstallScript - 不同的项目使用的安装脚本附带的属性值会有差异,这里需要根据每个不同的项目来获取相应的主机安全agent安装脚本下载地址""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class GetUHostsecAgentInstallScriptResponseSchema(schema.ResponseSchema): - """GetUHostsecAgentInstallScript - 不同的项目使用的安装脚本附带的属性值会有差异,这里需要根据每个不同的项目来获取相应的主机安全agent安装脚本下载地址""" - - fields = { - "InstallScript": fields.Str(required=True, load_from="InstallScript"), - } - - -""" -API: GetUHostsecBaseCheckRuleDescription - -获取基线检测指定规则详细描述 -""" - - -class GetUHostsecBaseCheckRuleDescriptionRequestSchema(schema.RequestSchema): - """GetUHostsecBaseCheckRuleDescription - 获取基线检测指定规则详细描述""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "RuleID": fields.Str(required=True, dump_to="RuleID"), - } - - -class GetUHostsecBaseCheckRuleDescriptionResponseSchema(schema.ResponseSchema): - """GetUHostsecBaseCheckRuleDescription - 获取基线检测指定规则详细描述""" - - fields = { - "Description": fields.Str(required=False, load_from="Description"), - } - - -""" -API: GetUhostsecAgentDeploymentSituationWithVerInfo - -获取当前项目的主机安装信息,包括IP,当前付费版本等信息 -""" - - -class GetUhostsecAgentDeploymentSituationWithVerInfoRequestSchema( - schema.RequestSchema -): - """GetUhostsecAgentDeploymentSituationWithVerInfo - 获取当前项目的主机安装信息,包括IP,当前付费版本等信息""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class GetUhostsecAgentDeploymentSituationWithVerInfoResponseSchema( - schema.ResponseSchema -): - """GetUhostsecAgentDeploymentSituationWithVerInfo - 获取当前项目的主机安装信息,包括IP,当前付费版本等信息""" - - fields = { - "InfoList": fields.List( - models.HostAgentStatusInfoSchema(), - required=False, - load_from="InfoList", - ), - "InstallNum": fields.Int(required=False, load_from="InstallNum"), - "TotalNum": fields.Int(required=False, load_from="TotalNum"), - "UninstallNum": fields.Int(required=False, load_from="UninstallNum"), - } - - -""" -API: GetUhostsecTrojanDescription - -获取某一类木马告警的详细描述信息 -""" - - -class GetUhostsecTrojanDescriptionRequestSchema(schema.RequestSchema): - """GetUhostsecTrojanDescription - 获取某一类木马告警的详细描述信息""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "TableName": fields.Str(required=True, dump_to="TableName"), - } - - -class GetUhostsecTrojanDescriptionResponseSchema(schema.ResponseSchema): - """GetUhostsecTrojanDescription - 获取某一类木马告警的详细描述信息""" - - fields = { - "Description": fields.Str(required=False, load_from="Description"), - } - - -""" -API: ListUHostsecWarnDaysStatisticsV2 - -获取按天列出各类告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0 -""" - - -class ListUHostsecWarnDaysStatisticsV2RequestSchema(schema.RequestSchema): - """ListUHostsecWarnDaysStatisticsV2 - 获取按天列出各类告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0""" - - fields = { - "EndTime": fields.Str(required=False, dump_to="EndTime"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "StartTime": fields.Str(required=False, dump_to="StartTime"), - } - - -class ListUHostsecWarnDaysStatisticsV2ResponseSchema(schema.ResponseSchema): - """ListUHostsecWarnDaysStatisticsV2 - 获取按天列出各类告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0""" - - fields = { - "Statistics": fields.List( - models.StatisticsSchema(), required=True, load_from="Statistics" - ), - } - - -""" -API: ListUHostsecWarnStatisticsV2 - -获取当前账号与项目下的各类主机安全告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0 -""" - - -class ListUHostsecWarnStatisticsV2RequestSchema(schema.RequestSchema): - """ListUHostsecWarnStatisticsV2 - 获取当前账号与项目下的各类主机安全告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class ListUHostsecWarnStatisticsV2ResponseSchema(schema.ResponseSchema): - """ListUHostsecWarnStatisticsV2 - 获取当前账号与项目下的各类主机安全告警统计值,但不统计暴力破解失败数据,SshBruteFailed为0""" - - fields = { - "WarnStatistics": models.WarnStatisticsSchema(), - } - - -""" -API: ListUhostsecCommonLoginIp - -列出公共登录ip列表 -""" - - -class ListUhostsecCommonLoginIpRequestSchema(schema.RequestSchema): - """ListUhostsecCommonLoginIp - 列出公共登录ip列表""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class ListUhostsecCommonLoginIpResponseSchema(schema.ResponseSchema): - """ListUhostsecCommonLoginIp - 列出公共登录ip列表""" - - fields = { - "Infos": fields.List( - models.IPSchema(), required=False, load_from="Infos" - ), - } - - -""" -API: ListUhostsecCommonLoginLocation - -获取公共登录地列表 -""" - - -class ListUhostsecCommonLoginLocationRequestSchema(schema.RequestSchema): - """ListUhostsecCommonLoginLocation - 获取公共登录地列表""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class ListUhostsecCommonLoginLocationResponseSchema(schema.ResponseSchema): - """ListUhostsecCommonLoginLocation - 获取公共登录地列表""" - - fields = { - "Infos": fields.List( - models.CommonLoginLocationInfoSchema(), - required=False, - load_from="Infos", - ), - } - - -""" -API: OptBusinessVerAuto - -对自动设置企业版的开关设置 -""" - - -class OptBusinessVerAutoRequestSchema(schema.RequestSchema): - """OptBusinessVerAuto - 对自动设置企业版的开关设置""" - - fields = { - "Open": fields.Bool(required=True, dump_to="Open"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class OptBusinessVerAutoResponseSchema(schema.ResponseSchema): - """OptBusinessVerAuto - 对自动设置企业版的开关设置""" - - fields = { - "OpenStatus": fields.Bool(required=True, load_from="OpenStatus"), - } - - -""" -API: OptPayAutoRenew - -自动续费功能的开关 -""" - - -class OptPayAutoRenewRequestSchema(schema.RequestSchema): - """OptPayAutoRenew - 自动续费功能的开关""" - - fields = { - "Open": fields.Bool(required=True, dump_to="Open"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class OptPayAutoRenewResponseSchema(schema.ResponseSchema): - """OptPayAutoRenew - 自动续费功能的开关""" - - fields = { - "OpenStatus": fields.Bool(required=True, load_from="OpenStatus"), - } - - -""" -API: QueryBillPointDeductionFlowByCycle - -按照周期(目前只支持按天)统计用户计费点数变化(增加/减少/预留)情况 -""" - - -class QueryBillPointDeductionFlowByCycleRequestSchema(schema.RequestSchema): - """QueryBillPointDeductionFlowByCycle - 按照周期(目前只支持按天)统计用户计费点数变化(增加/减少/预留)情况""" - - fields = { - "EndTime": fields.Str(required=False, dump_to="EndTime"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "StartTime": fields.Str(required=False, dump_to="StartTime"), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class QueryBillPointDeductionFlowByCycleResponseSchema(schema.ResponseSchema): - """QueryBillPointDeductionFlowByCycle - 按照周期(目前只支持按天)统计用户计费点数变化(增加/减少/预留)情况""" - - fields = { - "Result": fields.List( - models.CycleBillPointStatSchema(), - required=False, - load_from="Result", - ), - } - - -""" -API: QueryNewestUpdateTime - -查询下载数据最新更新时间 -""" - - -class QueryNewestUpdateTimeRequestSchema(schema.RequestSchema): - """QueryNewestUpdateTime - 查询下载数据最新更新时间""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class QueryNewestUpdateTimeResponseSchema(schema.ResponseSchema): - """QueryNewestUpdateTime - 查询下载数据最新更新时间""" - - fields = { - "Result": models.DataSignatureNewestUpdateTimeSchema(), - } - - -""" -API: QueryPayInfo - -查询用户的付费信息,保护目前未消费点数,点数过期时间,自动续费开关等 -""" - - -class QueryPayInfoRequestSchema(schema.RequestSchema): - """QueryPayInfo - 查询用户的付费信息,保护目前未消费点数,点数过期时间,自动续费开关等""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class QueryPayInfoResponseSchema(schema.ResponseSchema): - """QueryPayInfo - 查询用户的付费信息,保护目前未消费点数,点数过期时间,自动续费开关等""" - - fields = { - "AutoBusinessVer": fields.Bool( - required=True, load_from="AutoBusinessVer" - ), - "AutoRenew": fields.Bool(required=True, load_from="AutoRenew"), - "BillPoint": fields.Int(required=True, load_from="BillPoint"), - "CompanyId": fields.Int(required=False, load_from="CompanyId"), - "ExpiratTime": fields.Str(required=True, load_from="ExpiratTime"), - "OrganizationId": fields.Int( - required=False, load_from="OrganizationId" - ), - "RemainTime": fields.Str(required=True, load_from="RemainTime"), - "RenewPointNum": fields.Int(required=False, load_from="RenewPointNum"), - "ResourceLongId": fields.Str( - required=False, load_from="ResourceLongId" - ), - "UpdateTime": fields.Str(required=False, load_from="UpdateTime"), - } - - -""" -API: QueryUHostSecWarningBaseChecks - -查询正在告警的安全基线类型列表 -""" - - -class QueryUHostSecWarningBaseChecksRequestSchema(schema.RequestSchema): - """QueryUHostSecWarningBaseChecks - 查询正在告警的安全基线类型列表""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class QueryUHostSecWarningBaseChecksResponseSchema(schema.ResponseSchema): - """QueryUHostSecWarningBaseChecks - 查询正在告警的安全基线类型列表""" - - fields = { - "Result": fields.List( - models.BaseCheckWarningSchema(), required=False, load_from="Result" - ), - } - - -""" -API: QueryWeekReportList - -查询主机安全周报 -""" - - -class QueryWeekReportListRequestSchema(schema.RequestSchema): - """QueryWeekReportList - 查询主机安全周报""" - - fields = { - "PageIndex": fields.Int(required=False, dump_to="PageIndex"), - "PageSize": fields.Int(required=False, dump_to="PageSize"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class QueryWeekReportListResponseSchema(schema.ResponseSchema): - """QueryWeekReportList - 查询主机安全周报""" - - fields = { - "Result": fields.List( - models.WeekReportSchema(), required=True, load_from="Result" - ), - "Total": fields.Int(required=False, load_from="Total"), - } - - -""" -API: SwitchAgentFunctionVersion - -对agent在各个功能版本之间切换 -""" - - -class SwitchAgentFunctionVersionRequestSchema(schema.RequestSchema): - """SwitchAgentFunctionVersion - 对agent在各个功能版本之间切换""" - - fields = { - "AgentList": fields.Str(required=True, dump_to="AgentList"), - "ChargeType": fields.Int(required=True, dump_to="ChargeType"), - "Coupon": fields.Str(required=False, dump_to="Coupon"), - "FuncVersion": fields.Int(required=True, dump_to="FuncVersion"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - } - - -class SwitchAgentFunctionVersionResponseSchema(schema.ResponseSchema): - """SwitchAgentFunctionVersion - 对agent在各个功能版本之间切换""" - - fields = { - "Records": models.SwitchAgentRecordSchema(), - } - - -""" -API: VulStatisticTopN - -某种类型漏洞存在主机的主机数TOP N -""" - - -class VulStatisticTopNRequestSchema(schema.RequestSchema): - """VulStatisticTopN - 某种类型漏洞存在主机的主机数TOP N""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "TopN": fields.Int(required=False, dump_to="TopN"), - } - - -class VulStatisticTopNResponseSchema(schema.ResponseSchema): - """VulStatisticTopN - 某种类型漏洞存在主机的主机数TOP N""" - - fields = { - "Result": fields.List( - models.VulStatisticTopNInfoSchema(), - required=True, - load_from="Result", - ), - } diff --git a/ucloud/services/uhids/schemas/models.py b/ucloud/services/uhids/schemas/models.py deleted file mode 100644 index b481f509..00000000 --- a/ucloud/services/uhids/schemas/models.py +++ /dev/null @@ -1,190 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class OSVersionSchema(schema.ResponseSchema): - """OSVersion - 系统版本信息""" - - fields = { - "Count": fields.Int(required=False, load_from="Count"), - "Name": fields.Str(required=False, load_from="Name"), - } - - -class OSInfoSchema(schema.ResponseSchema): - """OSInfo - 主机操作系统信息""" - - fields = { - "Count": fields.Int(required=False, load_from="Count"), - "OSType": fields.Str(required=False, load_from="OSType"), - "Version": fields.List(OSVersionSchema()), - } - - -class OSListSchema(schema.ResponseSchema): - """OSList - 主机操作系统列表""" - - fields = { - "OS": fields.List(OSInfoSchema()), - "Total": fields.Int(required=False, load_from="Total"), - } - - -class AgentWarnningStatisticInfoSchema(schema.ResponseSchema): - """AgentWarnningStatisticInfo - 服务器状态统计Result数据信息""" - - fields = { - "AgentTotal": fields.Int(required=True, load_from="AgentTotal"), - "Offline": fields.Int(required=True, load_from="Offline"), - "Online": fields.Int(required=True, load_from="Online"), - "SafeCount": fields.Int(required=True, load_from="SafeCount"), - "WarnningCount": fields.Int(required=True, load_from="WarnningCount"), - } - - -class NICSchema(schema.ResponseSchema): - """NIC - 网卡信息""" - - fields = { - "IP": fields.Str(required=False, load_from="IP"), - "Mac": fields.Str(required=False, load_from="Mac"), - } - - -class HostAgentStatusInfoSchema(schema.ResponseSchema): - """HostAgentStatusInfo - 主机的Agent状态信息""" - - fields = { - "AgentId": fields.Str(required=True, load_from="AgentId"), - "HostName": fields.Str(required=True, load_from="HostName"), - "Installed": fields.Bool(required=True, load_from="Installed"), - "Ip": fields.List(fields.Str()), - "NICs": fields.List(NICSchema()), - "NowVer": fields.Int(required=True, load_from="NowVer"), - "OsName": fields.Str(required=False, load_from="OsName"), - "SetVer": fields.Int(required=True, load_from="SetVer"), - "UHostId": fields.Str(required=True, load_from="UHostId"), - "Zone": fields.Str(required=True, load_from="Zone"), - } - - -class StatisticsSchema(schema.ResponseSchema): - """Statistics - 主机安全告警按时间段统计""" - - fields = { - "AbnormalLogin": fields.Int(required=True, load_from="AbnormalLogin"), - "BaseCheck": fields.Int(required=True, load_from="BaseCheck"), - "Date": fields.Str(required=True, load_from="Date"), - "SshBruteFailed": fields.Int(required=True, load_from="SshBruteFailed"), - "SshBruteSucceeded": fields.Int( - required=True, load_from="SshBruteSucceeded" - ), - "Trojan": fields.Int(required=True, load_from="Trojan"), - "VulCheck": fields.Int(required=True, load_from="VulCheck"), - } - - -class WarnStatisticsSchema(schema.ResponseSchema): - """WarnStatistics - 主机告警统计""" - - fields = { - "AbnormalLogin": fields.Int(required=True, load_from="AbnormalLogin"), - "BaseCheck": fields.Int(required=True, load_from="BaseCheck"), - "SshBruteFailed": fields.Int( - required=False, load_from="SshBruteFailed" - ), - "SshBruteSucceeded": fields.Int( - required=True, load_from="SshBruteSucceeded" - ), - "Trojan": fields.Int(required=True, load_from="Trojan"), - "VulCheck": fields.Int(required=True, load_from="VulCheck"), - } - - -class IPSchema(schema.ResponseSchema): - """IP - 白名单IP""" - - fields = { - "Account": fields.Str(required=True, load_from="Account"), - "CreateTime": fields.Str(required=True, load_from="CreateTime"), - "ID": fields.Str(required=True, load_from="ID"), - "IP": fields.Str(required=True, load_from="IP"), - } - - -class CommonLoginLocationInfoSchema(schema.ResponseSchema): - """CommonLoginLocationInfo - 公共登录地信息""" - - fields = { - "Account": fields.Str(required=False, load_from="Account"), - "City": fields.Str(required=False, load_from="City"), - "Country": fields.Str(required=False, load_from="Country"), - "CreateTime": fields.Str(required=False, load_from="CreateTime"), - "Province": fields.Str(required=False, load_from="Province"), - } - - -class CycleBillPointStatSchema(schema.ResponseSchema): - """CycleBillPointStat - 周期统计的计费点数情况""" - - fields = { - "AddPointNum": fields.Int(required=True, load_from="AddPointNum"), - "RemainPointNum": fields.Int(required=True, load_from="RemainPointNum"), - "SubPointNum": fields.Int(required=True, load_from="SubPointNum"), - "Time": fields.Str(required=True, load_from="Time"), - } - - -class DataSignatureNewestUpdateTimeSchema(schema.ResponseSchema): - """DataSignatureNewestUpdateTime - 数据下载最新更新时间""" - - fields = { - "Login": fields.Str(required=False, load_from="Login"), - "Torojan": fields.Str(required=False, load_from="Torojan"), - "Vul": fields.Str(required=False, load_from="Vul"), - "WebBase": fields.Str(required=False, load_from="WebBase"), - "Webshell": fields.Str(required=False, load_from="Webshell"), - } - - -class BaseCheckWarningSchema(schema.ResponseSchema): - """BaseCheckWarning - 基线告警信息""" - - fields = { - "AgentCount": fields.Int(required=False, load_from="AgentCount"), - "AppName": fields.Str(required=False, load_from="AppName"), - "Description": fields.Str(required=False, load_from="Description"), - "DescriptionEn": fields.Str(required=False, load_from="DescriptionEn"), - "RiskLevel": fields.Str(required=False, load_from="RiskLevel"), - "RiskType": fields.Str(required=False, load_from="RiskType"), - "RuleID": fields.Str(required=False, load_from="RuleID"), - } - - -class WeekReportSchema(schema.ResponseSchema): - """WeekReport -""" - - fields = { - "FileName": fields.Str(required=True, load_from="FileName"), - } - - -class SwitchAgentRecordSchema(schema.ResponseSchema): - """SwitchAgentRecord - 切换Agent 版本记录""" - - fields = { - "AgentID": fields.Str(required=False, load_from="AgentID"), - "Message": fields.Str(required=False, load_from="Message"), - "RetCode": fields.Int(required=False, load_from="RetCode"), - } - - -class VulStatisticTopNInfoSchema(schema.ResponseSchema): - """VulStatisticTopNInfo - 高危漏洞TOP N列表漏洞信息""" - - fields = { - "AgentCount": fields.Int(required=True, load_from="AgentCount"), - "Name": fields.Str(required=True, load_from="Name"), - "VulID": fields.Str(required=True, load_from="VulID"), - } diff --git a/ucloud/services/uhost/__init__.py b/ucloud/services/uhost/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhost/schemas/__init__.py b/ucloud/services/uhost/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhub/__init__.py b/ucloud/services/uhub/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uhub/schemas/__init__.py b/ucloud/services/uhub/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uk8s/__init__.py b/ucloud/services/uk8s/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uk8s/schemas/__init__.py b/ucloud/services/uk8s/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ukafka/__init__.py b/ucloud/services/ukafka/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ukafka/client.py b/ucloud/services/ukafka/client.py deleted file mode 100644 index a232b991..00000000 --- a/ucloud/services/ukafka/client.py +++ /dev/null @@ -1,567 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ukafka.schemas import apis - - -class UKafkaClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UKafkaClient, self).__init__( - config, transport, middleware, logger - ) - - def add_ukafka_instance_node( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddUKafkaInstanceNode - 给实例添加节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeCount** (str) - (Required) 新添加节点数量 - - **NodeType** (str) - (Required) 机型,支持的机型可通过GetUKafkaNodeType 接口返回的InstanceTypeSet[].InstanceTypeName - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddUKafkaInstanceNodeRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddUKafkaInstanceNode", d, **kwargs) - return apis.AddUKafkaInstanceNodeResponseSchema().loads(resp) - - def create_ukafka_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUKafkaInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.获取FrameworkVersion,访问链接:https://docs.ucloud.cn/api/ukafka-api/list_ukafka_framework_version,响应字段的FrameworkVersions[N].Version是支持的 Kafka 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,响应字段的NodeTypeSet[N].NodeTypeName是支持的所有机型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,该接口响应字段的NodeTypeSet[N].MinDiskSize和NodeTypeSet[N].MaxDiskSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ . - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ChargeType** (str) - (Required) 付费方式 - - **DiskSize** (int) - (Required) 数据盘大小。支持范围根据GetUKafkaNodeType 接口返回的InstanceTypeSet[].MaxDiskSize 和MinDiskSize获取 - - **FrameworkVersion** (str) - (Required) kafka版本,支持的版本可通过ListUKafkaFrameworkVersion 接口返回字段的FrameworkVersions获取 - - **InstanceName** (str) - (Required) 实例名,可自定义。只能包含中英文、数字以及- _ . - - **NodeType** (str) - (Required) 机型,支持的机型可通过GetUKafkaNodeType 接口返回的InstanceTypeSet[].InstanceTypeName - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BusinessId** (str) - 业务组,默认Default - - **DiskControllerType** (str) - 磁盘管理方式,支持值:NONE、CLEAN。默认值:NONE - - **DiskThreshold** (str) - 磁盘清理阈值,支持范围[70,90]。DiskControllerType 为CLEAN 时必填。默认值 90 - - **IsSecurityEnabled** (str) - 是否开启安全组,支持"true","false",默认 false - - **LogRetentionHours** (str) - kafka 日志保存时间,支持范围[1,240]。默认 72 小时 - - **NodeCount** (int) - 实例节点数量。默认 3 节点 - - **Quantity** (str) - 实例数量,默认 1 - - **SubnetId** (str) - 子网 ID,不填时为默认子网 ID - - **VPCId** (str) - VPCID,不填时为默认VPCID - - **Response** - - - **InstanceId** (str) - 实例资源 ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUKafkaInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUKafkaInstance", d, **kwargs) - return apis.CreateUKafkaInstanceResponseSchema().loads(resp) - - def delete_ukafka_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUKafkaInstance - 删除实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUKafkaInstanceRequestSchema().dumps(d) - - resp = self.invoke("DeleteUKafkaInstance", d, **kwargs) - return apis.DeleteUKafkaInstanceResponseSchema().loads(resp) - - def describe_ukafka_consumer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUKafkaConsumer - 获取 Kafka 消费组信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目 ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList 接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterInstanceId** (str) - (Required) 实例 ID - - **ConsumerGroup** (str) - (Required) 消费组组名 - - **Type** (str) - (Required) 消费者组类型(同消费者组列表返回的类型值) - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **GroupName** (str) - 消费者组组名 - - **Topics** (list) - 消费者组所订阅 topic 信息 - - **Type** (str) - 消费者组类型 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUKafkaConsumerRequestSchema().dumps(d) - - resp = self.invoke("DescribeUKafkaConsumer", d, **kwargs) - return apis.DescribeUKafkaConsumerResponseSchema().loads(resp) - - def describe_ukafka_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUKafkaInstance - 获取整个实例的信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterInstanceId** (str) - (Required) 实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterSet** (list) - 见 **ClusterInfo** 模型定义 - - **Response Model** - - **IP** - - **IP** (str) - IP地址 - - **Type** (str) - IP类型 - - - **Url** - - **Addr** (str) - 访问地址 - - **Protocal** (str) - 访问协议 - - - **BrokerOfTopicInfo** - - **PartitionOnBroker** (str) - topic 在 broker 上分布的 partition 数量 - - **Partitions** (str) - topic 在 broker上 partition 列表 - - **Replication** (int) - Topic 副本数 - - **TopicName** (str) - topic 名称 - - **TotalPartitions** (int) - partition 数量 - - - **Endpoints** - - **PlainText** (dict) - 见 **Url** 模型定义 - - **SaslPlainText** (dict) - 见 **Url** 模型定义 - - - **UHostConfig** - - **BootDiskSize** (int) - 节点系统盘大小(单位G)【删除】 - - **CPU** (int) - 节点 CPU 核心数 - - **DataDiskSize** (int) - 节点数据盘大小(单位G) - - **DiskType** (str) - 节点数据盘类型 - - **Memory** (int) - 节点内存(单位MB) - - **OS** (str) - 节点内部系统名称【删除】 - - - **Broker** - - **BrokerId** (str) - broker id - - **BrokerInfo** (list) - 见 **BrokerOfTopicInfo** 模型定义 - - **CreateTime** (str) - broker 创建信息 - - **DomainName** (str) - broker 域名 - - **Endpoints** (dict) - 见 **Endpoints** 模型定义 - - **ExpireTime** (int) - broker 过期时间 - - **IPSet** (list) - 见 **IP** 模型定义 - - **InstanceGroupType** (str) - broker 机型信息 - - **KafkaPort** (int) - kafka 服务端口 - - **Remark** (str) - broker 备注信息 - - **ResourceId** (str) - broker 注册资源信息 - - **SecurityGroupId** (str) - 安全组 id - - **State** (str) - broker 当前状态 - - **UHostConfig** (dict) - 见 **UHostConfig** 模型定义 - - **UHostId** (str) - 节点 id - - **UHostName** (str) - 节点名称 - - **UHostRole** (str) - 节点类型 - - **ZooKeeper** (str) - 节点是否部署 zookeeper - - **ZooKeeperPort** (int) - zookeeper 服务端口 - - - **ClusterInfo** - - **AutoRenew** (str) - 是否开启自动续费 - - **BusinessId** (str) - 业务组 ID - - **ChargeType** (str) - 付费类型 - - **ClusterInstanceId** (str) - 实例id - - **ClusterInstanceName** (str) - 实例名称 - - **CreateTime** (int) - 实例创建时间 - - **ExpireTime** (int) - 实例过期时间 - - **Framework** (str) - 实例框架 - - **FrameworkVersion** (str) - 实例框架版本 - - **IsOpenSecgroup** (str) - 是否开启安全组 - - **NetworkId** (str) - 网络 id(已废弃) - - **Remark** (str) - 实例备注 - - **RunningTime** (int) - 实例运行时间 - - **State** (str) - 实例当前状态,实例状态:"Running"| "Abnormal"| "Creating"| "Deleting"| "CreateFailed"| "DeleteFailed"| "Unavailable"| "Deleted"| "Updating"| "Deploying"| "Migrating"| "ExpandFailed" - - **SubnetId** (str) - 所属子网 id - - **Tag** (str) - 实例标记 - - **UHostCount** (int) - 实例节点个数 - - **UHostSet** (list) - 见 **Broker** 模型定义 - - **VPCId** (str) - 所属 VPC id - - **ValidBrokerNum** (int) - 可用节点个数 - - **Zone** (str) - 所属可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUKafkaInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUKafkaInstance", d, **kwargs) - return apis.DescribeUKafkaInstanceResponseSchema().loads(resp) - - def get_ukafka_node_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUKafkaNodeType - 获取节点机型配置 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **NodeType** (str) - 传参时返回指定机型信息,参数为空时返回所有机型信息 - - **Response** - - - **Message** (str) - 错误信息 - - **NodeTypeSet** (list) - 见 **InstanceType** 模型定义 - - **Response Model** - - **DiskSet** - - **Size** (str) - 磁盘大小 - - **Type** (str) - 磁盘类型。Boot 表示系统盘,Data 表示数据盘 - - - **InstanceType** - - **CPU** (int) - CPU核心数 - - **DiskSet** (dict) - 见 **DiskSet** 模型定义 - - **DiskType** (str) - 磁盘类型。RSSD 表示固态云盘,SSD 表示本地固态盘,COMMON 表示本地 SATA 盘 - - **IsOpenSecGroup** (bool) - 该机型是否支持安全组 - - **MaxDiskSize** (int) - 机型最大支持磁盘大小 - - **Memory** (str) - 内存大小(单位 MB) - - **MinDiskSize** (int) - 机型最小支持磁盘大小 - - **NodeTypeName** (str) - 机型名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUKafkaNodeTypeRequestSchema().dumps(d) - - resp = self.invoke("GetUKafkaNodeType", d, **kwargs) - return apis.GetUKafkaNodeTypeResponseSchema().loads(resp) - - def is_ukafka_topic_name_exist( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """IsUKafkaTopicNameExist - 检查一个topic名称是否已经在集群中了。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterInstanceId** (str) - (Required) 实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **TopicName** (str) - (Required) 待检查的topic名称 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **IsExist** (str) - 是否已经存在 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.IsUKafkaTopicNameExistRequestSchema().dumps(d) - - resp = self.invoke("IsUKafkaTopicNameExist", d, **kwargs) - return apis.IsUKafkaTopicNameExistResponseSchema().loads(resp) - - def list_ukafka_consumers( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUKafkaConsumers - 列出 Kafka 消费组 - - **Request** - - - **ProjectId** (str) - (Config) 项目 ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList 接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterInstanceId** (str) - (Required) 实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Groups** (list) - 见 **Group** 模型定义 - - **Response Model** - - **Group** - - **GroupId** (str) - 消费者组资源ID - - **GroupName** (str) - 消费者组组名 - - **NumOfTopics** (int) - 订阅 Topic 数量 - - **Type** (str) - 消费者组类型 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUKafkaConsumersRequestSchema().dumps(d) - - resp = self.invoke("ListUKafkaConsumers", d, **kwargs) - return apis.ListUKafkaConsumersResponseSchema().loads(resp) - - def list_ukafka_framework_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUKafkaFrameworkVersion - 列举ukafka框架版本 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **FrameworkVersions** (list) - 见 **Version** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **Version** - - **Label** (str) - kafka 版本标签。recommend 表示推荐版本,beta 表示公测版本 - - **Version** (str) - kafka版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUKafkaFrameworkVersionRequestSchema().dumps(d) - - resp = self.invoke("ListUKafkaFrameworkVersion", d, **kwargs) - return apis.ListUKafkaFrameworkVersionResponseSchema().loads(resp) - - def list_ukafka_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUKafkaInstance - 获取实例列表信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BusinessId** (str) - 业务组 ID - - **Limit** (str) - 默认为60 - - **Offset** (str) - 默认为0 - - **SubnetId** (str) - SubnetId - - **VPCId** (str) - VPCId - - **Response** - - - **ClusterSet** (dict) - 见 **ClusterSet** 模型定义 - - **Message** (str) - 错误信息 - - **TotalCount** (str) - 总数 - - **Response Model** - - **ClusterSet** - - **AutoRenew** (str) - 是否自动续费 - - **BusinessId** (str) - 业务组 ID - - **ChargeType** (str) - 付费类型 - - **ClusterInstanceId** (str) - 实例id - - **ClusterInstanceName** (str) - 实例名称 - - **CreateTime** (int) - 实例创建时间戳 - - **ExpireTime** (int) - 实例过期时间 - - **Framework** (str) - 框架 - - **FrameworkVersion** (str) - Kafka 框架版本 - - **InstanceGroupType** (str) - 实例机型 - - **NewMessage** (str) - 事件状态未读消息(已废弃) - - **RedundantCount** (int) - 冗余计数(已废弃) - - **Remark** (str) - 实例备注 - - **RunningTime** (int) - 实例运行时间 - - **State** (str) - 实例当前状态,集群状态:"Running"| "Abnormal"| "Creating"| "Deleting"| "CreateFailed"| "DeleteFailed"| "Unavailable"| "Deleted"| "Updating"| "Deploying"| "Migrating"| "ExpandFailed" - - **SubnetId** (str) - 所属子网 id - - **Tag** (str) - 实例标记 - - **UHostCount** (int) - 实例节点个数 - - **VPCId** (str) - 所属 VPC id - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUKafkaInstanceRequestSchema().dumps(d) - - resp = self.invoke("ListUKafkaInstance", d, **kwargs) - return apis.ListUKafkaInstanceResponseSchema().loads(resp) - - def list_ukafka_topics( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUKafkaTopics - 获取 kafka 实例 topic 列表信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Request** - - - **ProjectId** (str) - (Config) 项目 ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList 接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterInstanceId** (str) - (Required) 实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Length** (int) - topic 列表长度 - - **TopicList** (list) - 见 **TopicInfo** 模型定义 - - **Response Model** - - **TopicInfo** - - **NumOfOccupyBroker** (int) - 占用 broker 数量 - - **NumOfPartition** (int) - 分区数量 - - **NumOfReplica** (int) - 副本数量 - - **Status** (str) - topic 状态 - - **Topic** (str) - topic 名称 - - **UnderReplicasPer** (float) - 落后副本占比 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUKafkaTopicsRequestSchema().dumps(d) - - resp = self.invoke("ListUKafkaTopics", d, **kwargs) - return apis.ListUKafkaTopicsResponseSchema().loads(resp) - - def modify_ukafka_instance_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUKafkaInstanceType - 规格升降级,仅升级CPU 和内存 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceId** (str) - (Required) 实例ID - - **NodeType** (str) - (Required) 目标机型,支持的机型可通过GetUKafkaNodeType 接口返回的InstanceTypeSet[].InstanceTypeName。仅升级CPU 和内存 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUKafkaInstanceTypeRequestSchema().dumps(d) - - resp = self.invoke("ModifyUKafkaInstanceType", d, **kwargs) - return apis.ModifyUKafkaInstanceTypeResponseSchema().loads(resp) - - def resize_ukafka_disk( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeUKafkaDisk - 磁盘扩容 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskSize** (int) - (Required) 数据盘大小。支持范围根据GetUKafkaNodeType 接口返回的InstanceTypeSet[].MaxDiskSize 和MinDiskSize获取 - - **InstanceId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeUKafkaDiskRequestSchema().dumps(d) - - resp = self.invoke("ResizeUKafkaDisk", d, **kwargs) - return apis.ResizeUKafkaDiskResponseSchema().loads(resp) diff --git a/ucloud/services/ukafka/schemas/__init__.py b/ucloud/services/ukafka/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ukafka/schemas/apis.py b/ucloud/services/ukafka/schemas/apis.py deleted file mode 100644 index d790c01b..00000000 --- a/ucloud/services/ukafka/schemas/apis.py +++ /dev/null @@ -1,410 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ukafka.schemas import models - -""" UKafka API Schema -""" - - -""" -API: AddUKafkaInstanceNode - -给实例添加节点 -""" - - -class AddUKafkaInstanceNodeRequestSchema(schema.RequestSchema): - """AddUKafkaInstanceNode - 给实例添加节点""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeCount": fields.Str(required=True, dump_to="NodeCount"), - "NodeType": fields.Str(required=True, dump_to="NodeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class AddUKafkaInstanceNodeResponseSchema(schema.ResponseSchema): - """AddUKafkaInstanceNode - 给实例添加节点""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUKafkaInstance - -创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.获取FrameworkVersion,访问链接:https://docs.ucloud.cn/api/ukafka-api/list_ukafka_framework_version,响应字段的FrameworkVersions[N].Version是支持的 Kafka 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,响应字段的NodeTypeSet[N].NodeTypeName是支持的所有机型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,该接口响应字段的NodeTypeSet[N].MinDiskSize和NodeTypeSet[N].MaxDiskSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ . -""" - - -class CreateUKafkaInstanceRequestSchema(schema.RequestSchema): - """CreateUKafkaInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.获取FrameworkVersion,访问链接:https://docs.ucloud.cn/api/ukafka-api/list_ukafka_framework_version,响应字段的FrameworkVersions[N].Version是支持的 Kafka 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,响应字段的NodeTypeSet[N].NodeTypeName是支持的所有机型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,该接口响应字段的NodeTypeSet[N].MinDiskSize和NodeTypeSet[N].MaxDiskSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ .""" - - fields = { - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "ChargeType": fields.Str(required=True, dump_to="ChargeType"), - "DiskControllerType": fields.Str( - required=False, dump_to="DiskControllerType" - ), - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "DiskThreshold": fields.Str(required=False, dump_to="DiskThreshold"), - "FrameworkVersion": fields.Str( - required=True, dump_to="FrameworkVersion" - ), - "InstanceName": fields.Str(required=True, dump_to="InstanceName"), - "IsSecurityEnabled": fields.Str( - required=False, dump_to="IsSecurityEnabled" - ), - "LogRetentionHours": fields.Str( - required=False, dump_to="LogRetentionHours" - ), - "NodeCount": fields.Int(required=False, dump_to="NodeCount"), - "NodeType": fields.Str(required=True, dump_to="NodeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Str(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUKafkaInstanceResponseSchema(schema.ResponseSchema): - """CreateUKafkaInstance - 创建实例接口。\\ 创建实例前需要按以下步骤准备必要参数:\\ 1.获取Region(地域)和 Zone(可用区),访问链接:https://docs.ucloud.cn/api/summary/regionlist 可以获取所有支持的地域和可用区;\\ 2.获取FrameworkVersion,访问链接:https://docs.ucloud.cn/api/ukafka-api/list_ukafka_framework_version,响应字段的FrameworkVersions[N].Version是支持的 Kafka 版本;\\ 3.ChargeType付费类型,可用值:Dynamic为按小时付费,Month为按月付费,Year为按年付费;\\ 4.获取NodeType机型详情,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,响应字段的NodeTypeSet[N].NodeTypeName是支持的所有机型;\\ 5.获取DiskSize磁盘大小范围 ,访问链接:https://docs.ucloud.cn/api/ukafka-api/get_ukafka_node_type,该接口响应字段的NodeTypeSet[N].MinDiskSize和NodeTypeSet[N].MaxDiskSize是磁盘大小的取值范围;\\ 6.InstanceName,自定义输入实例名称,只能包含中英文、数字以及- _ .""" - - fields = { - "InstanceId": fields.Str(required=True, load_from="InstanceId"), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DeleteUKafkaInstance - -删除实例 -""" - - -class DeleteUKafkaInstanceRequestSchema(schema.RequestSchema): - """DeleteUKafkaInstance - 删除实例""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteUKafkaInstanceResponseSchema(schema.ResponseSchema): - """DeleteUKafkaInstance - 删除实例""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeUKafkaConsumer - -获取 Kafka 消费组信息 -""" - - -class DescribeUKafkaConsumerRequestSchema(schema.RequestSchema): - """DescribeUKafkaConsumer - 获取 Kafka 消费组信息""" - - fields = { - "ClusterInstanceId": fields.Str( - required=True, dump_to="ClusterInstanceId" - ), - "ConsumerGroup": fields.Str(required=True, dump_to="ConsumerGroup"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Type": fields.Str(required=True, dump_to="Type"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeUKafkaConsumerResponseSchema(schema.ResponseSchema): - """DescribeUKafkaConsumer - 获取 Kafka 消费组信息""" - - fields = { - "GroupName": fields.Str(required=False, load_from="GroupName"), - "Topics": fields.List(fields.Str(), required=False, load_from="Topics"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -""" -API: DescribeUKafkaInstance - -获取整个实例的信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 -""" - - -class DescribeUKafkaInstanceRequestSchema(schema.RequestSchema): - """DescribeUKafkaInstance - 获取整个实例的信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "ClusterInstanceId": fields.Str( - required=True, dump_to="ClusterInstanceId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeUKafkaInstanceResponseSchema(schema.ResponseSchema): - """DescribeUKafkaInstance - 获取整个实例的信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "ClusterSet": fields.List( - models.ClusterInfoSchema(), required=True, load_from="ClusterSet" - ), - } - - -""" -API: GetUKafkaNodeType - -获取节点机型配置 -""" - - -class GetUKafkaNodeTypeRequestSchema(schema.RequestSchema): - """GetUKafkaNodeType - 获取节点机型配置""" - - fields = { - "NodeType": fields.Str(required=False, dump_to="NodeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUKafkaNodeTypeResponseSchema(schema.ResponseSchema): - """GetUKafkaNodeType - 获取节点机型配置""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - "NodeTypeSet": fields.List( - models.InstanceTypeSchema(), required=True, load_from="NodeTypeSet" - ), - } - - -""" -API: IsUKafkaTopicNameExist - -检查一个topic名称是否已经在集群中了。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 -""" - - -class IsUKafkaTopicNameExistRequestSchema(schema.RequestSchema): - """IsUKafkaTopicNameExist - 检查一个topic名称是否已经在集群中了。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "ClusterInstanceId": fields.Str( - required=True, dump_to="ClusterInstanceId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TopicName": fields.Str(required=True, dump_to="TopicName"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class IsUKafkaTopicNameExistResponseSchema(schema.ResponseSchema): - """IsUKafkaTopicNameExist - 检查一个topic名称是否已经在集群中了。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "IsExist": fields.Str(required=True, load_from="IsExist"), - } - - -""" -API: ListUKafkaConsumers - -列出 Kafka 消费组 -""" - - -class ListUKafkaConsumersRequestSchema(schema.RequestSchema): - """ListUKafkaConsumers - 列出 Kafka 消费组""" - - fields = { - "ClusterInstanceId": fields.Str( - required=True, dump_to="ClusterInstanceId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUKafkaConsumersResponseSchema(schema.ResponseSchema): - """ListUKafkaConsumers - 列出 Kafka 消费组""" - - fields = { - "Groups": fields.List( - models.GroupSchema(), required=False, load_from="Groups" - ), - } - - -""" -API: ListUKafkaFrameworkVersion - -列举ukafka框架版本 -""" - - -class ListUKafkaFrameworkVersionRequestSchema(schema.RequestSchema): - """ListUKafkaFrameworkVersion - 列举ukafka框架版本""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUKafkaFrameworkVersionResponseSchema(schema.ResponseSchema): - """ListUKafkaFrameworkVersion - 列举ukafka框架版本""" - - fields = { - "FrameworkVersions": fields.List( - models.VersionSchema(), required=True, load_from="FrameworkVersions" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUKafkaInstance - -获取实例列表信息 -""" - - -class ListUKafkaInstanceRequestSchema(schema.RequestSchema): - """ListUKafkaInstance - 获取实例列表信息""" - - fields = { - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "ClusterInstanceId": fields.Str( - required=False, dump_to="ClusterInstanceId" - ), # Deprecated, will be removed at 1.0 - "Filter": fields.Str( - required=False, dump_to="Filter" - ), # Deprecated, will be removed at 1.0 - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUKafkaInstanceResponseSchema(schema.ResponseSchema): - """ListUKafkaInstance - 获取实例列表信息""" - - fields = { - "ClusterSet": models.ClusterSetSchema(), - "Message": fields.Str(required=False, load_from="Message"), - "TotalCount": fields.Str(required=True, load_from="TotalCount"), - } - - -""" -API: ListUKafkaTopics - -获取 kafka 实例 topic 列表信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取 -""" - - -class ListUKafkaTopicsRequestSchema(schema.RequestSchema): - """ListUKafkaTopics - 获取 kafka 实例 topic 列表信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "ClusterInstanceId": fields.Str( - required=True, dump_to="ClusterInstanceId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUKafkaTopicsResponseSchema(schema.ResponseSchema): - """ListUKafkaTopics - 获取 kafka 实例 topic 列表信息。实例ID,可以通过ListUKafkaInstance 接口的ClusterSet. ClusterInstanceId 获取""" - - fields = { - "Length": fields.Int(required=False, load_from="Length"), - "TopicList": fields.List( - models.TopicInfoSchema(), required=True, load_from="TopicList" - ), - } - - -""" -API: ModifyUKafkaInstanceType - -规格升降级,仅升级CPU 和内存 -""" - - -class ModifyUKafkaInstanceTypeRequestSchema(schema.RequestSchema): - """ModifyUKafkaInstanceType - 规格升降级,仅升级CPU 和内存""" - - fields = { - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "NodeType": fields.Str(required=True, dump_to="NodeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ModifyUKafkaInstanceTypeResponseSchema(schema.ResponseSchema): - """ModifyUKafkaInstanceType - 规格升降级,仅升级CPU 和内存""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ResizeUKafkaDisk - -磁盘扩容 -""" - - -class ResizeUKafkaDiskRequestSchema(schema.RequestSchema): - """ResizeUKafkaDisk - 磁盘扩容""" - - fields = { - "DiskSize": fields.Int(required=True, dump_to="DiskSize"), - "InstanceId": fields.Str(required=True, dump_to="InstanceId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ResizeUKafkaDiskResponseSchema(schema.ResponseSchema): - """ResizeUKafkaDisk - 磁盘扩容""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } diff --git a/ucloud/services/ukafka/schemas/models.py b/ucloud/services/ukafka/schemas/models.py deleted file mode 100644 index faa99fcf..00000000 --- a/ucloud/services/ukafka/schemas/models.py +++ /dev/null @@ -1,229 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class BrokerOfTopicInfoSchema(schema.ResponseSchema): - """BrokerOfTopicInfo - broker 的 topic 相关信息""" - - fields = { - "PartitionOnBroker": fields.Str( - required=False, load_from="PartitionOnBroker" - ), - "Partitions": fields.Str(required=False, load_from="Partitions"), - "Replication": fields.Int(required=False, load_from="Replication"), - "TopicName": fields.Str(required=False, load_from="TopicName"), - "TotalPartitions": fields.Int( - required=False, load_from="TotalPartitions" - ), - } - - -class IPSchema(schema.ResponseSchema): - """IP - IP 信息""" - - fields = { - "IP": fields.Str(required=False, load_from="IP"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class UHostConfigSchema(schema.ResponseSchema): - """UHostConfig - 节点配置""" - - fields = { - "BootDiskSize": fields.Int(required=False, load_from="BootDiskSize"), - "CPU": fields.Int(required=False, load_from="CPU"), - "DataDiskSize": fields.Int(required=False, load_from="DataDiskSize"), - "DiskType": fields.Str(required=False, load_from="DiskType"), - "Memory": fields.Int(required=False, load_from="Memory"), - "OS": fields.Str(required=False, load_from="OS"), - } - - -class UrlSchema(schema.ResponseSchema): - """Url -""" - - fields = { - "Addr": fields.Str(required=False, load_from="Addr"), - "Protocal": fields.Str(required=False, load_from="Protocal"), - } - - -class EndpointsSchema(schema.ResponseSchema): - """Endpoints - kafka broker 连接信息""" - - fields = { - "PlainText": UrlSchema(), - "SaslPlainText": UrlSchema(), - } - - -class BrokerSchema(schema.ResponseSchema): - """Broker - kafka Broker 信息""" - - fields = { - "BrokerId": fields.Str(required=False, load_from="BrokerId"), - "BrokerInfo": fields.List(BrokerOfTopicInfoSchema()), - "CreateTime": fields.Str(required=False, load_from="CreateTime"), - "DomainName": fields.Str(required=False, load_from="DomainName"), - "Endpoints": EndpointsSchema(), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "IPSet": fields.List(IPSchema()), - "InstanceGroupType": fields.Str( - required=False, load_from="InstanceGroupType" - ), - "KafkaPort": fields.Int(required=False, load_from="KafkaPort"), - "Remark": fields.Str(required=False, load_from="Remark"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "SecurityGroupId": fields.Str( - required=False, load_from="SecurityGroupId" - ), - "State": fields.Str(required=False, load_from="State"), - "UHostConfig": UHostConfigSchema(), - "UHostId": fields.Str(required=False, load_from="UHostId"), - "UHostName": fields.Str(required=False, load_from="UHostName"), - "UHostRole": fields.Str(required=False, load_from="UHostRole"), - "ZooKeeper": fields.Str(required=False, load_from="ZooKeeper"), - "ZooKeeperPort": fields.Int(required=False, load_from="ZooKeeperPort"), - } - - -class ClusterInfoSchema(schema.ResponseSchema): - """ClusterInfo - 实例信息""" - - fields = { - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "BusinessId": fields.Str(required=False, load_from="BusinessId"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "ClusterInstanceId": fields.Str( - required=False, load_from="ClusterInstanceId" - ), - "ClusterInstanceName": fields.Str( - required=False, load_from="ClusterInstanceName" - ), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Framework": fields.Str(required=False, load_from="Framework"), - "FrameworkVersion": fields.Str( - required=False, load_from="FrameworkVersion" - ), - "IsOpenSecgroup": fields.Str( - required=False, load_from="IsOpenSecgroup" - ), - "NetworkId": fields.Str(required=False, load_from="NetworkId"), - "Remark": fields.Str(required=False, load_from="Remark"), - "RunningTime": fields.Int(required=False, load_from="RunningTime"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "UHostCount": fields.Int(required=False, load_from="UHostCount"), - "UHostSet": fields.List(BrokerSchema()), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "ValidBrokerNum": fields.Int( - required=False, load_from="ValidBrokerNum" - ), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class DiskSetSchema(schema.ResponseSchema): - """DiskSet - 磁盘配置""" - - fields = { - "Size": fields.Str(required=True, load_from="Size"), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class InstanceTypeSchema(schema.ResponseSchema): - """InstanceType - kafka 集群节点信息""" - - fields = { - "CPU": fields.Int(required=False, load_from="CPU"), - "DiskSet": DiskSetSchema(), - "DiskType": fields.Str(required=False, load_from="DiskType"), - "IsOpenSecGroup": fields.Bool( - required=False, load_from="IsOpenSecGroup" - ), - "MaxDiskSize": fields.Int(required=False, load_from="MaxDiskSize"), - "Memory": fields.Str(required=False, load_from="Memory"), - "MinDiskSize": fields.Int(required=False, load_from="MinDiskSize"), - "NodeTypeName": fields.Str(required=False, load_from="NodeTypeName"), - } - - -class GroupSchema(schema.ResponseSchema): - """Group - Kafka 消费者组每一项的信息""" - - fields = { - "GroupId": fields.Str(required=False, load_from="GroupId"), - "GroupName": fields.Str(required=False, load_from="GroupName"), - "NumOfTopics": fields.Int(required=False, load_from="NumOfTopics"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class VersionSchema(schema.ResponseSchema): - """Version -""" - - fields = { - "Label": fields.Str(required=False, load_from="Label"), - "Version": fields.Str(required=False, load_from="Version"), - } - - -class ClusterSetSchema(schema.ResponseSchema): - """ClusterSet - 实例信息""" - - fields = { - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "BusinessId": fields.Str(required=False, load_from="BusinessId"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "ClusterInstanceId": fields.Str( - required=False, load_from="ClusterInstanceId" - ), - "ClusterInstanceName": fields.Str( - required=False, load_from="ClusterInstanceName" - ), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Framework": fields.Str(required=False, load_from="Framework"), - "FrameworkVersion": fields.Str( - required=False, load_from="FrameworkVersion" - ), - "InstanceGroupType": fields.Str( - required=False, load_from="InstanceGroupType" - ), - "NewMessage": fields.Str(required=False, load_from="NewMessage"), - "RedundantCount": fields.Int( - required=False, load_from="RedundantCount" - ), - "Remark": fields.Str(required=False, load_from="Remark"), - "RunningTime": fields.Int(required=False, load_from="RunningTime"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "UHostCount": fields.Int(required=False, load_from="UHostCount"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class TopicInfoSchema(schema.ResponseSchema): - """TopicInfo - Topic 信息对象""" - - fields = { - "NumOfOccupyBroker": fields.Int( - required=False, load_from="NumOfOccupyBroker" - ), - "NumOfPartition": fields.Int( - required=False, load_from="NumOfPartition" - ), - "NumOfReplica": fields.Int(required=False, load_from="NumOfReplica"), - "Status": fields.Str(required=False, load_from="Status"), - "Topic": fields.Str(required=False, load_from="Topic"), - "UnderReplicasPer": fields.Float( - required=False, load_from="UnderReplicasPer" - ), - } diff --git a/ucloud/services/ulb/__init__.py b/ucloud/services/ulb/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulb/client.py b/ucloud/services/ulb/client.py deleted file mode 100644 index 224e938c..00000000 --- a/ucloud/services/ulb/client.py +++ /dev/null @@ -1,2520 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ulb.schemas import apis - - -class ULBClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(ULBClient, self).__init__(config, transport, middleware, logger) - - def add_ssl_binding( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddSSLBinding - ALB的监听器绑定SSL证书 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **SSLIds** (list) - (Required) SSLId的数组 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddSSLBindingRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddSSLBinding", d, **kwargs) - return apis.AddSSLBindingResponseSchema().loads(resp) - - def add_targets(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """AddTargets - 给应用型负载均衡监听器添加后端服务节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Targets** (list) - 见 **AddTargetsParamTargets** 模型定义 - - **Response** - - - **Targets** (list) - 见 **TargetSet** 模型定义 - - **Request Model** - - **AddTargetsParamTargets** - - **Enabled** (bool) - 服务节点是否启用。默认值true - - **IsBackup** (bool) - 服务节点是否为备节点。默认值false - - **Port** (int) - 服务节点的端口。限定取值:[1-65535],默认值80 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceType** (str) - 服务节点的类型。限定枚举值:"UHost" / "UNI"/"UPM"/"IP",默认值:"UHost";非IP类型,如果该资源有多个IP,将只能添加主IP;非IP类型,展示时,会显示相关资源信息,IP类型只展示IP信息。在相关资源被删除时,非IP类型会把相关资源从lb中剔除,IP类型不保证这个逻辑 - - **SubnetId** (str) - 服务节点的子网资源ID。在IP类型时,必传 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。限定取值:[1-100],默认值1;仅在加权轮询算法时有效 - - - **Response Model** - - **TargetSet** - - **Enabled** (bool) - 服务节点是否启用。 默认值:true - - **Id** (str) - 服务节点的标识ID。 - - **IsBackup** (bool) - 服务节点是否为备节点。 默认值:false - - **Port** (int) - 服务节点的端口。限定取值:[1-65535]; 默认值:80 - - **ResourceIP** (str) - 服务节点的IP。在IP类型时,必传 - - **ResourceId** (str) - 服务节点的资源ID。在非IP类型时,必传 - - **ResourceType** (str) - 服务节点的类型。限定枚举值:UHost -> 云主机,UNI -> 虚拟网卡,UPM -> 物理云主机,IP -> IP类型; 默认值:"UHost"; 非IP类型,如果该资源有多个IP,将只能添加主IP; 非IP类型,展示时,会显示相关资源信息,IP类型只展示IP信息。 在相关资源被删除时,非IP类型会把相关资源从lb中剔除,IP类型不保证这个逻辑 - - **State** (str) - 服务节点的健康检查状态。限定枚举值:Healthy -> 健康,Unhealthy -> 不健康 - - **SubnetId** (str) - 服务节点的子网资源ID。在IP类型时,必传 - - **VPCId** (str) - 服务节点的VPC资源ID。在IP类型时,必传 - - **Weight** (int) - 服务节点的权重。限定取值:[1-100]; 仅在加权轮询算法时有效; 默认值:1 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AddTargetsRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddTargets", d, **kwargs) - return apis.AddTargetsResponseSchema().loads(resp) - - def allocate_backend( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AllocateBackend - 添加CLB后端资源实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ResourceType** (str) - (Required) 所添加的后端资源的类型,枚举值:UHost -> 云主机;UNI -> 虚拟网卡;UPM -> 物理云主机;UHybrid->混合云主机;CUBE->Cube, IP->IP类型;默认值为UHost。报文转发模式不支持UHybrid、CUBE、IP - - **ULBId** (str) - (Required) 传统型负载均衡实例的ID - - **VServerId** (str) - (Required) VServer实例的ID - - **Enabled** (int) - 后端实例状态开关,枚举值: 1:启用; 0:禁用 默认为启用 - - **IsBackup** (int) - rs是否为backup,默认为00:普通rs1:backup的rs - - **Port** (int) - 所添加的后端资源服务端口,取值范围[1-65535],默认80 - - **ResourceIP** (str) - 所添加的后端服务器的资源实例IP,当ResourceType 为 UHybrid 或 IP时有效,且必填;与ResourceId二选一必填 - - **ResourceId** (str) - 所添加的后端资源的资源ID;与ResourceIP二选一必填 - - **SubnetId** (str) - 所添加的后端服务器所在的子网,当ResourceType 为 UHybrid 或 IP 时有效,且必填 - - **VPCId** (str) - 所添加的后端服务器所在的vpc,当ResourceType 为 UHybrid 或 IP 时有效,且必填 - - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[1-100],默认为1 - - **Response** - - - **BackendId** (str) - 所添加的后端资源在CLB中的对象ID,(为CLB系统中使用,与资源自身ID无关),可用于 UpdateBackendAttribute/UpdateBackendAttributeBatch/ReleaseBackend - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AllocateBackendRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AllocateBackend", d, **kwargs) - return apis.AllocateBackendResponseSchema().loads(resp) - - def allocate_backend_batch( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AllocateBackendBatch - - - **Request** - - - **ProjectId** (str) - (Config) - - **Region** (str) - (Config) - - **ULBId** (str) - (Required) - - **VServerId** (str) - (Required) - - **ApiVersion** (int) - - - **Backends** (list) - - - **Response** - - - **BackendSet** (list) - 见 **BackendSet** 模型定义 - - **Response Model** - - **BackendSet** - - **BackendId** (str) - - - **ResourceId** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.AllocateBackendBatchRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AllocateBackendBatch", d, **kwargs) - return apis.AllocateBackendBatchResponseSchema().loads(resp) - - def bind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """BindSSL - 将SSL证书绑定到传统型负载均衡VServer - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLId** (str) - (Required) SSL证书的Id - - **ULBId** (str) - (Required) 所绑定CLB实例ID - - **VServerId** (str) - (Required) 所绑定VServer实例ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.BindSSLRequestSchema().dumps(d) - - resp = self.invoke("BindSSL", d, **kwargs) - return apis.BindSSLResponseSchema().loads(resp) - - def create_listener( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateListener - 创建一个应用型负载均衡的监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Certificates** (list) - (应用型专用)服务器默认证书ID。仅HTTPS监听支持,且必填;暂时只支持最大长度为1 - - **CompressionEnabled** (bool) - (应用型专用)是否开启数据压缩功能。目前只支持使用gzip对特定文件类型进行压缩。默认值为:false - - **HTTP2Enabled** (bool) - (应用型专用)是否开启HTTP/2特性。仅HTTPS监听支持开启;默认值为:false - - **HealthCheckConfig** (dict) - 见 **CreateListenerParamHealthCheckConfig** 模型定义 - - **IdleTimeout** (int) - 连接空闲超时时间。单位:秒。应用型限定取值:[1-86400];默认值60 - - **ListenerPort** (int) - 监听器的监听端口。应用型限定取值:[1-65535],默认值80 - - **ListenerProtocol** (str) - 监听协议。应用型限定取值:“HTTP”/"HTTPS",默认值“HTTP” - - **Name** (str) - 监听器的名称。限定字符长度:[1-255];限定特殊字符,仅支持:“-”,“_”,“.”;默认值:listener - - **RedirectEnabled** (bool) - (应用型专用)是否开启HTTP重定向到HTTPS。仅HTTP监听支持开启;默认值为:false - - **RedirectPort** (int) - (应用型专用)重定向端口。限定取值:[1-65535],默认值443 - - **Remark** (str) - 监听器的备注信息。限定字符长度:[0-255] - - **Scheduler** (str) - 负载均衡算法。应用型限定取值:"Roundrobin"/"Source"/"WeightRoundrobin"/" Leastconn"/"Backup",默认值"Roundrobin" - - **SecurityPolicyId** (str) - (应用型专用)安全策略组ID。仅HTTPS监听支持绑定;默认值“Default”,表示绑定原生策略 - - **StickinessConfig** (dict) - 见 **CreateListenerParamStickinessConfig** 模型定义 - - **Response** - - - **ListenerId** (str) - 监听器的ID - - **Request Model** - - **CreateListenerParamHealthCheckConfig** - - **Domain** (str) - (应用型专用)HTTP检查域名 - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭。默认值为:true - - **Method** (str) - (应用型专用)HTTP检查方法。只支持GET和HEAD。 - - **Path** (str) - (应用型专用)HTTP检查路径 - - **ResponseCode** (str) - (应用型专用)GRPC检查响应码 - - **Type** (str) - 健康检查方式。应用型限定取值:“Port”/"HTTP/GRPC",默认值:“Port” - - - **CreateListenerParamStickinessConfig** - - **CookieName** (str) - (应用型专用)自定义Cookie。当StickinessType取值"UserDefined"时有效;限定字符长度:[0-255] - - **Enabled** (bool) - 是否开启会话保持功能。应用型负载均衡实例基于Cookie实现;默认值为:false - - **Type** (str) - (应用型专用)Cookie处理方式。限定枚举值:"ServerInsert" / "UserDefined";默认值为:“ServerInsert” - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateListenerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateListener", d, **kwargs) - return apis.CreateListenerResponseSchema().loads(resp) - - def create_load_balancer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateLoadBalancer - 创建一个应用型负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SubnetId** (str) - (Required) 负载均衡实例所属的子网资源ID。负载均衡实例的内网VIP和SNAT场景的源IP限定在该子网内;指定子网不影响添加后端服务节点时的范围,依旧是整个VPC下支持的资源 - - **VPCId** (str) - (Required) 负载均衡实例所属的VPC资源ID - - **ChargeType** (str) - 付费模式。限定枚举值:"Year" / "Month"/"Day"/"Dynamic",默认值为:“Month” - - **CouponId** (str) - 代金券code - - **IPVersion** (str) - 负载均衡实例的IP协议。限定枚举值:"IPv4" / "IPv6"/"DualStack",默认值为:“IPv4” - - **LabelInfos** (list) - 见 **CreateLoadBalancerParamLabelInfos** 模型定义 - - **Name** (str) - 负载均衡实例的名称。默认值:lb;特殊字符仅支持:“-”,“_”,“.”;限定字符长度:[1-255] - - **Quantity** (int) - 购买的时长, 默认: 1; 0-> 购买至月末(0只在月付费有效,其余付费模式传0,实际收费按一个周期计费) - - **Remark** (str) - 负载均衡实例的备注信息。限定字符长度:[0-255] - - **SecGroups** (list) - 见 **CreateLoadBalancerParamSecGroups** 模型定义 - - **Tag** (str) - 负载均衡实例所属的业务组ID。默认值为“Default”; 传空则为Default业务组 - - **Type** (str) - 负载均衡实例的类型。限定枚举值:"Application" / "Network",默认值:"Application" - - **Response** - - - **LoadBalancerId** (str) - 负载均衡实例的ID - - **Request Model** - - **CreateLoadBalancerParamSecGroups** - - **Priority** (int) - 安全组优先级 - - **SecGroupId** (str) - 安全组id - - - **CreateLoadBalancerParamLabelInfos** - - **Key** (str) - 标签键 - - **Value** (str) - 标签值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateLoadBalancerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateLoadBalancer", d, **kwargs) - return apis.CreateLoadBalancerResponseSchema().loads(resp) - - def create_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreatePolicy - 传统型负载均衡创建VServer内容转发策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackendId** (list) - (Required) 内容转发策略应用的传统型负载均衡后端资源实例的ID,来源于 AllocateBackend 返回的 BackendId - - **Match** (str) - (Required) 内容转发匹配字段 - - **ULBId** (str) - (Required) 需要添加内容转发策略的传统型负载均衡实例ID - - **VServerId** (str) - (Required) 需要添加内容转发策略的传统型负载均衡VServer实例ID - - **DomainMatchMode** (str) - 内容转发规则中域名的匹配方式,默认与原本一致。枚举值:Regular,正则;Wildcard,泛域名 - - **PolicyPriority** (int) - 策略优先级,1-9999;只针对路径规则生效 - - **Type** (str) - 内容转发匹配字段的类型 - - **Response** - - - **PolicyId** (str) - 内容转发策略ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreatePolicyRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreatePolicy", d, **kwargs) - return apis.CreatePolicyResponseSchema().loads(resp) - - def create_rule(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateRule - 给应用型负载均衡监听器创建一条转发规则 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Pass** (bool) - 当转发的服务节点为空时,规则是否忽略。默认值true - - **RuleActions** (list) - 见 **CreateRuleParamRuleActions** 模型定义 - - **RuleConditions** (list) - 见 **CreateRuleParamRuleConditions** 模型定义 - - **Response** - - - **RuleId** (str) - 转发规则的ID - - **Request Model** - - **CreateRuleParamRuleConditionsHostConfig** - - **MatchMode** (str) - 匹配方式。限定枚举值:"Regular"/"Wildcard",默认值:"Regular" - - **Values** (list) - 取值。暂时只支持数组长度为1;取值需符合相关匹配方式的条件;域名匹配时必填 - - - **CreateRuleParamRuleActionsForwardConfigTargets** - - **Id** (str) - 转发的后端服务节点的标识ID。限定在监听器的服务节点池里;数组长度可以是0;转发服务节点配置的数组长度不为0时,Id必填 - - **Weight** (int) - 转发的后端服务节点的权重。仅监听器负载均衡算法是加权轮询是有效 - - - **CreateRuleParamRuleActionsInsertHeaderConfig** - - **Key** (str) - 插入的 header 字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于InsertHeader中。header 字段不能使用以下(此处判断大小写不敏感)x-real-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-srcport、ucloud-alb-trace、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority - - **Value** (str) - 插入的 header 字段内容。ValueType 取值为 SystemDefined 时取值如下:ClientSrcPort:客户端端口。ClientSrcIp:客户端 IP 地址。Protocol:客户端请求的协议(HTTP 或 HTTPS)。RuleID:客户端请求命中的转发规则ID。ALBID:ALB ID。ALBPort:ALB 端口。ValueType 取值为 UserDefined 时:可以自定义头字段内容,限制长度为 1~128 个字符,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。ValueType 取值为 ReferenceHeader 时:可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。 - - **ValueType** (str) - 头字段内容类型。取值:UserDefined:用户指定。ReferenceHeader:引用用户请求头中的某一个字段。SystemDefined:系统定义。 - - - **CreateRuleParamRuleActionsRemoveHeaderConfig** - - **Key** (str) - 删除的 header 字段名称,目前只能删除以下几个默认配置的字段X-Real-IP、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-SrcPort - - - **CreateRuleParamRuleActionsForwardConfig** - - **Targets** (list) - 见 **CreateRuleParamRuleActionsForwardConfigTargets** 模型定义 - - - **CreateRuleParamRuleActionsCorsConfig** - - **AllowCredentials** (str) - 是否允许携带凭证信息。取值:on:是。off:否。 - - **AllowHeaders** (list) - 允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **AllowMethods** (list) - 选择跨域访问时允许的 HTTP 方法。取值:GET。POST。PUT。DELETE。HEAD。OPTIONS。PATCH。 - - **AllowOrigin** (list) - 允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)单个值可以不加端口,也可以指定端口,端口范围:1~65535。最多支持5个值 - - **ExposeHeaders** (list) - 允许暴露的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **MaxAge** (int) - 预检请求在浏览器的最大缓存时间,单位:秒。取值范围:-1~172800。 - - - **CreateRuleParamRuleActionsFixedResponseConfig** - - **Content** (str) - 返回的固定内容。最大支持存储 1 KB,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。 - - **HttpCode** (int) - 返回的 HTTP 响应码,仅支持 2xx、4xx、5xx 数字,x 为任意数字。 - - - **CreateRuleParamRuleActions** - - **CorsConfig** (dict) - 见 **CreateRuleParamRuleActionsCorsConfig** 模型定义 - - **FixedResponseConfig** (dict) - 见 **CreateRuleParamRuleActionsFixedResponseConfig** 模型定义 - - **ForwardConfig** (dict) - 见 **CreateRuleParamRuleActionsForwardConfig** 模型定义 - - **InsertHeaderConfig** (dict) - 见 **CreateRuleParamRuleActionsInsertHeaderConfig** 模型定义 - - **Order** (int) - 转发规则动作执行的顺序,取值为1~1000,按值从小到大执行动作。值不能为空,不能重复。Forward、FixedResponse 类型的动作不判断 Order,最后一个执行 - - **RemoveHeaderConfig** (dict) - 见 **CreateRuleParamRuleActionsRemoveHeaderConfig** 模型定义 - - **Type** (str) - 动作类型。限定枚举值:"Forward"、"InsertHeader"、"Cors"、"FixedResponse"、"RemoveHeader"。只会处理 Type 对应的结构体。 - - - **CreateRuleParamRuleConditionsPathConfig** - - **Values** (list) - 取值。暂时只支持数组长度为1;取值需符合相关条件;路径匹配时必填 - - - **CreateRuleParamRuleConditions** - - **HostConfig** (dict) - 见 **CreateRuleParamRuleConditionsHostConfig** 模型定义 - - **PathConfig** (dict) - 见 **CreateRuleParamRuleConditionsPathConfig** 模型定义 - - **Type** (str) - 匹配条件类型。限定枚举值:"Host"/"Path" - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateRuleRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateRule", d, **kwargs) - return apis.CreateRuleResponseSchema().loads(resp) - - def create_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLName** (str) - (Required) SSL证书的名字,默认值不为空 - - **CaCert** (str) - CA证书 - - **PrivateKey** (str) - 加密证书的私钥 - - **SSLContent** (str) - SSL证书的完整内容,包括用户证书、加密证书的私钥、CA证书 - - **SSLType** (str) - 所添加的SSL证书类型,目前只支持Pem格式 - - **USSLId** (str) - USSL证书的ID - - **UserCert** (str) - 用户的证书 - - **Response** - - - **SSLId** (str) - SSL证书的Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateSSLRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateSSL", d, **kwargs) - return apis.CreateSSLResponseSchema().loads(resp) - - def create_security_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateSecurityPolicy - 创建安全策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLCiphers** (list) - (Required) 加密套件 - - **SecurityPolicyName** (str) - (Required) 安全策略名称 - - **TLSVersion** (str) - (Required) TLS版本 - - **Response** - - - **SecurityPolicyId** (str) - 安全策略ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateSecurityPolicyRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateSecurityPolicy", d, **kwargs) - return apis.CreateSecurityPolicyResponseSchema().loads(resp) - - def create_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateULB - 创建传统型负载均衡负载均衡实例,可以选择内网或者外网 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BusinessId** (str) - CLB 所属的业务组ID,如果不传则使用默认的业务组 - - **ChargeType** (str) - 付费方式, 枚举值为: Year, 按年付费; Month, 按月付费; Dynamic, 按时付费 - - **FirewallId** (str) - 防火墙ID,如果不传,则默认不绑定防火墙 - - **InnerMode** (str) - 创建的CLB是否为内网模式 - - **ListenType** (str) - CLB 监听器类型,外网CLB默认RequestProxy,内网ULB默认PacketsTransmit。枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发。 - - **OuterMode** (str) - 创建的CLB是否为外网模式,默认即为外网模式 - - **Remark** (str) - 备注 - - **SubnetId** (str) - CLB 所属的子网ID,如果不传则随机选择一个。 - - **Tag** (str) - 业务组 - - **ULBName** (str) - 负载均衡的名字,默认值为“ULB” - - **VPCId** (str) - CLB所在的VPC的ID。 如果不传则使用默认的VPC,若不传且无默认VPC则接口报错 - - **Response** - - - **IPv6AddressId** (str) - IPv6地址Id - - **ULBId** (str) - 传统型负载均衡实例的Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateULBRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateULB", d, **kwargs) - return apis.CreateULBResponseSchema().loads(resp) - - def create_vserver( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateVServer - 创建CLB的VServer实例,定义监听的协议和端口以及负载均衡算法 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) 传统型负载均衡实例ID - - **ClientTimeout** (int) - ListenType为RequestProxy时表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;ListenType为PacketsTransmit时表示连接保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 - - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查域名 - - **EnableCompression** (int) - 0:关闭 1:开启,用于数据压缩功能 - - **EnableHTTP2** (int) - 0:关闭 1:开启,用于开启http2功能;默认值为0 - - **ForwardPort** (int) - 重定向端口,取值范围[0-65535];默认值为0,代表关闭;仅HTTP协议支持开启重定向功能 - - **FrontendPort** (int) - VServer后端端口,取值范围[1-65535];默认值为80 - - **ListenType** (str) - 监听器类型,枚举值,RequestProxy ,请求代理;PacketsTransmit ,报文转发。默认为RequestProxy - - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup ->主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:"Roundrobin" - - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测;Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping - - **Path** (str) - 根据MonitorType确认; 当MonitorType为Path时,此字段有意义,代表HTTP检查路径 - - **PersistenceInfo** (str) - 根据PersistenceType确认; None和ServerInsert: 此字段无意义; UserDefined:此字段传入自定义会话保持String - - **PersistenceType** (str) - VServer会话保持方式,默认关闭会话保持。枚举值:None -> 关闭;ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY。 - - **Protocol** (str) - VServer实例的协议,请求代理模式下有 HTTP、HTTPS、TCP,报文转发下有 TCP,UDP。默认为“HTTP" - - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 - - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 - - **SecurityPolicyId** (str) - 安全策略组ID,默认值'Default' - - **VServerName** (str) - VServer实例名称,默认为"VServer" - - **Response** - - - **VServerId** (str) - VServer实例的Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateVServerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateVServer", d, **kwargs) - return apis.CreateVServerResponseSchema().loads(resp) - - def delete_listener( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteListener - 删除一个应用型负载均衡监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 应用型负载均衡监听器的ID - - **LoadBalancerId** (str) - (Required) 应用型负载均衡实例的ID - - **RelatedRedirectDisabled** (bool) - (Required) 是否关闭相关监听器的重定向功能。默认为false,即有其他监听器重定向到本监听器,则删除失败。为true时,会先关闭相关监听器的重定向功能,再删除本监听器。默认值为:false - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteListenerRequestSchema().dumps(d) - - resp = self.invoke("DeleteListener", d, **kwargs) - return apis.DeleteListenerResponseSchema().loads(resp) - - def delete_load_balancer( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteLoadBalancer - 删除一个应用型负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **LoadBalancerId** (str) - (Required) 应用型负载均衡实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteLoadBalancerRequestSchema().dumps(d) - - resp = self.invoke("DeleteLoadBalancer", d, **kwargs) - return apis.DeleteLoadBalancerResponseSchema().loads(resp) - - def delete_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeletePolicy - 删除传统型负载均衡的内容转发策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **PolicyId** (str) - (Required) CLB的内容转发策略ID - - **VServerId** (str) - CLB的VServer 资源ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeletePolicyRequestSchema().dumps(d) - - resp = self.invoke("DeletePolicy", d, **kwargs) - return apis.DeletePolicyResponseSchema().loads(resp) - - def delete_rule(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DeleteRule - 删除应用型负载均衡监听器的一条转发规则 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 应用型负载均衡监听器的ID - - **LoadBalancerId** (str) - (Required) 应用型负载均衡实例的ID - - **RuleId** (str) - (Required) 应用型负载均衡的转发规则的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteRuleRequestSchema().dumps(d) - - resp = self.invoke("DeleteRule", d, **kwargs) - return apis.DeleteRuleResponseSchema().loads(resp) - - def delete_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DeleteSSL - 删除SSL证书 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLId** (str) - (Required) SSL证书的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteSSLRequestSchema().dumps(d) - - resp = self.invoke("DeleteSSL", d, **kwargs) - return apis.DeleteSSLResponseSchema().loads(resp) - - def delete_ssl_binding( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteSSLBinding - 删除监听器绑定的扩展证书 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **SSLIds** (list) - (Required) SSLId的数组 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteSSLBindingRequestSchema().dumps(d) - - resp = self.invoke("DeleteSSLBinding", d, **kwargs) - return apis.DeleteSSLBindingResponseSchema().loads(resp) - - def delete_security_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteSecurityPolicy - 删除安全策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SecurityPolicyId** (str) - (Required) 安全策略ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteSecurityPolicyRequestSchema().dumps(d) - - resp = self.invoke("DeleteSecurityPolicy", d, **kwargs) - return apis.DeleteSecurityPolicyResponseSchema().loads(resp) - - def delete_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DeleteULB - 删除传统型负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) 传统型负载均衡实例的ID - - **ReleaseEip** (bool) - 删除clb时是否释放绑定的EIP,false标识只解绑EIP,true表示会释放绑定的EIP,默认是false。Anycast IP 此参数无效 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteULBRequestSchema().dumps(d) - - resp = self.invoke("DeleteULB", d, **kwargs) - return apis.DeleteULBResponseSchema().loads(resp) - - def delete_vserver( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteVServer - 删除CLB的VServer实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) 传统型负载均衡实例的ID - - **VServerId** (str) - (Required) CLB下的VServer实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteVServerRequestSchema().dumps(d) - - resp = self.invoke("DeleteVServer", d, **kwargs) - return apis.DeleteVServerResponseSchema().loads(resp) - - def describe_listeners( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeListeners - 描述一个指定的监听器或者一个应用型负载均衡实例下的所有监听器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值,默认为100 - - **ListenerId** (str) - 应用型负载均衡监听器的ID。若指定ListenerId,则忽略LoadBalancerId。ListenId和LoadBalancerId必选其一 - - **LoadBalancerId** (str) - 应用型负载均衡实例的ID。未指定ListenId,则描述指定的LoadBalancerId下的所有监听器。 - - **Offset** (int) - 数据偏移量,默认为0 - - **Response** - - - **Listeners** (list) - 见 **Listener** 模型定义 - - **TotalCount** (int) - 满足条件的负载均衡监听器总数 - - **Response Model** - - **CorsConfigSet** - - **AllowCredentials** (str) - 是否允许携带凭证信息。取值:on:是。off:否。 - - **AllowHeaders** (list) - 允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **AllowMethods** (list) - 选择跨域访问时允许的 HTTP 方法。取值:GETPOSTPUTDELETEHEADOPTIONSPATCH - - **AllowOrigin** (list) - 允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)单个值可以不加端口,也可以指定端口,端口范围:1~65535。最多支持5个值 - - **ExposeHeaders** (list) - 允许暴露的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **MaxAge** (int) - 预检请求在浏览器的最大缓存时间,单位:秒。取值范围:-1~172800。 - - - **FixedResponseConfigSet** - - **Content** (str) - 返回的固定内容。最大支持存储 1 KB,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。 - - **HttpCode** (int) - 返回的 HTTP 响应码,仅支持 2xx、4xx、5xx 数字,x 为任意数字。 - - - **InsertHeaderConfigSet** - - **Key** (str) - 插入的 header 字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于InsertHeader中。header 字段不能使用以下(此处判断大小写不敏感)x-real-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-srcport、ucloud-alb-trace、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority - - **Value** (str) - 插入的 header 字段内容。ValueType 取值为 SystemDefined 时取值如下:ClientSrcPort:客户端端口。ClientSrcIp:客户端 IP 地址。Protocol:客户端请求的协议(HTTP 或 HTTPS)。RuleID:客户端请求命中的转发规则ID。ALBID:ALB ID。ALBPort:ALB 端口。ValueType 取值为 UserDefined 时:可以自定义头字段内容,限制长度为 1~128 个字符,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。ValueType 取值为 ReferenceHeader 时:可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。 - - **ValueType** (str) - 头字段内容类型。取值:UserDefined:用户指定。ReferenceHeader:引用用户请求头中的某一个字段。SystemDefined:系统定义。 - - - **RemoveHeaderConfigSet** - - **Key** (str) - 删除的 header 字段名称,目前只能删除以下几个默认配置的字段: X-Real-IP、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-SrcPort - - - **ForwardTargetSet** - - **Id** (str) - 服务节点的标识ID - - **Weight** (int) - 权重。仅监听器负载均衡算法是加权轮询是有效;取值范围[1-100],默认值为1 - - - **ForwardConfigSet** - - **Targets** (list) - 见 **ForwardTargetSet** 模型定义 - - - **RuleAction** - - **CorsConfig** (dict) - 见 **CorsConfigSet** 模型定义 - - **FixedResponseConfig** (dict) - 见 **FixedResponseConfigSet** 模型定义 - - **ForwardConfig** (dict) - 见 **ForwardConfigSet** 模型定义 - - **InsertHeaderConfig** (dict) - 见 **InsertHeaderConfigSet** 模型定义 - - **Order** (int) - 转发规则动作执行的顺序,取值为1~1000,按值从小到大执行动作。值不能为空,不能重复。Forward、FixedResponse 类型的动作不判断 Order,最后一个执行 - - **RemoveHeaderConfig** (dict) - 见 **RemoveHeaderConfigSet** 模型定义 - - **Type** (str) - 动作类型。限定枚举值:Forward、"InsertHeader"、"Cors"、"FixedResponse"、"RemoveHeader" - - - **HostConfigSet** - - **MatchMode** (str) - 匹配方式。限定枚举值:Regular-正则,Wildcard-泛域名; 默认值:Regular - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **PathConfigSet** - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **RuleCondition** - - **HostConfig** (dict) - 见 **HostConfigSet** 模型定义 - - **PathConfig** (dict) - 见 **PathConfigSet** 模型定义 - - **Type** (str) - 匹配条件类型。限定枚举值:Host,Path - - - **Rule** - - **IsDefault** (bool) - 是否为默认转发规则 - - **Pass** (bool) - 当转发的服务节点为空时,规则是否忽略 - - **RuleActions** (list) - 见 **RuleAction** 模型定义 - - **RuleConditions** (list) - 见 **RuleCondition** 模型定义 - - **RuleId** (str) - 转发规则的ID - - - **StickinessConfigSet** - - **CookieName** (str) - (应用型专用)自定义Cookie。当StickinessType取值"UserDefined"时有效 - - **Enabled** (bool) - 是否开启会话保持功能。应用型负载均衡实例基于Cookie实现 - - **Type** (str) - (应用型专用)Cookie处理方式。限定枚举值: ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY - - - **HealthCheckConfigSet** - - **Domain** (str) - (应用型专用)HTTP检查域名。 当Type为HTTP时,此字段有意义,代表HTTP检查域名 - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭。 默认值为:true - - **Method** (str) - (应用型专用)HTTP检查方法。当Type为HTTP时,此字段有意义,代表HTTP检查方法 - - **Path** (str) - (应用型专用)HTTP检查路径。当Type为HTTP时,此字段有意义,代表HTTP检查路径 - - **ResponseCode** (str) - (应用型专用)GRPC检查响应码。当Type为GRPC时,此字段有意义,代表GRPC检查响应码 - - **Type** (str) - 健康检查方式。应用型限定取值: Port -> 端口检查;HTTP -> HTTP检查; 默认值:Port - - - **Target** - - **Enabled** (bool) - 服务节点是否启用 - - **Id** (str) - 服务节点的标识ID。为ALB/NLB中使用,与资源自身ID无关,可用于UpdateTargetsAttribute/RemoveTargets - - **IsBackup** (bool) - 服务节点是否为备节点 - - **Port** (int) - 服务节点的端口 - - **ResourceIP** (str) - 服务节点的IP - - **ResourceId** (str) - 服务节点的资源ID - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型。限定枚举值:UHost -> 云主机,UNI -> 虚拟网卡,UPM -> 物理云主机,IP -> IP类型; 默认值:"UHost"; 非IP类型,如果该资源有多个IP,将只能添加主IP; 非IP类型,展示时,会显示相关资源信息,IP类型只展示IP信息。 在相关资源被删除时,非IP类型会把相关资源从lb中剔除,IP类型不保证这个逻辑 - - **State** (str) - 服务节点的健康检查状态。限定枚举值:Healthy -> 健康,Unhealthy -> 不健康 - - **SubnetId** (str) - 服务节点的子网资源ID - - **VPCId** (str) - 服务节点的VPC资源ID - - **Weight** (int) - 服务节点的权重。仅在加权轮询算法时有效 - - - **Certificate** - - **IsDefault** (bool) - 是否为默认证书 - - **SSLId** (str) - 证书ID - - - **Listener** - - **Certificates** (list) - 见 **Certificate** 模型定义 - - **CompressionEnabled** (bool) - (应用型专用)是否开启数据压缩功能。目前只支持使用gzip对特定文件类型进行压缩 - - **HTTP2Enabled** (bool) - (应用型专用)是否开启HTTP/2特性。仅HTTPS监听支持开启 - - **HealthCheckConfig** (dict) - 见 **HealthCheckConfigSet** 模型定义 - - **IdleTimeout** (int) - 连接空闲超时时间。单位:秒 - - **ListenerId** (str) - 监听器的ID - - **ListenerPort** (int) - 监听器的监听端口 - - **ListenerProtocol** (str) - 监听协议。应用型限定取值: HTTP、HTTPS - - **Name** (str) - 监听器的名称 - - **RedirectEnabled** (bool) - (应用型专用)是否开启HTTP重定向到HTTPS。仅HTTP监听支持开启 - - **RedirectPort** (int) - (应用型专用)重定向端口 - - **Remark** (str) - 监听器的备注信息 - - **Rules** (list) - 见 **Rule** 模型定义 - - **Scheduler** (str) - 负载均衡算法。应用型限定取值:Roundrobin -> 轮询;Source -> 源地址; WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup ->主备模式 - - **SecurityPolicyId** (str) - (应用型专用)安全策略组ID。仅HTTPS监听支持绑定;Default -> 原生策略 - - **State** (str) - listener健康状态。限定枚举值:Healthy -> 健康,Unhealthy -> 不健康,PartialHealth -> 部分健康,None -> 无节点状态 - - **StickinessConfig** (dict) - 见 **StickinessConfigSet** 模型定义 - - **Targets** (list) - 见 **Target** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeListenersRequestSchema().dumps(d) - - resp = self.invoke("DescribeListeners", d, **kwargs) - return apis.DescribeListenersResponseSchema().loads(resp) - - def describe_load_balancers( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeLoadBalancers - 描述特定条件下的应用型负载均衡实例或者全部的应用型负载均衡实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (str) - 数据分页值,默认为100 - - **LoadBalancerIds** (list) - 负载均衡实例的ID。必须是同一类型的实例,若指定了实例ID,将忽略除Type外的其他过滤条件 - - **Offset** (str) - 数据偏移量,默认为0 - - **ShowDetail** (bool) - 是否获取监听器和后端服务节点的详细信息。默认值:false - - **SubnetId** (str) - 限定所在的子网 - - **Type** (str) - 负载均衡实例的类型。限定枚举值:"Application" / "Network",默认值:"Application" - - **VPCId** (str) - 限定所在的VPC - - **Response** - - - **LoadBalancers** (list) - 见 **LoadBalancer** 模型定义 - - **TotalCount** (int) - 满足条件的负载均衡实例总数 - - **Response Model** - - **FixedResponseConfigSet** - - **Content** (str) - 返回的固定内容。最大支持存储 1 KB,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。 - - **HttpCode** (int) - 返回的 HTTP 响应码,仅支持 2xx、4xx、5xx 数字,x 为任意数字。 - - - **ForwardTargetSet** - - **Id** (str) - 服务节点的标识ID - - **Weight** (int) - 权重。仅监听器负载均衡算法是加权轮询是有效;取值范围[1-100],默认值为1 - - - **Certificate** - - **IsDefault** (bool) - 是否为默认证书 - - **SSLId** (str) - 证书ID - - - **HealthCheckConfigSet** - - **Domain** (str) - (应用型专用)HTTP检查域名。 当Type为HTTP时,此字段有意义,代表HTTP检查域名 - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭。 默认值为:true - - **Method** (str) - (应用型专用)HTTP检查方法。当Type为HTTP时,此字段有意义,代表HTTP检查方法 - - **Path** (str) - (应用型专用)HTTP检查路径。当Type为HTTP时,此字段有意义,代表HTTP检查路径 - - **ResponseCode** (str) - (应用型专用)GRPC检查响应码。当Type为GRPC时,此字段有意义,代表GRPC检查响应码 - - **Type** (str) - 健康检查方式。应用型限定取值: Port -> 端口检查;HTTP -> HTTP检查; 默认值:Port - - - **HostConfigSet** - - **MatchMode** (str) - 匹配方式。限定枚举值:Regular-正则,Wildcard-泛域名; 默认值:Regular - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **PathConfigSet** - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **RuleCondition** - - **HostConfig** (dict) - 见 **HostConfigSet** 模型定义 - - **PathConfig** (dict) - 见 **PathConfigSet** 模型定义 - - **Type** (str) - 匹配条件类型。限定枚举值:Host,Path - - - **InsertHeaderConfigSet** - - **Key** (str) - 插入的 header 字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于InsertHeader中。header 字段不能使用以下(此处判断大小写不敏感)x-real-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-srcport、ucloud-alb-trace、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority - - **Value** (str) - 插入的 header 字段内容。ValueType 取值为 SystemDefined 时取值如下:ClientSrcPort:客户端端口。ClientSrcIp:客户端 IP 地址。Protocol:客户端请求的协议(HTTP 或 HTTPS)。RuleID:客户端请求命中的转发规则ID。ALBID:ALB ID。ALBPort:ALB 端口。ValueType 取值为 UserDefined 时:可以自定义头字段内容,限制长度为 1~128 个字符,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。ValueType 取值为 ReferenceHeader 时:可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。 - - **ValueType** (str) - 头字段内容类型。取值:UserDefined:用户指定。ReferenceHeader:引用用户请求头中的某一个字段。SystemDefined:系统定义。 - - - **RemoveHeaderConfigSet** - - **Key** (str) - 删除的 header 字段名称,目前只能删除以下几个默认配置的字段: X-Real-IP、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-SrcPort - - - **AccessLogConfigSet** - - **Enabled** (bool) - (应用型专用)是否开启访问日志记录功能 - - **US3BucketName** (str) - (应用型专用)用于存储访问日志的bucket - - **US3TokenId** (str) - (应用型专用)上传访问日志到bucket所需的token - - - **StickinessConfigSet** - - **CookieName** (str) - (应用型专用)自定义Cookie。当StickinessType取值"UserDefined"时有效 - - **Enabled** (bool) - 是否开启会话保持功能。应用型负载均衡实例基于Cookie实现 - - **Type** (str) - (应用型专用)Cookie处理方式。限定枚举值: ServerInsert -> 自动生成KEY;UserDefined -> 用户自定义KEY - - - **FirewallSet** - - **FirewallId** (str) - 防火墙ID - - **FirewallName** (str) - 防火墙名称 - - - **Target** - - **Enabled** (bool) - 服务节点是否启用 - - **Id** (str) - 服务节点的标识ID。为ALB/NLB中使用,与资源自身ID无关,可用于UpdateTargetsAttribute/RemoveTargets - - **IsBackup** (bool) - 服务节点是否为备节点 - - **Port** (int) - 服务节点的端口 - - **ResourceIP** (str) - 服务节点的IP - - **ResourceId** (str) - 服务节点的资源ID - - **ResourceName** (str) - 服务节点的资源名称 - - **ResourceType** (str) - 服务节点的类型。限定枚举值:UHost -> 云主机,UNI -> 虚拟网卡,UPM -> 物理云主机,IP -> IP类型; 默认值:"UHost"; 非IP类型,如果该资源有多个IP,将只能添加主IP; 非IP类型,展示时,会显示相关资源信息,IP类型只展示IP信息。 在相关资源被删除时,非IP类型会把相关资源从lb中剔除,IP类型不保证这个逻辑 - - **State** (str) - 服务节点的健康检查状态。限定枚举值:Healthy -> 健康,Unhealthy -> 不健康 - - **SubnetId** (str) - 服务节点的子网资源ID - - **VPCId** (str) - 服务节点的VPC资源ID - - **Weight** (int) - 服务节点的权重。仅在加权轮询算法时有效 - - - **ForwardConfigSet** - - **Targets** (list) - 见 **ForwardTargetSet** 模型定义 - - - **CorsConfigSet** - - **AllowCredentials** (str) - 是否允许携带凭证信息。取值:on:是。off:否。 - - **AllowHeaders** (list) - 允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **AllowMethods** (list) - 选择跨域访问时允许的 HTTP 方法。取值:GETPOSTPUTDELETEHEADOPTIONSPATCH - - **AllowOrigin** (list) - 允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)单个值可以不加端口,也可以指定端口,端口范围:1~65535。最多支持5个值 - - **ExposeHeaders** (list) - 允许暴露的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **MaxAge** (int) - 预检请求在浏览器的最大缓存时间,单位:秒。取值范围:-1~172800。 - - - **RuleAction** - - **CorsConfig** (dict) - 见 **CorsConfigSet** 模型定义 - - **FixedResponseConfig** (dict) - 见 **FixedResponseConfigSet** 模型定义 - - **ForwardConfig** (dict) - 见 **ForwardConfigSet** 模型定义 - - **InsertHeaderConfig** (dict) - 见 **InsertHeaderConfigSet** 模型定义 - - **Order** (int) - 转发规则动作执行的顺序,取值为1~1000,按值从小到大执行动作。值不能为空,不能重复。Forward、FixedResponse 类型的动作不判断 Order,最后一个执行 - - **RemoveHeaderConfig** (dict) - 见 **RemoveHeaderConfigSet** 模型定义 - - **Type** (str) - 动作类型。限定枚举值:Forward、"InsertHeader"、"Cors"、"FixedResponse"、"RemoveHeader" - - - **Rule** - - **IsDefault** (bool) - 是否为默认转发规则 - - **Pass** (bool) - 当转发的服务节点为空时,规则是否忽略 - - **RuleActions** (list) - 见 **RuleAction** 模型定义 - - **RuleConditions** (list) - 见 **RuleCondition** 模型定义 - - **RuleId** (str) - 转发规则的ID - - - **Listener** - - **Certificates** (list) - 见 **Certificate** 模型定义 - - **CompressionEnabled** (bool) - (应用型专用)是否开启数据压缩功能。目前只支持使用gzip对特定文件类型进行压缩 - - **HTTP2Enabled** (bool) - (应用型专用)是否开启HTTP/2特性。仅HTTPS监听支持开启 - - **HealthCheckConfig** (dict) - 见 **HealthCheckConfigSet** 模型定义 - - **IdleTimeout** (int) - 连接空闲超时时间。单位:秒 - - **ListenerId** (str) - 监听器的ID - - **ListenerPort** (int) - 监听器的监听端口 - - **ListenerProtocol** (str) - 监听协议。应用型限定取值: HTTP、HTTPS - - **Name** (str) - 监听器的名称 - - **RedirectEnabled** (bool) - (应用型专用)是否开启HTTP重定向到HTTPS。仅HTTP监听支持开启 - - **RedirectPort** (int) - (应用型专用)重定向端口 - - **Remark** (str) - 监听器的备注信息 - - **Rules** (list) - 见 **Rule** 模型定义 - - **Scheduler** (str) - 负载均衡算法。应用型限定取值:Roundrobin -> 轮询;Source -> 源地址; WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup ->主备模式 - - **SecurityPolicyId** (str) - (应用型专用)安全策略组ID。仅HTTPS监听支持绑定;Default -> 原生策略 - - **State** (str) - listener健康状态。限定枚举值:Healthy -> 健康,Unhealthy -> 不健康,PartialHealth -> 部分健康,None -> 无节点状态 - - **StickinessConfig** (dict) - 见 **StickinessConfigSet** 模型定义 - - **Targets** (list) - 见 **Target** 模型定义 - - - **SecGroupInfo** - - **Name** (str) - 安全组名称 - - **Priority** (int) - 优先级 - - **SecgroupId** (str) - 安全组id - - **VPCId** (str) - 安全组所属vpc id - - - **IPInfo** - - **AddressType** (str) - 网络模式。 限定枚举值:Internet -> 互联网,Intranet -> 内联网 - - **Bandwidth** (int) - 带宽值。单位M - - **BandwidthType** (int) - 带宽类型。限定枚举值:1 -> 共享带宽,0 -> 普通带宽类型 - - **IP** (str) - IP地址 - - **IPVersion** (str) - IP协议版本 - - **Id** (str) - 唯一标识ID - - **OperatorName** (str) - 外网IP的运营商信息。枚举值为:Telecom -> 电信,Unicom -> 联通,International -> 国际IP,Bgp -> BGP,Duplet -> 双线(电信+联通双线路),BGPPro -> 精品BGP,China-mobile -> 中国移动,Anycast -> AnycastEIP - - - **LoadBalancer** - - **AccessLogConfig** (dict) - 见 **AccessLogConfigSet** 模型定义 - - **AutoRenewEnabled** (bool) - 是否开启自动续费 - - **ChargeType** (str) - 付费模式 - - **CreateTime** (int) - 负载均衡实例创建时间。格式为Unix Timestamp - - **Firewall** (dict) - 见 **FirewallSet** 模型定义 - - **IPInfos** (list) - 见 **IPInfo** 模型定义 - - **IPVersion** (str) - 负载均衡实例支持的IP协议版本 - - **Listeners** (list) - 见 **Listener** 模型定义 - - **LoadBalancerId** (str) - 负载均衡实例的ID - - **Name** (str) - 负载均衡实例的名称 - - **PurchaseValue** (int) - 有效期(计费)。格式为Unix Timestamp - - **Remark** (str) - 负载均衡实例的备注信息 - - **SecGroup** (list) - 见 **SecGroupInfo** 模型定义 - - **SnatIPs** (list) - 应用型实例的代理IP或网络型FULLNAT模式下snat所用的IP - - **Status** (str) - lb状态:Normal-正常;Arrears-欠费停服 - - **SubnetId** (str) - 负载均衡实例所属的子网资源ID。负载均衡实例的内网VIP和SNAT场景的源IP限定在该子网内;指定子网不影响添加后端服务节点时的范围,依旧是整个VPC下支持的资源 - - **Tag** (str) - 负载均衡实例所属的业务组ID - - **Type** (str) - 负载均衡实例的类型。限定枚举值:Application -> 应用型,Network -> 网络型 - - **VPCId** (str) - 负载均衡实例所属的VPC资源ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeLoadBalancersRequestSchema().dumps(d) - - resp = self.invoke("DescribeLoadBalancers", d, **kwargs) - return apis.DescribeLoadBalancersResponseSchema().loads(resp) - - def describe_rules( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeRules - 描述一条指定的转发规则或者一个应用型负载均衡监听器下的所有转发规则 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 应用型负载均衡实例的ID - - **RuleId** (str) - 应用型负载均衡转发规则的ID。指定RuleId,则只描述该规则 - - **Response** - - - **Rules** (list) - 见 **Rule** 模型定义 - - **Response Model** - - **CorsConfigSet** - - **AllowCredentials** (str) - 是否允许携带凭证信息。取值:on:是。off:否。 - - **AllowHeaders** (list) - 允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **AllowMethods** (list) - 选择跨域访问时允许的 HTTP 方法。取值:GETPOSTPUTDELETEHEADOPTIONSPATCH - - **AllowOrigin** (list) - 允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)单个值可以不加端口,也可以指定端口,端口范围:1~65535。最多支持5个值 - - **ExposeHeaders** (list) - 允许暴露的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **MaxAge** (int) - 预检请求在浏览器的最大缓存时间,单位:秒。取值范围:-1~172800。 - - - **FixedResponseConfigSet** - - **Content** (str) - 返回的固定内容。最大支持存储 1 KB,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。 - - **HttpCode** (int) - 返回的 HTTP 响应码,仅支持 2xx、4xx、5xx 数字,x 为任意数字。 - - - **InsertHeaderConfigSet** - - **Key** (str) - 插入的 header 字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于InsertHeader中。header 字段不能使用以下(此处判断大小写不敏感)x-real-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-srcport、ucloud-alb-trace、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority - - **Value** (str) - 插入的 header 字段内容。ValueType 取值为 SystemDefined 时取值如下:ClientSrcPort:客户端端口。ClientSrcIp:客户端 IP 地址。Protocol:客户端请求的协议(HTTP 或 HTTPS)。RuleID:客户端请求命中的转发规则ID。ALBID:ALB ID。ALBPort:ALB 端口。ValueType 取值为 UserDefined 时:可以自定义头字段内容,限制长度为 1~128 个字符,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。ValueType 取值为 ReferenceHeader 时:可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。 - - **ValueType** (str) - 头字段内容类型。取值:UserDefined:用户指定。ReferenceHeader:引用用户请求头中的某一个字段。SystemDefined:系统定义。 - - - **RemoveHeaderConfigSet** - - **Key** (str) - 删除的 header 字段名称,目前只能删除以下几个默认配置的字段: X-Real-IP、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-SrcPort - - - **ForwardTargetSet** - - **Id** (str) - 服务节点的标识ID - - **Weight** (int) - 权重。仅监听器负载均衡算法是加权轮询是有效;取值范围[1-100],默认值为1 - - - **ForwardConfigSet** - - **Targets** (list) - 见 **ForwardTargetSet** 模型定义 - - - **RuleAction** - - **CorsConfig** (dict) - 见 **CorsConfigSet** 模型定义 - - **FixedResponseConfig** (dict) - 见 **FixedResponseConfigSet** 模型定义 - - **ForwardConfig** (dict) - 见 **ForwardConfigSet** 模型定义 - - **InsertHeaderConfig** (dict) - 见 **InsertHeaderConfigSet** 模型定义 - - **Order** (int) - 转发规则动作执行的顺序,取值为1~1000,按值从小到大执行动作。值不能为空,不能重复。Forward、FixedResponse 类型的动作不判断 Order,最后一个执行 - - **RemoveHeaderConfig** (dict) - 见 **RemoveHeaderConfigSet** 模型定义 - - **Type** (str) - 动作类型。限定枚举值:Forward、"InsertHeader"、"Cors"、"FixedResponse"、"RemoveHeader" - - - **HostConfigSet** - - **MatchMode** (str) - 匹配方式。限定枚举值:Regular-正则,Wildcard-泛域名; 默认值:Regular - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **PathConfigSet** - - **Values** (list) - 取值。暂时只支持数组长度为1; 取值需符合相关匹配方式的条件 - - - **RuleCondition** - - **HostConfig** (dict) - 见 **HostConfigSet** 模型定义 - - **PathConfig** (dict) - 见 **PathConfigSet** 模型定义 - - **Type** (str) - 匹配条件类型。限定枚举值:Host,Path - - - **Rule** - - **IsDefault** (bool) - 是否为默认转发规则 - - **Pass** (bool) - 当转发的服务节点为空时,规则是否忽略 - - **RuleActions** (list) - 见 **RuleAction** 模型定义 - - **RuleConditions** (list) - 见 **RuleCondition** 模型定义 - - **RuleId** (str) - 转发规则的ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeRulesRequestSchema().dumps(d) - - resp = self.invoke("DescribeRules", d, **kwargs) - return apis.DescribeRulesResponseSchema().loads(resp) - - def describe_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DescribeSSL - 获取SSL证书信息,仅能获取SSL证书与传统型负载均衡监听器的绑定关系 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值,默认为20 - - **Offset** (int) - 数据偏移量,默认值为0 - - **SSLId** (str) - SSL证书的Id - - **Response** - - - **DataSet** (list) - 见 **ULBSSLSet** 模型定义 - - **TotalCount** (int) - 满足条件的SSL证书总数 - - **Response Model** - - **SSLBindedTargetSet** - - **ULBId** (str) - VServer 所属的ULB实例的资源ID - - **ULBName** (str) - ULB实例的名称 - - **VServerId** (str) - SSL证书绑定到的VServer的资源ID - - **VServerName** (str) - 对应的VServer的名字 - - - **ULBSSLSet** - - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 - - **CreateTime** (int) - SSL证书的创建时间 - - **Domains** (str) - SSL证书平台的域名,多域名时,不展示扩展域名 - - **HashValue** (str) - SSL证书的HASH值 - - **NotAfter** (int) - 证书过期时间 - - **NotBefore** (int) - 证书颁发时间 - - **SSLContent** (str) - SSL证书的内容 - - **SSLId** (str) - SSL证书的Id - - **SSLName** (str) - SSL证书的名字 - - **SSLSource** (int) - SSL证书来源,SSL证书来源,0代表证书来自于ULB平台,1代表证书来自于USSL平台 - - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 - - **USSLId** (str) - USSL证书平台的编号,只有当SSLSource为1时才出现 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSSLRequestSchema().dumps(d) - - resp = self.invoke("DescribeSSL", d, **kwargs) - return apis.DescribeSSLResponseSchema().loads(resp) - - def describe_ssl_v2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeSSLV2 - 获取SSL证书信息,该接口可以同时获取SSL与传统型和应用型负载均衡监听器的绑定关系 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值,默认为20 - - **Offset** (int) - 数据偏移量,默认值为0 - - **SSLId** (str) - SSL证书的Id - - **Response** - - - **DataSet** (list) - 见 **SSLInfo** 模型定义 - - **TotalCount** (int) - 满足条件的SSL证书总数 - - **Response Model** - - **SSLRelation** - - **IsDefault** (bool) - 是否为监听器默认SSL证书 - - **ListenerId** (str) - 监听器的ID - - **ListenerName** (str) - 监听器的名称 - - **LoadBalancerId** (str) - 负载均衡实例的ID - - **LoadBalancerName** (str) - 负载均衡实例的名称 - - - **SSLInfo** - - **CreateTime** (int) - SSL证书的创建时间 - - **DNSNames** (str) - SSL证书的扩展域名 - - **Domains** (str) - SSL证书的域名 - - **HashValue** (str) - SSL证书的HASH值 - - **NotAfter** (int) - 证书过期时间 - - **NotBefore** (int) - 证书颁发时间 - - **Relations** (list) - 见 **SSLRelation** 模型定义 - - **SSLContent** (str) - SSL证书的内容 - - **SSLId** (str) - SSL证书的Id - - **SSLName** (str) - SSL证书的名字 - - **SSLSource** (int) - SSL证书来源,SSL证书来源,0代表证书来自于ULB平台,1代表证书来自于USSL平台 - - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 - - **USSLId** (str) - USSL证书平台的编号,只有当SSLSource为1时才出现 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSSLV2RequestSchema().dumps(d) - - resp = self.invoke("DescribeSSLV2", d, **kwargs) - return apis.DescribeSSLV2ResponseSchema().loads(resp) - - def describe_security_policies( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeSecurityPolicies - 获取安全策略的信息,绑定关系仅能获取安全策略与传统型负载均衡监听器的绑定关系 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值 - - **Offset** (int) - 数据偏移量 - - **SecurityPolicyId** (str) - 安全策略ID - - **Response** - - - **DataSet** (list) - 见 **SecurityPolicy** 模型定义 - - **TotalCount** (int) - 满足条件的安全策略总数 - - **Response Model** - - **BindVServerInfo** - - **Port** (int) - VServer端口 - - **ULBId** (str) - ULB的ID - - **VServerId** (str) - 绑定的VServerId - - **VServerName** (str) - 绑定的VServer名称 - - - **SecurityPolicy** - - **SSLCiphers** (list) - 加密套件 - - **SecurityPolicyId** (str) - 安全策略ID - - **SecurityPolicyName** (str) - 安全策略名称 - - **SecurityPolicyType** (int) - 安全策略类型 0:预定义 1:自定义 - - **TLSVersion** (str) - TLS最低版本 - - **VServerSet** (list) - 见 **BindVServerInfo** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSecurityPoliciesRequestSchema().dumps(d) - - resp = self.invoke("DescribeSecurityPolicies", d, **kwargs) - return apis.DescribeSecurityPoliciesResponseSchema().loads(resp) - - def describe_security_policies_v2( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeSecurityPoliciesV2 - 获取安全策略的信息,可以同时获取安全策略与传统型和应用性负载均衡监听器的绑定关系 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值 - - **Offset** (int) - 数据偏移量 - - **SecurityPolicyId** (str) - 安全策略ID - - **Response** - - - **DataSet** (list) - 见 **SecurityPolicyInfo** 模型定义 - - **TotalCount** (int) - 满足条件的安全策略总数 - - **Response Model** - - **SecurityPolicyRelation** - - **ListenerId** (str) - 监听器的ID - - **ListenerName** (str) - 监听器的名称 - - **ListenerPort** (int) - 监听端口 - - **LoadBalancerId** (str) - 负载均衡实例的ID - - - **SecurityPolicyInfo** - - **Relations** (list) - 见 **SecurityPolicyRelation** 模型定义 - - **SSLCiphers** (list) - 加密套件 - - **SecurityPolicyId** (str) - 安全策略ID - - **SecurityPolicyName** (str) - 安全策略名称 - - **SecurityPolicyType** (int) - 安全策略类型 0:预定义 1:自定义 - - **TLSVersion** (str) - TLS最低版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSecurityPoliciesV2RequestSchema().dumps(d) - - resp = self.invoke("DescribeSecurityPoliciesV2", d, **kwargs) - return apis.DescribeSecurityPoliciesV2ResponseSchema().loads(resp) - - def describe_support_ciphers( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeSupportCiphers - 返回安全策略所有支持的加密套件 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **TLSAndCiphers** 模型定义 - - **Response Model** - - **TLSAndCiphers** - - **SSLCiphers** (list) - 加密套件 - - **TLSVersion** (str) - TLS最低版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeSupportCiphersRequestSchema().dumps(d) - - resp = self.invoke("DescribeSupportCiphers", d, **kwargs) - return apis.DescribeSupportCiphersResponseSchema().loads(resp) - - def describe_ulb(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DescribeULB - 获取CLB详细信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BusinessId** (str) - CLB所属的业务组ID - - **Limit** (int) - 数据分页值,默认为20 - - **Offset** (int) - 数据偏移量,默认为0 - - **SubnetId** (str) - CLB所属的子网ID - - **ULBId** (str) - 传统型负载均衡实例的Id。 若指定则返回指定的传统型负载均衡实例的信息; 若不指定则返回当前数据中心中所有的传统型负载均衡实例的信息 - - **VPCId** (str) - CLB所属的VPC - - **Response** - - - **DataSet** (list) - 见 **ULBSet** 模型定义 - - **TotalCount** (int) - 满足条件的CLB总数 - - **Response Model** - - **PolicyBackendSet** - - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 - - **ObjectId** (str) - 后端资源的对象ID - - **Port** (int) - 所添加的后端资源服务端口 - - **PrivateIP** (str) - 后端资源的内网IP - - **ResourceName** (str) - 后端资源的实例名称 - - **ResourceType** (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 - - **SubResourceId** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID - - **SubResourceName** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 - - **SubResourceType** (str) - "UNI"或者为空 - - - **ULBPolicySet** - - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 - - **DomainMatchMode** (str) - 内容转发规则中域名的匹配方式。枚举值:Regular,正则;Wildcard,泛域名 - - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 - - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 - - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 - - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 - - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 - - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 - - **VServerId** (str) - 所属VServerId - - - **BindSecurityPolicy** - - **SSLCiphers** (list) - 加密套件 - - **SecurityPolicyId** (str) - 安全策略组ID - - **SecurityPolicyName** (str) - 安全策略组名称 - - **SecurityPolicyType** (int) - 安全策略类型 0:预定义 1:自定义 - - **TLSVersion** (str) - TLS最低版本 - - - **SSLBindedTargetSet** - - **ULBId** (str) - VServer 所属的ULB实例的资源ID - - **ULBName** (str) - ULB实例的名称 - - **VServerId** (str) - SSL证书绑定到的VServer的资源ID - - **VServerName** (str) - 对应的VServer的名字 - - - **ULBSSLSet** - - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 - - **CreateTime** (int) - SSL证书的创建时间 - - **Domains** (str) - USSL证书平台的域名,只有当SSLSource为1时才出现 - - **HashValue** (str) - SSL证书的HASH值 - - **NotAfter** (int) - 证书过期时间,只有当SSLSource为1时才出现 - - **NotBefore** (int) - 证书颁发时间,只有当SSLSource为1时才出现 - - **SSLContent** (str) - SSL证书的内容 - - **SSLId** (str) - SSL证书的Id - - **SSLName** (str) - SSL证书的名字 - - **SSLSource** (int) - SSL证书来源,SSL证书来源,0代表证书来自于ULB平台,1代表证书来自于USSL平台 - - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 - - **USSLId** (str) - USSL证书平台的编号,只有当SSLSource为1时才出现 - - - **ULBBackendSet** - - **BackendId** (str) - 后端资源实例的Id - - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 - - **IsBackup** (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs - - **Port** (int) - 后端提供服务的端口 - - **PrivateIP** (str) - 后端提供服务的内网IP - - **ResourceId** (str) - 资源实例的资源Id - - **ResourceName** (str) - 资源实例的资源名称 - - **ResourceType** (str) - 资源实例的类型 - - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 - - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id - - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 - - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 - - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID - - **VPCId** (str) - 后端服务器所在的VPC - - **Weight** (int) - 后端RS权重(在加权轮询算法下有效) - - - **ULBVServerSet** - - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 - - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 - - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 - - **EnableCompression** (int) - 数据压缩开关,0:关闭 1:开启 - - **EnableHTTP2** (int) - 0:关闭 1:开启,用于开启http2功能;默认值为0 - - **ForwardPort** (int) - 重定向端口,取值范围[0-65535];默认值为0,代表关闭;仅HTTP协议支持开启重定向功能 - - **FrontendPort** (int) - VServer服务端口 - - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 - - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 - - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize - - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 - - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 - - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 - - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 - - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 - - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 - - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 - - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 - - **SecurityPolicy** (dict) - 见 **BindSecurityPolicy** 模型定义 - - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 - - **ULBId** (str) - 负载均衡实例的Id - - **VServerId** (str) - VServer实例的Id - - **VServerName** (str) - VServer实例的名字 - - - **FirewallSet** - - **FirewallId** (str) - 防火墙ID - - **FirewallName** (str) - 防火墙名称 - - - **ULBIPSet** - - **Bandwidth** (int) - 弹性IP的带宽值(暂未对外开放) - - **BandwidthType** (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) - - **EIP** (str) - 弹性IP地址 - - **EIPId** (str) - 弹性IP的ID - - **OperatorName** (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP - - - **LoggerSet** - - **BucketName** (str) - ulb日志上传的bucket - - **TokenID** (str) - 上传到bucket使用的token的tokenid - - **TokenName** (str) - bucket的token名称 - - - **ULBSet** - - **Bandwidth** (int) - 带宽 - - **BandwidthType** (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 - - **BusinessId** (str) - ULB 所属的业务组ID - - **CreateTime** (int) - ULB的创建时间,格式为Unix Timestamp - - **EnableLog** (int) - ULB是否开启日志功能。0,关闭;1,开启 - - **FirewallSet** (list) - 见 **FirewallSet** 模型定义 - - **IPSet** (list) - 见 **ULBIPSet** 模型定义 - - **IPVersion** (str) - ULB ip类型,枚举值:IPv6 / IPv4 (内部测试,暂未对外开放) - - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 - - **LogSet** (dict) - 见 **LoggerSet** 模型定义 - - **Name** (str) - 负载均衡的资源名称 - - **PrivateIP** (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 - - **Remark** (str) - 负载均衡的备注 - - **SnatIps** (list) - ULB后向代理IP,仅当有代理IP时返回否 - - **SubnetId** (str) - ULB 为 InnerMode 时,ULB 所属的子网ID,默认为空 - - **Tag** (str) - 负载均衡的业务组名称 - - **ULBId** (str) - 负载均衡的资源ID - - **ULBType** (str) - ULB 的类型 - - **VPCId** (str) - ULB所在的VPC的ID - - **VServerSet** (list) - 见 **ULBVServerSet** 模型定义 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULBRequestSchema().dumps(d) - - resp = self.invoke("DescribeULB", d, **kwargs) - return apis.DescribeULBResponseSchema().loads(resp) - - def describe_ulb_simple( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULBSimple - 获取CLB信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BusinessId** (str) - CLB所属的业务组ID - - **Limit** (int) - 数据分页值,默认为10000 - - **Offset** (int) - 数据偏移量,默认为0 - - **SubnetId** (str) - CLB所属的子网ID - - **ULBId** (str) - 传统型负载均衡实例的Id。 若指定则返回指定的传统型负载均衡实例的信息; 若不指定则返回当前数据中心中所有的传统型负载均衡实例的信息 - - **VPCId** (str) - CLB所属的VPC - - **Response** - - - **DataSet** (list) - 见 **ULBSimpleSet** 模型定义 - - **TotalCount** (int) - 满足条件的CLB总数 - - **Response Model** - - **LoggerSet** - - **BucketName** (str) - ulb日志上传的bucket - - **TokenID** (str) - 上传到bucket使用的token的tokenid - - **TokenName** (str) - bucket的token名称 - - - **FirewallSet** - - **FirewallId** (str) - 防火墙ID - - **FirewallName** (str) - 防火墙名称 - - - **ULBIPSet** - - **Bandwidth** (int) - 弹性IP的带宽值(暂未对外开放) - - **BandwidthType** (int) - 弹性IP的带宽类型,枚举值:1 表示是共享带宽,0 普通带宽类型(暂未对外开放) - - **EIP** (str) - 弹性IP地址 - - **EIPId** (str) - 弹性IP的ID - - **OperatorName** (str) - 弹性IP的运营商信息,枚举值为: Bgp:BGP IP International:国际IP - - - **ULBSimpleSet** - - **Bandwidth** (int) - 带宽 - - **BandwidthType** (int) - 带宽类型,枚举值为: 0,非共享带宽; 1,共享带宽 - - **BusinessId** (str) - ULB 所属的业务组ID - - **CreateTime** (int) - ULB的创建时间,格式为Unix Timestamp - - **EnableLog** (int) - ULB是否开启日志功能。0,关闭;1,开启 - - **FirewallSet** (list) - 见 **FirewallSet** 模型定义 - - **IPSet** (list) - 见 **ULBIPSet** 模型定义 - - **IPVersion** (str) - ULB提供服务的IP类型。枚举值,“IPv4”,"IPv6"。默认为“IPv4” - - **ListenType** (str) - ULB 监听器类型,枚举值:RequestProxy,请求代理; PacketsTransmit ,报文转发;Comprehensive,兼容型;Pending,未定型 - - **LogSet** (dict) - 见 **LoggerSet** 模型定义 - - **Name** (str) - 负载均衡的资源名称 - - **PrivateIP** (str) - ULB的内网IP,当ULBType为OuterMode时,该值为空 - - **Remark** (str) - 负载均衡的备注 - - **SnatIps** (list) - ULB后向代理IP,仅当有代理IP时返回否 - - **SubnetId** (str) - ULB 为 InnerMode 时,ULB 所属的子网ID - - **Tag** (str) - 负载均衡的业务组名称 - - **ULBId** (str) - 负载均衡的资源ID - - **ULBType** (str) - ULB 的类型(InnerMode or OuterMode) - - **VPCId** (str) - ULB所在的VPC的ID - - **VServerCount** (int) - ulb下vserver数量 - - **WAFMode** (str) - WAF功能状态,枚举类型:Unavailable:无法创建WAF;NoWAF:未绑定WAF;Intranet:内网回源Waf;Extranet:外网回源Waf - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULBSimpleRequestSchema().dumps(d) - - resp = self.invoke("DescribeULBSimple", d, **kwargs) - return apis.DescribeULBSimpleResponseSchema().loads(resp) - - def describe_vserver( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeVServer - 获取CLB下的VServer的详细信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 数据分页值 - - **Offset** (int) - 数据偏移量 - - **ULBId** (str) - 传统型负载均衡实例的Id - - **VServerId** (str) - CLB下的VServer实例的Id;若指定则返回指定的VServer实例的信息; 若不指定则返回当前传统型负载均衡实例下所有VServer的信息 - - **Response** - - - **DataSet** (list) - 见 **ULBVServerSet** 模型定义 - - **TotalCount** (int) - 满足条件的VServer总数 - - **Response Model** - - **SSLBindedTargetSet** - - **ULBId** (str) - VServer 所属的ULB实例的资源ID - - **ULBName** (str) - ULB实例的名称 - - **VServerId** (str) - SSL证书绑定到的VServer的资源ID - - **VServerName** (str) - 对应的VServer的名字 - - - **ULBSSLSet** - - **BindedTargetSet** (list) - 见 **SSLBindedTargetSet** 模型定义 - - **CreateTime** (int) - SSL证书的创建时间 - - **Domains** (str) - USSL证书平台的域名,只有当SSLSource为1时才出现 - - **HashValue** (str) - SSL证书的HASH值 - - **NotAfter** (int) - 证书过期时间,只有当SSLSource为1时才出现 - - **NotBefore** (int) - 证书颁发时间,只有当SSLSource为1时才出现 - - **SSLContent** (str) - SSL证书的内容 - - **SSLId** (str) - SSL证书的Id - - **SSLName** (str) - SSL证书的名字 - - **SSLSource** (int) - SSL证书来源,SSL证书来源,0代表证书来自于ULB平台,1代表证书来自于USSL平台 - - **SSLType** (str) - SSL证书类型,暂时只有 Pem 一种类型 - - **USSLId** (str) - USSL证书平台的编号,只有当SSLSource为1时才出现 - - - **BindSecurityPolicy** - - **SSLCiphers** (list) - 加密套件 - - **SecurityPolicyId** (str) - 安全策略组ID - - **SecurityPolicyName** (str) - 安全策略组名称 - - **SecurityPolicyType** (int) - 安全策略类型 0:预定义 1:自定义 - - **TLSVersion** (str) - TLS最低版本 - - - **PolicyBackendSet** - - **BackendId** (str) - 所添加的后端资源在ULB中的对象ID,(为ULB系统中使用,与资源自身ID无关 - - **ObjectId** (str) - 后端资源的对象ID - - **Port** (int) - 所添加的后端资源服务端口 - - **PrivateIP** (str) - 后端资源的内网IP - - **ResourceName** (str) - 后端资源的实例名称 - - **ResourceType** (str) - 所添加的后端资源的类型,枚举值:UHost -> 云主机;UPM -> 物理云主机; UDHost -> 私有专区主机;UDocker -> 容器;UHybrid->混合云主机;CUBE->Cube;UNI -> 虚拟网卡 - - **SubResourceId** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源ID - - **SubResourceName** (str) - 如果资源绑定了弹性网卡,则展示弹性网卡的资源名称 - - **SubResourceType** (str) - "UNI"或者为空 - - - **ULBPolicySet** - - **BackendSet** (list) - 见 **PolicyBackendSet** 模型定义 - - **DomainMatchMode** (str) - 内容转发规则中域名的匹配方式。枚举值:Regular,正则;Wildcard,泛域名 - - **Match** (str) - 内容转发匹配字段;默认内容转发类型下为空。 - - **PolicyId** (str) - 内容转发Id,默认内容转发类型下为空。 - - **PolicyPriority** (int) - 内容转发优先级,范围[1,9999],数字越大优先级越高。默认内容转发规则下为0。 - - **PolicyType** (str) - 内容类型,枚举值:Custom -> 客户自定义;Default -> 默认内容转发 - - **TotalCount** (int) - 默认内容转发类型下返回当前rs总数 - - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名;Path -> 路径; 默认内容转发类型下为空 - - **VServerId** (str) - 所属VServerId - - - **ULBBackendSet** - - **BackendId** (str) - 后端资源实例的Id - - **Enabled** (int) - 后端提供服务的实例启用与否,枚举值:0 禁用 1 启用 - - **IsBackup** (int) - 是否为backup,只有当vserver的Backup属性为1时才会有此字段,说明:0:主rs1:备rs - - **Port** (int) - 后端提供服务的端口 - - **PrivateIP** (str) - 后端提供服务的内网IP - - **ResourceId** (str) - 资源实例的资源Id - - **ResourceName** (str) - 资源实例的资源名称 - - **ResourceType** (str) - 资源实例的类型 - - **Status** (int) - 后端提供服务的实例运行状态,枚举值:0健康检查健康状态 1 健康检查异常 - - **SubResourceId** (str) - 资源绑定的虚拟网卡实例的资源Id - - **SubResourceName** (str) - 资源绑定的虚拟网卡实例的资源名称 - - **SubResourceType** (str) - 资源绑定的虚拟网卡实例的类型 - - **SubnetId** (str) - 后端提供服务的资源所在的子网的ID - - **VPCId** (str) - 后端服务器所在的VPC - - **Weight** (int) - 后端RS权重(在加权轮询算法下有效) - - - **ULBVServerSet** - - **BackendSet** (list) - 见 **ULBBackendSet** 模型定义 - - **ClientTimeout** (int) - 空闲连接的回收时间,单位:秒。 - - **Domain** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查域名 - - **EnableCompression** (int) - 数据压缩开关,0:关闭 1:开启 - - **EnableHTTP2** (int) - 0:关闭 1:开启,用于开启http2功能;默认值为0 - - **ForwardPort** (int) - 重定向端口,取值范围[0-65535];默认值为0,代表关闭;仅HTTP协议支持开启重定向功能 - - **FrontendPort** (int) - VServer服务端口 - - **ListenType** (str) - 监听器类型,枚举值为: RequestProxy -> 请求代理;PacketsTransmit -> 报文转发 - - **Method** (str) - VServer负载均衡的模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口)。 - - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测, Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path; 报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize - - **Path** (str) - 根据MonitorType确认; 当MonitorType为Port时,此字段无意义。当MonitorType为Path时,代表HTTP检查路径 - - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert,此字段为空; UserDefined,此字段展示用户自定义会话string。 - - **PersistenceType** (str) - VServer会话保持方式。枚举值为: None -> 关闭会话保持; ServerInsert -> 自动生成; UserDefined -> 用户自定义。 - - **PolicySet** (list) - 见 **ULBPolicySet** 模型定义 - - **Protocol** (str) - VServer实例的协议。 枚举值为:HTTP,TCP,UDP,HTTPS。 - - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 - - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 - - **SSLSet** (list) - 见 **ULBSSLSet** 模型定义 - - **SecurityPolicy** (dict) - 见 **BindSecurityPolicy** 模型定义 - - **Status** (int) - VServer的运行状态。枚举值: 0 -> rs全部运行正常;1 -> rs全部运行异常;2 -> rs部分运行异常。 - - **ULBId** (str) - 负载均衡实例的Id - - **VServerId** (str) - VServer实例的Id - - **VServerName** (str) - VServer实例的名字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeVServerRequestSchema().dumps(d) - - resp = self.invoke("DescribeVServer", d, **kwargs) - return apis.DescribeVServerResponseSchema().loads(resp) - - def release_backend( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ReleaseBackend - 从CLB的VServer释放后端资源实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackendId** (str) - (Required) 后端资源实例的ID(CLB后端ID,非资源自身ID) - - **ULBId** (str) - (Required) 传统型负载均衡实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ReleaseBackendRequestSchema().dumps(d) - - resp = self.invoke("ReleaseBackend", d, **kwargs) - return apis.ReleaseBackendResponseSchema().loads(resp) - - def remove_targets( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveTargets - 从应用型负载均衡监听器删除后端服务节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Ids** (list) - (Required) 服务节点的标识ID。不超过20个; - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RemoveTargetsRequestSchema().dumps(d) - - resp = self.invoke("RemoveTargets", d, **kwargs) - return apis.RemoveTargetsResponseSchema().loads(resp) - - def un_bind_security_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UnBindSecurityPolicy - 批量解绑安全策略,会同时解绑与传统型和应用型负载均衡监听器的绑定关系 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SecurityPolicyId** (str) - (Required) 安全策略ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UnBindSecurityPolicyRequestSchema().dumps(d) - - resp = self.invoke("UnBindSecurityPolicy", d, **kwargs) - return apis.UnBindSecurityPolicyResponseSchema().loads(resp) - - def unbind_ssl(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """UnbindSSL - 从CLB下的VServer解绑SSL证书 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLId** (str) - (Required) SSL证书的Id - - **ULBId** (str) - (Required) 所绑定CLB实例ID - - **VServerId** (str) - (Required) CLB所绑定VServer实例ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UnbindSSLRequestSchema().dumps(d) - - resp = self.invoke("UnbindSSL", d, **kwargs) - return apis.UnbindSSLResponseSchema().loads(resp) - - def update_backend_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateBackendAttribute - 更新CLB后端资源实例(服务节点)属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackendId** (str) - (Required) 后端资源实例的ID(CLB后端ID,非资源自身ID) - - **ULBId** (str) - (Required) 传统型负载均衡资源ID - - **Enabled** (int) - 后端实例状态开关 - - **IsBackup** (int) - 是否为backup0:主rs1:备rs默认为0 - - **Port** (int) - 后端资源服务端口,取值范围[1-65535] - - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[1-100],默认为1 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateBackendAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateBackendAttribute", d, **kwargs) - return apis.UpdateBackendAttributeResponseSchema().loads(resp) - - def update_backend_batch( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateBackendBatch - 批量更新ULB后端资源实例(服务节点)属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) 负载均衡资源ID - - **Attributes** (list) - 见 **UpdateBackendBatchParamAttributes** 模型定义 - - **Response** - - - **BackendSet** (list) - 见 **BackendMsg** 模型定义 - - **Request Model** - - **UpdateBackendBatchParamAttributes** - - **BackendId** (str) - 后端资源实例的ID(ULB后端ID,非资源自身ID) - - **Enabled** (int) - 后端实例状态开关 - - **IsBackup** (int) - 是否为backup 0:主rs 1:备rs 默认为0 - - **Port** (int) - 后端资源服务端口,取值范围[1-65535] - - **Weight** (int) - 所添加的后端RS权重(在加权轮询算法下有效),取值范围[0-100],默认为1 - - - **Response Model** - - **BackendMsg** - - **BackendId** (str) - rs的资源ID - - **SubMessage** (str) - 修改rs返回的消息 - - **SubRetCode** (int) - 修改rs的返回值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateBackendBatchRequestSchema().dumps(d) - - resp = self.invoke("UpdateBackendBatch", d, **kwargs) - return apis.UpdateBackendBatchResponseSchema().loads(resp) - - def update_listener_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateListenerAttribute - 更新一个应用型负载均衡监听器的属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Certificates** (list) - (应用型专用)服务器默认证书ID。仅HTTPS监听支持 - - **CompressionEnabled** (bool) - (应用型专用)是否开启数据压缩功能。目前只支持使用gzip对特定文件类型进行压缩 - - **HTTP2Enabled** (bool) - (应用型专用)是否开启HTTP/2特性。仅HTTPS监听支持开启 - - **HealthCheckConfig** (dict) - 见 **UpdateListenerAttributeParamHealthCheckConfig** 模型定义 - - **IdleTimeout** (int) - 连接空闲超时时间。单位:秒。应用型限定取值:[1-86400] - - **Name** (str) - 监听器的名称。限定字符长度:[1-255];限定特殊字符,仅支持:-_. - - **RedirectEnabled** (bool) - (应用型专用)是否开启HTTP重定向到HTTPS。仅HTTP监听支持开启 - - **RedirectPort** (int) - (应用型专用)重定向端口。限定取值:[1-65535] - - **Remark** (str) - 监听器的备注信息。限定字符长度:[0-255] - - **Scheduler** (str) - 负载均衡算法。应用型限定取值:"Roundrobin"/"Source"/"WeightRoundrobin"/" Leastconn"/"Backup" - - **SecurityPolicyId** (str) - (应用型专用)安全策略组ID。仅HTTPS监听支持绑定。“Default”,表示绑定原生策略 - - **StickinessConfig** (dict) - 见 **UpdateListenerAttributeParamStickinessConfig** 模型定义 - - **Response** - - - **Request Model** - - **UpdateListenerAttributeParamStickinessConfig** - - **CookieName** (str) - (应用型专用)自定义Cookie。当StickinessType取值"UserDefined"时有效;限定字符长度:[0-255] - - **Enabled** (bool) - 是否开启会话保持功能。应用型负载均衡实例基于Cookie实现,网络型负载均衡则基于源IP,保证在对应的空闲超时时间内,同一个源IP送到同一个服务节点。默认值为:false - - **Type** (str) - (应用型专用)Cookie处理方式。限定枚举值:"ServerInsert" / "UserDefined",不传值则不修改 - - - **UpdateListenerAttributeParamHealthCheckConfig** - - **Domain** (str) - (应用型专用)HTTP检查域名 - - **Enabled** (bool) - 是否开启健康检查功能。暂时不支持关闭;默认值为:true - - **Method** (str) - (应用型专用)HTTP检查方法。只支持GET和HEAD。 - - **Path** (str) - (应用型专用)HTTP检查路径 - - **ResponseCode** (str) - (应用型专用)GRPC检查响应码 - - **Type** (str) - 健康检查方式。应用型限定取值:“Port”/"HTTP";默认值:“Port” - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateListenerAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateListenerAttribute", d, **kwargs) - return apis.UpdateListenerAttributeResponseSchema().loads(resp) - - def update_load_balancer_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateLoadBalancerAttribute - 更新一个应用型负载均衡实例的属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **AccessLogConfig** (dict) - 见 **UpdateLoadBalancerAttributeParamAccessLogConfig** 模型定义 - - **Name** (str) - 负载均衡实例的名称,不传则默认不修改 - - **Remark** (str) - 负载均衡实例的备注信息,不传则默认不修改,限定字符长度:[0-255] - - **Tag** (str) - 负载均衡实例所属的业务组ID,不传则默认不修改 - - **Response** - - - **Request Model** - - **UpdateLoadBalancerAttributeParamAccessLogConfig** - - **Enabled** (bool) - (应用型专用)是否开启访问日志记录功能 - - **US3BucketName** (str) - (应用型专用)用于存储访问日志的bucket - - **US3TokenId** (str) - (应用型专用)上传访问日志到bucket所需的token - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateLoadBalancerAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateLoadBalancerAttribute", d, **kwargs) - return apis.UpdateLoadBalancerAttributeResponseSchema().loads(resp) - - def update_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdatePolicy - 更新传统型负载均衡内容转发规则,包括转发规则后的服务节点 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Match** (str) - (Required) 内容转发匹配字段 - - **ULBId** (str) - (Required) 需要添加内容转发策略的传统型负载均衡实例ID - - **VServerId** (str) - (Required) 需要添加内容转发策略的VServer实例ID,只支持请求代理模式下,HTTP或HTTPS协议的CLB下的VServer - - **BackendId** (list) - 内容转发策略应用的后端资源实例的ID(CLB的后端节点Id),来源于 AllocateBackend 返回的 BackendId,不传表示更新转发节点为空 - - **DomainMatchMode** (str) - 内容转发规则中域名的匹配方式,默认与原本一致。枚举值:Regular,正则;Wildcard,泛域名 - - **PolicyId** (str) - 传统型负载均衡转发规则的ID,当Type为Default时,可以不传或为空 - - **PolicyPriority** (int) - 策略优先级,1-9999;只针对路径规则生效 - - **Type** (str) - 内容转发匹配字段的类型,枚举值:Domain -> 域名转发规则;Path -> 路径转发规则;Default -> 默认转发规则,不传默认值Domain - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdatePolicyRequestSchema().dumps(d) - - resp = self.invoke("UpdatePolicy", d, **kwargs) - return apis.UpdatePolicyResponseSchema().loads(resp) - - def update_rule_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateRuleAttribute - 更新应用型负载均衡监听器的一条转发规则的属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **RuleId** (str) - (Required) 转发规则的ID - - **Pass** (bool) - 当转发的服务节点为空时,规则是否忽略。默认转发规则不可更改 - - **RuleActions** (list) - 见 **UpdateRuleAttributeParamRuleActions** 模型定义 - - **RuleConditions** (list) - 见 **UpdateRuleAttributeParamRuleConditions** 模型定义 - - **Response** - - - **Request Model** - - **UpdateRuleAttributeParamRuleActionsForwardConfigTargets** - - **Id** (str) - 转发的后端服务节点的标识ID。限定在监听器的服务节点池里;数组长度可以是0;转发服务节点配置的数组长度不为0时,Id必填 - - **Weight** (int) - 转发的后端服务节点的权重。仅监听器负载均衡算法是加权轮询是有效 - - - **UpdateRuleAttributeParamRuleActionsCorsConfig** - - **AllowCredentials** (str) - 是否允许携带凭证信息。取值:on:是。off:否。 - - **AllowHeaders** (list) - 允许跨域的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **AllowMethods** (list) - 选择跨域访问时允许的 HTTP 方法。取值:GET。POST。PUT。DELETE。HEAD。OPTIONS。PATCH。 - - **AllowOrigin** (list) - 允许的访问来源列表。支持只配置一个元素*,或配置一个或多个值。单个值必须以http://或者https://开头,后边加一个正确的域名或一级泛域名。(例:http://*.test.abc.example.com)单个值可以不加端口,也可以指定端口,端口范围:1~65535。最多支持5个值 - - **ExposeHeaders** (list) - 允许暴露的 Header 列表。支持配置为*或配置一个或多个 value 值。单个 value 值只允许包含大小写字母、数字,不能以下划线(_)和短划线(-)开头或结尾,最大长度限制为 32 个字符。最多支持20个值 - - **MaxAge** (int) - 预检请求在浏览器的最大缓存时间,单位:秒。取值范围:-1~172800。 - - - **UpdateRuleAttributeParamRuleActionsFixedResponseConfig** - - **Content** (str) - 返回的固定内容。最大支持存储 1 KB,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。 - - **HttpCode** (int) - 返回的 HTTP 响应码,仅支持 2xx、4xx、5xx 数字,x 为任意数字。 - - - **UpdateRuleAttributeParamRuleActionsInsertHeaderConfig** - - **Key** (str) - 插入的 header 字段名称,长度为 1~40 个字符,支持大小写字母 a~z、数字、下划线(_)和短划线(-)。头字段名称不能重复用于InsertHeader中。header 字段不能使用以下(此处判断大小写不敏感)x-real-ip、x-forwarded-for、x-forwarded-proto、x-forwarded-srcport、ucloud-alb-trace、connection、upgrade、content-length、transfer-encoding、keep-alive、te、host、cookie、remoteip、authority - - **Value** (str) - 插入的 header 字段内容。ValueType 取值为 SystemDefined 时取值如下:ClientSrcPort:客户端端口。ClientSrcIp:客户端 IP 地址。Protocol:客户端请求的协议(HTTP 或 HTTPS)。RuleID:客户端请求命中的转发规则ID。ALBID:ALB ID。ALBPort:ALB 端口。ValueType 取值为 UserDefined 时:可以自定义头字段内容,限制长度为 1~128 个字符,只支持 ASCII 码值ch >= 32 && ch < 127范围内、不包括 $ 的可打印字符。ValueType 取值为 ReferenceHeader 时:可以引用请求头字段中的某一个字段,限制长度限制为 1~128 个字符,支持小写字母 a~z、数字、短划线(-)和下划线(_)。 - - **ValueType** (str) - 头字段内容类型。取值:UserDefined:用户指定。ReferenceHeader:引用用户请求头中的某一个字段。SystemDefined:系统定义。 - - - **UpdateRuleAttributeParamRuleActionsRemoveHeaderConfig** - - **Key** (str) - 删除的 header 字段名称,目前只能删除以下几个默认配置的字段X-Real-IP、X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-SrcPort - - - **UpdateRuleAttributeParamRuleActionsForwardConfig** - - **Targets** (list) - 见 **UpdateRuleAttributeParamRuleActionsForwardConfigTargets** 模型定义 - - - **UpdateRuleAttributeParamRuleActions** - - **CorsConfig** (dict) - 见 **UpdateRuleAttributeParamRuleActionsCorsConfig** 模型定义 - - **FixedResponseConfig** (dict) - 见 **UpdateRuleAttributeParamRuleActionsFixedResponseConfig** 模型定义 - - **ForwardConfig** (dict) - 见 **UpdateRuleAttributeParamRuleActionsForwardConfig** 模型定义 - - **InsertHeaderConfig** (dict) - 见 **UpdateRuleAttributeParamRuleActionsInsertHeaderConfig** 模型定义 - - **Order** (int) - 转发规则动作执行的顺序,取值为1~1000,按值从小到大执行动作。值不能为空,不能重复。Forward、FixedResponse 类型的动作不判断 Order,最后一个执行 - - **RemoveHeaderConfig** (dict) - 见 **UpdateRuleAttributeParamRuleActionsRemoveHeaderConfig** 模型定义 - - **Type** (str) - 动作类型。限定枚举值:"Forward";RuleActions数组长度不为0时必填 - - - **UpdateRuleAttributeParamRuleConditionsHostConfig** - - **MatchMode** (str) - 匹配方式。限定枚举值:"Regular"/"Wildcard",默认值:"Regular" - - **Values** (list) - 取值。暂时只支持数组长度为1;取值需符合相关匹配方式的条件;修改域名匹配时必填 - - - **UpdateRuleAttributeParamRuleConditionsPathConfig** - - **Values** (list) - 取值。暂时只支持数组长度为1;取值需符合相关条件;修改路径匹配时必填 - - - **UpdateRuleAttributeParamRuleConditions** - - **HostConfig** (dict) - 见 **UpdateRuleAttributeParamRuleConditionsHostConfig** 模型定义 - - **PathConfig** (dict) - 见 **UpdateRuleAttributeParamRuleConditionsPathConfig** 模型定义 - - **Type** (str) - 匹配条件类型。限定枚举值:"Host"/"Path";RuleConditions数组长度不为0时必填 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateRuleAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateRuleAttribute", d, **kwargs) - return apis.UpdateRuleAttributeResponseSchema().loads(resp) - - def update_ssl_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateSSLAttribute - 更新修改SSL的属性,如:修改SSLName - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SSLId** (str) - (Required) SSL的资源id - - **SSLName** (str) - (Required) SSL实例名称,不允许传空 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateSSLAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateSSLAttribute", d, **kwargs) - return apis.UpdateSSLAttributeResponseSchema().loads(resp) - - def update_ssl_binding( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateSSLBinding - 将传统型或应用型负载均衡监听器绑定的证书更换为另一个证书, - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **NewSSLId** (str) - (Required) 监听器实例需要绑定的新的证书 - - **OldSSLId** (str) - (Required) 监听器实例绑定的旧的证书 - - **ListenerId** (str) - 所操作监听器实例ID(仅ListenerId传参时,将更换该监听器所有原证书为OldSSLId的绑定关系;LoadBalancerId和ListenerId都不传参则将更新该项目下所有原证书为OldSSLId的绑定关系;若LoadBalancerId与ListenerId皆有传参,则会强校验ULB与Vsserver的所属关系,将更换该ulb下vserver所绑定的OldSSLId为NewSSLId)(监听器指VServer或Listener) - - **LoadBalancerId** (str) - 所操作LB实例ID(仅LoadBalancerId传参时,将更换该LB所有原证书为OldSSLId的绑定关系;LoadBalancerId和ListenerId都不传参则将更新该项目下所有原证书为OldSSLId的绑定关系)(LB指CLB或ALB) - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateSSLBindingRequestSchema().dumps(d) - - resp = self.invoke("UpdateSSLBinding", d, **kwargs) - return apis.UpdateSSLBindingResponseSchema().loads(resp) - - def update_security_policy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateSecurityPolicy - 更新安全策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **SecurityPolicyId** (str) - (Required) 安全策略ID - - **SSLCiphers** (list) - 加密套件,TLS最低版本和加密套件必须全不为空或全为空 - - **SecurityPolicyName** (str) - 安全策略名称 - - **TLSVersion** (str) - TLS最低版本,TLS最低版本和加密套件必须全不为空或全为空 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateSecurityPolicyRequestSchema().dumps(d) - - resp = self.invoke("UpdateSecurityPolicy", d, **kwargs) - return apis.UpdateSecurityPolicyResponseSchema().loads(resp) - - def update_targets_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateTargetsAttribute - 更新应用型负载均衡监听器后端服务节点的属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ListenerId** (str) - (Required) 监听器的ID - - **LoadBalancerId** (str) - (Required) 负载均衡实例的ID - - **Targets** (list) - 见 **UpdateTargetsAttributeParamTargets** 模型定义 - - **Response** - - - **Request Model** - - **UpdateTargetsAttributeParamTargets** - - **Enabled** (bool) - 服务节点是否启用。默认值true;要更新的Targets数组长度至少为1,不超过20个 - - **Id** (str) - 服务节点的标识ID。限定枚举值:"UHost" / "UNI"/"UPM"/"IP";要更新的Targets数组长度至少为1,不超过20个 - - **IsBackup** (bool) - 服务节点是否为备节点。默认值false;要更新的Targets数组长度至少为1,不超过20个 - - **Weight** (int) - 服务节点的权重。限定取值:[1-100],默认值1;仅在加权轮询算法时有效;要更新的Targets数组长度至少为1,不超过20个 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateTargetsAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateTargetsAttribute", d, **kwargs) - return apis.UpdateTargetsAttributeResponseSchema().loads(resp) - - def update_ulb_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateULBAttribute - 更新CLB名字业务组备注等属性字段 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) CLB资源ID - - **BucketName** (str) - 设置用于存储ulb日志的bucket - - **EnableLog** (int) - 日志开关,1代表开启日志,0代表关闭日志,传1时必须同时传BucketName,TokenName与TokenId二选一 - - **IsWAFOn** (str) - 是否开启WAF。枚举类型:Yes,No,默认值为No - - **Name** (str) - 名字,不传则默认不修改 - - **Remark** (str) - 备注,不传则默认不修改 - - **Tag** (str) - 业务,不传则默认不修改 - - **TokenId** (str) - 用于指定上传到bucket所需的token,与TokenName选填其一即可 - - **TokenName** (str) - 用于指定上传到bucket所需的token,与TokenId选填其一即可 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateULBAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateULBAttribute", d, **kwargs) - return apis.UpdateULBAttributeResponseSchema().loads(resp) - - def update_vserver_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateVServerAttribute - 更新传统型负载均衡VServer实例属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULBId** (str) - (Required) 传统型负载均衡实例ID - - **VServerId** (str) - (Required) 传统型负载均衡VServer实例ID - - **ClientTimeout** (int) - 请求代理的VServer下表示空闲连接的回收时间,单位:秒,取值范围:时(0,86400],默认值为60;报文转发的VServer下表示回话保持的时间,单位:秒,取值范围:[60,900],0 表示禁用连接保持 - - **Domain** (str) - MonitorType 为 Path 时指定健康检查发送请求时HTTP HEADER 里的域名 - - **EnableCompression** (int) - 0:关闭 1:开启,用于数据压缩功能 - - **EnableHTTP2** (int) - 0:关闭 1:开启,用于开启http2功能;默认值为0 - - **ForwardPort** (int) - 重定向端口,取值范围[0-65535];默认值为0,代表关闭;仅HTTP协议支持开启重定向功能 - - **Method** (str) - VServer负载均衡模式,枚举值:Roundrobin -> 轮询;Source -> 源地址;ConsistentHash -> 一致性哈希;SourcePort -> 源地址(计算端口);ConsistentHashPort -> 一致性哈希(计算端口); WeightRoundrobin -> 加权轮询; Leastconn -> 最小连接数;Backup -> 主备模式。ConsistentHash,SourcePort,ConsistentHashPort 只在报文转发中使用;Leastconn只在请求代理中使用;Roundrobin、Source和WeightRoundrobin,Backup在请求代理和报文转发中使用。默认为:"Roundrobin" - - **MonitorType** (str) - 健康检查类型,枚举值:Port -> 端口检查;Path -> 路径检查;Ping -> Ping探测,Customize -> UDP检查请求代理型默认值为Port,其中TCP协议仅支持Port,其他协议支持Port和Path;报文转发型TCP协议仅支持Port,UDP协议支持Ping、Port和Customize,默认值为Ping - - **Path** (str) - MonitorType 为 Path 时指定健康检查发送请求时的路径,默认为 / - - **PersistenceInfo** (str) - 根据PersistenceType确定: None或ServerInsert, 此字段无意义; UserDefined, 则此字段传入用户自定义会话保持String. 若无此字段则不做修改 - - **PersistenceType** (str) - VServer会话保持模式,若无此字段则不做修改。枚举值:None:关闭;ServerInsert:自动生成KEY;UserDefined:用户自定义KEY。 - - **RequestMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查发出的请求报文 - - **ResponseMsg** (str) - 根据MonitorType确认; 当MonitorType为Customize时,此字段有意义,代表UDP检查请求应收到的响应报文 - - **SecurityPolicyId** (str) - 安全策略组ID - - **VServerName** (str) - VServer实例名称,若无此字段则不做修改 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateVServerAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateVServerAttribute", d, **kwargs) - return apis.UpdateVServerAttributeResponseSchema().loads(resp) diff --git a/ucloud/services/ulb/schemas/__init__.py b/ucloud/services/ulb/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulb/schemas/apis.py b/ucloud/services/ulb/schemas/apis.py deleted file mode 100644 index 974c9505..00000000 --- a/ucloud/services/ulb/schemas/apis.py +++ /dev/null @@ -1,1868 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ulb.schemas import models - -""" ULB API Schema -""" - - -""" -API: AddSSLBinding - -ALB的监听器绑定SSL证书 -""" - - -class AddSSLBindingRequestSchema(schema.RequestSchema): - """AddSSLBinding - ALB的监听器绑定SSL证书""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLIds": fields.List(fields.Str()), - } - - -class AddSSLBindingResponseSchema(schema.ResponseSchema): - """AddSSLBinding - ALB的监听器绑定SSL证书""" - - fields = {} - - -""" -API: AddTargets - -给应用型负载均衡监听器添加后端服务节点 -""" - - -class AddTargetsParamTargetsSchema(schema.RequestSchema): - """AddTargetsParamTargets -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "IsBackup": fields.Bool(required=False, dump_to="IsBackup"), - "Port": fields.Int(required=False, dump_to="Port"), - "ResourceIP": fields.Str(required=False, dump_to="ResourceIP"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - "ResourceType": fields.Str(required=False, dump_to="ResourceType"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class AddTargetsRequestSchema(schema.RequestSchema): - """AddTargets - 给应用型负载均衡监听器添加后端服务节点""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Targets": fields.List(AddTargetsParamTargetsSchema()), - } - - -class AddTargetsResponseSchema(schema.ResponseSchema): - """AddTargets - 给应用型负载均衡监听器添加后端服务节点""" - - fields = { - "Targets": fields.List( - models.TargetSetSchema(), required=False, load_from="Targets" - ), - } - - -""" -API: AllocateBackend - -添加CLB后端资源实例 -""" - - -class AllocateBackendRequestSchema(schema.RequestSchema): - """AllocateBackend - 添加CLB后端资源实例""" - - fields = { - "Enabled": fields.Int(required=False, dump_to="Enabled"), - "IsBackup": fields.Int(required=False, dump_to="IsBackup"), - "Port": fields.Int(required=False, dump_to="Port"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ResourceIP": fields.Str(required=False, dump_to="ResourceIP"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - "ResourceType": fields.Str(required=True, dump_to="ResourceType"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class AllocateBackendResponseSchema(schema.ResponseSchema): - """AllocateBackend - 添加CLB后端资源实例""" - - fields = { - "BackendId": fields.Str(required=False, load_from="BackendId"), - } - - -""" -API: AllocateBackendBatch - - -""" - - -class AllocateBackendBatchRequestSchema(schema.RequestSchema): - """AllocateBackendBatch -""" - - fields = { - "ApiVersion": fields.Int(required=False, dump_to="ApiVersion"), - "Backends": fields.List(fields.Str()), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class AllocateBackendBatchResponseSchema(schema.ResponseSchema): - """AllocateBackendBatch -""" - - fields = { - "BackendSet": fields.List( - models.BackendSetSchema(), required=False, load_from="BackendSet" - ), - } - - -""" -API: BindSSL - -将SSL证书绑定到传统型负载均衡VServer -""" - - -class BindSSLRequestSchema(schema.RequestSchema): - """BindSSL - 将SSL证书绑定到传统型负载均衡VServer""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=True, dump_to="SSLId"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class BindSSLResponseSchema(schema.ResponseSchema): - """BindSSL - 将SSL证书绑定到传统型负载均衡VServer""" - - fields = {} - - -""" -API: CreateListener - -创建一个应用型负载均衡的监听器 -""" - - -class CreateListenerParamHealthCheckConfigSchema(schema.RequestSchema): - """CreateListenerParamHealthCheckConfig -""" - - fields = { - "Domain": fields.Str(required=False, dump_to="Domain"), - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Method": fields.Str(required=False, dump_to="Method"), - "Path": fields.Str(required=False, dump_to="Path"), - "ResponseCode": fields.Str(required=False, dump_to="ResponseCode"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class CreateListenerParamStickinessConfigSchema(schema.RequestSchema): - """CreateListenerParamStickinessConfig -""" - - fields = { - "CookieName": fields.Str(required=False, dump_to="CookieName"), - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class CreateListenerRequestSchema(schema.RequestSchema): - """CreateListener - 创建一个应用型负载均衡的监听器""" - - fields = { - "Certificates": fields.List(fields.Str()), - "CompressionEnabled": fields.Bool( - required=False, dump_to="CompressionEnabled" - ), - "HTTP2Enabled": fields.Bool(required=False, dump_to="HTTP2Enabled"), - "HealthCheckConfig": CreateListenerParamHealthCheckConfigSchema( - required=False, dump_to="HealthCheckConfig" - ), - "IdleTimeout": fields.Int(required=False, dump_to="IdleTimeout"), - "ListenerPort": fields.Int(required=False, dump_to="ListenerPort"), - "ListenerProtocol": fields.Str( - required=False, dump_to="ListenerProtocol" - ), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "RedirectEnabled": fields.Bool( - required=False, dump_to="RedirectEnabled" - ), - "RedirectPort": fields.Int(required=False, dump_to="RedirectPort"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Scheduler": fields.Str(required=False, dump_to="Scheduler"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - "StickinessConfig": CreateListenerParamStickinessConfigSchema( - required=False, dump_to="StickinessConfig" - ), - } - - -class CreateListenerResponseSchema(schema.ResponseSchema): - """CreateListener - 创建一个应用型负载均衡的监听器""" - - fields = { - "ListenerId": fields.Str(required=True, load_from="ListenerId"), - } - - -""" -API: CreateLoadBalancer - -创建一个应用型负载均衡实例 -""" - - -class CreateLoadBalancerParamSecGroupsSchema(schema.RequestSchema): - """CreateLoadBalancerParamSecGroups -""" - - fields = { - "Priority": fields.Int(required=False, dump_to="Priority"), - "SecGroupId": fields.Str(required=False, dump_to="SecGroupId"), - } - - -class CreateLoadBalancerParamLabelInfosSchema(schema.RequestSchema): - """CreateLoadBalancerParamLabelInfos -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - } - - -class CreateLoadBalancerRequestSchema(schema.RequestSchema): - """CreateLoadBalancer - 创建一个应用型负载均衡实例""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "IPVersion": fields.Str(required=False, dump_to="IPVersion"), - "LabelInfos": fields.List(CreateLoadBalancerParamLabelInfosSchema()), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "SecGroups": fields.List(CreateLoadBalancerParamSecGroupsSchema()), - "SubnetId": fields.Str(required=True, dump_to="SubnetId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Type": fields.Str(required=False, dump_to="Type"), - "VPCId": fields.Str(required=True, dump_to="VPCId"), - } - - -class CreateLoadBalancerResponseSchema(schema.ResponseSchema): - """CreateLoadBalancer - 创建一个应用型负载均衡实例""" - - fields = { - "LoadBalancerId": fields.Str( - required=False, load_from="LoadBalancerId" - ), - } - - -""" -API: CreatePolicy - -传统型负载均衡创建VServer内容转发策略 -""" - - -class CreatePolicyRequestSchema(schema.RequestSchema): - """CreatePolicy - 传统型负载均衡创建VServer内容转发策略""" - - fields = { - "BackendId": fields.List(fields.Str()), - "DomainMatchMode": fields.Str( - required=False, dump_to="DomainMatchMode" - ), - "Match": fields.Str(required=True, dump_to="Match"), - "PolicyPriority": fields.Int(required=False, dump_to="PolicyPriority"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Type": fields.Str(required=False, dump_to="Type"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class CreatePolicyResponseSchema(schema.ResponseSchema): - """CreatePolicy - 传统型负载均衡创建VServer内容转发策略""" - - fields = { - "PolicyId": fields.Str(required=False, load_from="PolicyId"), - } - - -""" -API: CreateRule - -给应用型负载均衡监听器创建一条转发规则 -""" - - -class CreateRuleParamRuleConditionsHostConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleConditionsHostConfig -""" - - fields = { - "MatchMode": fields.Str(required=False, dump_to="MatchMode"), - "Values": fields.List(fields.Str()), - } - - -class CreateRuleParamRuleActionsForwardConfigTargetsSchema( - schema.RequestSchema -): - """CreateRuleParamRuleActionsForwardConfigTargets -""" - - fields = { - "Id": fields.Str(required=False, dump_to="Id"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class CreateRuleParamRuleActionsInsertHeaderConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleActionsInsertHeaderConfig -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - "ValueType": fields.Str(required=False, dump_to="ValueType"), - } - - -class CreateRuleParamRuleActionsRemoveHeaderConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleActionsRemoveHeaderConfig -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - } - - -class CreateRuleParamRuleActionsForwardConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleActionsForwardConfig -""" - - fields = { - "Targets": fields.List( - CreateRuleParamRuleActionsForwardConfigTargetsSchema() - ), - } - - -class CreateRuleParamRuleActionsCorsConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleActionsCorsConfig -""" - - fields = { - "AllowCredentials": fields.Str( - required=False, dump_to="AllowCredentials" - ), - "AllowHeaders": fields.List(fields.Str()), - "AllowMethods": fields.List(fields.Str()), - "AllowOrigin": fields.List(fields.Str()), - "ExposeHeaders": fields.List(fields.Str()), - "MaxAge": fields.Int(required=False, dump_to="MaxAge"), - } - - -class CreateRuleParamRuleActionsFixedResponseConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleActionsFixedResponseConfig -""" - - fields = { - "Content": fields.Str(required=False, dump_to="Content"), - "HttpCode": fields.Int(required=False, dump_to="HttpCode"), - } - - -class CreateRuleParamRuleActionsSchema(schema.RequestSchema): - """CreateRuleParamRuleActions -""" - - fields = { - "CorsConfig": CreateRuleParamRuleActionsCorsConfigSchema( - required=False, dump_to="CorsConfig" - ), - "FixedResponseConfig": CreateRuleParamRuleActionsFixedResponseConfigSchema( - required=False, dump_to="FixedResponseConfig" - ), - "ForwardConfig": CreateRuleParamRuleActionsForwardConfigSchema( - required=False, dump_to="ForwardConfig" - ), - "InsertHeaderConfig": CreateRuleParamRuleActionsInsertHeaderConfigSchema( - required=False, dump_to="InsertHeaderConfig" - ), - "Order": fields.Int(required=False, dump_to="Order"), - "RemoveHeaderConfig": CreateRuleParamRuleActionsRemoveHeaderConfigSchema( - required=False, dump_to="RemoveHeaderConfig" - ), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class CreateRuleParamRuleConditionsPathConfigSchema(schema.RequestSchema): - """CreateRuleParamRuleConditionsPathConfig -""" - - fields = { - "Values": fields.List(fields.Str()), - } - - -class CreateRuleParamRuleConditionsSchema(schema.RequestSchema): - """CreateRuleParamRuleConditions -""" - - fields = { - "HostConfig": CreateRuleParamRuleConditionsHostConfigSchema( - required=False, dump_to="HostConfig" - ), - "PathConfig": CreateRuleParamRuleConditionsPathConfigSchema( - required=False, dump_to="PathConfig" - ), - "Type": fields.Str(required=True, dump_to="Type"), - } - - -class CreateRuleRequestSchema(schema.RequestSchema): - """CreateRule - 给应用型负载均衡监听器创建一条转发规则""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "Pass": fields.Bool(required=False, dump_to="Pass"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RuleActions": fields.List(CreateRuleParamRuleActionsSchema()), - "RuleConditions": fields.List(CreateRuleParamRuleConditionsSchema()), - } - - -class CreateRuleResponseSchema(schema.ResponseSchema): - """CreateRule - 给应用型负载均衡监听器创建一条转发规则""" - - fields = { - "RuleId": fields.Str(required=True, load_from="RuleId"), - } - - -""" -API: CreateSSL - -创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来 -""" - - -class CreateSSLRequestSchema(schema.RequestSchema): - """CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来""" - - fields = { - "CaCert": fields.Str(required=False, dump_to="CaCert"), - "PrivateKey": fields.Str(required=False, dump_to="PrivateKey"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLContent": fields.Str(required=False, dump_to="SSLContent"), - "SSLName": fields.Str(required=True, dump_to="SSLName"), - "SSLType": fields.Str(required=False, dump_to="SSLType"), - "USSLId": fields.Str(required=False, dump_to="USSLId"), - "UserCert": fields.Str(required=False, dump_to="UserCert"), - } - - -class CreateSSLResponseSchema(schema.ResponseSchema): - """CreateSSL - 创建SSL证书,可以把整个 Pem 证书内容传过来,或者把证书、私钥、CA证书分别传过来""" - - fields = { - "SSLId": fields.Str(required=False, load_from="SSLId"), - } - - -""" -API: CreateSecurityPolicy - -创建安全策略 -""" - - -class CreateSecurityPolicyRequestSchema(schema.RequestSchema): - """CreateSecurityPolicy - 创建安全策略""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLCiphers": fields.List(fields.Str()), - "SecurityPolicyName": fields.Str( - required=True, dump_to="SecurityPolicyName" - ), - "TLSVersion": fields.Str(required=True, dump_to="TLSVersion"), - } - - -class CreateSecurityPolicyResponseSchema(schema.ResponseSchema): - """CreateSecurityPolicy - 创建安全策略""" - - fields = { - "SecurityPolicyId": fields.Str( - required=True, load_from="SecurityPolicyId" - ), - } - - -""" -API: CreateULB - -创建传统型负载均衡负载均衡实例,可以选择内网或者外网 -""" - - -class CreateULBRequestSchema(schema.RequestSchema): - """CreateULB - 创建传统型负载均衡负载均衡实例,可以选择内网或者外网""" - - fields = { - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "FirewallId": fields.Str(required=False, dump_to="FirewallId"), - "IPVersion": fields.Str( - required=False, dump_to="IPVersion" - ), # Deprecated, will be removed at 1.0 - "InnerMode": fields.Str(required=False, dump_to="InnerMode"), - "ListenType": fields.Str(required=False, dump_to="ListenType"), - "OuterMode": fields.Str(required=False, dump_to="OuterMode"), - "PrivateIp": fields.Str( - required=False, dump_to="PrivateIp" - ), # Deprecated, will be removed at 1.0 - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "ULBName": fields.Str(required=False, dump_to="ULBName"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class CreateULBResponseSchema(schema.ResponseSchema): - """CreateULB - 创建传统型负载均衡负载均衡实例,可以选择内网或者外网""" - - fields = { - "IPv6AddressId": fields.Str(required=False, load_from="IPv6AddressId"), - "ULBId": fields.Str(required=False, load_from="ULBId"), - } - - -""" -API: CreateVServer - -创建CLB的VServer实例,定义监听的协议和端口以及负载均衡算法 -""" - - -class CreateVServerRequestSchema(schema.RequestSchema): - """CreateVServer - 创建CLB的VServer实例,定义监听的协议和端口以及负载均衡算法""" - - fields = { - "ClientTimeout": fields.Int(required=False, dump_to="ClientTimeout"), - "Domain": fields.Str(required=False, dump_to="Domain"), - "EnableCompression": fields.Int( - required=False, dump_to="EnableCompression" - ), - "EnableHTTP2": fields.Int(required=False, dump_to="EnableHTTP2"), - "ForwardPort": fields.Int(required=False, dump_to="ForwardPort"), - "FrontendPort": fields.Int(required=False, dump_to="FrontendPort"), - "ListenType": fields.Str(required=False, dump_to="ListenType"), - "Method": fields.Str(required=False, dump_to="Method"), - "MonitorType": fields.Str(required=False, dump_to="MonitorType"), - "Path": fields.Str(required=False, dump_to="Path"), - "PersistenceInfo": fields.Str( - required=False, dump_to="PersistenceInfo" - ), - "PersistenceType": fields.Str( - required=False, dump_to="PersistenceType" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Protocol": fields.Str(required=False, dump_to="Protocol"), - "Region": fields.Str(required=True, dump_to="Region"), - "RequestMsg": fields.Str(required=False, dump_to="RequestMsg"), - "ResponseMsg": fields.Str(required=False, dump_to="ResponseMsg"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerName": fields.Str(required=False, dump_to="VServerName"), - } - - -class CreateVServerResponseSchema(schema.ResponseSchema): - """CreateVServer - 创建CLB的VServer实例,定义监听的协议和端口以及负载均衡算法""" - - fields = { - "VServerId": fields.Str(required=False, load_from="VServerId"), - } - - -""" -API: DeleteListener - -删除一个应用型负载均衡监听器 -""" - - -class DeleteListenerRequestSchema(schema.RequestSchema): - """DeleteListener - 删除一个应用型负载均衡监听器""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RelatedRedirectDisabled": fields.Bool( - required=True, dump_to="RelatedRedirectDisabled" - ), - } - - -class DeleteListenerResponseSchema(schema.ResponseSchema): - """DeleteListener - 删除一个应用型负载均衡监听器""" - - fields = {} - - -""" -API: DeleteLoadBalancer - -删除一个应用型负载均衡实例 -""" - - -class DeleteLoadBalancerRequestSchema(schema.RequestSchema): - """DeleteLoadBalancer - 删除一个应用型负载均衡实例""" - - fields = { - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DeleteLoadBalancerResponseSchema(schema.ResponseSchema): - """DeleteLoadBalancer - 删除一个应用型负载均衡实例""" - - fields = {} - - -""" -API: DeletePolicy - -删除传统型负载均衡的内容转发策略 -""" - - -class DeletePolicyRequestSchema(schema.RequestSchema): - """DeletePolicy - 删除传统型负载均衡的内容转发策略""" - - fields = { - "GroupId": fields.Str( - required=False, dump_to="GroupId" - ), # Deprecated, will be removed at 1.0 - "PolicyId": fields.Str(required=True, dump_to="PolicyId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VServerId": fields.Str(required=False, dump_to="VServerId"), - } - - -class DeletePolicyResponseSchema(schema.ResponseSchema): - """DeletePolicy - 删除传统型负载均衡的内容转发策略""" - - fields = {} - - -""" -API: DeleteRule - -删除应用型负载均衡监听器的一条转发规则 -""" - - -class DeleteRuleRequestSchema(schema.RequestSchema): - """DeleteRule - 删除应用型负载均衡监听器的一条转发规则""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RuleId": fields.Str(required=True, dump_to="RuleId"), - } - - -class DeleteRuleResponseSchema(schema.ResponseSchema): - """DeleteRule - 删除应用型负载均衡监听器的一条转发规则""" - - fields = {} - - -""" -API: DeleteSSL - -删除SSL证书 -""" - - -class DeleteSSLRequestSchema(schema.RequestSchema): - """DeleteSSL - 删除SSL证书""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=True, dump_to="SSLId"), - } - - -class DeleteSSLResponseSchema(schema.ResponseSchema): - """DeleteSSL - 删除SSL证书""" - - fields = {} - - -""" -API: DeleteSSLBinding - -删除监听器绑定的扩展证书 -""" - - -class DeleteSSLBindingRequestSchema(schema.RequestSchema): - """DeleteSSLBinding - 删除监听器绑定的扩展证书""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLIds": fields.List(fields.Str()), - } - - -class DeleteSSLBindingResponseSchema(schema.ResponseSchema): - """DeleteSSLBinding - 删除监听器绑定的扩展证书""" - - fields = {} - - -""" -API: DeleteSecurityPolicy - -删除安全策略 -""" - - -class DeleteSecurityPolicyRequestSchema(schema.RequestSchema): - """DeleteSecurityPolicy - 删除安全策略""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityPolicyId": fields.Str( - required=True, dump_to="SecurityPolicyId" - ), - } - - -class DeleteSecurityPolicyResponseSchema(schema.ResponseSchema): - """DeleteSecurityPolicy - 删除安全策略""" - - fields = {} - - -""" -API: DeleteULB - -删除传统型负载均衡实例 -""" - - -class DeleteULBRequestSchema(schema.RequestSchema): - """DeleteULB - 删除传统型负载均衡实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReleaseEip": fields.Bool(required=False, dump_to="ReleaseEip"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - } - - -class DeleteULBResponseSchema(schema.ResponseSchema): - """DeleteULB - 删除传统型负载均衡实例""" - - fields = {} - - -""" -API: DeleteVServer - -删除CLB的VServer实例 -""" - - -class DeleteVServerRequestSchema(schema.RequestSchema): - """DeleteVServer - 删除CLB的VServer实例""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class DeleteVServerResponseSchema(schema.ResponseSchema): - """DeleteVServer - 删除CLB的VServer实例""" - - fields = {} - - -""" -API: DescribeListeners - -描述一个指定的监听器或者一个应用型负载均衡实例下的所有监听器 -""" - - -class DescribeListenersRequestSchema(schema.RequestSchema): - """DescribeListeners - 描述一个指定的监听器或者一个应用型负载均衡实例下的所有监听器""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "ListenerId": fields.Str(required=False, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=False, dump_to="LoadBalancerId"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeListenersResponseSchema(schema.ResponseSchema): - """DescribeListeners - 描述一个指定的监听器或者一个应用型负载均衡实例下的所有监听器""" - - fields = { - "Listeners": fields.List( - models.ListenerSchema(), required=False, load_from="Listeners" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeLoadBalancers - -描述特定条件下的应用型负载均衡实例或者全部的应用型负载均衡实例 -""" - - -class DescribeLoadBalancersRequestSchema(schema.RequestSchema): - """DescribeLoadBalancers - 描述特定条件下的应用型负载均衡实例或者全部的应用型负载均衡实例""" - - fields = { - "Limit": fields.Str(required=False, dump_to="Limit"), - "LoadBalancerIds": fields.List(fields.Str()), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ShowDetail": fields.Bool(required=False, dump_to="ShowDetail"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "Type": fields.Str(required=False, dump_to="Type"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class DescribeLoadBalancersResponseSchema(schema.ResponseSchema): - """DescribeLoadBalancers - 描述特定条件下的应用型负载均衡实例或者全部的应用型负载均衡实例""" - - fields = { - "LoadBalancers": fields.List( - models.LoadBalancerSchema(), - required=True, - load_from="LoadBalancers", - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeRules - -描述一条指定的转发规则或者一个应用型负载均衡监听器下的所有转发规则 -""" - - -class DescribeRulesRequestSchema(schema.RequestSchema): - """DescribeRules - 描述一条指定的转发规则或者一个应用型负载均衡监听器下的所有转发规则""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RuleId": fields.Str(required=False, dump_to="RuleId"), - } - - -class DescribeRulesResponseSchema(schema.ResponseSchema): - """DescribeRules - 描述一条指定的转发规则或者一个应用型负载均衡监听器下的所有转发规则""" - - fields = { - "Rules": fields.List( - models.RuleSchema(), required=True, load_from="Rules" - ), - } - - -""" -API: DescribeSSL - -获取SSL证书信息,仅能获取SSL证书与传统型负载均衡监听器的绑定关系 -""" - - -class DescribeSSLRequestSchema(schema.RequestSchema): - """DescribeSSL - 获取SSL证书信息,仅能获取SSL证书与传统型负载均衡监听器的绑定关系""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=False, dump_to="SSLId"), - } - - -class DescribeSSLResponseSchema(schema.ResponseSchema): - """DescribeSSL - 获取SSL证书信息,仅能获取SSL证书与传统型负载均衡监听器的绑定关系""" - - fields = { - "DataSet": fields.List( - models.ULBSSLSetSchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeSSLV2 - -获取SSL证书信息,该接口可以同时获取SSL与传统型和应用型负载均衡监听器的绑定关系 -""" - - -class DescribeSSLV2RequestSchema(schema.RequestSchema): - """DescribeSSLV2 - 获取SSL证书信息,该接口可以同时获取SSL与传统型和应用型负载均衡监听器的绑定关系""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=False, dump_to="SSLId"), - } - - -class DescribeSSLV2ResponseSchema(schema.ResponseSchema): - """DescribeSSLV2 - 获取SSL证书信息,该接口可以同时获取SSL与传统型和应用型负载均衡监听器的绑定关系""" - - fields = { - "DataSet": fields.List( - models.SSLInfoSchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeSecurityPolicies - -获取安全策略的信息,绑定关系仅能获取安全策略与传统型负载均衡监听器的绑定关系 -""" - - -class DescribeSecurityPoliciesRequestSchema(schema.RequestSchema): - """DescribeSecurityPolicies - 获取安全策略的信息,绑定关系仅能获取安全策略与传统型负载均衡监听器的绑定关系""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - } - - -class DescribeSecurityPoliciesResponseSchema(schema.ResponseSchema): - """DescribeSecurityPolicies - 获取安全策略的信息,绑定关系仅能获取安全策略与传统型负载均衡监听器的绑定关系""" - - fields = { - "DataSet": fields.List( - models.SecurityPolicySchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeSecurityPoliciesV2 - -获取安全策略的信息,可以同时获取安全策略与传统型和应用性负载均衡监听器的绑定关系 -""" - - -class DescribeSecurityPoliciesV2RequestSchema(schema.RequestSchema): - """DescribeSecurityPoliciesV2 - 获取安全策略的信息,可以同时获取安全策略与传统型和应用性负载均衡监听器的绑定关系""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - } - - -class DescribeSecurityPoliciesV2ResponseSchema(schema.ResponseSchema): - """DescribeSecurityPoliciesV2 - 获取安全策略的信息,可以同时获取安全策略与传统型和应用性负载均衡监听器的绑定关系""" - - fields = { - "DataSet": fields.List( - models.SecurityPolicyInfoSchema(), - required=False, - load_from="DataSet", - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeSupportCiphers - -返回安全策略所有支持的加密套件 -""" - - -class DescribeSupportCiphersRequestSchema(schema.RequestSchema): - """DescribeSupportCiphers - 返回安全策略所有支持的加密套件""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeSupportCiphersResponseSchema(schema.ResponseSchema): - """DescribeSupportCiphers - 返回安全策略所有支持的加密套件""" - - fields = { - "DataSet": fields.List( - models.TLSAndCiphersSchema(), required=False, load_from="DataSet" - ), - } - - -""" -API: DescribeULB - -获取CLB详细信息 -""" - - -class DescribeULBRequestSchema(schema.RequestSchema): - """DescribeULB - 获取CLB详细信息""" - - fields = { - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "ULBId": fields.Str(required=False, dump_to="ULBId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class DescribeULBResponseSchema(schema.ResponseSchema): - """DescribeULB - 获取CLB详细信息""" - - fields = { - "DataSet": fields.List( - models.ULBSetSchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeULBSimple - -获取CLB信息 -""" - - -class DescribeULBSimpleRequestSchema(schema.RequestSchema): - """DescribeULBSimple - 获取CLB信息""" - - fields = { - "BusinessId": fields.Str(required=False, dump_to="BusinessId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "ULBId": fields.Str(required=False, dump_to="ULBId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class DescribeULBSimpleResponseSchema(schema.ResponseSchema): - """DescribeULBSimple - 获取CLB信息""" - - fields = { - "DataSet": fields.List( - models.ULBSimpleSetSchema(), required=True, load_from="DataSet" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeVServer - -获取CLB下的VServer的详细信息 -""" - - -class DescribeVServerRequestSchema(schema.RequestSchema): - """DescribeVServer - 获取CLB下的VServer的详细信息""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=False, dump_to="ULBId"), - "VServerId": fields.Str(required=False, dump_to="VServerId"), - } - - -class DescribeVServerResponseSchema(schema.ResponseSchema): - """DescribeVServer - 获取CLB下的VServer的详细信息""" - - fields = { - "DataSet": fields.List( - models.ULBVServerSetSchema(), required=False, load_from="DataSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: ReleaseBackend - -从CLB的VServer释放后端资源实例 -""" - - -class ReleaseBackendRequestSchema(schema.RequestSchema): - """ReleaseBackend - 从CLB的VServer释放后端资源实例""" - - fields = { - "BackendId": fields.Str(required=True, dump_to="BackendId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - } - - -class ReleaseBackendResponseSchema(schema.ResponseSchema): - """ReleaseBackend - 从CLB的VServer释放后端资源实例""" - - fields = {} - - -""" -API: RemoveTargets - -从应用型负载均衡监听器删除后端服务节点 -""" - - -class RemoveTargetsRequestSchema(schema.RequestSchema): - """RemoveTargets - 从应用型负载均衡监听器删除后端服务节点""" - - fields = { - "Ids": fields.List(fields.Str()), - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class RemoveTargetsResponseSchema(schema.ResponseSchema): - """RemoveTargets - 从应用型负载均衡监听器删除后端服务节点""" - - fields = {} - - -""" -API: UnBindSecurityPolicy - -批量解绑安全策略,会同时解绑与传统型和应用型负载均衡监听器的绑定关系 -""" - - -class UnBindSecurityPolicyRequestSchema(schema.RequestSchema): - """UnBindSecurityPolicy - 批量解绑安全策略,会同时解绑与传统型和应用型负载均衡监听器的绑定关系""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityPolicyId": fields.Str( - required=True, dump_to="SecurityPolicyId" - ), - } - - -class UnBindSecurityPolicyResponseSchema(schema.ResponseSchema): - """UnBindSecurityPolicy - 批量解绑安全策略,会同时解绑与传统型和应用型负载均衡监听器的绑定关系""" - - fields = {} - - -""" -API: UnbindSSL - -从CLB下的VServer解绑SSL证书 -""" - - -class UnbindSSLRequestSchema(schema.RequestSchema): - """UnbindSSL - 从CLB下的VServer解绑SSL证书""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=True, dump_to="SSLId"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class UnbindSSLResponseSchema(schema.ResponseSchema): - """UnbindSSL - 从CLB下的VServer解绑SSL证书""" - - fields = {} - - -""" -API: UpdateBackendAttribute - -更新CLB后端资源实例(服务节点)属性 -""" - - -class UpdateBackendAttributeRequestSchema(schema.RequestSchema): - """UpdateBackendAttribute - 更新CLB后端资源实例(服务节点)属性""" - - fields = { - "BackendId": fields.Str(required=True, dump_to="BackendId"), - "Enabled": fields.Int(required=False, dump_to="Enabled"), - "IsBackup": fields.Int(required=False, dump_to="IsBackup"), - "Port": fields.Int(required=False, dump_to="Port"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class UpdateBackendAttributeResponseSchema(schema.ResponseSchema): - """UpdateBackendAttribute - 更新CLB后端资源实例(服务节点)属性""" - - fields = {} - - -""" -API: UpdateBackendBatch - -批量更新ULB后端资源实例(服务节点)属性 -""" - - -class UpdateBackendBatchParamAttributesSchema(schema.RequestSchema): - """UpdateBackendBatchParamAttributes -""" - - fields = { - "BackendId": fields.Str(required=True, dump_to="BackendId"), - "Enabled": fields.Int(required=False, dump_to="Enabled"), - "IsBackup": fields.Int(required=False, dump_to="IsBackup"), - "Port": fields.Int(required=False, dump_to="Port"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class UpdateBackendBatchRequestSchema(schema.RequestSchema): - """UpdateBackendBatch - 批量更新ULB后端资源实例(服务节点)属性""" - - fields = { - "Attributes": fields.List(UpdateBackendBatchParamAttributesSchema()), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - } - - -class UpdateBackendBatchResponseSchema(schema.ResponseSchema): - """UpdateBackendBatch - 批量更新ULB后端资源实例(服务节点)属性""" - - fields = { - "BackendSet": fields.List( - models.BackendMsgSchema(), required=False, load_from="BackendSet" - ), - } - - -""" -API: UpdateListenerAttribute - -更新一个应用型负载均衡监听器的属性 -""" - - -class UpdateListenerAttributeParamStickinessConfigSchema(schema.RequestSchema): - """UpdateListenerAttributeParamStickinessConfig -""" - - fields = { - "CookieName": fields.Str(required=False, dump_to="CookieName"), - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class UpdateListenerAttributeParamHealthCheckConfigSchema(schema.RequestSchema): - """UpdateListenerAttributeParamHealthCheckConfig -""" - - fields = { - "Domain": fields.Str(required=False, dump_to="Domain"), - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Method": fields.Str(required=False, dump_to="Method"), - "Path": fields.Str(required=False, dump_to="Path"), - "ResponseCode": fields.Str(required=False, dump_to="ResponseCode"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class UpdateListenerAttributeRequestSchema(schema.RequestSchema): - """UpdateListenerAttribute - 更新一个应用型负载均衡监听器的属性""" - - fields = { - "Certificates": fields.List(fields.Str()), - "CompressionEnabled": fields.Bool( - required=False, dump_to="CompressionEnabled" - ), - "HTTP2Enabled": fields.Bool(required=False, dump_to="HTTP2Enabled"), - "HealthCheckConfig": UpdateListenerAttributeParamHealthCheckConfigSchema( - required=False, dump_to="HealthCheckConfig" - ), - "IdleTimeout": fields.Int(required=False, dump_to="IdleTimeout"), - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "RedirectEnabled": fields.Bool( - required=False, dump_to="RedirectEnabled" - ), - "RedirectPort": fields.Int(required=False, dump_to="RedirectPort"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Scheduler": fields.Str(required=False, dump_to="Scheduler"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - "StickinessConfig": UpdateListenerAttributeParamStickinessConfigSchema( - required=False, dump_to="StickinessConfig" - ), - } - - -class UpdateListenerAttributeResponseSchema(schema.ResponseSchema): - """UpdateListenerAttribute - 更新一个应用型负载均衡监听器的属性""" - - fields = {} - - -""" -API: UpdateLoadBalancerAttribute - -更新一个应用型负载均衡实例的属性 -""" - - -class UpdateLoadBalancerAttributeParamAccessLogConfigSchema( - schema.RequestSchema -): - """UpdateLoadBalancerAttributeParamAccessLogConfig -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "US3BucketName": fields.Str(required=False, dump_to="US3BucketName"), - "US3TokenId": fields.Str(required=False, dump_to="US3TokenId"), - } - - -class UpdateLoadBalancerAttributeRequestSchema(schema.RequestSchema): - """UpdateLoadBalancerAttribute - 更新一个应用型负载均衡实例的属性""" - - fields = { - "AccessLogConfig": UpdateLoadBalancerAttributeParamAccessLogConfigSchema( - required=False, dump_to="AccessLogConfig" - ), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - } - - -class UpdateLoadBalancerAttributeResponseSchema(schema.ResponseSchema): - """UpdateLoadBalancerAttribute - 更新一个应用型负载均衡实例的属性""" - - fields = {} - - -""" -API: UpdatePolicy - -更新传统型负载均衡内容转发规则,包括转发规则后的服务节点 -""" - - -class UpdatePolicyRequestSchema(schema.RequestSchema): - """UpdatePolicy - 更新传统型负载均衡内容转发规则,包括转发规则后的服务节点""" - - fields = { - "BackendId": fields.List(fields.Str()), - "DomainMatchMode": fields.Str( - required=False, dump_to="DomainMatchMode" - ), - "Match": fields.Str(required=True, dump_to="Match"), - "PolicyId": fields.Str(required=False, dump_to="PolicyId"), - "PolicyPriority": fields.Int(required=False, dump_to="PolicyPriority"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Type": fields.Str(required=False, dump_to="Type"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - } - - -class UpdatePolicyResponseSchema(schema.ResponseSchema): - """UpdatePolicy - 更新传统型负载均衡内容转发规则,包括转发规则后的服务节点""" - - fields = { - "PolicyId": fields.Str( - required=False, load_from="PolicyId" - ), # Deprecated, will be removed at 1.0 - } - - -""" -API: UpdateRuleAttribute - -更新应用型负载均衡监听器的一条转发规则的属性 -""" - - -class UpdateRuleAttributeParamRuleActionsForwardConfigTargetsSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleActionsForwardConfigTargets -""" - - fields = { - "Id": fields.Str(required=False, dump_to="Id"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class UpdateRuleAttributeParamRuleActionsCorsConfigSchema(schema.RequestSchema): - """UpdateRuleAttributeParamRuleActionsCorsConfig -""" - - fields = { - "AllowCredentials": fields.Str( - required=False, dump_to="AllowCredentials" - ), - "AllowHeaders": fields.List(fields.Str()), - "AllowMethods": fields.List(fields.Str()), - "AllowOrigin": fields.List(fields.Str()), - "ExposeHeaders": fields.List(fields.Str()), - "MaxAge": fields.Int(required=False, dump_to="MaxAge"), - } - - -class UpdateRuleAttributeParamRuleActionsFixedResponseConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleActionsFixedResponseConfig -""" - - fields = { - "Content": fields.Str(required=False, dump_to="Content"), - "HttpCode": fields.Int(required=False, dump_to="HttpCode"), - } - - -class UpdateRuleAttributeParamRuleActionsInsertHeaderConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleActionsInsertHeaderConfig -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - "ValueType": fields.Str(required=False, dump_to="ValueType"), - } - - -class UpdateRuleAttributeParamRuleActionsRemoveHeaderConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleActionsRemoveHeaderConfig -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - } - - -class UpdateRuleAttributeParamRuleActionsForwardConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleActionsForwardConfig -""" - - fields = { - "Targets": fields.List( - UpdateRuleAttributeParamRuleActionsForwardConfigTargetsSchema() - ), - } - - -class UpdateRuleAttributeParamRuleActionsSchema(schema.RequestSchema): - """UpdateRuleAttributeParamRuleActions -""" - - fields = { - "CorsConfig": UpdateRuleAttributeParamRuleActionsCorsConfigSchema( - required=False, dump_to="CorsConfig" - ), - "FixedResponseConfig": UpdateRuleAttributeParamRuleActionsFixedResponseConfigSchema( - required=False, dump_to="FixedResponseConfig" - ), - "ForwardConfig": UpdateRuleAttributeParamRuleActionsForwardConfigSchema( - required=False, dump_to="ForwardConfig" - ), - "InsertHeaderConfig": UpdateRuleAttributeParamRuleActionsInsertHeaderConfigSchema( - required=False, dump_to="InsertHeaderConfig" - ), - "Order": fields.Int(required=False, dump_to="Order"), - "RemoveHeaderConfig": UpdateRuleAttributeParamRuleActionsRemoveHeaderConfigSchema( - required=False, dump_to="RemoveHeaderConfig" - ), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class UpdateRuleAttributeParamRuleConditionsHostConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleConditionsHostConfig -""" - - fields = { - "MatchMode": fields.Str(required=False, dump_to="MatchMode"), - "Values": fields.List(fields.Str()), - } - - -class UpdateRuleAttributeParamRuleConditionsPathConfigSchema( - schema.RequestSchema -): - """UpdateRuleAttributeParamRuleConditionsPathConfig -""" - - fields = { - "Values": fields.List(fields.Str()), - } - - -class UpdateRuleAttributeParamRuleConditionsSchema(schema.RequestSchema): - """UpdateRuleAttributeParamRuleConditions -""" - - fields = { - "HostConfig": UpdateRuleAttributeParamRuleConditionsHostConfigSchema( - required=False, dump_to="HostConfig" - ), - "PathConfig": UpdateRuleAttributeParamRuleConditionsPathConfigSchema( - required=False, dump_to="PathConfig" - ), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class UpdateRuleAttributeRequestSchema(schema.RequestSchema): - """UpdateRuleAttribute - 更新应用型负载均衡监听器的一条转发规则的属性""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "Pass": fields.Bool(required=False, dump_to="Pass"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RuleActions": fields.List(UpdateRuleAttributeParamRuleActionsSchema()), - "RuleConditions": fields.List( - UpdateRuleAttributeParamRuleConditionsSchema() - ), - "RuleId": fields.Str(required=True, dump_to="RuleId"), - } - - -class UpdateRuleAttributeResponseSchema(schema.ResponseSchema): - """UpdateRuleAttribute - 更新应用型负载均衡监听器的一条转发规则的属性""" - - fields = {} - - -""" -API: UpdateSSLAttribute - -更新修改SSL的属性,如:修改SSLName -""" - - -class UpdateSSLAttributeRequestSchema(schema.RequestSchema): - """UpdateSSLAttribute - 更新修改SSL的属性,如:修改SSLName""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLId": fields.Str(required=True, dump_to="SSLId"), - "SSLName": fields.Str(required=True, dump_to="SSLName"), - } - - -class UpdateSSLAttributeResponseSchema(schema.ResponseSchema): - """UpdateSSLAttribute - 更新修改SSL的属性,如:修改SSLName""" - - fields = {} - - -""" -API: UpdateSSLBinding - -将传统型或应用型负载均衡监听器绑定的证书更换为另一个证书, -""" - - -class UpdateSSLBindingRequestSchema(schema.RequestSchema): - """UpdateSSLBinding - 将传统型或应用型负载均衡监听器绑定的证书更换为另一个证书,""" - - fields = { - "ListenerId": fields.Str(required=False, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=False, dump_to="LoadBalancerId"), - "NewSSLId": fields.Str(required=True, dump_to="NewSSLId"), - "OldSSLId": fields.Str(required=True, dump_to="OldSSLId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class UpdateSSLBindingResponseSchema(schema.ResponseSchema): - """UpdateSSLBinding - 将传统型或应用型负载均衡监听器绑定的证书更换为另一个证书,""" - - fields = {} - - -""" -API: UpdateSecurityPolicy - -更新安全策略 -""" - - -class UpdateSecurityPolicyRequestSchema(schema.RequestSchema): - """UpdateSecurityPolicy - 更新安全策略""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SSLCiphers": fields.List(fields.Str()), - "SecurityPolicyId": fields.Str( - required=True, dump_to="SecurityPolicyId" - ), - "SecurityPolicyName": fields.Str( - required=False, dump_to="SecurityPolicyName" - ), - "TLSVersion": fields.Str(required=False, dump_to="TLSVersion"), - } - - -class UpdateSecurityPolicyResponseSchema(schema.ResponseSchema): - """UpdateSecurityPolicy - 更新安全策略""" - - fields = {} - - -""" -API: UpdateTargetsAttribute - -更新应用型负载均衡监听器后端服务节点的属性 -""" - - -class UpdateTargetsAttributeParamTargetsSchema(schema.RequestSchema): - """UpdateTargetsAttributeParamTargets -""" - - fields = { - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Id": fields.Str(required=False, dump_to="Id"), - "IsBackup": fields.Bool(required=False, dump_to="IsBackup"), - "Weight": fields.Int(required=False, dump_to="Weight"), - } - - -class UpdateTargetsAttributeRequestSchema(schema.RequestSchema): - """UpdateTargetsAttribute - 更新应用型负载均衡监听器后端服务节点的属性""" - - fields = { - "ListenerId": fields.Str(required=True, dump_to="ListenerId"), - "LoadBalancerId": fields.Str(required=True, dump_to="LoadBalancerId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Targets": fields.List(UpdateTargetsAttributeParamTargetsSchema()), - } - - -class UpdateTargetsAttributeResponseSchema(schema.ResponseSchema): - """UpdateTargetsAttribute - 更新应用型负载均衡监听器后端服务节点的属性""" - - fields = {} - - -""" -API: UpdateULBAttribute - -更新CLB名字业务组备注等属性字段 -""" - - -class UpdateULBAttributeRequestSchema(schema.RequestSchema): - """UpdateULBAttribute - 更新CLB名字业务组备注等属性字段""" - - fields = { - "BucketName": fields.Str(required=False, dump_to="BucketName"), - "EnableLog": fields.Int(required=False, dump_to="EnableLog"), - "IsWAFOn": fields.Str(required=False, dump_to="IsWAFOn"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "TokenId": fields.Str(required=False, dump_to="TokenId"), - "TokenName": fields.Str(required=False, dump_to="TokenName"), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - } - - -class UpdateULBAttributeResponseSchema(schema.ResponseSchema): - """UpdateULBAttribute - 更新CLB名字业务组备注等属性字段""" - - fields = {} - - -""" -API: UpdateVServerAttribute - -更新传统型负载均衡VServer实例属性 -""" - - -class UpdateVServerAttributeRequestSchema(schema.RequestSchema): - """UpdateVServerAttribute - 更新传统型负载均衡VServer实例属性""" - - fields = { - "ClientTimeout": fields.Int(required=False, dump_to="ClientTimeout"), - "Domain": fields.Str(required=False, dump_to="Domain"), - "EnableCompression": fields.Int( - required=False, dump_to="EnableCompression" - ), - "EnableHTTP2": fields.Int(required=False, dump_to="EnableHTTP2"), - "ForwardPort": fields.Int(required=False, dump_to="ForwardPort"), - "Method": fields.Str(required=False, dump_to="Method"), - "MonitorType": fields.Str(required=False, dump_to="MonitorType"), - "Path": fields.Str(required=False, dump_to="Path"), - "PersistenceInfo": fields.Str( - required=False, dump_to="PersistenceInfo" - ), - "PersistenceType": fields.Str( - required=False, dump_to="PersistenceType" - ), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Protocol": fields.Str( - required=False, dump_to="Protocol" - ), # Deprecated, will be removed at 1.0 - "Region": fields.Str(required=True, dump_to="Region"), - "RequestMsg": fields.Str(required=False, dump_to="RequestMsg"), - "ResponseMsg": fields.Str(required=False, dump_to="ResponseMsg"), - "SecurityPolicyId": fields.Str( - required=False, dump_to="SecurityPolicyId" - ), - "ULBId": fields.Str(required=True, dump_to="ULBId"), - "VServerId": fields.Str(required=True, dump_to="VServerId"), - "VServerName": fields.Str(required=False, dump_to="VServerName"), - } - - -class UpdateVServerAttributeResponseSchema(schema.ResponseSchema): - """UpdateVServerAttribute - 更新传统型负载均衡VServer实例属性""" - - fields = {} diff --git a/ucloud/services/ulb/schemas/models.py b/ucloud/services/ulb/schemas/models.py deleted file mode 100644 index a5c38e8b..00000000 --- a/ucloud/services/ulb/schemas/models.py +++ /dev/null @@ -1,653 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class TargetSetSchema(schema.ResponseSchema): - """TargetSet - 服务节点信息""" - - fields = { - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Id": fields.Str(required=False, load_from="Id"), - "IsBackup": fields.Bool(required=False, load_from="IsBackup"), - "Port": fields.Int(required=False, load_from="Port"), - "ResourceIP": fields.Str(required=False, load_from="ResourceIP"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class BackendSetSchema(schema.ResponseSchema): - """BackendSet -""" - - fields = { - "BackendId": fields.Str(required=True, load_from="BackendId"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - } - - -class TargetSchema(schema.ResponseSchema): - """Target - 服务节点信息""" - - fields = { - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Id": fields.Str(required=False, load_from="Id"), - "IsBackup": fields.Bool(required=False, load_from="IsBackup"), - "Port": fields.Int(required=False, load_from="Port"), - "ResourceIP": fields.Str(required=False, load_from="ResourceIP"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceName": fields.Str(required=False, load_from="ResourceName"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class CertificateSchema(schema.ResponseSchema): - """Certificate - (应用型专用)服务器证书信息""" - - fields = { - "IsDefault": fields.Bool(required=False, load_from="IsDefault"), - "SSLId": fields.Str(required=False, load_from="SSLId"), - } - - -class PathConfigSetSchema(schema.ResponseSchema): - """PathConfigSet - 路径相关配置""" - - fields = { - "Values": fields.List(fields.Str()), - } - - -class FixedResponseConfigSetSchema(schema.ResponseSchema): - """FixedResponseConfigSet - 静态返回相关配置""" - - fields = { - "Content": fields.Str(required=False, load_from="Content"), - "HttpCode": fields.Int(required=True, load_from="HttpCode"), - } - - -class HealthCheckConfigSetSchema(schema.ResponseSchema): - """HealthCheckConfigSet - 健康检查相关配置""" - - fields = { - "Domain": fields.Str(required=False, load_from="Domain"), - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Method": fields.Str(required=False, load_from="Method"), - "Path": fields.Str(required=False, load_from="Path"), - "ResponseCode": fields.Str(required=False, load_from="ResponseCode"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class CorsConfigSetSchema(schema.ResponseSchema): - """CorsConfigSet - 跨域相关配置""" - - fields = { - "AllowCredentials": fields.Str( - required=False, load_from="AllowCredentials" - ), - "AllowHeaders": fields.List(fields.Str()), - "AllowMethods": fields.List(fields.Str()), - "AllowOrigin": fields.List(fields.Str()), - "ExposeHeaders": fields.List(fields.Str()), - "MaxAge": fields.Int(required=False, load_from="MaxAge"), - } - - -class ForwardTargetSetSchema(schema.ResponseSchema): - """ForwardTargetSet - 转发的后端服务节点""" - - fields = { - "Id": fields.Str(required=True, load_from="Id"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class ForwardConfigSetSchema(schema.ResponseSchema): - """ForwardConfigSet - 转发服务节点相关配置""" - - fields = { - "Targets": fields.List(ForwardTargetSetSchema()), - } - - -class InsertHeaderConfigSetSchema(schema.ResponseSchema): - """InsertHeaderConfigSet - 插入 header 相关配置""" - - fields = { - "Key": fields.Str(required=True, load_from="Key"), - "Value": fields.Str(required=True, load_from="Value"), - "ValueType": fields.Str(required=True, load_from="ValueType"), - } - - -class RemoveHeaderConfigSetSchema(schema.ResponseSchema): - """RemoveHeaderConfigSet - 删除 header 相关配置""" - - fields = { - "Key": fields.Str(required=True, load_from="Key"), - } - - -class RuleActionSchema(schema.ResponseSchema): - """RuleAction - 转发动作""" - - fields = { - "CorsConfig": CorsConfigSetSchema(), - "FixedResponseConfig": FixedResponseConfigSetSchema(), - "ForwardConfig": ForwardConfigSetSchema(), - "InsertHeaderConfig": InsertHeaderConfigSetSchema(), - "Order": fields.Int(required=False, load_from="Order"), - "RemoveHeaderConfig": RemoveHeaderConfigSetSchema(), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class HostConfigSetSchema(schema.ResponseSchema): - """HostConfigSet - 域名相关配置""" - - fields = { - "MatchMode": fields.Str(required=False, load_from="MatchMode"), - "Values": fields.List(fields.Str()), - } - - -class RuleConditionSchema(schema.ResponseSchema): - """RuleCondition - 转发规则匹配条件""" - - fields = { - "HostConfig": HostConfigSetSchema(), - "PathConfig": PathConfigSetSchema(), - "Type": fields.Str(required=True, load_from="Type"), - } - - -class RuleSchema(schema.ResponseSchema): - """Rule - (应用型专用)转发规则信息""" - - fields = { - "IsDefault": fields.Bool(required=False, load_from="IsDefault"), - "Pass": fields.Bool(required=False, load_from="Pass"), - "RuleActions": fields.List(RuleActionSchema()), - "RuleConditions": fields.List(RuleConditionSchema()), - "RuleId": fields.Str(required=False, load_from="RuleId"), - } - - -class StickinessConfigSetSchema(schema.ResponseSchema): - """StickinessConfigSet - 会话保持相关配置""" - - fields = { - "CookieName": fields.Str(required=False, load_from="CookieName"), - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class ListenerSchema(schema.ResponseSchema): - """Listener - 负载均衡监听器信息""" - - fields = { - "Certificates": fields.List(CertificateSchema()), - "CompressionEnabled": fields.Bool( - required=False, load_from="CompressionEnabled" - ), - "HTTP2Enabled": fields.Bool(required=False, load_from="HTTP2Enabled"), - "HealthCheckConfig": HealthCheckConfigSetSchema(), - "IdleTimeout": fields.Int(required=False, load_from="IdleTimeout"), - "ListenerId": fields.Str(required=False, load_from="ListenerId"), - "ListenerPort": fields.Int(required=False, load_from="ListenerPort"), - "ListenerProtocol": fields.Str( - required=False, load_from="ListenerProtocol" - ), - "Name": fields.Str(required=False, load_from="Name"), - "RedirectEnabled": fields.Bool( - required=False, load_from="RedirectEnabled" - ), - "RedirectPort": fields.Int(required=False, load_from="RedirectPort"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Rules": fields.List(RuleSchema()), - "Scheduler": fields.Str(required=False, load_from="Scheduler"), - "SecurityPolicyId": fields.Str( - required=False, load_from="SecurityPolicyId" - ), - "State": fields.Str(required=False, load_from="State"), - "StickinessConfig": StickinessConfigSetSchema(), - "Targets": fields.List(TargetSchema()), - } - - -class SecGroupInfoSchema(schema.ResponseSchema): - """SecGroupInfo - 安全组详细信息""" - - fields = { - "Name": fields.Str(required=False, load_from="Name"), - "Priority": fields.Int(required=False, load_from="Priority"), - "SecgroupId": fields.Str(required=False, load_from="SecgroupId"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - } - - -class AccessLogConfigSetSchema(schema.ResponseSchema): - """AccessLogConfigSet - (应用型专用)访问日志相关配置""" - - fields = { - "Enabled": fields.Bool(required=False, load_from="Enabled"), - "US3BucketName": fields.Str(required=False, load_from="US3BucketName"), - "US3TokenId": fields.Str(required=False, load_from="US3TokenId"), - } - - -class IPInfoSchema(schema.ResponseSchema): - """IPInfo - 绑定的IP信息""" - - fields = { - "AddressType": fields.Str(required=False, load_from="AddressType"), - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BandwidthType": fields.Int(required=False, load_from="BandwidthType"), - "IP": fields.Str(required=False, load_from="IP"), - "IPVersion": fields.Str(required=False, load_from="IPVersion"), - "Id": fields.Str(required=False, load_from="Id"), - "OperatorName": fields.Str(required=False, load_from="OperatorName"), - } - - -class FirewallSetSchema(schema.ResponseSchema): - """FirewallSet - ulb防火墙信息""" - - fields = { - "FirewallId": fields.Str(required=False, load_from="FirewallId"), - "FirewallName": fields.Str(required=False, load_from="FirewallName"), - } - - -class LoadBalancerSchema(schema.ResponseSchema): - """LoadBalancer - 负载均衡实例信息""" - - fields = { - "AccessLogConfig": AccessLogConfigSetSchema(), - "AutoRenewEnabled": fields.Bool( - required=False, load_from="AutoRenewEnabled" - ), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Firewall": FirewallSetSchema(), - "IPInfos": fields.List(IPInfoSchema()), - "IPVersion": fields.Str(required=False, load_from="IPVersion"), - "Listeners": fields.List(ListenerSchema()), - "LoadBalancerId": fields.Str( - required=False, load_from="LoadBalancerId" - ), - "Name": fields.Str(required=False, load_from="Name"), - "PurchaseValue": fields.Int(required=False, load_from="PurchaseValue"), - "Remark": fields.Str(required=False, load_from="Remark"), - "SecGroup": fields.List(SecGroupInfoSchema()), - "SnatIPs": fields.List(fields.Str()), - "Status": fields.Str(required=False, load_from="Status"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "Type": fields.Str(required=False, load_from="Type"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - } - - -class SSLBindedTargetSetSchema(schema.ResponseSchema): - """SSLBindedTargetSet - DescribeSSL""" - - fields = { - "ULBId": fields.Str(required=False, load_from="ULBId"), - "ULBName": fields.Str(required=False, load_from="ULBName"), - "VServerId": fields.Str(required=False, load_from="VServerId"), - "VServerName": fields.Str(required=False, load_from="VServerName"), - } - - -class ULBSSLSetSchema(schema.ResponseSchema): - """ULBSSLSet - DescribeSSL""" - - fields = { - "BindedTargetSet": fields.List(SSLBindedTargetSetSchema()), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "Domains": fields.Str(required=False, load_from="Domains"), - "HashValue": fields.Str(required=False, load_from="HashValue"), - "NotAfter": fields.Int(required=False, load_from="NotAfter"), - "NotBefore": fields.Int(required=False, load_from="NotBefore"), - "SSLContent": fields.Str(required=False, load_from="SSLContent"), - "SSLId": fields.Str(required=False, load_from="SSLId"), - "SSLName": fields.Str(required=False, load_from="SSLName"), - "SSLSource": fields.Int(required=False, load_from="SSLSource"), - "SSLType": fields.Str(required=False, load_from="SSLType"), - "USSLId": fields.Str(required=False, load_from="USSLId"), - } - - -class SSLRelationSchema(schema.ResponseSchema): - """SSLRelation - SSL证书绑定到的对象""" - - fields = { - "IsDefault": fields.Bool(required=False, load_from="IsDefault"), - "ListenerId": fields.Str(required=False, load_from="ListenerId"), - "ListenerName": fields.Str(required=False, load_from="ListenerName"), - "LoadBalancerId": fields.Str( - required=False, load_from="LoadBalancerId" - ), - "LoadBalancerName": fields.Str( - required=False, load_from="LoadBalancerName" - ), - } - - -class SSLInfoSchema(schema.ResponseSchema): - """SSLInfo - SSL返回信息""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DNSNames": fields.Str(required=False, load_from="DNSNames"), - "Domains": fields.Str(required=False, load_from="Domains"), - "HashValue": fields.Str(required=False, load_from="HashValue"), - "NotAfter": fields.Int(required=False, load_from="NotAfter"), - "NotBefore": fields.Int(required=False, load_from="NotBefore"), - "Relations": fields.List(SSLRelationSchema()), - "SSLContent": fields.Str(required=False, load_from="SSLContent"), - "SSLId": fields.Str(required=False, load_from="SSLId"), - "SSLName": fields.Str(required=False, load_from="SSLName"), - "SSLSource": fields.Int(required=False, load_from="SSLSource"), - "SSLType": fields.Str(required=False, load_from="SSLType"), - "USSLId": fields.Str(required=False, load_from="USSLId"), - } - - -class BindVServerInfoSchema(schema.ResponseSchema): - """BindVServerInfo - 绑定安全策略的VServer信息""" - - fields = { - "Port": fields.Int(required=True, load_from="Port"), - "ULBId": fields.Str(required=True, load_from="ULBId"), - "VServerId": fields.Str(required=True, load_from="VServerId"), - "VServerName": fields.Str(required=True, load_from="VServerName"), - } - - -class SecurityPolicySchema(schema.ResponseSchema): - """SecurityPolicy - 安全策略组""" - - fields = { - "SSLCiphers": fields.List(fields.Str()), - "SecurityPolicyId": fields.Str( - required=True, load_from="SecurityPolicyId" - ), - "SecurityPolicyName": fields.Str( - required=True, load_from="SecurityPolicyName" - ), - "SecurityPolicyType": fields.Int( - required=True, load_from="SecurityPolicyType" - ), - "TLSVersion": fields.Str(required=True, load_from="TLSVersion"), - "VServerSet": fields.List(BindVServerInfoSchema()), - } - - -class SecurityPolicyRelationSchema(schema.ResponseSchema): - """SecurityPolicyRelation - 关联的监听""" - - fields = { - "ListenerId": fields.Str(required=False, load_from="ListenerId"), - "ListenerName": fields.Str(required=False, load_from="ListenerName"), - "ListenerPort": fields.Int(required=False, load_from="ListenerPort"), - "LoadBalancerId": fields.Str( - required=False, load_from="LoadBalancerId" - ), - } - - -class SecurityPolicyInfoSchema(schema.ResponseSchema): - """SecurityPolicyInfo - 安全策略信息""" - - fields = { - "Relations": fields.List(SecurityPolicyRelationSchema()), - "SSLCiphers": fields.List(fields.Str()), - "SecurityPolicyId": fields.Str( - required=False, load_from="SecurityPolicyId" - ), - "SecurityPolicyName": fields.Str( - required=False, load_from="SecurityPolicyName" - ), - "SecurityPolicyType": fields.Int( - required=False, load_from="SecurityPolicyType" - ), - "TLSVersion": fields.Str(required=False, load_from="TLSVersion"), - } - - -class TLSAndCiphersSchema(schema.ResponseSchema): - """TLSAndCiphers -""" - - fields = { - "SSLCiphers": fields.List(fields.Str()), - "TLSVersion": fields.Str(required=False, load_from="TLSVersion"), - } - - -class ULBIPSetSchema(schema.ResponseSchema): - """ULBIPSet - DescribeULB""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BandwidthType": fields.Int(required=False, load_from="BandwidthType"), - "EIP": fields.Str(required=False, load_from="EIP"), - "EIPId": fields.Str(required=False, load_from="EIPId"), - "OperatorName": fields.Str(required=False, load_from="OperatorName"), - } - - -class PolicyBackendSetSchema(schema.ResponseSchema): - """PolicyBackendSet - 内容转发下rs详细信息""" - - fields = { - "BackendId": fields.Str(required=False, load_from="BackendId"), - "ObjectId": fields.Str(required=False, load_from="ObjectId"), - "Port": fields.Int(required=False, load_from="Port"), - "PrivateIP": fields.Str(required=False, load_from="PrivateIP"), - "ResourceName": fields.Str(required=False, load_from="ResourceName"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "SubResourceId": fields.Str(required=False, load_from="SubResourceId"), - "SubResourceName": fields.Str( - required=False, load_from="SubResourceName" - ), - "SubResourceType": fields.Str( - required=False, load_from="SubResourceType" - ), - } - - -class ULBPolicySetSchema(schema.ResponseSchema): - """ULBPolicySet - 内容转发详细列表""" - - fields = { - "BackendSet": fields.List(PolicyBackendSetSchema()), - "DomainMatchMode": fields.Str( - required=False, load_from="DomainMatchMode" - ), - "Match": fields.Str(required=False, load_from="Match"), - "PolicyId": fields.Str(required=False, load_from="PolicyId"), - "PolicyPriority": fields.Int( - required=False, load_from="PolicyPriority" - ), - "PolicyType": fields.Str(required=False, load_from="PolicyType"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - "Type": fields.Str(required=False, load_from="Type"), - "VServerId": fields.Str(required=False, load_from="VServerId"), - } - - -class LoggerSetSchema(schema.ResponseSchema): - """LoggerSet - ulb日志信息""" - - fields = { - "BucketName": fields.Str(required=False, load_from="BucketName"), - "TokenID": fields.Str(required=False, load_from="TokenID"), - "TokenName": fields.Str(required=False, load_from="TokenName"), - } - - -class ULBBackendSetSchema(schema.ResponseSchema): - """ULBBackendSet - DescribeULB""" - - fields = { - "BackendId": fields.Str(required=False, load_from="BackendId"), - "Enabled": fields.Int(required=False, load_from="Enabled"), - "IsBackup": fields.Int(required=False, load_from="IsBackup"), - "Port": fields.Int(required=False, load_from="Port"), - "PrivateIP": fields.Str(required=False, load_from="PrivateIP"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "ResourceName": fields.Str(required=False, load_from="ResourceName"), - "ResourceType": fields.Str(required=False, load_from="ResourceType"), - "Status": fields.Int(required=False, load_from="Status"), - "SubResourceId": fields.Str(required=False, load_from="SubResourceId"), - "SubResourceName": fields.Str( - required=False, load_from="SubResourceName" - ), - "SubResourceType": fields.Str( - required=False, load_from="SubResourceType" - ), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class BindSecurityPolicySchema(schema.ResponseSchema): - """BindSecurityPolicy - VServer绑定的安全策略组信息""" - - fields = { - "SSLCiphers": fields.List(fields.Str()), - "SecurityPolicyId": fields.Str( - required=False, load_from="SecurityPolicyId" - ), - "SecurityPolicyName": fields.Str( - required=False, load_from="SecurityPolicyName" - ), - "SecurityPolicyType": fields.Int( - required=False, load_from="SecurityPolicyType" - ), - "TLSVersion": fields.Str(required=False, load_from="TLSVersion"), - } - - -class ULBVServerSetSchema(schema.ResponseSchema): - """ULBVServerSet - DescribeULB""" - - fields = { - "BackendSet": fields.List(ULBBackendSetSchema()), - "ClientTimeout": fields.Int(required=False, load_from="ClientTimeout"), - "Domain": fields.Str(required=False, load_from="Domain"), - "EnableCompression": fields.Int( - required=False, load_from="EnableCompression" - ), - "EnableHTTP2": fields.Int(required=False, load_from="EnableHTTP2"), - "ForwardPort": fields.Int(required=False, load_from="ForwardPort"), - "FrontendPort": fields.Int(required=False, load_from="FrontendPort"), - "ListenType": fields.Str(required=False, load_from="ListenType"), - "Method": fields.Str(required=False, load_from="Method"), - "MonitorType": fields.Str(required=True, load_from="MonitorType"), - "Path": fields.Str(required=False, load_from="Path"), - "PersistenceInfo": fields.Str( - required=False, load_from="PersistenceInfo" - ), - "PersistenceType": fields.Str( - required=True, load_from="PersistenceType" - ), - "PolicySet": fields.List(ULBPolicySetSchema()), - "Protocol": fields.Str(required=False, load_from="Protocol"), - "RequestMsg": fields.Str(required=False, load_from="RequestMsg"), - "ResponseMsg": fields.Str(required=False, load_from="ResponseMsg"), - "SSLSet": fields.List(ULBSSLSetSchema()), - "SecurityPolicy": BindSecurityPolicySchema(), - "Status": fields.Int(required=False, load_from="Status"), - "ULBId": fields.Str(required=False, load_from="ULBId"), - "VServerId": fields.Str(required=False, load_from="VServerId"), - "VServerName": fields.Str(required=False, load_from="VServerName"), - } - - -class ULBSetSchema(schema.ResponseSchema): - """ULBSet - DescribeULB""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BandwidthType": fields.Int(required=False, load_from="BandwidthType"), - "BusinessId": fields.Str(required=False, load_from="BusinessId"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EnableLog": fields.Int(required=False, load_from="EnableLog"), - "ExpireTime": fields.Int( - required=False, load_from="ExpireTime" - ), # Deprecated, will be removed at 1.0 - "FirewallSet": fields.List(FirewallSetSchema()), - "IPSet": fields.List(ULBIPSetSchema()), - "IPVersion": fields.Str(required=False, load_from="IPVersion"), - "ListenType": fields.Str(required=False, load_from="ListenType"), - "LogSet": LoggerSetSchema(), - "Name": fields.Str(required=False, load_from="Name"), - "PrivateIP": fields.Str(required=False, load_from="PrivateIP"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Resource": fields.List( - fields.Str() - ), # Deprecated, will be removed at 1.0 - "SnatIps": fields.List(fields.Str()), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "ULBId": fields.Str(required=False, load_from="ULBId"), - "ULBName": fields.Str( - required=False, load_from="ULBName" - ), # Deprecated, will be removed at 1.0 - "ULBType": fields.Str(required=False, load_from="ULBType"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "VServerSet": fields.List(ULBVServerSetSchema()), - } - - -class ULBSimpleSetSchema(schema.ResponseSchema): - """ULBSimpleSet - ulb简明信息""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BandwidthType": fields.Int(required=False, load_from="BandwidthType"), - "BusinessId": fields.Str(required=False, load_from="BusinessId"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EnableLog": fields.Int(required=False, load_from="EnableLog"), - "FirewallSet": fields.List(FirewallSetSchema()), - "IPSet": fields.List(ULBIPSetSchema()), - "IPVersion": fields.Str(required=True, load_from="IPVersion"), - "ListenType": fields.Str(required=True, load_from="ListenType"), - "LogSet": LoggerSetSchema(), - "Name": fields.Str(required=False, load_from="Name"), - "PrivateIP": fields.Str(required=False, load_from="PrivateIP"), - "Remark": fields.Str(required=False, load_from="Remark"), - "SnatIps": fields.List(fields.Str()), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "ULBId": fields.Str(required=False, load_from="ULBId"), - "ULBType": fields.Str(required=False, load_from="ULBType"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "VServerCount": fields.Int(required=False, load_from="VServerCount"), - "WAFMode": fields.Str(required=False, load_from="WAFMode"), - } - - -class BackendMsgSchema(schema.ResponseSchema): - """BackendMsg - ulb修rs状态时返回的信息""" - - fields = { - "BackendId": fields.Str(required=True, load_from="BackendId"), - "SubMessage": fields.Str(required=True, load_from="SubMessage"), - "SubRetCode": fields.Int(required=True, load_from="SubRetCode"), - } diff --git a/ucloud/services/ulighthost/__init__.py b/ucloud/services/ulighthost/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulighthost/client.py b/ucloud/services/ulighthost/client.py deleted file mode 100644 index 6a3d8ba1..00000000 --- a/ucloud/services/ulighthost/client.py +++ /dev/null @@ -1,576 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ulighthost.schemas import apis - - -class ULightHostClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(ULightHostClient, self).__init__( - config, transport, middleware, logger - ) - - def check_ul_host_resource_capacity( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID。如:"ulh.c1m1s40b30t800" - - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage `_ 获取 - - **ChargeType** (str) - 计费模式。枚举值: \\ > Year,按年付费; \\ > Month,按月付费;\\ > ThirtyDay,30天期付费,跨境电商相关套餐使用此计费方式;默认:Month - - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 - - **Name** (str) - 轻量应用主机名称。默认:套餐ID。请遵照 `字段规范 `_ 设定实例名称。 - - **Quantity** (int) - 购买时长。默认:1。不支持购买到月末 - - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall `_ 。 - - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 - - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 - - **Response** - - - **Message** (str) - 错误信息 - - **ResourceEnough** (bool) - 资源是否充足 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CheckULHostResourceCapacityRequestSchema().dumps(d) - - resp = self.invoke("CheckULHostResourceCapacity", d, **kwargs) - return apis.CheckULHostResourceCapacityResponseSchema().loads(resp) - - def create_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateULHostInstance - 创建轻量应用云主机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID。如:"ulh.c1m1s40b30t800" - - **ImageId** (str) - (Required) 镜像ID。 请通过 `DescribeImage `_ 获取 - - **Password** (str) - (Required) ULHost密码。请遵照 `字段规范 `_ 设定密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64 - - **ChargeType** (str) - 计费模式。枚举值: \\ > Year,按年付费; \\ > Month,按月付费;\\ > ThirtyDay,30天期付费,跨境电商相关套餐使用此计费方式;默认:Month - - **CouponId** (str) - 主机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看 - - **Name** (str) - 轻量应用主机名称。默认:套餐ID。请遵照 `字段规范 `_ 设定实例名称。 - - **Quantity** (int) - 购买时长。默认:1。不支持购买到月末 - - **SecurityGroupId** (str) - 防火墙ID,默认:Web推荐防火墙。如何查询SecurityGroupId请参见 `DescribeFirewall `_ 。 - - **SubnetId** (str) - 子网 ID。默认为当前地域的默认子网。 - - **VPCId** (str) - VPC ID。默认为当前地域的默认VPC。 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - 实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateULHostInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateULHostInstance", d, **kwargs) - return apis.CreateULHostInstanceResponseSchema().loads(resp) - - def describe_ul_host_bundles( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostBundles - 获取轻量应用云主机套餐列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **Bundles** (list) - 见 **Bundle** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **Bundle** - - **Bandwidth** (int) - 外网带宽。单位:Mbps。 - - **BundleId** (str) - 套餐ID。 - - **CPU** (int) - CPU核数。 - - **Memory** (int) - 内存大小。单位:MB。 - - **SysDiskSpace** (int) - 系统盘大小。单位:GB。 - - **TrafficPacket** (int) - 流量包大小。单位:GB。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostBundlesRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostBundles", d, **kwargs) - return apis.DescribeULHostBundlesResponseSchema().loads(resp) - - def describe_ul_host_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostImage - 获取指定数据中心镜像列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ImageId** (str) - 镜像Id - - **ImageIds** (list) - 镜像Id列表 - - **ImageType** (str) - 镜像类型。标准镜像:Base,应用镜像:App, 自定义镜像:Custom,默认返回所有类型 - - **Limit** (int) - 返回数据长度,默认为20 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **OsType** (str) - 操作系统类型:Linux, Windows 默认返回所有类型 - - **Scene** (str) - 使用场景,当ImageType为"App"时生效。- Normal 常规专区- CrossBorder 跨境专区默认返回所有 - - **Tag** (str) - 业务组Id。默认:Default - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ImageSet** (list) - 见 **ULHostImageSet** 模型定义 - - **TotalCount** (int) - 满足条件的镜像总数 - - **Response Model** - - **ULHostImageSet** - - **CreateTime** (int) - 创建时间,格式为Unix时间戳 - - **DisplayName** (str) - 用于控制台显示的名称 - - **Features** (list) - 特殊状态标识,目前包含NetEnhnced(网络增强1.0), NetEnhanced_Ultra(网络增强2.0), NetEnhanced_Extreme(网络增强3.0), HotPlug(热升级), GPU(GPU镜像),CloudInit, IPv6(支持IPv6网络),RssdAttachable(支持RSSD云盘),Vgpu_AMD(支持AMD的vgpu),Vgpu_NVIDIA(支持NVIDIA的vgpu),Aarch64_Type(支持arm64架构) - - **ImageDescription** (str) - 镜像描述 - - **ImageId** (str) - 镜像ID - - **ImageLogoLink** (str) - 应用镜像图标url - - **ImageName** (str) - 镜像名称 - - **ImageSize** (int) - 镜像大小 - - **ImageType** (str) - 镜像类型 标准镜像:Base, 行业镜像:Business,自定义镜像:Custom - - **IntegratedSoftware** (str) - 集成软件名称(仅行业镜像将返回这个值) - - **MaintainEol** (str) - 系统EOL的时间,格式:YYYY/MM/DD - - **MinimalCPU** (str) - 默认值为空'''。当CentOS 7.3/7.4/7.5等镜像会标记为“Broadwell” - - **OsName** (str) - 操作系统名称 - - **OsType** (str) - 操作系统类型:Linux,Windows - - **SceneCategories** (list) - 场景分类,目前包含Featured(精选),PreInstalledDrivers(预装驱动),AIPainting(AI绘画),AIModels(AI模型),HPC(高性能计算) - - **State** (str) - 镜像状态, 可用:Available,制作中:Making, 不可用:Unavailable,复制中:Copying - - **Tag** (str) - 业务组 - - **Zone** (str) - 可用区,参见 `可用区列表 `_ - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostImageRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostImage", d, **kwargs) - return apis.DescribeULHostImageResponseSchema().loads(resp) - - def describe_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeULHostInstance - 获取轻量应用云主机列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ULHostIds** (list) - 【数组】轻量应用云主机ID。 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostInstanceSets** (list) - 见 **ULHostInstanceSet** 模型定义 - - **Response Model** - - **ExclusiveUTPInfo** - - **AvailableSize** (int) - 当前周期剩余流量 - - **CreateTime** (int) - 创建时间 - - **ExcessSize** (int) - 当前周期超出限额的流量 - - **LastResetTime** (int) - 上次重置时间 - - **NextResetTime** (int) - 下次重置时间 - - **TotalSize** (int) - 当前周期总流量 - - **UsedSize** (int) - 当前周期已使用流量 - - - **ULHostDiskSet** - - **DiskId** (str) - 磁盘Id - - **DiskType** (str) - 磁盘类型。如:"CLOUD_RSSD"、"CLOUD_SSD" - - **Drive** (str) - 磁盘盘符。系统盘:"vda" - - **IsBoot** (str) - 是否为系统盘。是:"True";否:"False" - - **Size** (int) - 磁盘大小。单位:GB - - **Type** (str) - 磁盘类型。系统盘:"Boot";数据盘:"Data" - - - **UHostIPSet** - - **Bandwidth** (int) - IP对应的带宽, 单位: Mb (内网IP不显示带宽信息) - - **Default** (str) - 内网 Private 类型下,表示是否为默认网卡。true: 是默认网卡;其他值:不是。 - - **IP** (str) - IP地址 - - **IPId** (str) - 外网IP资源ID 。(内网IP无对应的资源ID) - - **IPMode** (str) - IPv4/IPv6; - - **Mac** (str) - 内网 Private 类型下,当前网卡的Mac。 - - **NetworkInterfaceId** (str) - 弹性网卡为默认网卡时,返回对应的 ID 值 - - **SubnetId** (str) - IP地址对应的子网 ID。(北京一不支持,字段返回为空) - - **Type** (str) - 国际: Internation,BGP: Bgp,内网: Private - - **VPCId** (str) - IP地址对应的VPC ID。(北京一不支持,字段返回为空) - - **Weight** (int) - 当前EIP的权重。权重最大的为当前的出口IP。 - - - **ULHostInstanceSet** - - **Apps** (list) - 【数组】镜像包含的应用列表。 - - **AutoRenew** (str) - 是否自动续费。枚举值:Yes/No - - **CPU** (int) - CPU核数。 - - **ChargeType** (str) - 计费模式。枚举值:Month/Year - - **CreateTime** (int) - 创建时间。Unix时间戳 - - **DiskSet** (list) - 见 **ULHostDiskSet** 模型定义 - - **EIPExclusiveUTPInfo** (dict) - 见 **ExclusiveUTPInfo** 模型定义 - - **ExpireTime** (int) - 过期时间。Unix时间戳 - - **IPSet** (list) - 见 **UHostIPSet** 模型定义 - - **ImageId** (str) - 镜像Id。 - - **ImageName** (str) - 镜像名称。 - - **IsExpire** (str) - 是否过期。枚举值:Yes/No - - **Memory** (int) - 内存。单位:MB - - **Name** (str) - 实例名称。默认套餐Id - - **Remark** (str) - 备注。 - - **State** (str) - 实例状态。枚举值:\\ >初始化: Initializing; \\ >启动中: Starting; \\> 运行中: Running; \\> 关机中: Stopping; \\ >关机: Stopped \\ >安装失败: Install Fail; \\ >重启中: Rebooting; \\ > 未知(空字符串,获取状态超时或出错):"" - - **Tag** (str) - 业务组。 - - **ULHostId** (str) - 实例Id。 - - **Zone** (str) - 可用区。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeULHostInstance", d, **kwargs) - return apis.DescribeULHostInstanceResponseSchema().loads(resp) - - def get_ul_host_instance_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BundleId** (str) - (Required) 套餐ID - - **ChargeType** (str) - 获取指定计费模式的价格。枚举值:\\ > Year,按年付费; \\ > Month。未指定时,返回所有计费模式价格 - - **Count** (int) - 购买台数,范围[1,5]。默认:1 - - **Quantity** (int) - 购买时长。默认: 1。不支持购买到月末 - - **Response** - - - **Message** (str) - 错误信息 - - **PriceSet** (list) - 见 **ULHostPriceSet** 模型定义 - - **Response Model** - - **ULHostPriceSet** - - **ChargeType** (str) - 计费模式 - - **OriginalPrice** (float) - 原价 - - **Price** (float) - 价格 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetULHostInstancePriceRequestSchema().dumps(d) - - resp = self.invoke("GetULHostInstancePrice", d, **kwargs) - return apis.GetULHostInstancePriceResponseSchema().loads(resp) - - def get_ul_host_renew_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetULHostRenewPrice - 获取主机续费价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **ChargeType** (str) - 计费类型。支持:Year/Month;默认:Month - - **Response** - - - **PriceSet** (list) - 见 **ULHostPriceSet** 模型定义 - - **Response Model** - - **ULHostPriceSet** - - **ChargeType** (str) - 计费模式 - - **OriginalPrice** (float) - 原价 - - **Price** (float) - 价格 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetULHostRenewPriceRequestSchema().dumps(d) - - resp = self.invoke("GetULHostRenewPrice", d, **kwargs) - return apis.GetULHostRenewPriceResponseSchema().loads(resp) - - def modify_ul_host_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例Id - - **Name** (str) - 名称。和Remark至少选择一个进行修改 - - **Remark** (str) - 备注。和Name至少选择一个进行修改 - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - ULHost实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyULHostAttributeRequestSchema().dumps(d) - - resp = self.invoke("ModifyULHostAttribute", d, **kwargs) - return apis.ModifyULHostAttributeResponseSchema().loads(resp) - - def poweroff_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.PoweroffULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("PoweroffULHostInstance", d, **kwargs) - return apis.PoweroffULHostInstanceResponseSchema().loads(resp) - - def reboot_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RebootULHostInstance - 重新启动UHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RebootULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("RebootULHostInstance", d, **kwargs) - return apis.RebootULHostInstanceResponseSchema().loads(resp) - - def reinstall_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ReinstallULHostInstance - 重装轻量应用云主机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ImageId** (str) - (Required) 镜像Id。暂不支持使用自定义镜像重装 - - **Password** (str) - (Required) 登陆密码。密码需使用base64进行编码,举例如下:# echo -n Password1 | base64 UGFzc3dvcmQx - - **ULHostId** (str) - (Required) 实例Id - - **Response** - - - **Message** (str) - 错误信息 - - **ULHostId** (str) - 实例Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ReinstallULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("ReinstallULHostInstance", d, **kwargs) - return apis.ReinstallULHostInstanceResponseSchema().loads(resp) - - def reset_ul_host_instance_password( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Password** (str) - (Required) ULHost新密码(密码格式使用BASE64编码) - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResetULHostInstancePasswordRequestSchema().dumps(d) - - resp = self.invoke("ResetULHostInstancePassword", d, **kwargs) - return apis.ResetULHostInstancePasswordResponseSchema().loads(resp) - - def start_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartULHostInstance - 启动处于关闭状态的UHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("StartULHostInstance", d, **kwargs) - return apis.StartULHostInstanceResponseSchema().loads(resp) - - def stop_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopULHostInstance - 指停止处于运行状态的ULHost实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost实例ID。 - - **Response** - - - **ULHostId** (str) - ULHost实例ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("StopULHostInstance", d, **kwargs) - return apis.StopULHostInstanceResponseSchema().loads(resp) - - def terminate_ul_host_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ULHostId** (str) - (Required) ULHost资源Id - - **ReleaseUDisk** (bool) - 删除主机时是否同时删除挂载的数据盘。默认为false。 - - **Response** - - - **InRecycle** (str) - 用于判断主机删除时是否进入回收站。放入回收站:"Yes", 彻底删除:“No”。 - - **ULHostId** (str) - ULHost 实例 Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.TerminateULHostInstanceRequestSchema().dumps(d) - - resp = self.invoke("TerminateULHostInstance", d, **kwargs) - return apis.TerminateULHostInstanceResponseSchema().loads(resp) diff --git a/ucloud/services/ulighthost/schemas/__init__.py b/ucloud/services/ulighthost/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulighthost/schemas/apis.py b/ucloud/services/ulighthost/schemas/apis.py deleted file mode 100644 index 93bcc594..00000000 --- a/ucloud/services/ulighthost/schemas/apis.py +++ /dev/null @@ -1,445 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ulighthost.schemas import models - -""" ULightHost API Schema -""" - - -""" -API: CheckULHostResourceCapacity - -检查轻量应用云主机资源余量 -""" - - -class CheckULHostResourceCapacityRequestSchema(schema.RequestSchema): - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityGroupId": fields.Str( - required=False, dump_to="SecurityGroupId" - ), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class CheckULHostResourceCapacityResponseSchema(schema.ResponseSchema): - """CheckULHostResourceCapacity - 检查轻量应用云主机资源余量""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ResourceEnough": fields.Bool( - required=True, load_from="ResourceEnough" - ), - } - - -""" -API: CreateULHostInstance - -创建轻量应用云主机 -""" - - -class CreateULHostInstanceRequestSchema(schema.RequestSchema): - """CreateULHostInstance - 创建轻量应用云主机""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Name": fields.Str(required=False, dump_to="Name"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecurityGroupId": fields.Str( - required=False, dump_to="SecurityGroupId" - ), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - } - - -class CreateULHostInstanceResponseSchema(schema.ResponseSchema): - """CreateULHostInstance - 创建轻量应用云主机""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: DescribeULHostBundles - -获取轻量应用云主机套餐列表 -""" - - -class DescribeULHostBundlesRequestSchema(schema.RequestSchema): - """DescribeULHostBundles - 获取轻量应用云主机套餐列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class DescribeULHostBundlesResponseSchema(schema.ResponseSchema): - """DescribeULHostBundles - 获取轻量应用云主机套餐列表""" - - fields = { - "Bundles": fields.List( - models.BundleSchema(), required=True, load_from="Bundles" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: DescribeULHostImage - -获取指定数据中心镜像列表 -""" - - -class DescribeULHostImageRequestSchema(schema.RequestSchema): - """DescribeULHostImage - 获取指定数据中心镜像列表""" - - fields = { - "ImageId": fields.Str(required=False, dump_to="ImageId"), - "ImageIds": fields.List(fields.Str()), - "ImageType": fields.Str(required=False, dump_to="ImageType"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "OsType": fields.Str(required=False, dump_to="OsType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Scene": fields.Str(required=False, dump_to="Scene"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeULHostImageResponseSchema(schema.ResponseSchema): - """DescribeULHostImage - 获取指定数据中心镜像列表""" - - fields = { - "ImageSet": fields.List( - models.ULHostImageSetSchema(), required=False, load_from="ImageSet" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeULHostInstance - -获取轻量应用云主机列表 -""" - - -class DescribeULHostInstanceRequestSchema(schema.RequestSchema): - """DescribeULHostInstance - 获取轻量应用云主机列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostIds": fields.List(fields.Str()), - } - - -class DescribeULHostInstanceResponseSchema(schema.ResponseSchema): - """DescribeULHostInstance - 获取轻量应用云主机列表""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostInstanceSets": fields.List( - models.ULHostInstanceSetSchema(), - required=True, - load_from="ULHostInstanceSets", - ), - } - - -""" -API: GetULHostInstancePrice - -获取轻量应用云主机套餐价格 -""" - - -class GetULHostInstancePriceRequestSchema(schema.RequestSchema): - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格""" - - fields = { - "BundleId": fields.Str(required=True, dump_to="BundleId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "Count": fields.Int(required=False, dump_to="Count"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class GetULHostInstancePriceResponseSchema(schema.ResponseSchema): - """GetULHostInstancePrice - 获取轻量应用云主机套餐价格""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "PriceSet": fields.List( - models.ULHostPriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: GetULHostRenewPrice - -获取主机续费价格 -""" - - -class GetULHostRenewPriceRequestSchema(schema.RequestSchema): - """GetULHostRenewPrice - 获取主机续费价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class GetULHostRenewPriceResponseSchema(schema.ResponseSchema): - """GetULHostRenewPrice - 获取主机续费价格""" - - fields = { - "PriceSet": fields.List( - models.ULHostPriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: ModifyULHostAttribute - -修改指定ULHost实例属性信息,包含名称和备注 -""" - - -class ModifyULHostAttributeRequestSchema(schema.RequestSchema): - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注""" - - fields = { - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ModifyULHostAttributeResponseSchema(schema.ResponseSchema): - """ModifyULHostAttribute - 修改指定ULHost实例属性信息,包含名称和备注""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: PoweroffULHostInstance - -直接关闭UHost实例电源,无需等待实例正常关闭。 -""" - - -class PoweroffULHostInstanceRequestSchema(schema.RequestSchema): - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class PoweroffULHostInstanceResponseSchema(schema.ResponseSchema): - """PoweroffULHostInstance - 直接关闭UHost实例电源,无需等待实例正常关闭。""" - - fields = { - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: RebootULHostInstance - -重新启动UHost实例。 -""" - - -class RebootULHostInstanceRequestSchema(schema.RequestSchema): - """RebootULHostInstance - 重新启动UHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class RebootULHostInstanceResponseSchema(schema.ResponseSchema): - """RebootULHostInstance - 重新启动UHost实例。""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: ReinstallULHostInstance - -重装轻量应用云主机 -""" - - -class ReinstallULHostInstanceRequestSchema(schema.RequestSchema): - """ReinstallULHostInstance - 重装轻量应用云主机""" - - fields = { - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ReinstallULHostInstanceResponseSchema(schema.ResponseSchema): - """ReinstallULHostInstance - 重装轻量应用云主机""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: ResetULHostInstancePassword - -重置轻量应用云主机管理员密码。 -""" - - -class ResetULHostInstancePasswordRequestSchema(schema.RequestSchema): - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。""" - - fields = { - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class ResetULHostInstancePasswordResponseSchema(schema.ResponseSchema): - """ResetULHostInstancePassword - 重置轻量应用云主机管理员密码。""" - - fields = { - "ULHostId": fields.Str(required=True, load_from="ULHostId"), - } - - -""" -API: StartULHostInstance - -启动处于关闭状态的UHost实例。 -""" - - -class StartULHostInstanceRequestSchema(schema.RequestSchema): - """StartULHostInstance - 启动处于关闭状态的UHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class StartULHostInstanceResponseSchema(schema.ResponseSchema): - """StartULHostInstance - 启动处于关闭状态的UHost实例。""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: StopULHostInstance - -指停止处于运行状态的ULHost实例 -""" - - -class StopULHostInstanceRequestSchema(schema.RequestSchema): - """StopULHostInstance - 指停止处于运行状态的ULHost实例""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class StopULHostInstanceResponseSchema(schema.ResponseSchema): - """StopULHostInstance - 指停止处于运行状态的ULHost实例""" - - fields = { - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } - - -""" -API: TerminateULHostInstance - -删除指定数据中心的ULHost实例。 -""" - - -class TerminateULHostInstanceRequestSchema(schema.RequestSchema): - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReleaseUDisk": fields.Bool(required=False, dump_to="ReleaseUDisk"), - "ULHostId": fields.Str(required=True, dump_to="ULHostId"), - } - - -class TerminateULHostInstanceResponseSchema(schema.ResponseSchema): - """TerminateULHostInstance - 删除指定数据中心的ULHost实例。""" - - fields = { - "InRecycle": fields.Str(required=True, load_from="InRecycle"), - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - } diff --git a/ucloud/services/ulighthost/schemas/models.py b/ucloud/services/ulighthost/schemas/models.py deleted file mode 100644 index 59b1781f..00000000 --- a/ucloud/services/ulighthost/schemas/models.py +++ /dev/null @@ -1,133 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class BundleSchema(schema.ResponseSchema): - """Bundle - 轻量应用云主机套餐""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "BundleId": fields.Str(required=False, load_from="BundleId"), - "CPU": fields.Int(required=False, load_from="CPU"), - "Memory": fields.Int(required=False, load_from="Memory"), - "SysDiskSpace": fields.Int(required=False, load_from="SysDiskSpace"), - "TrafficPacket": fields.Int(required=False, load_from="TrafficPacket"), - } - - -class ULHostImageSetSchema(schema.ResponseSchema): - """ULHostImageSet - DescribeULHostImage""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DisplayName": fields.Str(required=False, load_from="DisplayName"), - "Features": fields.List(fields.Str()), - "ImageDescription": fields.Str( - required=False, load_from="ImageDescription" - ), - "ImageId": fields.Str(required=False, load_from="ImageId"), - "ImageLogoLink": fields.Str(required=False, load_from="ImageLogoLink"), - "ImageName": fields.Str(required=False, load_from="ImageName"), - "ImageSize": fields.Int(required=False, load_from="ImageSize"), - "ImageType": fields.Str(required=False, load_from="ImageType"), - "IntegratedSoftware": fields.Str( - required=False, load_from="IntegratedSoftware" - ), - "MaintainEol": fields.Str(required=False, load_from="MaintainEol"), - "MinimalCPU": fields.Str(required=False, load_from="MinimalCPU"), - "OsName": fields.Str(required=False, load_from="OsName"), - "OsType": fields.Str(required=False, load_from="OsType"), - "SceneCategories": fields.List(fields.Str()), - "State": fields.Str(required=False, load_from="State"), - "Tag": fields.Str(required=False, load_from="Tag"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class UHostIPSetSchema(schema.ResponseSchema): - """UHostIPSet -""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "Default": fields.Str(required=False, load_from="Default"), - "IP": fields.Str(required=False, load_from="IP"), - "IPId": fields.Str(required=False, load_from="IPId"), - "IPMode": fields.Str(required=True, load_from="IPMode"), - "Mac": fields.Str(required=False, load_from="Mac"), - "NetworkInterfaceId": fields.Str( - required=False, load_from="NetworkInterfaceId" - ), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Type": fields.Str(required=False, load_from="Type"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Weight": fields.Int(required=False, load_from="Weight"), - } - - -class ExclusiveUTPInfoSchema(schema.ResponseSchema): - """ExclusiveUTPInfo - 流量包详情""" - - fields = { - "AvailableSize": fields.Int(required=False, load_from="AvailableSize"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExcessSize": fields.Int(required=False, load_from="ExcessSize"), - "LastResetTime": fields.Int(required=False, load_from="LastResetTime"), - "NextResetTime": fields.Int(required=False, load_from="NextResetTime"), - "TotalSize": fields.Int(required=False, load_from="TotalSize"), - "UsedSize": fields.Int(required=False, load_from="UsedSize"), - } - - -class ULHostDiskSetSchema(schema.ResponseSchema): - """ULHostDiskSet - 轻量应用主机的磁盘信息""" - - fields = { - "DiskId": fields.Str(required=False, load_from="DiskId"), - "DiskType": fields.Str(required=False, load_from="DiskType"), - "Drive": fields.Str(required=False, load_from="Drive"), - "IsBoot": fields.Str(required=False, load_from="IsBoot"), - "Size": fields.Int(required=False, load_from="Size"), - "Type": fields.Str(required=False, load_from="Type"), - } - - -class ULHostInstanceSetSchema(schema.ResponseSchema): - """ULHostInstanceSet - 轻量应用云主机详情""" - - fields = { - "Apps": fields.List(fields.Str()), - "AutoRenew": fields.Str(required=False, load_from="AutoRenew"), - "CPU": fields.Int(required=False, load_from="CPU"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DiskSet": fields.List(ULHostDiskSetSchema()), - "EIPExclusiveUTPInfo": ExclusiveUTPInfoSchema(), - "ExclusiveUTPInfo": ExclusiveUTPInfoSchema( - required=False, load_from="ExclusiveUTPInfo" - ), # Deprecated, will be removed at 1.0 - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "IPSet": fields.List(UHostIPSetSchema()), - "ImageId": fields.Str(required=False, load_from="ImageId"), - "ImageName": fields.Str(required=False, load_from="ImageName"), - "IsExpire": fields.Str(required=False, load_from="IsExpire"), - "Memory": fields.Int(required=False, load_from="Memory"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "State": fields.Str(required=False, load_from="State"), - "Tag": fields.Str(required=False, load_from="Tag"), - "ULHostId": fields.Str(required=False, load_from="ULHostId"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class ULHostPriceSetSchema(schema.ResponseSchema): - """ULHostPriceSet - 轻量应用主机价格详情""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - "Price": fields.Float(required=False, load_from="Price"), - } diff --git a/ucloud/services/ulogservice/__init__.py b/ucloud/services/ulogservice/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulogservice/client.py b/ucloud/services/ulogservice/client.py deleted file mode 100644 index e9de6ba8..00000000 --- a/ucloud/services/ulogservice/client.py +++ /dev/null @@ -1,266 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.ulogservice.schemas import apis - - -class ULogServiceClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(ULogServiceClient, self).__init__( - config, transport, middleware, logger - ) - - def create_u_log_service_log_set( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateULogServiceLogSet - 创建日志集 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **LogSetName** (str) - (Required) 日志集名称 长度为1~64位 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **LogSetRemark** (str) - 日志集备注 长度为0~255位 - - **Response** - - - **LogSetId** (str) - 日志集资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateULogServiceLogSetRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateULogServiceLogSet", d, **kwargs) - return apis.CreateULogServiceLogSetResponseSchema().loads(resp) - - def create_u_log_service_topic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateULogServiceTopic - 创建ULogService主题 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ReserveAge** (int) - (Required) 保存时间 1~360 天,-1表示永久保存 - - **TopicName** (str) - (Required) 主题名称,校验规则"^[\w]{1,23}$" - - **LogSetId** (str) - 日志集ID - - **TopicShardNum** (int) - 分区数量 数字1~20 - - **Response** - - - **TopicId** (str) - 主题ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateULogServiceTopicRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateULogServiceTopic", d, **kwargs) - return apis.CreateULogServiceTopicResponseSchema().loads(resp) - - def delete_u_log_service_log_set( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteULogServiceLogSet - 删除日志集 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **LogSetId** (str) - (Required) 日志集ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteULogServiceLogSetRequestSchema().dumps(d) - - resp = self.invoke("DeleteULogServiceLogSet", d, **kwargs) - return apis.DeleteULogServiceLogSetResponseSchema().loads(resp) - - def delete_u_log_service_topic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteULogServiceTopic - 删除ULogService主题 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TopicId** (str) - (Required) 主题Id - - **Response** - - - **Message** (str) - 错误信息,成功情况下为空字符串 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteULogServiceTopicRequestSchema().dumps(d) - - resp = self.invoke("DeleteULogServiceTopic", d, **kwargs) - return apis.DeleteULogServiceTopicResponseSchema().loads(resp) - - def list_u_log_service_log_set( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListULogServiceLogSet - 查询日志集列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Data** (list) - 见 **LogSetInfo** 模型定义 - - **Response Model** - - **LogSetInfo** - - **CreateTime** (int) - 创建时间 - - **LogSetName** (str) - 日志集名称 - - **LogSetRemark** (str) - 日志集备注 - - **TopicCount** (int) - 日志集下主题数量 - - **UpdateTime** (int) - 更新时间 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListULogServiceLogSetRequestSchema().dumps(d) - - resp = self.invoke("ListULogServiceLogSet", d, **kwargs) - return apis.ListULogServiceLogSetResponseSchema().loads(resp) - - def list_u_log_service_topic( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListULogServiceTopic - 获取ULogService主题 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Limit** (int) - 分页限制数,默认为30 - - **Offset** (int) - 分页起始条目数, 默认为0 - - **Response** - - - **Data** (list) - 见 **TopicInfo** 模型定义 - - **TotalCount** (int) - 主题总数 - - **Response Model** - - **TopicInfo** - - **IsReserved** (int) - 是否保留:0 - NORMAL, 1 - RESERVED - - **ReserveAge** (int) - 保存时间 1~360 天,-1表示永久保存 - - **TopicDesc** (str) - 主题描述 - - **TopicId** (str) - 主题ID - - **TopicName** (str) - 主题名称 - - **TopicShardNum** (int) - 分区数量 数字1~20 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListULogServiceTopicRequestSchema().dumps(d) - - resp = self.invoke("ListULogServiceTopic", d, **kwargs) - return apis.ListULogServiceTopicResponseSchema().loads(resp) - - def query_u_log_service_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """QueryULogServiceLog - 查询ULogService日志 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **QueryCriteria** (str) - (Required) 查询条件,使用Base64编码。目前只支持查询索引,多个索引查询使用AND。比如:index1:http AND index2:http2 - - **SortOrder** (str) - (Required) 日志时间排序;可选值ASC|DESC - - **TopicId** (str) - (Required) 主题ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **EndTime** (int) - 终止日志时间,秒级时间戳 - - **LastId** (str) - 滚动加载参数,上一页最后一条数据的ID - - **LastTimestamp** (str) - 滚动加载参数,上一页最后一条数据的timestamp - - **ScrollId** (str) - Deprecated. 滚动加载参数ScrollId - - **Size** (int) - 一次返回条数,默认20 - - **StartTime** (int) - 起始日志时间,秒级时间戳 - - **Response** - - - **Data** (dict) - 见 **LogQueryResult** 模型定义 - - **Response Model** - - **LogContent** - - **LogId** (str) - 日志标识ID - - **LogJson** (str) - JSON格式的日志内容 - - **Timestamp** (int) - 日志时间 - - - **LogQueryResult** - - **Contents** (dict) - 见 **LogContent** 模型定义 - - **IsOver** (bool) - 检索结果是否到底 - - **LastId** (str) - 滚动检索,当前页最后一条数据ID - - **LastTimestamp** (str) - 滚动检索,当前页最后一条数据Timestamp - - **ScrollId** (str) - 滚动检索Id Deprecated - - **TopicId** (str) - 所属日志ID - - **TopicName** (str) - 所属日志名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.QueryULogServiceLogRequestSchema().dumps(d) - - resp = self.invoke("QueryULogServiceLog", d, **kwargs) - return apis.QueryULogServiceLogResponseSchema().loads(resp) diff --git a/ucloud/services/ulogservice/schemas/__init__.py b/ucloud/services/ulogservice/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/ulogservice/schemas/apis.py b/ucloud/services/ulogservice/schemas/apis.py deleted file mode 100644 index db9f3087..00000000 --- a/ucloud/services/ulogservice/schemas/apis.py +++ /dev/null @@ -1,201 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.ulogservice.schemas import models - -""" ULogService API Schema -""" - - -""" -API: CreateULogServiceLogSet - -创建日志集 -""" - - -class CreateULogServiceLogSetRequestSchema(schema.RequestSchema): - """CreateULogServiceLogSet - 创建日志集""" - - fields = { - "LogSetName": fields.Str(required=True, dump_to="LogSetName"), - "LogSetRemark": fields.Str(required=False, dump_to="LogSetRemark"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateULogServiceLogSetResponseSchema(schema.ResponseSchema): - """CreateULogServiceLogSet - 创建日志集""" - - fields = { - "LogSetId": fields.Str(required=False, load_from="LogSetId"), - } - - -""" -API: CreateULogServiceTopic - -创建ULogService主题 -""" - - -class CreateULogServiceTopicRequestSchema(schema.RequestSchema): - """CreateULogServiceTopic - 创建ULogService主题""" - - fields = { - "LogSetId": fields.Str(required=False, dump_to="LogSetId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ReserveAge": fields.Int(required=True, dump_to="ReserveAge"), - "TopicName": fields.Str(required=True, dump_to="TopicName"), - "TopicShardNum": fields.Int(required=False, dump_to="TopicShardNum"), - } - - -class CreateULogServiceTopicResponseSchema(schema.ResponseSchema): - """CreateULogServiceTopic - 创建ULogService主题""" - - fields = { - "TopicId": fields.Str(required=False, load_from="TopicId"), - } - - -""" -API: DeleteULogServiceLogSet - -删除日志集 -""" - - -class DeleteULogServiceLogSetRequestSchema(schema.RequestSchema): - """DeleteULogServiceLogSet - 删除日志集""" - - fields = { - "LogSetId": fields.Str(required=True, dump_to="LogSetId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteULogServiceLogSetResponseSchema(schema.ResponseSchema): - """DeleteULogServiceLogSet - 删除日志集""" - - fields = {} - - -""" -API: DeleteULogServiceTopic - -删除ULogService主题 -""" - - -class DeleteULogServiceTopicRequestSchema(schema.RequestSchema): - """DeleteULogServiceTopic - 删除ULogService主题""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TopicId": fields.Str(required=True, dump_to="TopicId"), - } - - -class DeleteULogServiceTopicResponseSchema(schema.ResponseSchema): - """DeleteULogServiceTopic - 删除ULogService主题""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListULogServiceLogSet - -查询日志集列表 -""" - - -class ListULogServiceLogSetRequestSchema(schema.RequestSchema): - """ListULogServiceLogSet - 查询日志集列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListULogServiceLogSetResponseSchema(schema.ResponseSchema): - """ListULogServiceLogSet - 查询日志集列表""" - - fields = { - "Data": fields.List( - models.LogSetInfoSchema(), required=False, load_from="Data" - ), - } - - -""" -API: ListULogServiceTopic - -获取ULogService主题 -""" - - -class ListULogServiceTopicRequestSchema(schema.RequestSchema): - """ListULogServiceTopic - 获取ULogService主题""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ListULogServiceTopicResponseSchema(schema.ResponseSchema): - """ListULogServiceTopic - 获取ULogService主题""" - - fields = { - "Data": fields.List( - models.TopicInfoSchema(), required=True, load_from="Data" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: QueryULogServiceLog - -查询ULogService日志 -""" - - -class QueryULogServiceLogRequestSchema(schema.RequestSchema): - """QueryULogServiceLog - 查询ULogService日志""" - - fields = { - "EndTime": fields.Int(required=False, dump_to="EndTime"), - "LastId": fields.Str(required=False, dump_to="LastId"), - "LastTimestamp": fields.Str(required=False, dump_to="LastTimestamp"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "QueryCriteria": fields.Str(required=True, dump_to="QueryCriteria"), - "Region": fields.Str(required=True, dump_to="Region"), - "ScrollId": fields.Str(required=False, dump_to="ScrollId"), - "Size": fields.Int(required=False, dump_to="Size"), - "SortOrder": fields.Str(required=True, dump_to="SortOrder"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - "TopicId": fields.Str(required=True, dump_to="TopicId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class QueryULogServiceLogResponseSchema(schema.ResponseSchema): - """QueryULogServiceLog - 查询ULogService日志""" - - fields = { - "Data": models.LogQueryResultSchema(), - } diff --git a/ucloud/services/ulogservice/schemas/models.py b/ucloud/services/ulogservice/schemas/models.py deleted file mode 100644 index dcf1d0f3..00000000 --- a/ucloud/services/ulogservice/schemas/models.py +++ /dev/null @@ -1,52 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class LogSetInfoSchema(schema.ResponseSchema): - """LogSetInfo -""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "LogSetName": fields.Str(required=False, load_from="LogSetName"), - "LogSetRemark": fields.Str(required=False, load_from="LogSetRemark"), - "TopicCount": fields.Int(required=False, load_from="TopicCount"), - "UpdateTime": fields.Int(required=False, load_from="UpdateTime"), - } - - -class TopicInfoSchema(schema.ResponseSchema): - """TopicInfo - 主题信息""" - - fields = { - "IsReserved": fields.Int(required=False, load_from="IsReserved"), - "ReserveAge": fields.Int(required=False, load_from="ReserveAge"), - "TopicDesc": fields.Str(required=False, load_from="TopicDesc"), - "TopicId": fields.Str(required=False, load_from="TopicId"), - "TopicName": fields.Str(required=False, load_from="TopicName"), - "TopicShardNum": fields.Int(required=False, load_from="TopicShardNum"), - } - - -class LogContentSchema(schema.ResponseSchema): - """LogContent - 日志内容""" - - fields = { - "LogId": fields.Str(required=True, load_from="LogId"), - "LogJson": fields.Str(required=True, load_from="LogJson"), - "Timestamp": fields.Int(required=True, load_from="Timestamp"), - } - - -class LogQueryResultSchema(schema.ResponseSchema): - """LogQueryResult - 日志检索结果""" - - fields = { - "Contents": LogContentSchema(), - "IsOver": fields.Bool(required=True, load_from="IsOver"), - "LastId": fields.Str(required=False, load_from="LastId"), - "LastTimestamp": fields.Str(required=False, load_from="LastTimestamp"), - "ScrollId": fields.Str(required=False, load_from="ScrollId"), - "TopicId": fields.Str(required=True, load_from="TopicId"), - "TopicName": fields.Str(required=True, load_from="TopicName"), - } diff --git a/ucloud/services/umem/__init__.py b/ucloud/services/umem/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/umem/schemas/__init__.py b/ucloud/services/umem/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/umongodb/__init__.py b/ucloud/services/umongodb/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/umongodb/client.py b/ucloud/services/umongodb/client.py deleted file mode 100644 index 8ddfdf2d..00000000 --- a/ucloud/services/umongodb/client.py +++ /dev/null @@ -1,1046 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.umongodb.schemas import apis - - -class UMongoDBClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UMongoDBClient, self).__init__( - config, transport, middleware, logger - ) - - def backup_umon_go_db_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BackupUMongoDBCluster - 备份集群数据库 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackupName** (str) - (Required) 备份名称 - - **ClusterId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **BackupId** (str) - 备份ID - - **ClusterId** (str) - 实例ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.BackupUMongoDBClusterRequestSchema().dumps(d) - - resp = self.invoke("BackupUMongoDBCluster", d, **kwargs) - return apis.BackupUMongoDBClusterResponseSchema().loads(resp) - - def backup_umon_go_db_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BackupUMongoDBLog - 日志打包 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Begin** (int) - (Required) 日志开始时间,最早为7x24小时前 - - **ClusterId** (str) - (Required) 集群id - - **End** (int) - (Required) 日志结束时间,时间区间不能超过24小时 - - **LogType** (str) - (Required) 日志类型:SlowLog,ErrorLog - - **Name** (str) - (Required) 日志包名称 - - **NodeId** (str) - (Required) 节点id, 慢日志 mongos 节点不可选 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.BackupUMongoDBLogRequestSchema().dumps(d) - - resp = self.invoke("BackupUMongoDBLog", d, **kwargs) - return apis.BackupUMongoDBLogResponseSchema().loads(resp) - - def create_umon_go_db_config_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUMongoDBConfigTemplate - 创建配置模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BaseTemplateId** (str) - (Required) 基础模板 - - **ClusterType** (str) - (Required) 集群类型 - - **MongodbVersion** (str) - (Required) mongo版本 - - **TemplateName** (str) - (Required) 模板名称 - - **Description** (str) - 模板描述 - - **Response** - - - **Message** (str) - 错误信息 - - **TemplateId** (str) - 模板Id - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUMongoDBConfigTemplateRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUMongoDBConfigTemplate", d, **kwargs) - return apis.CreateUMongoDBConfigTemplateResponseSchema().loads(resp) - - def create_umon_go_db_repl_set( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUMongoDBReplSet - 创建一个Mongodb副本集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AdminPassword** (str) - (Required) 管理员密码 - - **DBVersion** (str) - (Required) 副本集的Mongodb的版本,例如MongoDB 3.6, MongoDB 4.2 - - **DiskSpace** (int) - (Required) 磁盘空间 (GB):取值范围 20~32000,仅支持 10 的整数倍 - - **MachineTypeId** (str) - (Required) 机型配置,如 o.mongo2m.medium - - **Name** (str) - (Required) 副本集实例名称,至少6位 - - **NodeCount** (int) - (Required) 副本集节点数量:仅支持 3、5、7 奇数节点 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 付费方式:Year, Month, Dynamic,Trial,默认: Month - - **CrossZones** (list) - 跨可用区列表 - - **Labels** (list) - 见 **CreateUMongoDBReplSetParamLabels** 模型定义 - - **ListenPort** (int) - mongo服务端口 - - **Quantity** (int) - 购买时长,默认值1 - - **SecGroupId** (list) - 见 **CreateUMongoDBReplSetParamSecGroupId** 模型定义 - - **SubnetId** (str) - 子网ID - - **Tag** (str) - 实例所在的业务组名称 - - **VPCId** (str) - VPC的ID - - **Response** - - - **Request Model** - - **CreateUMongoDBReplSetParamSecGroupId** - - **Id** (str) - 安全组 ID。至多可以同时绑定5个安全组。 - - **Priority** (int) - 安全组优先级。取值范围[1, 5] - - - **CreateUMongoDBReplSetParamLabels** - - **Key** (str) - 用户资源标签的键值 - - **Value** (str) - 用户资源标签值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUMongoDBReplSetRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUMongoDBReplSet", d, **kwargs) - return apis.CreateUMongoDBReplSetResponseSchema().loads(resp) - - def create_umon_go_db_sharded_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUMongoDBShardedCluster - 创建一个Mongodb分片集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AdminPassword** (str) - (Required) 管理员密码 - - **DBVersion** (str) - (Required) 副本集的Mongodb的版本,例如MongoDB 3.6, MongoDB 4.2 - - **DiskSpace** (int) - (Required) 数据节点磁盘空间(GB):取值范围 20~32000,仅支持 10 的整数倍 - - **MachineTypeId** (str) - (Required) 数据节点机型配置,如 o.mongo2m.medium - - **MongosNodeCount** (int) - (Required) Mongos节点数量 - - **Name** (str) - (Required) 副本集实例名称,至少6位 - - **NodeCount** (int) - (Required) 每个分片中节点数量 - - **ShardCount** (int) - (Required) 分片数量 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 付费方式:Year, Month, Dynamic,Trial,默认: Month - - **Labels** (list) - 见 **CreateUMongoDBShardedClusterParamLabels** 模型定义 - - **ListenPort** (int) - mongo服务端口 - - **MongosMachineTypeId** (str) - Mongos节点机型配置 - - **Quantity** (int) - 购买时长,默认值1 - - **SecGroupId** (list) - 见 **CreateUMongoDBShardedClusterParamSecGroupId** 模型定义 - - **SubnetId** (str) - 子网ID - - **Tag** (str) - 实例所在的业务组名称 - - **TemplateId** (str) - 参数配置模版id - - **VPCId** (str) - VPC的ID - - **Response** - - - **Request Model** - - **CreateUMongoDBShardedClusterParamSecGroupId** - - **Id** (str) - 安全组 ID。至多可以同时绑定5个安全组。 - - **Priority** (int) - 安全组优先级。取值范围[1, 5] - - - **CreateUMongoDBShardedClusterParamLabels** - - **Key** (str) - 用户资源标签的键值 - - **Value** (str) - 用户资源标签值 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUMongoDBShardedClusterRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUMongoDBShardedCluster", d, **kwargs) - return apis.CreateUMongoDBShardedClusterResponseSchema().loads(resp) - - def describe_umon_go_db_backup_url( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUMongoDBBackupURL - 获取实例备份下载链接 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **BackupId** (str) - 文件备份ID - - **Category** (str) - 类型:如 oplog - - **PackageId** (int) - 打包ID - - **ValidTime** (int) - 备份链接过期时间(单位秒) - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **InternetAddress** (str) - 备份文件公网地址 - - **IntranetAddress** (str) - 备份文件内网地址 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUMongoDBBackupURLRequestSchema().dumps(d) - - resp = self.invoke("DescribeUMongoDBBackupURL", d, **kwargs) - return apis.DescribeUMongoDBBackupURLResponseSchema().loads(resp) - - def describe_umon_go_db_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUMongoDBInstance - 描述MongoDB实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 实例资源ID - - **ClusterType** (str) - 集群类型,ReplicaSet:副本集,SharedCluster:分片集群 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterInfo** (dict) - 见 **ClusterInfo** 模型定义 - - **Response Model** - - **DiskInfo** - - **DiskId** (str) - 磁盘id - - **DiskSize** (int) - 磁盘容量单位GB - - - **NodeInfo** - - **ClusterId** (str) - 节点所属副本集ID - - **CreateTime** (int) - DB实例创建时间 - - **DBVersion** (str) - 副本集的Mongodb的版本 - - **DataDisk** (dict) - 见 **DiskInfo** 模型定义 - - **MachineType** (str) - 机型信息 - - **MachineTypeId** (str) - 机型信息ID - - **NodeId** (str) - 节点ID - - **NodeRole** (str) - 节点角色,Primary/Secondary/Arbiter/Startup等等 - - **NodeType** (str) - 节点类型 - - **State** (str) - 副本集/分片集群状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中,StartFailed:启动失败,Running:运行,Stopping:关闭中,Stopped:已关闭, StopFailed:关闭失败,Deleting:删除中,Deleted:已删除,DeleteFailed:删除失败,Restarting:重启中,RestartFailed:重启失败。 - - **SysDisk** (dict) - 见 **DiskInfo** 模型定义 - - **VirtualClusterId** (str) - 虚拟节点ID - - **Zone** (str) - 可用区 - - **ZoneId** (int) - 可用区ID - - - **ReplicaInfo** - - **ClusterId** (str) - 集群ID - - **CreateTime** (int) - 副本集创建时间 - - **DeleteTime** (int) - 副本集删除时间 - - **IsolationGroupId** (str) - 隔离组ID - - **MachineType** (str) - 机器类型 - - **MachineTypeId** (str) - 机器类型Id - - **ModifyTime** (int) - 副本集修改时间 - - **NodeCount** (int) - 副本集下的节点数量 - - **NodeInfos** (list) - 见 **NodeInfo** 模型定义 - - **ReplicaId** (str) - 副本集ID - - **ReplicaType** (str) - 副本类型,ConfigRepl或者DataRepl - - **State** (str) - 副本集/分片集群状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中,StartFailed:启动失败,Running:运行,Stopping:关闭中,Stopped:已关闭, StopFailed:关闭失败,Deleting:删除中,Deleted:已删除,DeleteFailed:删除失败,Restarting:重启中,RestartFailed:重启失败。 - - - **MongodbMachineType** - - **Cpu** (int) - cpu核数 - - **Description** (str) - 配置简称 2C4G - - **Group** (str) - 配置分组,2m , 4m - - **MachineTypeId** (str) - 机器类型ID o.mongo2m.medium,o.mongo2m.xlarge - - **Memory** (int) - 内存用量(GB) - - **UHhostMachineType** (str) - 机器类型,N/O - - - **ClusterInfo** - - **ClusterId** (str) - 集群ID - - **ClusterType** (str) - 集群类型,ReplicaSet :副本集,SharedCluster:分片集 - - **ConfigComputeType** (dict) - 见 **MongodbMachineType** 模型定义 - - **ConfigMachineType** (str) - Config配置集群节点配置,分片集有效 - - **ConfigNodeCount** (int) - Config配置集群节点数量,分片集有效 - - **ConfigReplicaInfo** (dict) - 见 **ReplicaInfo** 模型定义 - - **ConnectURL** (str) - 副本集的访问地址 - - **CreateTime** (int) - DB实例创建时间 - - **CrossZones** (list) - 跨用区列表 - - **DBVersion** (str) - 副本集的Mongodb的版本 - - **DataComputeType** (dict) - 见 **MongodbMachineType** 模型定义 - - **DataReplicaInfos** (list) - 见 **ReplicaInfo** 模型定义 - - **DeleteTime** (int) - DB实例删除时间 - - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 - - **EnableSSL** (int) - 是否开启了SSL;1->未开启 2->开启 - - **InstanceName** (str) - 实例名称 - - **MachineTypeId** (str) - 计算规格 - - **MongosComputeType** (dict) - 见 **MongodbMachineType** 模型定义 - - **MongosCount** (int) - Mongos节点数量,分片集有效 - - **MongosInfo** (list) - 见 **NodeInfo** 模型定义 - - **SSLExpirationTime** (int) - SSL到期时间 - - **ShardCount** (int) - 分片数量,分片集有效 - - **ShardNodeCount** (int) - 每分片节点数量,分片集有效 - - **State** (str) - 副本集/分片集群状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中,StartFailed:启动失败,Running:运行,Stopping:关闭中,Stopped:已关闭, StopFailed:关闭失败,Deleting:删除中,Deleted:已删除,DeleteFailed:删除失败,Restarting:重启中,RestartFailed:重启失败,Upgrading: 升降级中,UpgradeFailed: 升降级失败,Switching:主备切换中,UpdatingSSL:修改SSL中,UpdateSSLFail:修改SSL失败 - - **SubnetId** (str) - 子网ID - - **Tag** (str) - 实例业务组 - - **VPCId** (str) - VPC的ID - - **Zone** (str) - 可用区 - - **ZoneId** (int) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUMongoDBInstanceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUMongoDBInstance", d, **kwargs) - return apis.DescribeUMongoDBInstanceResponseSchema().loads(resp) - - def get_umon_go_db_backup_param( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUMongoDBBackupParam - 获取实例备份策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (dict) - 见 **BackupParam** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **BackupParam** - - **AutoBackupCopies** (int) - 自动备份保存份数 - - **AutoBackupToggleTime** (str) - 自动备份预期时间范围 (24小时制,精确到分钟,00:00~23:59) - - **AutoBackupToggleWeek** (str) - 自动备份预期周几 (1-7 表示 周一到周末,多个数据用','分割,eg: 3,7) - - **ClusterId** (str) - 实例ID - - **Disabled** (bool) - 是否禁用(false:未禁用;true:禁用) - - **ManualBackupCopies** (int) - 手动备份保存份数 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUMongoDBBackupParamRequestSchema().dumps(d) - - resp = self.invoke("GetUMongoDBBackupParam", d, **kwargs) - return apis.GetUMongoDBBackupParamResponseSchema().loads(resp) - - def get_umon_go_db_cfg_temp_item( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUMongoDBCfgTempItem - 获取配置模板内容 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **TemplateId** (str) - (Required) 配置模板Id - - **Response** - - - **DataSet** (list) - 见 **ConfigTemplateItem** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **ConfigOptions** - - **AllowedApplyType** (str) - 允许应用类型 - - **Description** (str) - 描述 - - **EnableDisplay** (bool) - 是否前端展示 - - **EnableModify** (bool) - 是否可修改 - - **ForceRestart** (bool) - 是否需重启 - - **IsDefaultOption** (bool) - 是否为默认选项 - - **MongodbVersion** (str) - mongo版本 - - **OptionDefaultValue** (str) - 默认值 - - **OptionFormatType** (str) - 选项值格式 - - **OptionName** (str) - 配置选项名 - - **OptionValueType** (str) - 配置选项类型 string,int,bool - - **OptionValues** (str) - 配置选项值范围 - - - **ConfigTemplateItem** - - **ConfigName** (str) - 配置名称 - - **ConfigOption** (dict) - 见 **ConfigOptions** 模型定义 - - **ConfigValue** (str) - 配置值 - - **CreateTime** (int) - 创建时间 - - **ItemId** (str) - itemId - - **ModifyTime** (int) - 修改时间 - - **NodeType** (str) - 节点类型: DataNode:数据节点 | ConfigSrvNode:配置节点 | MongosNode:路由节点 - - **TemplateId** (str) - 模板ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUMongoDBCfgTempItemRequestSchema().dumps(d) - - resp = self.invoke("GetUMongoDBCfgTempItem", d, **kwargs) - return apis.GetUMongoDBCfgTempItemResponseSchema().loads(resp) - - def get_umon_go_db_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUMongoDBLog - 查询某一段时间内集群节点的错误日志或慢查询日志 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Begin** (int) - (Required) 查询的日志开始的时间戳(Unix Timestamp)。对于实时查询,这个参数应该是上次轮询请求时的时间戳,后台会返回从该值到当前时间的日志内容 - - **ClusterId** (str) - (Required) 集群id - - **LogType** (str) - (Required) 日志类型:SlowLog,ErrorLog - - **NodeId** (str) - (Required) 节点id, 慢日志 mongos 节点不可选 - - **End** (int) - 查询日志的结束时间戳(Unix Timestamp),对于实时查询不传该值,与BeginTime的差值不超过24小时:(EndTime-BeginTime) < 24*60*60 - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **IsTruncate** (bool) - 是否已被截断 - - **Log** (str) - 查询到的日志内容,一段纯文本 - - **MaxLine** (int) - 支持的最大行数 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUMongoDBLogRequestSchema().dumps(d) - - resp = self.invoke("GetUMongoDBLog", d, **kwargs) - return apis.GetUMongoDBLogResponseSchema().loads(resp) - - def get_umon_go_db_recover_time_range( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUMongoDBRecoverTimeRange - 获取UMongoDB可回档时间范围 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **EarliestTime** (int) - 最早可回档时间点 - - **LatestTime** (int) - 最晚可回档时间点 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUMongoDBRecoverTimeRangeRequestSchema().dumps(d) - - resp = self.invoke("GetUMongoDBRecoverTimeRange", d, **kwargs) - return apis.GetUMongoDBRecoverTimeRangeResponseSchema().loads(resp) - - def list_umon_go_db_backup( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBBackup - 拉取实例备份列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **BackupInfo** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **BackupInfo** - - **BackupId** (str) - 备份ID - - **BackupName** (str) - 备份名称 - - **BackupSize** (int) - 备份数据大小 - - **BackupType** (str) - 备份类型 - - **BatchId** (str) - 批次id - - **ClusterId** (str) - 实例ID - - **DiskSize** (int) - 磁盘大小 - - **EndTime** (int) - 备份结束时间 - - **ReplicaType** (str) - 副本类型,ConfigRepl或者DataRepl - - **StartTime** (int) - 备份开始时间 - - **State** (str) - 备份状态 - - **VirtualClusterId** (str) - 虚拟节点id - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBBackupRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBBackup", d, **kwargs) - return apis.ListUMongoDBBackupResponseSchema().loads(resp) - - def list_umon_go_db_config_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBConfigTemplate - 拉取配置模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **ConfigTemplate** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **ConfigTemplate** - - **ClusterType** (str) - 集群类型 - - **CreateTime** (int) - 创建时间 - - **DeleteTime** (int) - 删除时间 - - **Description** (str) - 模板描述 - - **ModifyTime** (int) - 修改时间 - - **MongodbVersion** (str) - mongo版本 - - **TemplateId** (str) - 模板ID - - **TemplateName** (str) - 模板名称 - - **TemplateType** (str) - 模板类型 UsersTemplate DefaultTemplate - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBConfigTemplateRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBConfigTemplate", d, **kwargs) - return apis.ListUMongoDBConfigTemplateResponseSchema().loads(resp) - - def list_umon_go_db_instances( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBInstances - 获取副本集/分片集群列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - 集群ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **MongodbInstance** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **MongodbMachineType** - - **Cpu** (int) - cpu核数 - - **Description** (str) - 配置简称 2C4G - - **Group** (str) - 配置分组,2m , 4m - - **MachineTypeId** (str) - 机器类型ID o.mongo2m.medium,o.mongo2m.xlarge - - **Memory** (int) - 内存用量(GB) - - **UHhostMachineType** (str) - 机器类型,N/O - - - **MongodbInstance** - - **ClusterId** (str) - 副本集/分片集群ID - - **ClusterType** (str) - 集群类型,ReplicaSet :副本集,SharedCluster:分片集 - - **ConnectURL** (str) - 副本集/分片集群的访问地址 - - **CreateTime** (int) - 副本集/分片集群的创建时间 - - **CrossZones** (list) - 跨可用区列表 - - **DBVersion** (str) - 副本集/分片集群的Mongodb的版本,包括MongoDB-3.6, MongoDB-4.2 - - **DataComputeType** (dict) - 见 **MongodbMachineType** 模型定义 - - **DiskSpace** (int) - 数据节点磁盘空间(GB) - - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 - - **IPv6ConnectURL** (str) - 副本集/分片集IPv6访问地址 - - **Name** (str) - 副本集/分片集群实例名称 - - **State** (str) - 副本集/分片集群状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中,StartFailed:启动失败,Running:运行,Stopping:关闭中,Stopped:已关闭, StopFailed:关闭失败,Deleting:删除中,Deleted:已删除,DeleteFailed:删除失败,Restarting:重启中,RestartFailed:重启失败,Upgrading: 升降级中,UpgradeFailed: 升降级失败,Switching:主备切换中 - - **SubnetId** (str) - 子网ID - - **Tag** (str) - 业务组 - - **VPCId** (str) - VPC的ID - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBInstancesRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBInstances", d, **kwargs) - return apis.ListUMongoDBInstancesResponseSchema().loads(resp) - - def list_umon_go_db_log_package( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBLogPackage - 日志打包列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **NodeId** (str) - 节点id - - **Response** - - - **DataSet** (list) - 见 **PackageInfo** 模型定义 - - **Response Model** - - **PackageInfo** - - **Begin** (int) - 开始时间 - - **ClusterId** (str) - 集群id - - **CreateTime** (int) - 创建时间 - - **End** (int) - 结束时间 - - **FinishTime** (int) - 完成时间 - - **Id** (int) - id - - **Name** (str) - 名称 - - **NodeId** (str) - 节点id - - **PackageType** (str) - SlowLog,ErrorLog - - **Role** (str) - 角色 - - **Size** (int) - 大小,单位字节 - - **State** (str) - Package_Running,Package_Success,Package_Failed,Package_Deleting,Package_Deleted,Package_DeleteFailed - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBLogPackageRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBLogPackage", d, **kwargs) - return apis.ListUMongoDBLogPackageResponseSchema().loads(resp) - - def list_umon_go_db_machine_spec( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBMachineSpec - 获取UMongoDB支持机器类型列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ClassType** (str) - 机型,如O - - **DiskType** (str) - 磁盘类型,如CLOUD_RSSD - - **Response** - - - **DataSet** (list) - 见 **MongodbMachineSpec** 模型定义 - - **Response Model** - - **MongodbMachineType** - - **Cpu** (int) - cpu核数 - - **Description** (str) - 配置简称 2C4G - - **Group** (str) - 配置分组,2m , 4m - - **MachineTypeId** (str) - 机器类型ID o.mongo2m.medium,o.mongo2m.xlarge - - **Memory** (int) - 内存用量(GB) - - **UHhostMachineType** (str) - 机器类型,N/O - - - **MongodbMachineSpec** - - **ClassType** (str) - 规格类型;O | N - - **ComputeType** (list) - 见 **MongodbMachineType** 模型定义 - - **DefaultMachineType** (dict) - 见 **MongodbMachineType** 模型定义 - - **DiskType** (list) - 磁盘类型;CLOUD_RSSD | CLOUD_SSD | LOCAL_SSD - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBMachineSpecRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBMachineSpec", d, **kwargs) - return apis.ListUMongoDBMachineSpecResponseSchema().loads(resp) - - def list_umon_go_db_machine_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBMachineType - 获取UmongDB支持机器类型列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **MongodbMachineType** 模型定义 - - **Response Model** - - **MongodbMachineType** - - **Cpu** (int) - cpu核数 - - **Description** (str) - 配置简称 2C4G - - **Group** (str) - 配置分组,2m , 4m - - **MachineTypeId** (str) - 机器类型ID o.mongo2m.medium,o.mongo2m.xlarge - - **Memory** (int) - 内存用量(GB) - - **UHhostMachineType** (str) - 机器类型,N/O - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBMachineTypeRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBMachineType", d, **kwargs) - return apis.ListUMongoDBMachineTypeResponseSchema().loads(resp) - - def list_umon_go_db_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUMongoDBVersion - 获取UMongoDB支持版本列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **MongoDBVersion** 模型定义 - - **Response Model** - - **MongoDBVersion** - - **DBVersion** (str) - MongoDB版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUMongoDBVersionRequestSchema().dumps(d) - - resp = self.invoke("ListUMongoDBVersion", d, **kwargs) - return apis.ListUMongoDBVersionResponseSchema().loads(resp) - - def modify_umon_go_db_admin_password( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUMongoDBAdminPassword - 修改MongoDB集群root密码 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Password** (str) - (Required) 集群新密码(密码格式使用BASE64编码) - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUMongoDBAdminPasswordRequestSchema().dumps(d) - - resp = self.invoke("ModifyUMongoDBAdminPassword", d, **kwargs) - return apis.ModifyUMongoDBAdminPasswordResponseSchema().loads(resp) - - def modify_umon_go_db_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUMongoDBAttribute - 修改MongoDB集群名称 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Name** (str) - 集群新名称(输入长度为6~63位名称) - - **RemarkName** (str) - 集群备注(Name和RemarkName必传其一) - - **Response** - - - **Message** (str) - 返回错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUMongoDBAttributeRequestSchema().dumps(d) - - resp = self.invoke("ModifyUMongoDBAttribute", d, **kwargs) - return apis.ModifyUMongoDBAttributeResponseSchema().loads(resp) - - def modify_umon_go_db_backup_param( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUMongoDBBackupParam - 修改实例备份策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **AutoBackupToggleTime** (str) - 自动备份预期开始时间范围(00:00~23:59),默认 5:00~6:00 - - **AutoBackupToggleWeek** (str) - 自动备份预期星期几(1~7),默认 3,7 (周三,周日) - - **Disabled** (bool) - 是否禁用,true:禁用;false:开启 - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ModifyUMongoDBBackupParamRequestSchema().dumps(d) - - resp = self.invoke("ModifyUMongoDBBackupParam", d, **kwargs) - return apis.ModifyUMongoDBBackupParamResponseSchema().loads(resp) - - def resize_umon_go_db_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResizeUMongoDBInstance - 集群配置升降级 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群资源ID - - **DiskSpace** (int) - 集群数据节点磁盘配置 - - **MachineTypeId** (str) - 集群数据节点机型配置 - - **MongosMachineTypeId** (str) - 集群Mongos节点机型配置 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ResizeUMongoDBInstanceRequestSchema().dumps(d) - - resp = self.invoke("ResizeUMongoDBInstance", d, **kwargs) - return apis.ResizeUMongoDBInstanceResponseSchema().loads(resp) - - def restart_umon_go_db_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RestartUMongoDBCluster - 重启集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterId** (str) - 集群ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RestartUMongoDBClusterRequestSchema().dumps(d) - - resp = self.invoke("RestartUMongoDBCluster", d, **kwargs) - return apis.RestartUMongoDBClusterResponseSchema().loads(resp) - - def start_umon_go_db_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartUMongoDBCluster - 启动集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterId** (str) - 集群ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartUMongoDBClusterRequestSchema().dumps(d) - - resp = self.invoke("StartUMongoDBCluster", d, **kwargs) - return apis.StartUMongoDBClusterResponseSchema().loads(resp) - - def stop_umon_go_db_cluster( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopUMongoDBCluster - 停止集群 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ClusterId** (str) - (Required) 集群ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **ClusterId** (str) - 集群ID - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopUMongoDBClusterRequestSchema().dumps(d) - - resp = self.invoke("StopUMongoDBCluster", d, **kwargs) - return apis.StopUMongoDBClusterResponseSchema().loads(resp) diff --git a/ucloud/services/umongodb/schemas/__init__.py b/ucloud/services/umongodb/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/umongodb/schemas/apis.py b/ucloud/services/umongodb/schemas/apis.py deleted file mode 100644 index 9e2ac062..00000000 --- a/ucloud/services/umongodb/schemas/apis.py +++ /dev/null @@ -1,789 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.umongodb.schemas import models - -""" UMongoDB API Schema -""" - - -""" -API: BackupUMongoDBCluster - -备份集群数据库 -""" - - -class BackupUMongoDBClusterRequestSchema(schema.RequestSchema): - """BackupUMongoDBCluster - 备份集群数据库""" - - fields = { - "BackupName": fields.Str(required=True, dump_to="BackupName"), - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class BackupUMongoDBClusterResponseSchema(schema.ResponseSchema): - """BackupUMongoDBCluster - 备份集群数据库""" - - fields = { - "BackupId": fields.Str(required=True, load_from="BackupId"), - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: BackupUMongoDBLog - -日志打包 -""" - - -class BackupUMongoDBLogRequestSchema(schema.RequestSchema): - """BackupUMongoDBLog - 日志打包""" - - fields = { - "Begin": fields.Int(required=True, dump_to="Begin"), - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "End": fields.Int(required=True, dump_to="End"), - "LogType": fields.Str(required=True, dump_to="LogType"), - "Name": fields.Str(required=True, dump_to="Name"), - "NodeId": fields.Str(required=True, dump_to="NodeId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class BackupUMongoDBLogResponseSchema(schema.ResponseSchema): - """BackupUMongoDBLog - 日志打包""" - - fields = {} - - -""" -API: CreateUMongoDBConfigTemplate - -创建配置模板 -""" - - -class CreateUMongoDBConfigTemplateRequestSchema(schema.RequestSchema): - """CreateUMongoDBConfigTemplate - 创建配置模板""" - - fields = { - "BaseTemplateId": fields.Str(required=True, dump_to="BaseTemplateId"), - "ClusterType": fields.Str(required=True, dump_to="ClusterType"), - "Description": fields.Str(required=False, dump_to="Description"), - "MongodbVersion": fields.Str(required=True, dump_to="MongodbVersion"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TemplateName": fields.Str(required=True, dump_to="TemplateName"), - } - - -class CreateUMongoDBConfigTemplateResponseSchema(schema.ResponseSchema): - """CreateUMongoDBConfigTemplate - 创建配置模板""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "TemplateId": fields.Str(required=True, load_from="TemplateId"), - } - - -""" -API: CreateUMongoDBReplSet - -创建一个Mongodb副本集群 -""" - - -class CreateUMongoDBReplSetParamSecGroupIdSchema(schema.RequestSchema): - """CreateUMongoDBReplSetParamSecGroupId -""" - - fields = { - "Id": fields.Str(required=False, dump_to="Id"), - "Priority": fields.Int(required=False, dump_to="Priority"), - } - - -class CreateUMongoDBReplSetParamLabelsSchema(schema.RequestSchema): - """CreateUMongoDBReplSetParamLabels -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - } - - -class CreateUMongoDBReplSetRequestSchema(schema.RequestSchema): - """CreateUMongoDBReplSet - 创建一个Mongodb副本集群""" - - fields = { - "AdminPassword": fields.Str(required=True, dump_to="AdminPassword"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CrossZones": fields.List(fields.Str()), - "DBVersion": fields.Str(required=True, dump_to="DBVersion"), - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "Labels": fields.List(CreateUMongoDBReplSetParamLabelsSchema()), - "ListenPort": fields.Int(required=False, dump_to="ListenPort"), - "MachineTypeId": fields.Str(required=True, dump_to="MachineTypeId"), - "Name": fields.Str(required=True, dump_to="Name"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecGroupId": fields.List(CreateUMongoDBReplSetParamSecGroupIdSchema()), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUMongoDBReplSetResponseSchema(schema.ResponseSchema): - """CreateUMongoDBReplSet - 创建一个Mongodb副本集群""" - - fields = {} - - -""" -API: CreateUMongoDBShardedCluster - -创建一个Mongodb分片集群 -""" - - -class CreateUMongoDBShardedClusterParamSecGroupIdSchema(schema.RequestSchema): - """CreateUMongoDBShardedClusterParamSecGroupId -""" - - fields = { - "Id": fields.Str(required=False, dump_to="Id"), - "Priority": fields.Int(required=False, dump_to="Priority"), - } - - -class CreateUMongoDBShardedClusterParamLabelsSchema(schema.RequestSchema): - """CreateUMongoDBShardedClusterParamLabels -""" - - fields = { - "Key": fields.Str(required=False, dump_to="Key"), - "Value": fields.Str(required=False, dump_to="Value"), - } - - -class CreateUMongoDBShardedClusterRequestSchema(schema.RequestSchema): - """CreateUMongoDBShardedCluster - 创建一个Mongodb分片集群""" - - fields = { - "AdminPassword": fields.Str(required=True, dump_to="AdminPassword"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "DBVersion": fields.Str(required=True, dump_to="DBVersion"), - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "Labels": fields.List(CreateUMongoDBShardedClusterParamLabelsSchema()), - "ListenPort": fields.Int(required=False, dump_to="ListenPort"), - "MachineTypeId": fields.Str(required=True, dump_to="MachineTypeId"), - "MongosMachineTypeId": fields.Str( - required=False, dump_to="MongosMachineTypeId" - ), - "MongosNodeCount": fields.Int(required=True, dump_to="MongosNodeCount"), - "Name": fields.Str(required=True, dump_to="Name"), - "NodeCount": fields.Int(required=True, dump_to="NodeCount"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "SecGroupId": fields.List( - CreateUMongoDBShardedClusterParamSecGroupIdSchema() - ), - "ShardCount": fields.Int(required=True, dump_to="ShardCount"), - "SubnetId": fields.Str(required=False, dump_to="SubnetId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "TemplateId": fields.Str(required=False, dump_to="TemplateId"), - "VPCId": fields.Str(required=False, dump_to="VPCId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUMongoDBShardedClusterResponseSchema(schema.ResponseSchema): - """CreateUMongoDBShardedCluster - 创建一个Mongodb分片集群""" - - fields = {} - - -""" -API: DescribeUMongoDBBackupURL - -获取实例备份下载链接 -""" - - -class DescribeUMongoDBBackupURLRequestSchema(schema.RequestSchema): - """DescribeUMongoDBBackupURL - 获取实例备份下载链接""" - - fields = { - "BackupId": fields.Str(required=False, dump_to="BackupId"), - "Category": fields.Str(required=False, dump_to="Category"), - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "PackageId": fields.Int(required=False, dump_to="PackageId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ValidTime": fields.Int(required=False, dump_to="ValidTime"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeUMongoDBBackupURLResponseSchema(schema.ResponseSchema): - """DescribeUMongoDBBackupURL - 获取实例备份下载链接""" - - fields = { - "InternetAddress": fields.Str( - required=True, load_from="InternetAddress" - ), - "IntranetAddress": fields.Str( - required=True, load_from="IntranetAddress" - ), - } - - -""" -API: DescribeUMongoDBInstance - -描述MongoDB实例 -""" - - -class DescribeUMongoDBInstanceRequestSchema(schema.RequestSchema): - """DescribeUMongoDBInstance - 描述MongoDB实例""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ClusterType": fields.Str(required=False, dump_to="ClusterType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class DescribeUMongoDBInstanceResponseSchema(schema.ResponseSchema): - """DescribeUMongoDBInstance - 描述MongoDB实例""" - - fields = { - "ClusterInfo": models.ClusterInfoSchema(), - } - - -""" -API: GetUMongoDBBackupParam - -获取实例备份策略 -""" - - -class GetUMongoDBBackupParamRequestSchema(schema.RequestSchema): - """GetUMongoDBBackupParam - 获取实例备份策略""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUMongoDBBackupParamResponseSchema(schema.ResponseSchema): - """GetUMongoDBBackupParam - 获取实例备份策略""" - - fields = { - "DataSet": models.BackupParamSchema(), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUMongoDBCfgTempItem - -获取配置模板内容 -""" - - -class GetUMongoDBCfgTempItemRequestSchema(schema.RequestSchema): - """GetUMongoDBCfgTempItem - 获取配置模板内容""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "TemplateId": fields.Str(required=True, dump_to="TemplateId"), - } - - -class GetUMongoDBCfgTempItemResponseSchema(schema.ResponseSchema): - """GetUMongoDBCfgTempItem - 获取配置模板内容""" - - fields = { - "DataSet": fields.List( - models.ConfigTemplateItemSchema(), - required=True, - load_from="DataSet", - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUMongoDBLog - -查询某一段时间内集群节点的错误日志或慢查询日志 -""" - - -class GetUMongoDBLogRequestSchema(schema.RequestSchema): - """GetUMongoDBLog - 查询某一段时间内集群节点的错误日志或慢查询日志""" - - fields = { - "Begin": fields.Int(required=True, dump_to="Begin"), - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "End": fields.Int(required=False, dump_to="End"), - "LogType": fields.Str(required=True, dump_to="LogType"), - "NodeId": fields.Str(required=True, dump_to="NodeId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class GetUMongoDBLogResponseSchema(schema.ResponseSchema): - """GetUMongoDBLog - 查询某一段时间内集群节点的错误日志或慢查询日志""" - - fields = { - "IsTruncate": fields.Bool(required=False, load_from="IsTruncate"), - "Log": fields.Str(required=True, load_from="Log"), - "MaxLine": fields.Int(required=False, load_from="MaxLine"), - } - - -""" -API: GetUMongoDBRecoverTimeRange - -获取UMongoDB可回档时间范围 -""" - - -class GetUMongoDBRecoverTimeRangeRequestSchema(schema.RequestSchema): - """GetUMongoDBRecoverTimeRange - 获取UMongoDB可回档时间范围""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUMongoDBRecoverTimeRangeResponseSchema(schema.ResponseSchema): - """GetUMongoDBRecoverTimeRange - 获取UMongoDB可回档时间范围""" - - fields = { - "EarliestTime": fields.Int(required=True, load_from="EarliestTime"), - "LatestTime": fields.Int(required=True, load_from="LatestTime"), - } - - -""" -API: ListUMongoDBBackup - -拉取实例备份列表 -""" - - -class ListUMongoDBBackupRequestSchema(schema.RequestSchema): - """ListUMongoDBBackup - 拉取实例备份列表""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUMongoDBBackupResponseSchema(schema.ResponseSchema): - """ListUMongoDBBackup - 拉取实例备份列表""" - - fields = { - "DataSet": fields.List( - models.BackupInfoSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUMongoDBConfigTemplate - -拉取配置模板 -""" - - -class ListUMongoDBConfigTemplateRequestSchema(schema.RequestSchema): - """ListUMongoDBConfigTemplate - 拉取配置模板""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ListUMongoDBConfigTemplateResponseSchema(schema.ResponseSchema): - """ListUMongoDBConfigTemplate - 拉取配置模板""" - - fields = { - "DataSet": fields.List( - models.ConfigTemplateSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ListUMongoDBInstances - -获取副本集/分片集群列表 -""" - - -class ListUMongoDBInstancesRequestSchema(schema.RequestSchema): - """ListUMongoDBInstances - 获取副本集/分片集群列表""" - - fields = { - "ClusterId": fields.Str(required=False, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListUMongoDBInstancesResponseSchema(schema.ResponseSchema): - """ListUMongoDBInstances - 获取副本集/分片集群列表""" - - fields = { - "DataSet": fields.List( - models.MongodbInstanceSchema(), required=False, load_from="DataSet" - ), - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: ListUMongoDBLogPackage - -日志打包列表 -""" - - -class ListUMongoDBLogPackageRequestSchema(schema.RequestSchema): - """ListUMongoDBLogPackage - 日志打包列表""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "NodeId": fields.Str(required=False, dump_to="NodeId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUMongoDBLogPackageResponseSchema(schema.ResponseSchema): - """ListUMongoDBLogPackage - 日志打包列表""" - - fields = { - "DataSet": fields.List( - models.PackageInfoSchema(), required=True, load_from="DataSet" - ), - } - - -""" -API: ListUMongoDBMachineSpec - -获取UMongoDB支持机器类型列表 -""" - - -class ListUMongoDBMachineSpecRequestSchema(schema.RequestSchema): - """ListUMongoDBMachineSpec - 获取UMongoDB支持机器类型列表""" - - fields = { - "ClassType": fields.Str(required=False, dump_to="ClassType"), - "DiskType": fields.Str(required=False, dump_to="DiskType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUMongoDBMachineSpecResponseSchema(schema.ResponseSchema): - """ListUMongoDBMachineSpec - 获取UMongoDB支持机器类型列表""" - - fields = { - "DataSet": fields.List( - models.MongodbMachineSpecSchema(), - required=True, - load_from="DataSet", - ), - } - - -""" -API: ListUMongoDBMachineType - -获取UmongDB支持机器类型列表 -""" - - -class ListUMongoDBMachineTypeRequestSchema(schema.RequestSchema): - """ListUMongoDBMachineType - 获取UmongDB支持机器类型列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUMongoDBMachineTypeResponseSchema(schema.ResponseSchema): - """ListUMongoDBMachineType - 获取UmongDB支持机器类型列表""" - - fields = { - "DataSet": fields.List( - models.MongodbMachineTypeSchema(), - required=True, - load_from="DataSet", - ), - } - - -""" -API: ListUMongoDBVersion - -获取UMongoDB支持版本列表 -""" - - -class ListUMongoDBVersionRequestSchema(schema.RequestSchema): - """ListUMongoDBVersion - 获取UMongoDB支持版本列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUMongoDBVersionResponseSchema(schema.ResponseSchema): - """ListUMongoDBVersion - 获取UMongoDB支持版本列表""" - - fields = { - "DataSet": fields.List( - models.MongoDBVersionSchema(), required=True, load_from="DataSet" - ), - } - - -""" -API: ModifyUMongoDBAdminPassword - -修改MongoDB集群root密码 -""" - - -class ModifyUMongoDBAdminPasswordRequestSchema(schema.RequestSchema): - """ModifyUMongoDBAdminPassword - 修改MongoDB集群root密码""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ModifyUMongoDBAdminPasswordResponseSchema(schema.ResponseSchema): - """ModifyUMongoDBAdminPassword - 修改MongoDB集群root密码""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUMongoDBAttribute - -修改MongoDB集群名称 -""" - - -class ModifyUMongoDBAttributeRequestSchema(schema.RequestSchema): - """ModifyUMongoDBAttribute - 修改MongoDB集群名称""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RemarkName": fields.Str(required=False, dump_to="RemarkName"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ModifyUMongoDBAttributeResponseSchema(schema.ResponseSchema): - """ModifyUMongoDBAttribute - 修改MongoDB集群名称""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUMongoDBBackupParam - -修改实例备份策略 -""" - - -class ModifyUMongoDBBackupParamRequestSchema(schema.RequestSchema): - """ModifyUMongoDBBackupParam - 修改实例备份策略""" - - fields = { - "AutoBackupToggleTime": fields.Str( - required=False, dump_to="AutoBackupToggleTime" - ), - "AutoBackupToggleWeek": fields.Str( - required=False, dump_to="AutoBackupToggleWeek" - ), - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "Disabled": fields.Bool(required=False, dump_to="Disabled"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ModifyUMongoDBBackupParamResponseSchema(schema.ResponseSchema): - """ModifyUMongoDBBackupParam - 修改实例备份策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ResizeUMongoDBInstance - -集群配置升降级 -""" - - -class ResizeUMongoDBInstanceRequestSchema(schema.RequestSchema): - """ResizeUMongoDBInstance - 集群配置升降级""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "DiskSpace": fields.Int(required=False, dump_to="DiskSpace"), - "MachineTypeId": fields.Str(required=False, dump_to="MachineTypeId"), - "MongosMachineTypeId": fields.Str( - required=False, dump_to="MongosMachineTypeId" - ), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - } - - -class ResizeUMongoDBInstanceResponseSchema(schema.ResponseSchema): - """ResizeUMongoDBInstance - 集群配置升降级""" - - fields = {} - - -""" -API: RestartUMongoDBCluster - -重启集群 -""" - - -class RestartUMongoDBClusterRequestSchema(schema.RequestSchema): - """RestartUMongoDBCluster - 重启集群""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class RestartUMongoDBClusterResponseSchema(schema.ResponseSchema): - """RestartUMongoDBCluster - 重启集群""" - - fields = { - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - } - - -""" -API: StartUMongoDBCluster - -启动集群 -""" - - -class StartUMongoDBClusterRequestSchema(schema.RequestSchema): - """StartUMongoDBCluster - 启动集群""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StartUMongoDBClusterResponseSchema(schema.ResponseSchema): - """StartUMongoDBCluster - 启动集群""" - - fields = { - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: StopUMongoDBCluster - -停止集群 -""" - - -class StopUMongoDBClusterRequestSchema(schema.RequestSchema): - """StopUMongoDBCluster - 停止集群""" - - fields = { - "ClusterId": fields.Str(required=True, dump_to="ClusterId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StopUMongoDBClusterResponseSchema(schema.ResponseSchema): - """StopUMongoDBCluster - 停止集群""" - - fields = { - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/umongodb/schemas/models.py b/ucloud/services/umongodb/schemas/models.py deleted file mode 100644 index 5f5e44f1..00000000 --- a/ucloud/services/umongodb/schemas/models.py +++ /dev/null @@ -1,285 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class MongodbMachineTypeSchema(schema.ResponseSchema): - """MongodbMachineType -""" - - fields = { - "Cpu": fields.Int(required=True, load_from="Cpu"), - "Description": fields.Str(required=True, load_from="Description"), - "Group": fields.Str(required=False, load_from="Group"), - "MachineTypeId": fields.Str(required=True, load_from="MachineTypeId"), - "Memory": fields.Int(required=True, load_from="Memory"), - "UHhostMachineType": fields.Str( - required=False, load_from="UHhostMachineType" - ), - } - - -class DiskInfoSchema(schema.ResponseSchema): - """DiskInfo - 磁盘信息""" - - fields = { - "DiskId": fields.Str(required=False, load_from="DiskId"), - "DiskSize": fields.Int(required=False, load_from="DiskSize"), - } - - -class NodeInfoSchema(schema.ResponseSchema): - """NodeInfo - 节点信息""" - - fields = { - "ClusterId": fields.Str(required=False, load_from="ClusterId"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - "DataDisk": DiskInfoSchema(), - "MachineType": fields.Str(required=False, load_from="MachineType"), - "MachineTypeId": fields.Str(required=False, load_from="MachineTypeId"), - "NodeId": fields.Str(required=False, load_from="NodeId"), - "NodeRole": fields.Str(required=False, load_from="NodeRole"), - "NodeType": fields.Str(required=False, load_from="NodeType"), - "State": fields.Str(required=False, load_from="State"), - "SysDisk": DiskInfoSchema(), - "VirtualClusterId": fields.Str( - required=False, load_from="VirtualClusterId" - ), - "Zone": fields.Str(required=False, load_from="Zone"), - "ZoneId": fields.Int(required=False, load_from="ZoneId"), - } - - -class ReplicaInfoSchema(schema.ResponseSchema): - """ReplicaInfo - 副本集群信息""" - - fields = { - "ClusterId": fields.Str(required=False, load_from="ClusterId"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DeleteTime": fields.Int(required=False, load_from="DeleteTime"), - "IsolationGroupId": fields.Str( - required=False, load_from="IsolationGroupId" - ), - "MachineType": fields.Str(required=False, load_from="MachineType"), - "MachineTypeId": fields.Str(required=False, load_from="MachineTypeId"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "NodeCount": fields.Int(required=False, load_from="NodeCount"), - "NodeInfos": fields.List(NodeInfoSchema()), - "ReplicaId": fields.Str(required=False, load_from="ReplicaId"), - "ReplicaType": fields.Str(required=False, load_from="ReplicaType"), - "State": fields.Str(required=False, load_from="State"), - } - - -class ClusterInfoSchema(schema.ResponseSchema): - """ClusterInfo - 集群信息""" - - fields = { - "ClusterId": fields.Str(required=False, load_from="ClusterId"), - "ClusterType": fields.Str(required=False, load_from="ClusterType"), - "ConfigComputeType": MongodbMachineTypeSchema(), - "ConfigMachineType": fields.Str( - required=False, load_from="ConfigMachineType" - ), - "ConfigNodeCount": fields.Int( - required=False, load_from="ConfigNodeCount" - ), - "ConfigReplicaInfo": ReplicaInfoSchema(), - "ConnectURL": fields.Str(required=False, load_from="ConnectURL"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "CrossZones": fields.List(fields.Str()), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - "DataComputeType": MongodbMachineTypeSchema(), - "DataReplicaInfos": fields.List(ReplicaInfoSchema()), - "DeleteTime": fields.Int(required=False, load_from="DeleteTime"), - "DiskSpace": fields.Int(required=False, load_from="DiskSpace"), - "EnableSSL": fields.Int(required=False, load_from="EnableSSL"), - "InstanceName": fields.Str(required=False, load_from="InstanceName"), - "MachineTypeId": fields.Str(required=False, load_from="MachineTypeId"), - "MongosComputeType": MongodbMachineTypeSchema(), - "MongosCount": fields.Int(required=False, load_from="MongosCount"), - "MongosInfo": fields.List(NodeInfoSchema()), - "SSLExpirationTime": fields.Int( - required=False, load_from="SSLExpirationTime" - ), - "ShardCount": fields.Int(required=False, load_from="ShardCount"), - "ShardNodeCount": fields.Int( - required=False, load_from="ShardNodeCount" - ), - "State": fields.Str(required=False, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Zone": fields.Str(required=False, load_from="Zone"), - "ZoneId": fields.Int(required=False, load_from="ZoneId"), - } - - -class BackupParamSchema(schema.ResponseSchema): - """BackupParam - 备份策略模型""" - - fields = { - "AutoBackupCopies": fields.Int( - required=False, load_from="AutoBackupCopies" - ), - "AutoBackupToggleTime": fields.Str( - required=False, load_from="AutoBackupToggleTime" - ), - "AutoBackupToggleWeek": fields.Str( - required=False, load_from="AutoBackupToggleWeek" - ), - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "Disabled": fields.Bool(required=False, load_from="Disabled"), - "ManualBackupCopies": fields.Int( - required=False, load_from="ManualBackupCopies" - ), - } - - -class ConfigOptionsSchema(schema.ResponseSchema): - """ConfigOptions - 配置选项""" - - fields = { - "AllowedApplyType": fields.Str( - required=False, load_from="AllowedApplyType" - ), - "Description": fields.Str(required=False, load_from="Description"), - "EnableDisplay": fields.Bool(required=False, load_from="EnableDisplay"), - "EnableModify": fields.Bool(required=False, load_from="EnableModify"), - "ForceRestart": fields.Bool(required=False, load_from="ForceRestart"), - "IsDefaultOption": fields.Bool( - required=False, load_from="IsDefaultOption" - ), - "MongodbVersion": fields.Str( - required=False, load_from="MongodbVersion" - ), - "OptionDefaultValue": fields.Str( - required=False, load_from="OptionDefaultValue" - ), - "OptionFormatType": fields.Str( - required=False, load_from="OptionFormatType" - ), - "OptionName": fields.Str(required=False, load_from="OptionName"), - "OptionValueType": fields.Str( - required=False, load_from="OptionValueType" - ), - "OptionValues": fields.Str(required=False, load_from="OptionValues"), - } - - -class ConfigTemplateItemSchema(schema.ResponseSchema): - """ConfigTemplateItem - 配置模板项""" - - fields = { - "ConfigName": fields.Str(required=False, load_from="ConfigName"), - "ConfigOption": ConfigOptionsSchema(), - "ConfigValue": fields.Str(required=False, load_from="ConfigValue"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ItemId": fields.Str(required=False, load_from="ItemId"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "NodeType": fields.Str(required=False, load_from="NodeType"), - "TemplateId": fields.Str(required=False, load_from="TemplateId"), - } - - -class BackupInfoSchema(schema.ResponseSchema): - """BackupInfo - 备份数据模型""" - - fields = { - "BackupId": fields.Str(required=True, load_from="BackupId"), - "BackupName": fields.Str(required=False, load_from="BackupName"), - "BackupSize": fields.Int(required=False, load_from="BackupSize"), - "BackupType": fields.Str(required=False, load_from="BackupType"), - "BatchId": fields.Str(required=False, load_from="BatchId"), - "ClusterId": fields.Str(required=False, load_from="ClusterId"), - "DiskSize": fields.Int(required=False, load_from="DiskSize"), - "EndTime": fields.Int(required=False, load_from="EndTime"), - "ReplicaType": fields.Str(required=False, load_from="ReplicaType"), - "StartTime": fields.Int(required=False, load_from="StartTime"), - "State": fields.Str(required=False, load_from="State"), - "VirtualClusterId": fields.Str( - required=False, load_from="VirtualClusterId" - ), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class ConfigTemplateSchema(schema.ResponseSchema): - """ConfigTemplate - 配置模板""" - - fields = { - "ClusterType": fields.Str(required=False, load_from="ClusterType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DeleteTime": fields.Int(required=False, load_from="DeleteTime"), - "Description": fields.Str(required=False, load_from="Description"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "MongodbVersion": fields.Str( - required=False, load_from="MongodbVersion" - ), - "TemplateId": fields.Str(required=False, load_from="TemplateId"), - "TemplateName": fields.Str(required=False, load_from="TemplateName"), - "TemplateType": fields.Str(required=False, load_from="TemplateType"), - } - - -class MongodbInstanceSchema(schema.ResponseSchema): - """MongodbInstance - 集群信息""" - - fields = { - "ClusterId": fields.Str(required=True, load_from="ClusterId"), - "ClusterType": fields.Str(required=True, load_from="ClusterType"), - "ConnectURL": fields.Str(required=True, load_from="ConnectURL"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "CrossZones": fields.List(fields.Str()), - "DBVersion": fields.Str(required=True, load_from="DBVersion"), - "DataComputeType": MongodbMachineTypeSchema(), - "DiskSpace": fields.Int(required=False, load_from="DiskSpace"), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "IPv6ConnectURL": fields.Str( - required=False, load_from="IPv6ConnectURL" - ), - "Name": fields.Str(required=True, load_from="Name"), - "State": fields.Str(required=True, load_from="State"), - "SubnetId": fields.Str(required=False, load_from="SubnetId"), - "Tag": fields.Str(required=False, load_from="Tag"), - "VPCId": fields.Str(required=False, load_from="VPCId"), - "Zone": fields.Str(required=True, load_from="Zone"), - } - - -class PackageInfoSchema(schema.ResponseSchema): - """PackageInfo - 打包模型""" - - fields = { - "Begin": fields.Int(required=False, load_from="Begin"), - "ClusterId": fields.Str(required=False, load_from="ClusterId"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "End": fields.Int(required=False, load_from="End"), - "FinishTime": fields.Int(required=False, load_from="FinishTime"), - "Id": fields.Int(required=False, load_from="Id"), - "Name": fields.Str(required=False, load_from="Name"), - "NodeId": fields.Str(required=False, load_from="NodeId"), - "PackageType": fields.Str(required=False, load_from="PackageType"), - "Role": fields.Str(required=False, load_from="Role"), - "Size": fields.Int(required=False, load_from="Size"), - "State": fields.Str(required=False, load_from="State"), - } - - -class MongodbMachineSpecSchema(schema.ResponseSchema): - """MongodbMachineSpec - 规格类型""" - - fields = { - "ClassType": fields.Str(required=False, load_from="ClassType"), - "ComputeType": fields.List(MongodbMachineTypeSchema()), - "DefaultMachineType": MongodbMachineTypeSchema(), - "DiskType": fields.List(fields.Str()), - } - - -class MongoDBVersionSchema(schema.ResponseSchema): - """MongoDBVersion -""" - - fields = { - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - } diff --git a/ucloud/services/unet/__init__.py b/ucloud/services/unet/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/unet/schemas/__init__.py b/ucloud/services/unet/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/unvs/__init__.py b/ucloud/services/unvs/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/unvs/schemas/__init__.py b/ucloud/services/unvs/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/upfs/__init__.py b/ucloud/services/upfs/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/upfs/client.py b/ucloud/services/upfs/client.py deleted file mode 100644 index 89b956fa..00000000 --- a/ucloud/services/upfs/client.py +++ /dev/null @@ -1,252 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.upfs.schemas import apis - - -class UPFSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UPFSClient, self).__init__(config, transport, middleware, logger) - - def create_upfs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPFSVolume - 创建UPFS文件系统 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **ProtocolType** (str) - (Required) 文件系统协议,目前仅支持POSIX - - **Size** (int) - (Required) 文件系统大小,单位为GB,必须为100的整数倍,Size最小为500GB - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 计费模式,枚举值为: Year,按年付费; Month,按月付费 - - **CouponId** (str) - 使用的代金券id - - **Quantity** (int) - 购买时长 默认: 1 - - **Remark** (str) - 备注 - - **Tag** (str) - 文件系统所属业务组 - - **VolumeName** (str) - 文件系统名称 - - **Response** - - - **VolumeId** (str) - UPFS文件系统ID - - **VolumeName** (str) - UPFS文件系统名称 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUPFSVolumeRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPFSVolume", d, **kwargs) - return apis.CreateUPFSVolumeResponseSchema().loads(resp) - - def describe_upfs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPFSVolume - 获取UPFS文件系统列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Limit** (int) - 文件列表长度 - - **Offset** (int) - 文件列表起始 - - **VolumeId** (str) - 文件系统ID - - **Response** - - - **DataSet** (list) - 见 **UPFSVolumeInfo** 模型定义 - - **TotalCount** (int) - UPFS文件系统总数 - - **Response Model** - - **UPFSVolumeInfo** - - **ChargeType** (str) - 计费类型 - - **CreateTime** (int) - 文件系统创建时间(unix时间戳) - - **ExpiredTime** (int) - 文件系统过期时间(unix时间戳) - - **IsExpired** (str) - 是否过期 - - **MountAddress** (str) - 文件系统挂载地址 - - **MountStatus** (int) - 文件系统挂载状态 - - **ProtocolType** (str) - 文件系统协议类型 - - **Remark** (str) - 文件系统备注信息 - - **Size** (int) - 文件系统大小,单位GB - - **Tag** (str) - 文件系统所属业务组 - - **VolumeId** (str) - 文件系统ID - - **VolumeName** (str) - 文件系统名称 - - **Zone** (str) - 可用区名字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUPFSVolumeRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPFSVolume", d, **kwargs) - return apis.DescribeUPFSVolumeResponseSchema().loads(resp) - - def describe_upfs_volume_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPFSVolumePrice - 获取UPFS文件系统价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (int) - (Required) 文件系统大小,单位为GB,新架构容量型最小容量为500GB,以100GB递增,最大不超过100TB。 - - **ChargeType** (str) - Year, Month默认: Month - - **Quantity** (int) - 购买UPFS的时长, 默认为1 - - **VolumeId** (str) - UPFS文件系统id,第一次创建文件系统时不需要传这个参数 - - **Response** - - - **DataSet** (list) - 见 **UPFSPriceDataSet** 模型定义 - - **Response Model** - - **UPFSPriceDataSet** - - **ChargeName** (str) - “upfs” - - **ChargeType** (str) - Year, Month - - **OriginalPrice** (float) - 原价格 (单位: 分) - - **Price** (float) - 价格 (单位: 分) - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUPFSVolumePriceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPFSVolumePrice", d, **kwargs) - return apis.DescribeUPFSVolumePriceResponseSchema().loads(resp) - - def describe_upfs_volume_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPFSVolumeUpgradePrice - UPFS文件系统扩容价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (str) - (Required) 文件系统大小 - - **VolumeId** (str) - (Required) 文件系统ID - - **Response** - - - **OriginalPrice** (float) - 原价格(单位:分) - - **Price** (float) - 价格(单位:分) - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUPFSVolumeUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPFSVolumeUpgradePrice", d, **kwargs) - return apis.DescribeUPFSVolumeUpgradePriceResponseSchema().loads(resp) - - def extend_upfs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ExtendUPFSVolume - UPFS文件系统扩容 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Size** (int) - (Required) 文件系统大小,单位为GB,最小为6000GB,最大为10PB,必须为1000的整数倍 - - **VolumeId** (str) - (Required) 文件系统ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ExtendUPFSVolumeRequestSchema().dumps(d) - - resp = self.invoke("ExtendUPFSVolume", d, **kwargs) - return apis.ExtendUPFSVolumeResponseSchema().loads(resp) - - def remove_upfs_volume( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RemoveUPFSVolume - 删除UPFS文件系统 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VolumeId** (str) - (Required) 文件系统ID - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RemoveUPFSVolumeRequestSchema().dumps(d) - - resp = self.invoke("RemoveUPFSVolume", d, **kwargs) - return apis.RemoveUPFSVolumeResponseSchema().loads(resp) - - def update_upfs_volume_info( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUPFSVolumeInfo - 更改UPFS文件系统相关信息(名称/备注) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **VolumeId** (str) - (Required) UPFS文件系统ID - - **Remark** (str) - UPFS文件系统备注(文件系统名称/备注至少传入其中一个) - - **VolumeName** (str) - UPFS文件系统名称(文件系统名称/备注至少传入其中一个) - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateUPFSVolumeInfoRequestSchema().dumps(d) - - resp = self.invoke("UpdateUPFSVolumeInfo", d, **kwargs) - return apis.UpdateUPFSVolumeInfoResponseSchema().loads(resp) diff --git a/ucloud/services/upfs/schemas/__init__.py b/ucloud/services/upfs/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/upfs/schemas/apis.py b/ucloud/services/upfs/schemas/apis.py deleted file mode 100644 index 90823277..00000000 --- a/ucloud/services/upfs/schemas/apis.py +++ /dev/null @@ -1,204 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.upfs.schemas import models - -""" UPFS API Schema -""" - - -""" -API: CreateUPFSVolume - -创建UPFS文件系统 -""" - - -class CreateUPFSVolumeRequestSchema(schema.RequestSchema): - """CreateUPFSVolume - 创建UPFS文件系统""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ProtocolType": fields.Str(required=True, dump_to="ProtocolType"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Size": fields.Int(required=True, dump_to="Size"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "VolumeName": fields.Str(required=False, dump_to="VolumeName"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUPFSVolumeResponseSchema(schema.ResponseSchema): - """CreateUPFSVolume - 创建UPFS文件系统""" - - fields = { - "VolumeId": fields.Str(required=True, load_from="VolumeId"), - "VolumeName": fields.Str(required=True, load_from="VolumeName"), - } - - -""" -API: DescribeUPFSVolume - -获取UPFS文件系统列表 -""" - - -class DescribeUPFSVolumeRequestSchema(schema.RequestSchema): - """DescribeUPFSVolume - 获取UPFS文件系统列表""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VolumeId": fields.Str(required=False, dump_to="VolumeId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DescribeUPFSVolumeResponseSchema(schema.ResponseSchema): - """DescribeUPFSVolume - 获取UPFS文件系统列表""" - - fields = { - "DataSet": fields.List( - models.UPFSVolumeInfoSchema(), required=True, load_from="DataSet" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUPFSVolumePrice - -获取UPFS文件系统价格 -""" - - -class DescribeUPFSVolumePriceRequestSchema(schema.RequestSchema): - """DescribeUPFSVolumePrice - 获取UPFS文件系统价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Int(required=True, dump_to="Size"), - "VolumeId": fields.Str(required=False, dump_to="VolumeId"), - } - - -class DescribeUPFSVolumePriceResponseSchema(schema.ResponseSchema): - """DescribeUPFSVolumePrice - 获取UPFS文件系统价格""" - - fields = { - "DataSet": fields.List( - models.UPFSPriceDataSetSchema(), required=False, load_from="DataSet" - ), - } - - -""" -API: DescribeUPFSVolumeUpgradePrice - -UPFS文件系统扩容价格 -""" - - -class DescribeUPFSVolumeUpgradePriceRequestSchema(schema.RequestSchema): - """DescribeUPFSVolumeUpgradePrice - UPFS文件系统扩容价格""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Str(required=True, dump_to="Size"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - } - - -class DescribeUPFSVolumeUpgradePriceResponseSchema(schema.ResponseSchema): - """DescribeUPFSVolumeUpgradePrice - UPFS文件系统扩容价格""" - - fields = { - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - "Price": fields.Float(required=True, load_from="Price"), - } - - -""" -API: ExtendUPFSVolume - -UPFS文件系统扩容 -""" - - -class ExtendUPFSVolumeRequestSchema(schema.RequestSchema): - """ExtendUPFSVolume - UPFS文件系统扩容""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Size": fields.Int(required=True, dump_to="Size"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ExtendUPFSVolumeResponseSchema(schema.ResponseSchema): - """ExtendUPFSVolume - UPFS文件系统扩容""" - - fields = {} - - -""" -API: RemoveUPFSVolume - -删除UPFS文件系统 -""" - - -class RemoveUPFSVolumeRequestSchema(schema.RequestSchema): - """RemoveUPFSVolume - 删除UPFS文件系统""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - } - - -class RemoveUPFSVolumeResponseSchema(schema.ResponseSchema): - """RemoveUPFSVolume - 删除UPFS文件系统""" - - fields = {} - - -""" -API: UpdateUPFSVolumeInfo - -更改UPFS文件系统相关信息(名称/备注) -""" - - -class UpdateUPFSVolumeInfoRequestSchema(schema.RequestSchema): - """UpdateUPFSVolumeInfo - 更改UPFS文件系统相关信息(名称/备注)""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "VolumeId": fields.Str(required=True, dump_to="VolumeId"), - "VolumeName": fields.Str(required=False, dump_to="VolumeName"), - } - - -class UpdateUPFSVolumeInfoResponseSchema(schema.ResponseSchema): - """UpdateUPFSVolumeInfo - 更改UPFS文件系统相关信息(名称/备注)""" - - fields = {} diff --git a/ucloud/services/upfs/schemas/models.py b/ucloud/services/upfs/schemas/models.py deleted file mode 100644 index 98663e85..00000000 --- a/ucloud/services/upfs/schemas/models.py +++ /dev/null @@ -1,36 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class UPFSVolumeInfoSchema(schema.ResponseSchema): - """UPFSVolumeInfo - UPFS文件系统信息""" - - fields = { - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "IsExpired": fields.Str(required=False, load_from="IsExpired"), - "MountAddress": fields.Str(required=False, load_from="MountAddress"), - "MountStatus": fields.Int(required=False, load_from="MountStatus"), - "ProtocolType": fields.Str(required=False, load_from="ProtocolType"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Size": fields.Int(required=False, load_from="Size"), - "Tag": fields.Str(required=False, load_from="Tag"), - "VolumeId": fields.Str(required=False, load_from="VolumeId"), - "VolumeName": fields.Str(required=False, load_from="VolumeName"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class UPFSPriceDataSetSchema(schema.ResponseSchema): - """UPFSPriceDataSet - upfs 价格信息""" - - fields = { - "ChargeName": fields.Str(required=False, load_from="ChargeName"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "OriginalPrice": fields.Float( - required=False, load_from="OriginalPrice" - ), - "Price": fields.Float(required=False, load_from="Price"), - } diff --git a/ucloud/services/upgsql/__init__.py b/ucloud/services/upgsql/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/upgsql/client.py b/ucloud/services/upgsql/client.py deleted file mode 100644 index 36b589f0..00000000 --- a/ucloud/services/upgsql/client.py +++ /dev/null @@ -1,1007 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.upgsql.schemas import apis - - -class UPgSQLClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UPgSQLClient, self).__init__( - config, transport, middleware, logger - ) - - def backup_u_pg_sql_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BackupUPgSQLLog - 备份日志包 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackupFile** (str) - (Required) 备份查询结果文件名称 - - **BackupName** (str) - (Required) 备份导出文件名称 - - **InstanceID** (str) - (Required) 资源ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BeginTime** (int) - 日志开始时间 - - **EndTime** (int) - 日志结束时间 - - **LogType** (str) - 日志类型:slow(慢日志),error(错误日志) - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.BackupUPgSQLLogRequestSchema().dumps(d) - - resp = self.invoke("BackupUPgSQLLog", d, **kwargs) - return apis.BackupUPgSQLLogResponseSchema().loads(resp) - - def create_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPgSQLInstance - 创建PG云数据库 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AdminPassword** (str) - (Required) 管理员密码 - - **DBVersion** (str) - (Required) PostgreSQL的版本,pg10.4:postgresql-10.4,pg13.4:postgresql-13.4 - - **DiskSpace** (str) - (Required) 磁盘空间(GB) - - **MachineType** (str) - (Required) 机器配置类型,2核4G的机器:o.pgsql2m.medium - - **Name** (str) - (Required) 实例名称,至少6位 - - **ParamGroupID** (int) - (Required) DB实例使用的配置参数组id - - **Port** (int) - (Required) 端口默认为5432 - - **SubnetID** (str) - (Required) 子网ID - - **VPCID** (str) - (Required) VPC的ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 默认是"Normal" - - **Response** - - - **InstanceID** (str) - 资源ID - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUPgSQLInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPgSQLInstance", d, **kwargs) - return apis.CreateUPgSQLInstanceResponseSchema().loads(resp) - - def create_u_pg_sql_param_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPgSQLParamTemplate - 创建PG参数模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DBVersion** (str) - (Required) 什么版本,以及类型的DB - - **GroupName** (str) - (Required) 模板名称 - - **SrcGroupID** (int) - (Required) 基准模板 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Description** (str) - 描述信息 - - **Response** - - - **GroupID** (int) - 创建的模板ID - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUPgSQLParamTemplateRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPgSQLParamTemplate", d, **kwargs) - return apis.CreateUPgSQLParamTemplateResponseSchema().loads(resp) - - def create_u_pg_sql_readonly( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPgSQLReadonly - 创建PG从库 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskSpace** (int) - (Required) 磁盘空间 - - **MachineType** (str) - (Required) 机器配置类型,2核4G的机器:o.pgsql2m.medium - - **Name** (str) - (Required) Db名称 - - **Port** (int) - (Required) DB端口 - - **SrcInstanceID** (str) - (Required) 同步的源库 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **SubnetID** (str) - 子网ID - - **VPCID** (str) - VPCID - - **Response** - - - **InstanceID** (str) - 资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.CreateUPgSQLReadonlyRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPgSQLReadonly", d, **kwargs) - return apis.CreateUPgSQLReadonlyResponseSchema().loads(resp) - - def delete_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPgSQLInstance - 删除PG实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPgSQLInstance", d, **kwargs) - return apis.DeleteUPgSQLInstanceResponseSchema().loads(resp) - - def delete_u_pg_sql_param_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPgSQLParamTemplate - 删除参数模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **GroupID** (int) - (Required) 模板ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DeleteUPgSQLParamTemplateRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPgSQLParamTemplate", d, **kwargs) - return apis.DeleteUPgSQLParamTemplateResponseSchema().loads(resp) - - def download_u_pg_sql_param_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DownloadUPgSQLParamTemplate - 下载参数模板信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **GroupID** (int) - (Required) 参数模板id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Content** (str) - base64编码过的 - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DownloadUPgSQLParamTemplateRequestSchema().dumps(d) - - resp = self.invoke("DownloadUPgSQLParamTemplate", d, **kwargs) - return apis.DownloadUPgSQLParamTemplateResponseSchema().loads(resp) - - def get_u_pg_sql_backup_strategy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLBackupStrategy - 获取备份策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) DB实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **BackupMethod** (str) - 默认的备份方式 - - **BackupTimeRange** (str) - 自动备份预计开始时间范围 - - **BackupWeek** (str) - 自动备份预期星期几(1~7)开始 - - **Message** (str) - 返回的详细信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLBackupStrategyRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLBackupStrategy", d, **kwargs) - return apis.GetUPgSQLBackupStrategyResponseSchema().loads(resp) - - def get_u_pg_sql_backup_url( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLBackupURL - 获取备份下载地址 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BackupID** (str) - (Required) 备份Id - - **InstanceID** (str) - (Required) DB实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **BackupPath** (str) - DB实例备份文件公网的地址 - - **InnerBackupPath** (str) - DB实例备份文件内网的地址 - - **Message** (str) - 返回的详细信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLBackupURLRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLBackupURL", d, **kwargs) - return apis.GetUPgSQLBackupURLResponseSchema().loads(resp) - - def get_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLInstance - 获取PG云数据库实例描述 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 资源ID - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (dict) - 见 **UDBInstance** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **UDBInstance** - - **AdminUser** (str) - 管理员帐户名,默认root - - **BackupBeginTime** (int) - 备份开始时间,单位小时计,默认3点 - - **BackupCount** (int) - 备份文件保留的数量,默认7次 - - **BackupDate** (str) - 用于设置备份策略的备份日期标记位。共7位,每一位为一周中一天的备份情况 0表示关闭当天备份,1表示打开当天备份。最右边的一位 为星期天的备份开关,其余从右到左依次为星期一到星期 六的备份配置开关,每周必须至少设置两天备份。 例如:1100000 表示打开星期六和星期五的自动备份功能 - - **BackupTimeRange** (int) - 备份的时间段,范围[0,23] - - **BackupZone** (str) - 跨可用区高可用备库所在可用区 - - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 - - **DBVersion** (str) - DB 版本 - - **DataFileSize** (float) - DB实例数据文件大小,单位GB - - **DiskSpace** (int) - 磁盘空间(GB), 默认根据配置机型 - - **DiskUsedSize** (float) - DB实例磁盘已使用空间,单位GB - - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 - - **IP** (str) - DBip - - **InstanceID** (str) - DB实例id - - **InstanceMode** (str) - Normal/HA,普通/高可用 - - **LogFileSize** (float) - DB实例日志文件大小,单位GB - - **MemoryLimit** (int) - 内存限制(MB),默认根据配置机型 - - **ModifyTime** (int) - DB实例修改时间,采用UTC计时时间戳 - - **Name** (str) - 实例名称 - - **ParamGroupID** (int) - DB实例使用的配置参数组id - - **Port** (int) - DB port - - **Remark** (str) - 备注 - - **State** (str) - DB状态标记 Init:初始化中,Fail:安装失败,Starting:启动中,Running:运行,Shutdown:关闭中,Shutoff:已关闭,Delete:已删除,Upgrading:升级中,Promoting:提升为独库进行中,Recovering:恢复中,Recover fail:恢复失败 - - **SubnetID** (str) - 子网ID - - **SystemFileSize** (float) - DB实例系统文件大小,单位GB - - **VPCID** (str) - VPC的ID - - **Zone** (str) - DB实例所在可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLInstance", d, **kwargs) - return apis.GetUPgSQLInstanceResponseSchema().loads(resp) - - def get_u_pg_sql_instance_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLInstanceLog - 可以查询DB的错误日志和满查询日志 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **AccountID** (int) - (Required) - - **BeginTime** (int) - (Required) 起始时间,需使用时间戳 - - **CompanyID** (int) - (Required) - - **DBId** (str) - (Required) 实例ClusterID - - **EndTime** (int) - (Required) 结束时间,需使用时间戳,结束时间需大于起始时间 - - **LogType** (str) - (Required) 日志类型 - - **ZoneID** (int) - (Required) 可用区 - - **Response** - - - **Log** (str) - 返回的日志信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLInstanceLogRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLInstanceLog", d, **kwargs) - return apis.GetUPgSQLInstanceLogResponseSchema().loads(resp) - - def get_u_pg_sql_instance_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLInstancePrice - 获取创建PG云数据库价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskSpace** (int) - (Required) 磁盘空间(GB) - - **InstanceMode** (str) - (Required) UDB实例模式类型, 可选值如下: "Normal": 普通版UDB实例 "HA": 高可用版UDB实例 - - **MachineType** (str) - (Required) 机器配置类型 参考2C4G机器:o.pgsql2m.medium - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ChargeType** (str) - 计费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限)。默认为月付 - - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 - - **Response** - - - **PriceSet** (list) - 见 **UPgSQLInstancePriceSet** 模型定义 - - **Response Model** - - **UPgSQLInstancePriceSet** - - **ChargeType** (str) - 计费类型,Year,Month,Dynamic。 - - **OriginalPrice** (float) - 购买原价,单位:元。 - - **Price** (float) - 实际价格,单位:元,保留小数点后两位有效数字。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLInstancePriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLInstancePrice", d, **kwargs) - return apis.GetUPgSQLInstancePriceResponseSchema().loads(resp) - - def get_u_pg_sql_param_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLParamTemplate - 获取模板信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **GroupID** (int) - (Required) 模板ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Data** (list) - 见 **Param** 模型定义 - - **Message** (str) - 描述信息 - - **Response Model** - - **Param** - - **AllowedVal** (str) - 允许的值 - - **ApplyType** (int) - 允许类型 - - **FormatType** (int) - 参数格式类型 - - **Key** (str) - 参数Key - - **Modifiable** (bool) - 是否可以修改 - - **Value** (str) - 参数值 - - **ValueType** (int) - 值类型 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLParamTemplateRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLParamTemplate", d, **kwargs) - return apis.GetUPgSQLParamTemplateResponseSchema().loads(resp) - - def get_u_pg_sql_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPgSQLUpgradePrice - 获取 PG 云数据库升降级价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskSpace** (int) - (Required) 磁盘空间(GB) - - **InstanceID** (str) - (Required) 资源ID - - **MachineType** (str) - (Required) 机器配置类型 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **InstanceMode** (str) - UDB实例模式类型, 可选值如下: "normal": 普通版UDB实例 "ha": 高可用版UDB实例 默认是"normal" - - **Response** - - - **OriginalPrice** (float) - 限时优惠的折前原价 - - **Price** (float) - 规格调整差价。精确到小数点后2位。 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.GetUPgSQLUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPgSQLUpgradePrice", d, **kwargs) - return apis.GetUPgSQLUpgradePriceResponseSchema().loads(resp) - - def list_u_pg_sql_backup( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUPgSQLBackup - 获取备份列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) DB实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BackupType** (int) - 备份类型,默认值是0(0:表示全部,1:自动备份,2:手动备份 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **Response** - - - **DataSet** (list) - 见 **UPgSQLBackup** 模型定义 - - **Message** (str) - 返回的详细信息 - - **TotalCount** (int) - 总个数 - - **Response Model** - - **UPgSQLBackup** - - **BackupEndTime** (int) - 备份完成时间(Unix时间戳) - - **BackupID** (str) - 备份id - - **BackupName** (str) - 备份名称 - - **BackupSize** (int) - 备份文件大小(字节) - - **BackupStartTime** (int) - 备份时间(Unix时间戳) - - **BackupType** (int) - 备份类型,手动或者自动 - - **InstanceID** (str) - DB实例Id - - **Region** (str) - 备份所在地域 - - **State** (str) - 备份状态 (Backuping:备份中,Success:备份成功, Failed:备份失败, Expired:备份过期) - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUPgSQLBackupRequestSchema().dumps(d) - - resp = self.invoke("ListUPgSQLBackup", d, **kwargs) - return apis.ListUPgSQLBackupResponseSchema().loads(resp) - - def list_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUPgSQLInstance - 获取PG云数据库列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **UDBInstanceSet** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **UDBInstanceSet** - - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 - - **DBVersion** (str) - 实例的版本,包括postgresql-10.4,postgresql-13.4 - - **DataSet** (list) - 见 **UDBReadonlyInstance** 模型定义 - - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 - - **IP** (str) - DB实例ip - - **InstanceID** (str) - 资源ID - - **InstanceMode** (str) - normal/ha/readonly,普通/高可用/只读从库 - - **MachineType** (str) - 机器规格,格式为nCmG,n代表cpu核数,m代表内存大小(GB) - - **Name** (str) - 实例名称 - - **Remark** (str) - 备注 - - **State** (str) - 实例状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中, Running:运行,Stopping:关闭中,Stopped:已关闭,Deleted: 已删除,Upgrading: 升级中 ,Promoting:提升为主库进行中,Recovering:恢复中,RecoverFailed:恢复失败,StartFailed:启动失败,ShutdownFailed:关闭失败,Deleting:删除中,DeleteFailed:删除失败 - - **SubnetID** (str) - 子网ID - - **VPCID** (str) - VPC的ID - - **Zone** (str) - 可用区 - - - **UDBReadonlyInstance** - - **CreateTime** (int) - DB实例创建时间,采用UTC计时时间戳 - - **DBVersion** (str) - 实例的版本,包括postgresql-10.4,postgresql-13.4 - - **ExpiredTime** (int) - DB实例过期时间,采用UTC计时时间戳 - - **IP** (str) - DB实例ip - - **InstanceID** (str) - 资源ID - - **InstanceMode** (str) - normal/ha/readonly,普通/高可用/只读从库 - - **MachineType** (str) - 机器规格,格式为nCmG,n代表cpu核数,m代表内存大小(GB) - - **Name** (str) - 实例名称 - - **Remark** (str) - 备注 - - **State** (str) - 实例状态标记 Initing:初始化中,InitFailed:安装失败,Starting:启动中, Running:运行,Stopping:关闭中,Stopped:已关闭,Deleted: 已删除,Upgrading: 升级中 ,Promoting:提升为主库进行中,Recovering:恢复中,RecoverFailed:恢复失败,StartFailed:启动失败,ShutdownFailed:关闭失败,Deleting:删除中,DeleteFailed:删除失败 - - **SubnetID** (str) - 子网ID - - **VPCID** (str) - VPC的ID - - **Zone** (str) - 可用区 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("ListUPgSQLInstance", d, **kwargs) - return apis.ListUPgSQLInstanceResponseSchema().loads(resp) - - def list_u_pg_sql_log( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUPgSQLLog - 获取数据库日志 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **BeginTime** (int) - (Required) 查询的日志开始的时间戳 - - **EndTime** (int) - (Required) 查询日志的结束时间戳 - - **InstanceID** (str) - (Required) 资源ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **LogSet** 模型定义 - - **Message** (str) - 错误信息 - - **Response Model** - - **LogSet** - - **BeginTime** (int) - - - **EndTime** (int) - - - **Name** (str) - - - **Size** (int) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUPgSQLLogRequestSchema().dumps(d) - - resp = self.invoke("ListUPgSQLLog", d, **kwargs) - return apis.ListUPgSQLLogResponseSchema().loads(resp) - - def list_u_pg_sql_machine_type( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUPgSQLMachineType - 获取UPgSQL支持机器类型列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **PgSQLMachineType** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **PgSQLMachineType** - - **Cpu** (int) - cpu核数 - - **Description** (str) - 格式为nCmG,n代表cpu核数,m代表内存大小(GB) - - **ID** (str) - 机器类型ID - - **Memory** (int) - 内存用量(GB) - - **Os** (str) - 机器类型,N/O - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUPgSQLMachineTypeRequestSchema().dumps(d) - - resp = self.invoke("ListUPgSQLMachineType", d, **kwargs) - return apis.ListUPgSQLMachineTypeResponseSchema().loads(resp) - - def list_u_pg_sql_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ListUPgSQLVersion - 获取UPgSQL支持版本列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **DataSet** (list) - 见 **PgSQLVersion** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **PgSQLVersion** - - **Available** (str) - 2位二进制控制是否开放单点和高可用,前一位控制单点是否开放,后一位控制高可用,例如"01"代表只开放高可用,"10"代表只开放单点,"11"代表全开放 - - **DBVersion** (str) - PgSQL版本 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.ListUPgSQLVersionRequestSchema().dumps(d) - - resp = self.invoke("ListUPgSQLVersion", d, **kwargs) - return apis.ListUPgSQLVersionResponseSchema().loads(resp) - - def restart_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RestartUPgSQLInstance - 重启PG实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ForceToRestart** (bool) - 是否强制重启 - - **RestartHost** (bool) - 是否一并重启主机 - - **Response** - - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.RestartUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("RestartUPgSQLInstance", d, **kwargs) - return apis.RestartUPgSQLInstanceResponseSchema().loads(resp) - - def start_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StartUPgSQLInstance - 启动 PG实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StartUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("StartUPgSQLInstance", d, **kwargs) - return apis.StartUPgSQLInstanceResponseSchema().loads(resp) - - def stop_u_pg_sql_creating_readonly( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopUPgSQLCreatingReadonly - 停止创建从库 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 停止创建从库 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopUPgSQLCreatingReadonlyRequestSchema().dumps(d) - - resp = self.invoke("StopUPgSQLCreatingReadonly", d, **kwargs) - return apis.StopUPgSQLCreatingReadonlyResponseSchema().loads(resp) - - def stop_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """StopUPgSQLInstance - 关闭PG实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) 实例ID - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **ForceToStop** (bool) - 是否强制关闭 - - **StopHost** (bool) - 是否将主机一并关闭 - - **Response** - - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.StopUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("StopUPgSQLInstance", d, **kwargs) - return apis.StopUPgSQLInstanceResponseSchema().loads(resp) - - def update_u_pg_sql_attribute( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUPgSQLAttribute - 更新数据库属性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) DB实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Name** (str) - 新的db名字(不能为空字符串) - - **Remark** (str) - 新的备注信息 - - **Response** - - - **Message** (str) - 返回的详细信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateUPgSQLAttributeRequestSchema().dumps(d) - - resp = self.invoke("UpdateUPgSQLAttribute", d, **kwargs) - return apis.UpdateUPgSQLAttributeResponseSchema().loads(resp) - - def update_u_pg_sql_backup_strategy( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUPgSQLBackupStrategy - 修改备份策略 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) DB实例Id - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **BackupMethod** (str) - 选择默认的备份方式 - - **BackupTimeRange** (str) - 自动备份预计开始时间范围(00:00~23:59),例如:(3:00~4:00) - - **BackupWeek** (str) - 自动备份预期星期几(1~7)开始。默认1,2,3,4,5,6,7(星期一到星期日) - - **Response** - - - **Message** (str) - 返回的详细信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateUPgSQLBackupStrategyRequestSchema().dumps(d) - - resp = self.invoke("UpdateUPgSQLBackupStrategy", d, **kwargs) - return apis.UpdateUPgSQLBackupStrategyResponseSchema().loads(resp) - - def update_u_pg_sql_password( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUPgSQLPassword - 更新数据库密码 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **InstanceID** (str) - (Required) DB实例Id - - **Password** (str) - (Required) 新的db密码 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 返回的详细信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpdateUPgSQLPasswordRequestSchema().dumps(d) - - resp = self.invoke("UpdateUPgSQLPassword", d, **kwargs) - return apis.UpdateUPgSQLPasswordResponseSchema().loads(resp) - - def upgrade_u_pg_sql_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeUPgSQLInstance - 硬件规格升降级 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **DiskSpace** (int) - (Required) 磁盘空间(GB) - - **InstanceID** (str) - (Required) 资源ID - - **MachineType** (str) - (Required) 机器配置类型 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Response** - - - **Message** (str) - 错误信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UpgradeUPgSQLInstanceRequestSchema().dumps(d) - - resp = self.invoke("UpgradeUPgSQLInstance", d, **kwargs) - return apis.UpgradeUPgSQLInstanceResponseSchema().loads(resp) - - def upload_u_pg_sql_param_template( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UploadUPgSQLParamTemplate - 上传参数模板 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ - - **Content** (str) - (Required) base64编码过的 - - **DBVersion** (str) - (Required) 应用的DB版本 - - **GroupName** (str) - (Required) 模板名称 - - **Zone** (str) - (Required) 可用区。参见 `可用区列表 `_ - - **Description** (str) - 模板描述 - - **ParamGroupType** (str) - 版本 - - **Response** - - - **GroupID** (int) - 生成的模板ID - - **Message** (str) - 描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.UploadUPgSQLParamTemplateRequestSchema().dumps(d) - - resp = self.invoke("UploadUPgSQLParamTemplate", d, **kwargs) - return apis.UploadUPgSQLParamTemplateResponseSchema().loads(resp) diff --git a/ucloud/services/upgsql/schemas/__init__.py b/ucloud/services/upgsql/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/upgsql/schemas/apis.py b/ucloud/services/upgsql/schemas/apis.py deleted file mode 100644 index 22c2aed1..00000000 --- a/ucloud/services/upgsql/schemas/apis.py +++ /dev/null @@ -1,827 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.upgsql.schemas import models - -""" UPgSQL API Schema -""" - - -""" -API: BackupUPgSQLLog - -备份日志包 -""" - - -class BackupUPgSQLLogRequestSchema(schema.RequestSchema): - """BackupUPgSQLLog - 备份日志包""" - - fields = { - "BackupFile": fields.Str(required=True, dump_to="BackupFile"), - "BackupName": fields.Str(required=True, dump_to="BackupName"), - "BeginTime": fields.Int(required=False, dump_to="BeginTime"), - "EndTime": fields.Int(required=False, dump_to="EndTime"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "LogType": fields.Str(required=False, dump_to="LogType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class BackupUPgSQLLogResponseSchema(schema.ResponseSchema): - """BackupUPgSQLLog - 备份日志包""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUPgSQLInstance - -创建PG云数据库 -""" - - -class CreateUPgSQLInstanceRequestSchema(schema.RequestSchema): - """CreateUPgSQLInstance - 创建PG云数据库""" - - fields = { - "AdminPassword": fields.Str(required=True, dump_to="AdminPassword"), - "DBVersion": fields.Str(required=True, dump_to="DBVersion"), - "DiskSpace": fields.Str(required=True, dump_to="DiskSpace"), - "InstanceMode": fields.Str(required=False, dump_to="InstanceMode"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "Name": fields.Str(required=True, dump_to="Name"), - "ParamGroupID": fields.Int(required=True, dump_to="ParamGroupID"), - "Port": fields.Int(required=True, dump_to="Port"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SubnetID": fields.Str(required=True, dump_to="SubnetID"), - "VPCID": fields.Str(required=True, dump_to="VPCID"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """CreateUPgSQLInstance - 创建PG云数据库""" - - fields = { - "InstanceID": fields.Str(required=False, load_from="InstanceID"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUPgSQLParamTemplate - -创建PG参数模板 -""" - - -class CreateUPgSQLParamTemplateRequestSchema(schema.RequestSchema): - """CreateUPgSQLParamTemplate - 创建PG参数模板""" - - fields = { - "DBVersion": fields.Str(required=True, dump_to="DBVersion"), - "Description": fields.Str(required=False, dump_to="Description"), - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SrcGroupID": fields.Int(required=True, dump_to="SrcGroupID"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUPgSQLParamTemplateResponseSchema(schema.ResponseSchema): - """CreateUPgSQLParamTemplate - 创建PG参数模板""" - - fields = { - "GroupID": fields.Int(required=True, load_from="GroupID"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUPgSQLReadonly - -创建PG从库 -""" - - -class CreateUPgSQLReadonlyRequestSchema(schema.RequestSchema): - """CreateUPgSQLReadonly - 创建PG从库""" - - fields = { - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "Name": fields.Str(required=True, dump_to="Name"), - "Port": fields.Int(required=True, dump_to="Port"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "SrcInstanceID": fields.Str(required=True, dump_to="SrcInstanceID"), - "SubnetID": fields.Str(required=False, dump_to="SubnetID"), - "VPCID": fields.Str(required=False, dump_to="VPCID"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class CreateUPgSQLReadonlyResponseSchema(schema.ResponseSchema): - """CreateUPgSQLReadonly - 创建PG从库""" - - fields = { - "InstanceID": fields.Str(required=False, load_from="InstanceID"), - } - - -""" -API: DeleteUPgSQLInstance - -删除PG实例 -""" - - -class DeleteUPgSQLInstanceRequestSchema(schema.RequestSchema): - """DeleteUPgSQLInstance - 删除PG实例""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """DeleteUPgSQLInstance - 删除PG实例""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteUPgSQLParamTemplate - -删除参数模板 -""" - - -class DeleteUPgSQLParamTemplateRequestSchema(schema.RequestSchema): - """DeleteUPgSQLParamTemplate - 删除参数模板""" - - fields = { - "GroupID": fields.Int(required=True, dump_to="GroupID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DeleteUPgSQLParamTemplateResponseSchema(schema.ResponseSchema): - """DeleteUPgSQLParamTemplate - 删除参数模板""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DownloadUPgSQLParamTemplate - -下载参数模板信息 -""" - - -class DownloadUPgSQLParamTemplateRequestSchema(schema.RequestSchema): - """DownloadUPgSQLParamTemplate - 下载参数模板信息""" - - fields = { - "GroupID": fields.Int(required=True, dump_to="GroupID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class DownloadUPgSQLParamTemplateResponseSchema(schema.ResponseSchema): - """DownloadUPgSQLParamTemplate - 下载参数模板信息""" - - fields = { - "Content": fields.Str(required=True, load_from="Content"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUPgSQLBackupStrategy - -获取备份策略 -""" - - -class GetUPgSQLBackupStrategyRequestSchema(schema.RequestSchema): - """GetUPgSQLBackupStrategy - 获取备份策略""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUPgSQLBackupStrategyResponseSchema(schema.ResponseSchema): - """GetUPgSQLBackupStrategy - 获取备份策略""" - - fields = { - "BackupMethod": fields.Str(required=True, load_from="BackupMethod"), - "BackupTimeRange": fields.Str( - required=True, load_from="BackupTimeRange" - ), - "BackupWeek": fields.Str(required=True, load_from="BackupWeek"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUPgSQLBackupURL - -获取备份下载地址 -""" - - -class GetUPgSQLBackupURLRequestSchema(schema.RequestSchema): - """GetUPgSQLBackupURL - 获取备份下载地址""" - - fields = { - "BackupID": fields.Str(required=True, dump_to="BackupID"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUPgSQLBackupURLResponseSchema(schema.ResponseSchema): - """GetUPgSQLBackupURL - 获取备份下载地址""" - - fields = { - "BackupPath": fields.Str(required=True, load_from="BackupPath"), - "InnerBackupPath": fields.Str( - required=True, load_from="InnerBackupPath" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUPgSQLInstance - -获取PG云数据库实例描述 -""" - - -class GetUPgSQLInstanceRequestSchema(schema.RequestSchema): - """GetUPgSQLInstance - 获取PG云数据库实例描述""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class GetUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """GetUPgSQLInstance - 获取PG云数据库实例描述""" - - fields = { - "DataSet": models.UDBInstanceSchema(), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUPgSQLInstanceLog - -可以查询DB的错误日志和满查询日志 -""" - - -class GetUPgSQLInstanceLogRequestSchema(schema.RequestSchema): - """GetUPgSQLInstanceLog - 可以查询DB的错误日志和满查询日志""" - - fields = { - "AccountID": fields.Int(required=True, dump_to="AccountID"), - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "CompanyID": fields.Int(required=True, dump_to="CompanyID"), - "DBId": fields.Str(required=True, dump_to="DBId"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "LogType": fields.Str(required=True, dump_to="LogType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ZoneID": fields.Int(required=True, dump_to="ZoneID"), - } - - -class GetUPgSQLInstanceLogResponseSchema(schema.ResponseSchema): - """GetUPgSQLInstanceLog - 可以查询DB的错误日志和满查询日志""" - - fields = { - "Log": fields.Str(required=True, load_from="Log"), - } - - -""" -API: GetUPgSQLInstancePrice - -获取创建PG云数据库价格 -""" - - -class GetUPgSQLInstancePriceRequestSchema(schema.RequestSchema): - """GetUPgSQLInstancePrice - 获取创建PG云数据库价格""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "InstanceMode": fields.Str(required=True, dump_to="InstanceMode"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUPgSQLInstancePriceResponseSchema(schema.ResponseSchema): - """GetUPgSQLInstancePrice - 获取创建PG云数据库价格""" - - fields = { - "PriceSet": fields.List( - models.UPgSQLInstancePriceSetSchema(), - required=False, - load_from="PriceSet", - ), - } - - -""" -API: GetUPgSQLParamTemplate - -获取模板信息 -""" - - -class GetUPgSQLParamTemplateRequestSchema(schema.RequestSchema): - """GetUPgSQLParamTemplate - 获取模板信息""" - - fields = { - "GroupID": fields.Int(required=True, dump_to="GroupID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUPgSQLParamTemplateResponseSchema(schema.ResponseSchema): - """GetUPgSQLParamTemplate - 获取模板信息""" - - fields = { - "Data": fields.List( - models.ParamSchema(), required=False, load_from="Data" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: GetUPgSQLUpgradePrice - - 获取 PG 云数据库升降级价格 -""" - - -class GetUPgSQLUpgradePriceRequestSchema(schema.RequestSchema): - """GetUPgSQLUpgradePrice - 获取 PG 云数据库升降级价格""" - - fields = { - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "InstanceMode": fields.Str(required=False, dump_to="InstanceMode"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class GetUPgSQLUpgradePriceResponseSchema(schema.ResponseSchema): - """GetUPgSQLUpgradePrice - 获取 PG 云数据库升降级价格""" - - fields = { - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -""" -API: ListUPgSQLBackup - -获取备份列表 -""" - - -class ListUPgSQLBackupRequestSchema(schema.RequestSchema): - """ListUPgSQLBackup - 获取备份列表""" - - fields = { - "BackupType": fields.Int(required=False, dump_to="BackupType"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUPgSQLBackupResponseSchema(schema.ResponseSchema): - """ListUPgSQLBackup - 获取备份列表""" - - fields = { - "DataSet": fields.List( - models.UPgSQLBackupSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: ListUPgSQLInstance - -获取PG云数据库列表 -""" - - -class ListUPgSQLInstanceRequestSchema(schema.RequestSchema): - """ListUPgSQLInstance - 获取PG云数据库列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=False, dump_to="Zone"), - } - - -class ListUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """ListUPgSQLInstance - 获取PG云数据库列表""" - - fields = { - "DataSet": fields.List( - models.UDBInstanceSetSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ListUPgSQLLog - -获取数据库日志 -""" - - -class ListUPgSQLLogRequestSchema(schema.RequestSchema): - """ListUPgSQLLog - 获取数据库日志""" - - fields = { - "BeginTime": fields.Int(required=True, dump_to="BeginTime"), - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUPgSQLLogResponseSchema(schema.ResponseSchema): - """ListUPgSQLLog - 获取数据库日志""" - - fields = { - "DataSet": fields.List( - models.LogSetSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ListUPgSQLMachineType - -获取UPgSQL支持机器类型列表 -""" - - -class ListUPgSQLMachineTypeRequestSchema(schema.RequestSchema): - """ListUPgSQLMachineType - 获取UPgSQL支持机器类型列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUPgSQLMachineTypeResponseSchema(schema.ResponseSchema): - """ListUPgSQLMachineType - 获取UPgSQL支持机器类型列表""" - - fields = { - "DataSet": fields.List( - models.PgSQLMachineTypeSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ListUPgSQLVersion - -获取UPgSQL支持版本列表 -""" - - -class ListUPgSQLVersionRequestSchema(schema.RequestSchema): - """ListUPgSQLVersion - 获取UPgSQL支持版本列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class ListUPgSQLVersionResponseSchema(schema.ResponseSchema): - """ListUPgSQLVersion - 获取UPgSQL支持版本列表""" - - fields = { - "DataSet": fields.List( - models.PgSQLVersionSchema(), required=True, load_from="DataSet" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RestartUPgSQLInstance - -重启PG实例 -""" - - -class RestartUPgSQLInstanceRequestSchema(schema.RequestSchema): - """RestartUPgSQLInstance - 重启PG实例""" - - fields = { - "ForceToRestart": fields.Bool(required=False, dump_to="ForceToRestart"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "RestartHost": fields.Bool(required=False, dump_to="RestartHost"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class RestartUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """RestartUPgSQLInstance - 重启PG实例""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: StartUPgSQLInstance - -启动 PG实例 -""" - - -class StartUPgSQLInstanceRequestSchema(schema.RequestSchema): - """StartUPgSQLInstance - 启动 PG实例""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StartUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """StartUPgSQLInstance - 启动 PG实例""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: StopUPgSQLCreatingReadonly - -停止创建从库 -""" - - -class StopUPgSQLCreatingReadonlyRequestSchema(schema.RequestSchema): - """StopUPgSQLCreatingReadonly - 停止创建从库""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StopUPgSQLCreatingReadonlyResponseSchema(schema.ResponseSchema): - """StopUPgSQLCreatingReadonly - 停止创建从库""" - - fields = {} - - -""" -API: StopUPgSQLInstance - -关闭PG实例 -""" - - -class StopUPgSQLInstanceRequestSchema(schema.RequestSchema): - """StopUPgSQLInstance - 关闭PG实例""" - - fields = { - "ForceToStop": fields.Bool(required=False, dump_to="ForceToStop"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "StopHost": fields.Bool(required=False, dump_to="StopHost"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class StopUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """StopUPgSQLInstance - 关闭PG实例""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateUPgSQLAttribute - -更新数据库属性 -""" - - -class UpdateUPgSQLAttributeRequestSchema(schema.RequestSchema): - """UpdateUPgSQLAttribute - 更新数据库属性""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpdateUPgSQLAttributeResponseSchema(schema.ResponseSchema): - """UpdateUPgSQLAttribute - 更新数据库属性""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateUPgSQLBackupStrategy - -修改备份策略 -""" - - -class UpdateUPgSQLBackupStrategyRequestSchema(schema.RequestSchema): - """UpdateUPgSQLBackupStrategy - 修改备份策略""" - - fields = { - "BackupMethod": fields.Str(required=False, dump_to="BackupMethod"), - "BackupTimeRange": fields.Str( - required=False, dump_to="BackupTimeRange" - ), - "BackupWeek": fields.Str(required=False, dump_to="BackupWeek"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpdateUPgSQLBackupStrategyResponseSchema(schema.ResponseSchema): - """UpdateUPgSQLBackupStrategy - 修改备份策略""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateUPgSQLPassword - -更新数据库密码 -""" - - -class UpdateUPgSQLPasswordRequestSchema(schema.RequestSchema): - """UpdateUPgSQLPassword - 更新数据库密码""" - - fields = { - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "Password": fields.Str(required=True, dump_to="Password"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpdateUPgSQLPasswordResponseSchema(schema.ResponseSchema): - """UpdateUPgSQLPassword - 更新数据库密码""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpgradeUPgSQLInstance - -硬件规格升降级 -""" - - -class UpgradeUPgSQLInstanceRequestSchema(schema.RequestSchema): - """UpgradeUPgSQLInstance - 硬件规格升降级""" - - fields = { - "DiskSpace": fields.Int(required=True, dump_to="DiskSpace"), - "InstanceID": fields.Str(required=True, dump_to="InstanceID"), - "MachineType": fields.Str(required=True, dump_to="MachineType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UpgradeUPgSQLInstanceResponseSchema(schema.ResponseSchema): - """UpgradeUPgSQLInstance - 硬件规格升降级""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - } - - -""" -API: UploadUPgSQLParamTemplate - -上传参数模板 -""" - - -class UploadUPgSQLParamTemplateRequestSchema(schema.RequestSchema): - """UploadUPgSQLParamTemplate - 上传参数模板""" - - fields = { - "Content": fields.Str(required=True, dump_to="Content"), - "DBVersion": fields.Str(required=True, dump_to="DBVersion"), - "Description": fields.Str(required=False, dump_to="Description"), - "GroupName": fields.Str(required=True, dump_to="GroupName"), - "ParamGroupType": fields.Str(required=False, dump_to="ParamGroupType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "Zone": fields.Str(required=True, dump_to="Zone"), - } - - -class UploadUPgSQLParamTemplateResponseSchema(schema.ResponseSchema): - """UploadUPgSQLParamTemplate - 上传参数模板""" - - fields = { - "GroupID": fields.Int(required=True, load_from="GroupID"), - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/upgsql/schemas/models.py b/ucloud/services/upgsql/schemas/models.py deleted file mode 100644 index 1e238842..00000000 --- a/ucloud/services/upgsql/schemas/models.py +++ /dev/null @@ -1,158 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class UDBInstanceSchema(schema.ResponseSchema): - """UDBInstance - 数据库信息""" - - fields = { - "AdminUser": fields.Str(required=False, load_from="AdminUser"), - "BackupBeginTime": fields.Int( - required=False, load_from="BackupBeginTime" - ), - "BackupCount": fields.Int(required=False, load_from="BackupCount"), - "BackupDate": fields.Str(required=False, load_from="BackupDate"), - "BackupTimeRange": fields.Int( - required=False, load_from="BackupTimeRange" - ), - "BackupZone": fields.Str(required=False, load_from="BackupZone"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - "DataFileSize": fields.Float(required=False, load_from="DataFileSize"), - "DiskSpace": fields.Int(required=False, load_from="DiskSpace"), - "DiskUsedSize": fields.Float(required=False, load_from="DiskUsedSize"), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "IP": fields.Str(required=False, load_from="IP"), - "InstanceID": fields.Str(required=False, load_from="InstanceID"), - "InstanceMode": fields.Str(required=False, load_from="InstanceMode"), - "LogFileSize": fields.Float(required=False, load_from="LogFileSize"), - "MemoryLimit": fields.Int(required=False, load_from="MemoryLimit"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "Name": fields.Str(required=False, load_from="Name"), - "ParamGroupID": fields.Int(required=False, load_from="ParamGroupID"), - "Port": fields.Int(required=False, load_from="Port"), - "Remark": fields.Str(required=False, load_from="Remark"), - "State": fields.Str(required=False, load_from="State"), - "SubnetID": fields.Str(required=False, load_from="SubnetID"), - "SystemFileSize": fields.Float( - required=False, load_from="SystemFileSize" - ), - "VPCID": fields.Str(required=False, load_from="VPCID"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class UPgSQLInstancePriceSetSchema(schema.ResponseSchema): - """UPgSQLInstancePriceSet - PG云数据库价格""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -class ParamSchema(schema.ResponseSchema): - """Param -""" - - fields = { - "AllowedVal": fields.Str(required=False, load_from="AllowedVal"), - "ApplyType": fields.Int(required=False, load_from="ApplyType"), - "FormatType": fields.Int(required=False, load_from="FormatType"), - "Key": fields.Str(required=False, load_from="Key"), - "Modifiable": fields.Bool(required=False, load_from="Modifiable"), - "Value": fields.Str(required=False, load_from="Value"), - "ValueType": fields.Int(required=False, load_from="ValueType"), - } - - -class UPgSQLBackupSchema(schema.ResponseSchema): - """UPgSQLBackup - 备份详情信息""" - - fields = { - "BackupEndTime": fields.Int(required=False, load_from="BackupEndTime"), - "BackupID": fields.Str(required=True, load_from="BackupID"), - "BackupName": fields.Str(required=False, load_from="BackupName"), - "BackupSize": fields.Int(required=False, load_from="BackupSize"), - "BackupStartTime": fields.Int( - required=False, load_from="BackupStartTime" - ), - "BackupType": fields.Int(required=False, load_from="BackupType"), - "InstanceID": fields.Str(required=True, load_from="InstanceID"), - "Region": fields.Str(required=False, load_from="Region"), - "State": fields.Str(required=False, load_from="State"), - } - - -class UDBReadonlyInstanceSchema(schema.ResponseSchema): - """UDBReadonlyInstance - 只读从库结构""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "IP": fields.Str(required=False, load_from="IP"), - "InstanceID": fields.Str(required=False, load_from="InstanceID"), - "InstanceMode": fields.Str(required=False, load_from="InstanceMode"), - "MachineType": fields.Str(required=False, load_from="MachineType"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "State": fields.Str(required=False, load_from="State"), - "SubnetID": fields.Str(required=False, load_from="SubnetID"), - "VPCID": fields.Str(required=False, load_from="VPCID"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class UDBInstanceSetSchema(schema.ResponseSchema): - """UDBInstanceSet - 数据库信息列表""" - - fields = { - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - "DataSet": fields.List(UDBReadonlyInstanceSchema()), - "ExpiredTime": fields.Int(required=False, load_from="ExpiredTime"), - "IP": fields.Str(required=False, load_from="IP"), - "InstanceID": fields.Str(required=False, load_from="InstanceID"), - "InstanceMode": fields.Str(required=False, load_from="InstanceMode"), - "MachineType": fields.Str(required=False, load_from="MachineType"), - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "State": fields.Str(required=False, load_from="State"), - "SubnetID": fields.Str(required=False, load_from="SubnetID"), - "VPCID": fields.Str(required=False, load_from="VPCID"), - "Zone": fields.Str(required=False, load_from="Zone"), - } - - -class LogSetSchema(schema.ResponseSchema): - """LogSet - 日志信息""" - - fields = { - "BeginTime": fields.Int(required=False, load_from="BeginTime"), - "EndTime": fields.Int(required=False, load_from="EndTime"), - "Name": fields.Str(required=False, load_from="Name"), - "Size": fields.Int(required=False, load_from="Size"), - } - - -class PgSQLMachineTypeSchema(schema.ResponseSchema): - """PgSQLMachineType - 机器类型信息列表""" - - fields = { - "Cpu": fields.Int(required=False, load_from="Cpu"), - "Description": fields.Str(required=False, load_from="Description"), - "ID": fields.Str(required=False, load_from="ID"), - "Memory": fields.Int(required=False, load_from="Memory"), - "Os": fields.Str(required=False, load_from="Os"), - } - - -class PgSQLVersionSchema(schema.ResponseSchema): - """PgSQLVersion - postgresql版本信息""" - - fields = { - "Available": fields.Str(required=False, load_from="Available"), - "DBVersion": fields.Str(required=False, load_from="DBVersion"), - } diff --git a/ucloud/services/uphone/__init__.py b/ucloud/services/uphone/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uphone/client.py b/ucloud/services/uphone/client.py deleted file mode 100644 index 346faac8..00000000 --- a/ucloud/services/uphone/client.py +++ /dev/null @@ -1,2122 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uphone.schemas import apis - - -class UPhoneClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UPhoneClient, self).__init__( - config, transport, middleware, logger - ) - - def create_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPhone - 创建云手机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取;新增一个oversea虚拟城市,可以用来绑定海外独立IP - - **ImageId** (str) - (Required) 云手机镜像ID,不超过32个字节。可通过[查询手机镜像]()查询云手机规格对应的镜像ID。 - - **Name** (str) - (Required) 云手机实例名称,默认:UPhone。如果同时创建多个,则增加数字后缀,如UPhone-1 - - **UPhoneCount** (int) - (Required) 创建云手机的个数 - - **UPhoneModelName** (str) - (Required) 云手机规格名称,不超过64个字节。可通过[查询云手机规格列表]()查询支持的云手机规格。 - - **BindIp** (bool) - 绑定独立IP - - **ChargeType** (str) - 计费模式。枚举值为: > 年 Year,按年付费; > Month,按月付费; > Dynamic,按小时预付费; 默认为月付 - - **CouponId** (str) - 云手机代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看。注:代金券对带宽不适用,仅适用于云手机计费 - - **IpDestRegion** (str) - 购买独立IP必须有此参数。绑定的目的地域。参见 `地域和可用区列表 `_ - - **IpProportion** (int) - 独立IP参数。需要独立IP的比例。eg: [4:1]->4, [3:1]->3。 - - **Quantity** (str) - 购买时长。默认值: 1。月付时,此参数传0,代表购买至月末。 - - **ShareBandwidthId** (str) - 共享带宽ID,使用现有共享带宽时需要传入此参数 - - **ShareBandwidthName** (str) - 共享带宽名称,可以在创建新的共享带宽时指定一个名称 - - **Tag** (str) - 业务组。默认:Default(Default即为未分组)。请遵照 `字段规范 `_ 设定业务组。 - - **UPhoneBandwidth** (int) - 单个云手机独立IP网络带宽,单位Kbps;CityId为oversea时不生效;手机规格为UPhone Store和UPhone Live时不生效 - - **UseGlobalBws** (bool) - 使用区域全局共享带宽 - - **UseKbps** (bool) - 使用Kbps限速 - - **Response** - - - **JobId** (str) - 任务ID,用来查询创建云手机任务状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **UPhoneIds** (list) - 【数组】创建的云手机ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateUPhoneRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPhone", d, **kwargs) - return apis.CreateUPhoneResponseSchema().loads(resp) - - def create_u_phone_app( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPhoneApp - 一个 app 对应多个 app_version。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Name** (str) - (Required) 应用名称。 - - **Description** (str) - 应用描述。 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **AppId** (str) - 应用的唯一标识ID - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateUPhoneAppRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPhoneApp", d, **kwargs) - return apis.CreateUPhoneAppResponseSchema().loads(resp) - - def create_u_phone_app_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPhoneAppVersion - 创建云手机应用版本。注:一个 app 对应多个 app_version。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppId** (str) - (Required) 应用的唯一标识ID。 - - **Name** (str) - (Required) 应用版本名称,最大字符长度为255。 - - **URL** (str) - (Required) 应用版本相关的Apk文件存放的公网URL地址。 - - **Description** (str) - 应用版本描述。 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **AppVersionId** (str) - 应用版本的唯一标识ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateUPhoneAppVersionRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPhoneAppVersion", d, **kwargs) - return apis.CreateUPhoneAppVersionResponseSchema().loads(resp) - - def create_u_phone_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPhoneImage - 创建云手机镜像。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Name** (str) - (Required) 镜像名称。长度为2~128个英文或中文字符。 - - **UPhoneId** (str) - (Required) 手机实例的资源ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Description** (str) - 镜像的描述信息。长度为2~256个英文或中文字符 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **ImageId** (str) - 云手机自定义镜像资源 ID - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateUPhoneImageRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPhoneImage", d, **kwargs) - return apis.CreateUPhoneImageResponseSchema().loads(resp) - - def create_u_phone_server( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUPhoneServer - 创建云手机服务器 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ImageId** (str) - (Required) 云手机镜像ID,不超过32个字节。可通过 `查询手机镜像 `_ 查询云手机规格对应的镜像ID。 - - **Name** (str) - (Required) 云手机服务器实例名称。默认:UPhone。请遵照字段规范设定实例名称。 - - **ServerModelName** (str) - (Required) 云手机服务器规格名称,不超过64个字节。可通过 `查询云手机服务器规格列表 `_ 查询支持的云手机服务器规格。 - - **UPhoneModelName** (str) - (Required) 云手机规格名称,不超过64个字节。可通过 `查询云手机规格列表 `_ 查询支持的云手机规格。 - - **ChargeType** (str) - 计费模式。枚举值为:> 年 Year,按年付费;> Month,按月付费;> Dynamic,按小时预付费;默认为月付 - - **CouponId** (str) - 云手机服务器代金券ID。请通过DescribeCoupon接口查询,或登录用户中心查看。注:代金券对带宽不适用,仅适用于云手机服务器计费 - - **IpDestRegion** (str) - 购买独立IP必须此参数。绑定的目的地域。参见 `地域和可用区列表 `_ - - **IpProportion** (int) - 独立IP参数。需要独立IP的比例。eg: [4:1]->4, [3:1]->3。 - - **Quantity** (str) - 购买时长。默认值: 1。月付时,此参数传0,代表购买至月末。 - - **ShareBandwidth** (int) - 独立IP参数。共享带宽值大小。传此参数需要和IpProportion同时传。 - - **Tag** (str) - 业务组。默认:Default(Default即为未分组)。请遵照 `字段规范 `_ 设定业务组。 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **ServerId** (str) - 云手机服务器的实例 ID - - **Request Model** - - **CreateUPhoneServerParamNetworkInterface** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateUPhoneServerRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUPhoneServer", d, **kwargs) - return apis.CreateUPhoneServerResponseSchema().loads(resp) - - def delete_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPhone - 删除云手机 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,N<200;调用方式举例:UPhoneIds.0=希望获取信息的云手机 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **Response** - - - **JobId** (str) - 任务ID,用来查询删除云手机任务状态 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteUPhoneRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPhone", d, **kwargs) - return apis.DeleteUPhoneResponseSchema().loads(resp) - - def delete_u_phone_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPhoneImage - 删除自制云手机镜像。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ImageId** (str) - (Required) 云手机自定义镜像资源ID - - **ProductType** (str) - 枚举值【必填项】。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **Response** - - - **ImageId** (str) - 云手机自定义镜像资源ID - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteUPhoneImageRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPhoneImage", d, **kwargs) - return apis.DeleteUPhoneImageResponseSchema().loads(resp) - - def delete_u_phone_server( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPhoneServer - 删除云手机服务器。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ServerId** (str) - (Required) 云手机服务器的实例ID 可通过 [DescribeUPhoneServer]()获取 - - **ReleaseEIP** (bool) - 删除云手机服务器时是否释放绑定的EIP。默认为false。 - - **ReleaseUDisk** (bool) - 删除云手机服务器时是否同时删除挂载的数据盘。默认为false。 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteUPhoneServerRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPhoneServer", d, **kwargs) - return apis.DeleteUPhoneServerResponseSchema().loads(resp) - - def delete_u_phone_share_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteUPhoneShareBandwidth - 删除云手机共享带宽 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ShareBandwidthId** (str) - (Required) 共享带宽ID - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteUPhoneShareBandwidthRequestSchema().dumps(d) - - resp = self.invoke("DeleteUPhoneShareBandwidth", d, **kwargs) - return apis.DeleteUPhoneShareBandwidthResponseSchema().loads(resp) - - def describe_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhone - 获取云手机列表信息。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取,没有该参数表示获取所有城市 - - **IsAll** (bool) - 是否返回全部。如果有此参数,分页不生效。 - - **Limit** (int) - 返回数据长度,默认为200,最大200 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。【必填项】表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **ServerId** (str) - 云手机服务器的资源ID。 - - **Tag** (str) - 要查询的业务组名称 - - **UPhoneIds** (list) - 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望获取信息的云手机 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。如果都不传入,则返回当前 城市 所有符合条件的云手机列表。 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **TotalCount** (int) - UPhoneInstance总数 - - **UPhones** (list) - 见 **UPhoneInstance** 模型定义 - - **Response Model** - - **UPhoneInstance** - - **ADB** (str) - 云手机的ADB信息 - - **CPU** (float) - 虚拟CPU核数。 - - **Callback** (str) - 云手机异步任务回调 - - **ChargeType** (str) - 计费模式。枚举值为: > 年 Year,按年付费; > Month,按月付费; > Dynamic,按小时预付费; 默认为月付 - - **CityId** (str) - 城市Id,eg: cn-shanghai, cn-jinan - - **CityName** (str) - 城市名称,eg:上海二、济南市 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **DiskSize** (int) - 磁盘大小,单位: GB - - **EipId** (str) - 云手机IP地址ID - - **ExpireTime** (int) - 到期时间;格式为Unix时间戳 - - **ImageId** (str) - 云手机镜像ID,不超过32个字节。 - - **Ip** (str) - 云手机IP地址 - - **IpRegion** (str) - IP所属地域Id,eg: hk,th-bkk - - **LockBandwidth** (bool) - 是否锁定带宽,true代表锁定不可更改,false代表未锁定可以修改带宽 - - **Memory** (int) - 内存大小。单位MB - - **OsType** (str) - 云手机镜像系统,如"Android armv8" - - **Refresh** (int) - 刷新率 - - **Remark** (str) - 备注 - - **Resolution** (str) - 分辨率 - - **ServerId** (str) - 云手机所在的服务器ID,不超过32个字节。 - - **ShareBandwidthId** (str) - 所属共享带宽ID - - **ShareBandwidthName** (str) - 所属共享带宽名称 - - **SplashScreen** (str) - 云手机启动图片URL链接 - - **State** (str) - 云手机状态
* 启动中: STARTING;
* 运行中: RUNNING;
* 关机中: STOPPING;
* 关机: STOPPED
* 重启中: REBOOTING;
* 重置中: RESETTING;
* 启动失败: START_FAILED;
* 关机失败: STOP_FAILED;
* 重启失败: REBOOT_FAILED;
* 重置失败: RESET_FAILED;
* 未知状态:UNDEFINED_STATE或"" - - **Tag** (str) - 业务组名称 - - **UPhoneBandwidth** (int) - 云手机带宽,单位Kbps - - **UPhoneId** (str) - 云手机的唯一标识,不超过32个字节。 - - **UPhoneModelName** (str) - 云手机规格名称 - - **UPhoneName** (str) - 云手机的名称,不超过65个字符。 - - **UPhoneScene** (str) - 云手机场景 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhone", d, **kwargs) - return apis.DescribeUPhoneResponseSchema().loads(resp) - - def describe_u_phone_app( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneApp - 获取应用列表。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppIds** (list) - 数组】应用的唯一标识 ID,调用方式举例:AppIds.0=希望获取应用信息的应用 1,AppIds.1=应用 2。 如果不传入,则返回当前 城市 所有符合条件的应用列表。 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **Apps** (list) - 见 **AppInstance** 模型定义 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **TotalCount** (int) - AppInstance总数 - - **Response Model** - - **AppInstance** - - **AppId** (str) - 应用的唯一标识ID - - **AppName** (str) - 应用名称。 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **Description** (str) - 应用描述。 - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneAppRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneApp", d, **kwargs) - return apis.DescribeUPhoneAppResponseSchema().loads(resp) - - def describe_u_phone_app_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneAppVersion - 获取应用版本列表。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppId** (str) - 应用的唯一标识ID - - **AppVersionIds** (list) - 【数组】应用版本的唯一标识 ID,调用方式举例:AppVersionIds.0=希望获取应用版本信息的应用版本 1,AppVersionIds.1=应用版本 2。 如果不传入,则返回当前 城市 所有符合条件的应用版本列表。 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **UPhoneId** (str) - 云手机Id。此参数表示查询手机上所安装的应用版本。 - - **Response** - - - **AppVersions** (list) - 见 **AppVersionInstance** 模型定义 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **TotalCount** (int) - AppVersionInstance总数 - - **Response Model** - - **AppVersionInstance** - - **AppId** (str) - 应用的唯一标识ID - - **AppVersionId** (str) - 应用版本的唯一标识ID - - **AppVersionName** (str) - 应用版本名。 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **Description** (str) - 应用版本描述。 - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - **PackageName** (str) - 应用包名。 - - **URL** (str) - 应用版本相关的Apk文件存放的公网URL地址。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneAppVersionRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneAppVersion", d, **kwargs) - return apis.DescribeUPhoneAppVersionResponseSchema().loads(resp) - - def describe_u_phone_cities( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneCities - 获取云手机提供服务的城市列表 - - **Request** - - - **ProjectId** (str) - (Config) - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **UPhoneCities** (list) - 见 **CityInstance** 模型定义 - - **Response Model** - - **CityInstance** - - **CityAlias** (str) - 城市别名。如cn-sh2 - - **CityId** (str) - 城市Id,eg: cn-shanghai, cn-jinan - - **CityName** (str) - 城市名称,eg:上海二、济南市 - - **CityType** (str) - 城市类型。枚举值:
* CENTER,中心城市
* EDGE,边缘计算城市 - - **IsSoldOut** (bool) - 表示该城市资源是否售罄 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneCitiesRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneCities", d, **kwargs) - return apis.DescribeUPhoneCitiesResponseSchema().loads(resp) - - def describe_u_phone_detail_by_app( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneDetailByApp - 根据AppId,查询安装该应用的云手机以及相关的应用版本信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppId** (str) - (Required) 应用的唯一标识ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **TotalCount** (int) - UPhoneWithAppVersion总数 - - **UPhoneDetails** (list) - 见 **UPhoneDetailInstance** 模型定义 - - **Response Model** - - **UPhoneDetailInstance** - - **AppVersion** (dict) - 见 **AppVersionInstance** 模型定义 - - **CPU** (int) - 虚拟CPU核数。 - - **CityId** (str) - 城市Id,eg: cn-shanghai, cn-jinan - - **CityName** (str) - 城市名称,eg:上海二、济南市 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **DiskSize** (int) - 磁盘大小,单位: GB - - **ImageId** (str) - 云手机镜像ID,不超过32个字节。 - - **Memory** (int) - 内存大小。单位MB - - **OsType** (str) - 云手机镜像系统,如"Android armv8" - - **Refresh** (int) - 刷新率 - - **Remark** (str) - 备注 - - **Resolution** (str) - 分辨率 - - **ServerId** (str) - 云手机所在的服务器ID,不超过32个字节。 - - **State** (str) - 云手机状态
* 启动中: STARTING;
* 运行中: RUNNING;
* 关机中: STOPPING;
* 关机: STOPPED
* 重启中: REBOOTING;
* 重置中: RESETTING;
* 启动失败: START_FAILED;
* 关机失败: STOP_FAILED;
* 重启失败: REBOOT_FAILED;
* 重置失败: RESET_FAILED;
* 未知状态:UNDEFINED或"" - - **UPhoneId** (str) - 云手机的唯一标识,不超过32个字节。 - - **UPhoneModelName** (str) - 云手机规格名称 - - **UPhoneName** (str) - 云手机的名称,不超过65个字符。 - - - **AppVersionInstance** - - **AppId** (str) - 应用的唯一标识ID - - **AppVersionId** (str) - 应用版本的唯一标识ID - - **AppVersionName** (str) - 应用版本名。 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **Description** (str) - 应用版本描述。 - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - **PackageName** (str) - 应用包名。 - - **URL** (str) - 应用版本相关的Apk文件存放的公网URL地址。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneDetailByAppRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneDetailByApp", d, **kwargs) - return apis.DescribeUPhoneDetailByAppResponseSchema().loads(resp) - - def describe_u_phone_eip_list( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneEipList - 获取云手机Eip列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) Eip所属区域,没有该参数表示获取所有区域 - - **Proportion** (str) - 云手机与Eip绑定比例,没有该参数表示获取所有绑定比例 - - **Response** - - - **EipInfos** (list) - 见 **EipInfo** 模型定义 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **TotalCount** (int) - Eip信息数量 - - **Response Model** - - **EipInfo** - - **BindCount** (int) - 当前绑定云手机数量 - - **ChargeType** (str) - 计费模式。枚举值为: > 年 Year,按年付费; > Month,按月付费; > Dynamic,按小时预付费; 默认为月付 - - **CreateTime** (int) - 创建时间;格式为Unix时间戳 - - **EipId** (str) - Eip资源ID - - **EipIp** (str) - Eip地址 - - **ExpireTime** (int) - 到期时间;格式为Unix时间戳 - - **Name** (str) - Eip名称 - - **Proportion** (int) - 云手机与Eip绑定比例 - - **Region** (str) - Eip所属区域 - - **RemainCount** (int) - 剩余可绑定手机数量 - - **Remark** (str) - Eip备注 - - **UPhoneIds** (list) - 绑定的云手机ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUPhoneEipListRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneEipList", d, **kwargs) - return apis.DescribeUPhoneEipListResponseSchema().loads(resp) - - def describe_u_phone_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneImage - 获取云手机镜像信息列表。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ImageIds** (list) - 【数组】云手机镜像资源 ID,调用方式举例:ImageIds.0=希望获取信息的云手机镜像 1,ImageIds.1=云手机镜像 2。 如果不传入,则返回当前 城市 所有符合条件的云手机镜像。 - - **Limit** (str) - 最大返回镜像数量,默认为20,最大100 - - **Offset** (str) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Type** (str) - 希望获取的镜像类型,枚举值,不传则返回全部类型的镜像:
>标准镜像: BASE;
>自制镜像: CUSTOM;
- - **Response** - - - **Images** (list) - 见 **UPhoneImageInstance** 模型定义 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **TotalCount** (int) - UPhoneImageInstance总数 - - **Response Model** - - **UPhoneImageInstance** - - **AppVersions** (list) - 见 **AppVersionInstance** 模型定义 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **Description** (str) - 云手机镜像描述信息 - - **ImageId** (str) - 云手机镜像资源Id - - **ImageName** (str) - 云手机镜像名称 - - **ImageState** (str) - 云手机镜像状态
* 制作中: 制作中;
* 可用的: CREATING;
* 制作失败: CREATE_FAILED;
* 上传中: UPLOADING
* 上传失败: UPLOAD_FAILED;
* 未知状态:UNDEFINED或"" - - **ImageType** (str) - 云手机镜像类型,枚举值:
> 用户自制镜像: CUSTOM;
> 标准镜像: BASE;; - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - **OsType** (str) - 云手机镜像系统 - - **UPhoneId** (str) - 云手机镜像创建时所属云手机资源 Id - - - **AppVersionInstance** - - **AppId** (str) - 应用的唯一标识ID - - **AppVersionId** (str) - 应用版本的唯一标识ID - - **AppVersionName** (str) - 应用版本名。 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **Description** (str) - 应用版本描述。 - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - **PackageName** (str) - 应用包名。 - - **URL** (str) - 应用版本相关的Apk文件存放的公网URL地址。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneImageRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneImage", d, **kwargs) - return apis.DescribeUPhoneImageResponseSchema().loads(resp) - - def describe_u_phone_ip_regions( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneIpRegions - 获取云手机所在城市支持绑定独立IP的地域列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取;新增一个oversea虚拟城市,用来获取所有支持的海外独立IP地域 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **Regions** (list) - 见 **IpRegion** 模型定义 - - **TotalCount** (int) - 总数量 - - **Response Model** - - **IpRegion** - - **Id** (str) - 已开通地域。参见 `地域和可用区列表 `_ - - **StockStatus** (str) - 库存状态。枚举值:有库存:Available;无库存:SoldOut - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneIpRegionsRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneIpRegions", d, **kwargs) - return apis.DescribeUPhoneIpRegionsResponseSchema().loads(resp) - - def describe_u_phone_job( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneJob - 查询Job的执行状态。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **JobIds** (list) - 【数组】Job 的唯一标识 Id,调用方式举例:JobIds.0=希望查询状态的 Job1,JobIds.1=Job2。 如果不传入,则返回当前 城市 所有符合条件的 Job 。 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **State** (str) - Job状态,枚举值:* 等待状态: PENDING;* 运行状态: RUNNING;* 成功状态: SUCCESS* 失败状态: FAILED* 部分成功状态:PARTIAL_SUCCESS - - **Types** (list) - 【数组】Job 类型,调用方式举例:JobTypes.0=希望查询的 Job 类型 1,JobTypes.1=Job 类型 2。 如果不传入,则返回当前 城市 所有符合条件的 Job 类型。Job 类型仅支持 INSTALL_APP、UNINSTALL_APP、RUN_ASYNC_COMMAND、CREATE_SERVER_AND_UPHONE、SET_UPHONE_GPS、SET_UPHONE_CONFIG、UPLOAD_FILE、DELETE_UPHONE - - **Response** - - - **Jobs** (list) - 见 **Job** 模型定义 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **TotalCount** (int) - Job总数 - - **Response Model** - - **Job** - - **AppVersionId** (str) - 安装/卸载Job相关的应用版本唯一标识 - - **BeginTime** (int) - Job处理开始时间,格式为Unix时间戳。 - - **CreateTime** (int) - Job创建时间,格式为Unix时间戳。 - - **EndTime** (int) - Job处理结束时间,格式为Unix时间戳。 - - **JobId** (str) - Job的唯一标识Id - - **JobType** (str) - Job类型,仅支持INSTALL_APP、UNINSTALL_APP、RUN_ASYNC_COMMAND。 - - **State** (str) - 任务状态* 等待中:PENDING* 运行中:RUNNING* 成功:SUCCESS* 部分成功:PARTIAL_SUCCESS* 失败:FAILED - - **Tasks** (list) - 见 **Task** 模型定义 - - **UPhoneIds** (list) - 此Job相关的云手机唯一标识 - - - **Task** - - **AppVersionId** (str) - 安装/卸载任务相关的应用版本唯一标识ID - - **BeginTime** (int) - 任务处理开始时间,格式为Unix时间戳。 - - **EndTime** (int) - 任务处理结束时间,格式为Unix时间戳。 - - **ErrorMsg** (str) - Task错误信息 - - **ExecuteMsg** (str) - 异步任务执行结果 - - **State** (str) - 任务状态* 等待中:PENDING* 运行中:RUNNING* 成功:SUCCESS* 失败:FAILED - - **TaskId** (str) - Task的唯一标识 - - **UPhoneId** (str) - 云手机的唯一标识,云手机相关任务包含此字段。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneJobRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneJob", d, **kwargs) - return apis.DescribeUPhoneJobResponseSchema().loads(resp) - - def describe_u_phone_model( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneModel - 获取云手机规格列表。两种类型:uphone代表单云手机场景、uphone-server代表云手机服务器场景。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ProductType** (str) - 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **Scene** (str) - 使用场景:海外(OVERSEA),境内(INLAND) - - **UPhoneModelNames** (list) - 【数组】要获得信息的 UPhoneModel 名称。调用方式举例:UPhoneModelNames.0=希望获取信息的 UPhoneModel1,UPhoneModelNames.1=UPhoneModel2。 如果不传入,则返回当前 城市 所有符合条件的 UPhoneModel。 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **TotalCount** (int) - UPhoneModelInstance总数 - - **UPhoneModels** (list) - 见 **UPhoneModelInstance** 模型定义 - - **Response Model** - - **UPhoneModelInstance** - - **CPU** (int) - 虚拟CPU核数。 - - **Description** (str) - 型号描述信息 - - **DiskSize** (int) - 磁盘大小,单位: GB - - **Dpi** (int) - DPI - - **Memory** (int) - 内存大小。单位MB - - **Refresh** (int) - 刷新率 - - **Resolution** (str) - 分辨率 - - **UPhoneModelName** (str) - UPhoneModel名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneModelRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneModel", d, **kwargs) - return apis.DescribeUPhoneModelResponseSchema().loads(resp) - - def describe_u_phone_server( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneServer - 获取云手机服务器列表信息。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ServerIds** (list) - 【数组】云手机服务器的资源 ID,调用方式举例:ServerIds.0=希望获取信息的服务器 1,ServerIds.1=服务器 2。 如果不传入,则返回当前 城市 所有符合条件的云手机服务器。 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **Servers** (list) - 见 **ServerInstance** 模型定义 - - **TotalCount** (int) - ServerInstance总数 - - **Response Model** - - **ServerInstance** - - **ChargeType** (str) - 计费模式。枚举值为:
*Year,按年付费;
* Month,按月付费;
默认为月付 - - **CityId** (str) - 城市Id,eg: cn-shanghai, cn-jinan - - **CityName** (str) - 城市名称,eg:上海二、济南市 - - **CreateTime** (int) - 创建时间,格式为Unix时间戳。 - - **ExpireTime** (int) - 到期时间,格式为Unix时间戳。 - - **IpSet** (list) - 见 **IpSet** 模型定义 - - **ModifyTime** (int) - 修改时间,格式为Unix时间戳。 - - **Remark** (str) - 云服务器备注。 - - **ServerId** (str) - 云手机服务器的唯一标识。 - - **ServerModel** (dict) - 见 **ServerModelInstance** 模型定义 - - **ServerName** (str) - 云手机服务器名称。 - - **State** (str) - 实例状态,枚举值: * 初始化: Initializing; * 云手机创建中: UPhoneCreating;* 运行中: Running; * 删除中: Deleting; * 创建失败: CreateFailed * 未知(空字符串,获取状态超时或出错):"" - - **UPhoneCount** (int) - 云手机开数。 - - **UPhoneModelName** (str) - 云手机规格名称。 - - - **IpSet** - - **Ip** (str) - IP地址 - - **IpMode** (str) - ipv4或者ipv6 - - **IpType** (str) - 共有或私有 - - **Isp** (str) - 运营商 - - - **ServerModelInstance** - - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。 - - **DiskSet** (list) - 见 **ServerDiskSet** 模型定义 - - **GPU** (int) - GPU个数 - - **GPUType** (str) - GPU类型 - - **Memory** (int) - 内存大小。单位:MB。 - - **ServerModelName** (str) - ServerModel名称 - - **ServerModelState** (str) - 表示该机型是否上线,用于前端判断是否开放给用户。枚举值:>AVAILABLE,开放>UNAVAILABLE, 不开放 - - **UPhoneSpecs** (list) - 见 **UPhoneSpec** 模型定义 - - - **ServerDiskSet** - - **DiskType** (str) - 磁盘类型。请参考磁盘类型。 - - **IsBoot** (bool) - 是否是系统盘。枚举值:> True,是系统盘> False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Size** (int) - 磁盘大小,单位: GB - - - **UPhoneSpec** - - **UPhoneCount** (int) - 手机开数,即该服务器规格能生成对应手机规格的云手机个数 - - **UPhoneModelName** (str) - 手机规格名 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneServerRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneServer", d, **kwargs) - return apis.DescribeUPhoneServerResponseSchema().loads(resp) - - def describe_u_phone_server_model( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneServerModel - 获取ServerModel列表。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **Limit** (int) - 返回数据长度,默认为20,最大100 - - **Offset** (int) - 列表起始位置偏移量,默认为0 - - **ServerModelNames** (list) - 【数组】要获得信息的 ServerModel 名称。调用方式举例:ServerModelNames.0=希望获取信息的 ServerModel1,ServerModelNames.1=ServerModel2。 如果不传入,则返回当前 城市 所有符合条件的 ServerModel。 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **ServerModels** (list) - 见 **ServerModelInstance** 模型定义 - - **Stock** (list) - 见 **StockInfo** 模型定义 - - **TotalCount** (int) - ServerModelInstance总数 - - **Response Model** - - **ServerModelInstance** - - **CPU** (int) - 虚拟CPU核数。可选参数:1-64(具体机型与CPU的对应关系参照控制台)。 - - **DiskSet** (list) - 见 **ServerDiskSet** 模型定义 - - **GPU** (int) - GPU个数 - - **GPUType** (str) - GPU类型 - - **Memory** (int) - 内存大小。单位:MB。 - - **ServerModelName** (str) - ServerModel名称 - - **ServerModelState** (str) - 表示该机型是否上线,用于前端判断是否开放给用户。枚举值:>AVAILABLE,开放>UNAVAILABLE, 不开放 - - **UPhoneSpecs** (list) - 见 **UPhoneSpec** 模型定义 - - - **ServerDiskSet** - - **DiskType** (str) - 磁盘类型。请参考磁盘类型。 - - **IsBoot** (bool) - 是否是系统盘。枚举值:> True,是系统盘> False,是数据盘(默认)。Disks数组中有且只能有一块盘是系统盘。 - - **Size** (int) - 磁盘大小,单位: GB - - - **UPhoneSpec** - - **UPhoneCount** (int) - 手机开数,即该服务器规格能生成对应手机规格的云手机个数 - - **UPhoneModelName** (str) - 手机规格名 - - - **StockInfo** - - **ModelName** (str) - ServerModel名称 - - **StockCount** (int) - 资源余量 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeUPhoneServerModelRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneServerModel", d, **kwargs) - return apis.DescribeUPhoneServerModelResponseSchema().loads(resp) - - def describe_u_phone_share_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUPhoneShareBandwidth - 获取共享带宽列表 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Region** (str) - (Config) 绑定的目的地域。参见 `地域和可用区列表 `_ ;不传代表获取所有区域 - - **ShareBandwidthId** (str) - 共享带宽ID,不传表示获取所有共享带宽信息 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **ShareBandwidth** (list) - 见 **ShareBandwidthInfo** 模型定义 - - **TotalCount** (int) - 共享带宽总数量 - - **Response Model** - - **ShareBandwidthInfo** - - **Bandwidth** (int) - 带宽大小,单位M - - **BindCount** (int) - 当前绑定手机数量 - - **ChargeType** (str) - 计费模式。枚举值为: > 年 Year,按年付费; > Month,按月付费; > Dynamic,按小时预付费; 默认为月付 - - **CreateTime** (int) - 创建时间;格式为Unix时间戳 - - **ExpireTime** (int) - 到期时间;格式为Unix时间戳 - - **Id** (str) - 共享带宽ID - - **IpCount** (int) - 当前绑定IP数量 - - **IpProportion** (int) - 云手机IP绑定比例 - - **Name** (str) - 共享带宽名称 - - **Region** (str) - 绑定的目的地域。参见 `地域和可用区列表 `_ - - **RemainCount** (int) - 剩余可绑定手机数量 - - **Remark** (str) - 备注 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - "Region": self.config.region, - } - req and d.update(req) - d = apis.DescribeUPhoneShareBandwidthRequestSchema().dumps(d) - - resp = self.invoke("DescribeUPhoneShareBandwidth", d, **kwargs) - return apis.DescribeUPhoneShareBandwidthResponseSchema().loads(resp) - - def get_u_phone_allowance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneAllowance - 获取云手机创建余量 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **Response** - - - **UPhoneAllowance** (list) - 见 **UPhoneAllowance** 模型定义 - - **Response Model** - - **UPhoneAllowance** - - **Allowance** (int) - 可创建云手机个数 - - **ModelName** (str) - 枚举值,云手机型号名称,取值:UPhone X,UPhone Plus,UPhone Pro - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneAllowanceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneAllowance", d, **kwargs) - return apis.GetUPhoneAllowanceResponseSchema().loads(resp) - - def get_u_phone_bandwidth_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneBandwidthUpgradePrice - 获取云手机带宽升降级价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Bandwidth** (int) - (Required) 带宽大小,单位Kbps,必须是100的整数倍 - - **ProductType** (str) - (Required) 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **UPhoneId** (str) - (Required) 云手机ID - - **Response** - - - **ListPrice** (float) - 产品列表价 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 规格调整差价。单位: 元,保留小数点后两位有效数字 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneBandwidthUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneBandwidthUpgradePrice", d, **kwargs) - return apis.GetUPhoneBandwidthUpgradePriceResponseSchema().loads(resp) - - def get_u_phone_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhonePrice - 根据云手机规格名称,获取UPhone实例的价格。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **BandwidthLine** (int) - 购买独立IP并且使用全局共享带宽时需要此参数,带宽线路数量,与云手机数量一致 - - **ChargeType** (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费;> Day,按天付费; > Dynamic,按小时预付费; 如果不传某个枚举值,默认返回年付、月付的价格组合集。 - - **INetBandwidth** (int) - 购买独立IP需要此参数,其中一个ip的带宽值。 - - **IpCount** (int) - 购买独立IP需要此参数。需要的eip数量。 - - **IpDestRegion** (str) - 购买独立IP必须此参数。绑定的目的地域。参见 `地域和可用区列表 `_ - - **Quantity** (int) - 购买时长。默认: 1。 月付时,此参数传0,代表了购买至月末。 - - **UPhoneBandwidth** (int) - 单个云手机带宽大小,单位Kbps,仅在UseKbps为true时生效 - - **UPhoneCount** (int) - 云手机个数 - - **UPhoneModelName** (int) - 云手机规格名称 - - **UseGlobalBws** (bool) - 使用全局共享带宽 - - **UseKbps** (bool) - 使用Kbps单位带宽,仅在使用全局共享带宽时生效,值为true时BandwidthLine参数不再生效 - - **Response** - - - **PriceSet** (list) - 见 **UPhonePriceSet** 模型定义 - - **Response Model** - - **UPhonePriceSet** - - **ChargeType** (str) - 计费类型,枚举值:Year,Month,Dynamic - - **ListPrice** (float) - 产品列表价 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhonePriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhonePrice", d, **kwargs) - return apis.GetUPhonePriceResponseSchema().loads(resp) - - def get_u_phone_renew_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneRenewPrice - 获取云手机续费价格,不包括独立ip价格。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneId** (str) - (Required) 云手机的唯一标识,可通过[查询云手机列表]获取。 - - **ChargeType** (str) - 计费模式。枚举值为: > Year,按年付费; > Month,按月付费; > Dynamic,按小时预付费; 默认返回全部计费方式对应的价格 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Response** - - - **PriceSet** (list) - 见 **UPhonePriceSet** 模型定义 - - **Response Model** - - **UPhonePriceSet** - - **ChargeType** (str) - 计费类型,枚举值:Year,Month,Dynamic - - **ListPrice** (float) - 产品列表价 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneRenewPriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneRenewPrice", d, **kwargs) - return apis.GetUPhoneRenewPriceResponseSchema().loads(resp) - - def get_u_phone_screen_capture( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneScreenCapture - 云手机截屏 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneID** (str) - (Required) 云手机ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **URL** (str) - 云手机截图URL - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneScreenCaptureRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneScreenCapture", d, **kwargs) - return apis.GetUPhoneScreenCaptureResponseSchema().loads(resp) - - def get_u_phone_server_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneServerPrice - 根据服务器规格名称,获取UPhoneServer实例的价格。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ServerModelName** (str) - (Required) 服务器规格名称 - - **Bandwidth** (int) - 购买独立IP需要此参数。共享带宽总值。 - - **ChargeType** (str) - 计费模式。枚举值为:> Year,按年付费;> Month,按月付费;> Dynamic,按小时预付费; 如果不传某个枚举值,默认返回年付、月付的价格组合集。 - - **IpCount** (int) - 购买独立IP需要此参数。需要的eip数量。 - - **IpDestRegion** (str) - 购买独立IP必须此参数。绑定的目的地域。参见 `地域和可用区列表 `_ - - **Quantity** (int) - 购买时长。默认: 1。 月付时,此参数传0,代表了购买至月末。 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **PriceSet** (list) - 见 **UPhoneServerPriceSet** 模型定义 - - **Response Model** - - **UPhoneServerPriceSet** - - **ChargeType** (str) - 计费类型,枚举值:Year,Month, Dynamic - - **ListPrice** (float) - 产品列表价 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneServerPriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneServerPrice", d, **kwargs) - return apis.GetUPhoneServerPriceResponseSchema().loads(resp) - - def get_u_phone_server_renew_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneServerRenewPrice - 获取云手机服务器续费价格提示信息: 须按照控制台服务器模型配置创建服务器。详情请参考控制台。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ServerId** (str) - (Required) 云手机服务器的唯一标识,可通过[查询云手机服务器列表]()获取。 - - **ChargeType** (str) - 计费模式。枚举值为:> Year,按年付费;> Month,按月付费; > Dynamic,按小时预付费; 默认返回全部计费方式对应的价格 - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **PriceSet** (list) - 见 **UPhoneServerPriceSet** 模型定义 - - **Response Model** - - **UPhoneServerPriceSet** - - **ChargeType** (str) - 计费类型,枚举值:Year,Month, Dynamic - - **ListPrice** (float) - 产品列表价 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 价格,单位: 元,保留小数点后两位有效数字 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneServerRenewPriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneServerRenewPrice", d, **kwargs) - return apis.GetUPhoneServerRenewPriceResponseSchema().loads(resp) - - def get_u_phone_share_bandwidth_upgrade_price( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUPhoneShareBandwidthUpgradePrice - 获取云手机共享带宽升降级价格 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Bandwidth** (int) - (Required) 需要升降级的带宽,默认是当前带宽大小 - - **ShareBandwidthId** (str) - (Required) 共享带宽的ID - - **Response** - - - **ListPrice** (float) - 产品列表价 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **OriginalPrice** (float) - 限时优惠的折前原价(即列表价乘以商务折扣后的单价) - - **Price** (float) - 规格调整差价。单位: 元,保留小数点后两位有效数字 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUPhoneShareBandwidthUpgradePriceRequestSchema().dumps(d) - - resp = self.invoke("GetUPhoneShareBandwidthUpgradePrice", d, **kwargs) - return apis.GetUPhoneShareBandwidthUpgradePriceResponseSchema().loads( - resp - ) - - def import_file(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """ImportFile - 上传文件到云手机目录/sdcard/Download/并自动安装APK文件 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **FileName** (str) - (Required) 文件名 - - **UPhoneIds** (list) - (Required) 云手机ID - - **URL** (str) - (Required) 文件下载链接 - - **ABI** (str) - 上传文件为apk时,可强制指定32位还是64位运行。armeabi-v7a(32位);不填为系统默认值(64位) - - **CityId** (str) - 城市。 参见 `云手机城市列表 `_ - - **ProductType** (str) - 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **Response** - - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ImportFileRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("ImportFile", d, **kwargs) - return apis.ImportFileResponseSchema().loads(resp) - - def install_u_phone_app_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """InstallUPhoneAppVersion - 在云手机中安装应用版本相关的Apk文件。系统会根据AppVersionId将对应的Apk文件下载后安装到云手机中。一次只支持安装一个Apk。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppVersionId** (str) - (Required) 应用版本的唯一标识ID - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望安装应用的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.InstallUPhoneAppVersionRequestSchema().dumps(d) - - resp = self.invoke("InstallUPhoneAppVersion", d, **kwargs) - return apis.InstallUPhoneAppVersionResponseSchema().loads(resp) - - def modify_u_phone_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneBandwidth - 修改云手机带宽 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Bandwidth** (int) - (Required) 带宽大小,单位Kbps,必须是100的整数倍 - - **ProductType** (str) - (Required) 枚举值。表示当前操作的产品类型,目前固定值【uphone】,表示云手机场景。 - - **UPhoneId** (str) - (Required) 云手机ID - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneBandwidthRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneBandwidth", d, **kwargs) - return apis.ModifyUPhoneBandwidthResponseSchema().loads(resp) - - def modify_u_phone_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneName - 修改指定云手机实例名称。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Name** (str) - (Required) 云手机实例名称 - - **UPhoneId** (str) - (Required) 云手机实例的资源ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **UPhoneId** (str) - 云手机实例的资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneNameRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneName", d, **kwargs) - return apis.ModifyUPhoneNameResponseSchema().loads(resp) - - def modify_u_phone_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneRemark - 修改指定云手机实例备注信息。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneId** (str) - (Required) 云手机实例的资源ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Remark** (str) - 备注 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **UPhoneId** (str) - 云手机实例的资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneRemarkRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneRemark", d, **kwargs) - return apis.ModifyUPhoneRemarkResponseSchema().loads(resp) - - def modify_u_phone_server_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneServerName - 修改指定云手机服务器实例名称。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ServerId** (str) - (Required) 云手机服务器的唯一标识 - - **Name** (str) - 云手机服务器实例名称 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **ServerId** (str) - 云手机服务器的唯一标识 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneServerNameRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneServerName", d, **kwargs) - return apis.ModifyUPhoneServerNameResponseSchema().loads(resp) - - def modify_u_phone_server_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneServerRemark - 修改指定云手机实例备注信息。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - (Required) 城市Id,通过 `获取城市列表 `_ 获取 - - **ServerId** (str) - (Required) 云手机服务器的唯一标识 - - **Remark** (str) - 备注 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **ServerId** (str) - 云手机服务器的唯一标识 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneServerRemarkRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneServerRemark", d, **kwargs) - return apis.ModifyUPhoneServerRemarkResponseSchema().loads(resp) - - def modify_u_phone_share_bandwidth( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneShareBandwidth - 修改云手机共享带宽 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Bandwidth** (str) - (Required) 共享带宽大小;单位M - - **ShareBandwidthId** (str) - (Required) 共享带宽ID - - **Response** - - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneShareBandwidthRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneShareBandwidth", d, **kwargs) - return apis.ModifyUPhoneShareBandwidthResponseSchema().loads(resp) - - def modify_u_phone_share_bandwidth_name( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneShareBandwidthName - 修改云手机共享带宽名称 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Name** (str) - (Required) 共享带宽名称 - - **ShareBandwidthId** (str) - (Required) 共享带宽ID - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneShareBandwidthNameRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneShareBandwidthName", d, **kwargs) - return apis.ModifyUPhoneShareBandwidthNameResponseSchema().loads(resp) - - def modify_u_phone_share_bandwidth_remark( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ModifyUPhoneShareBandwidthRemark - 修改云手机共享带宽备注 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Remark** (str) - (Required) 共享带宽备注 - - **ShareBandwidthId** (str) - (Required) 共享带宽ID - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ModifyUPhoneShareBandwidthRemarkRequestSchema().dumps(d) - - resp = self.invoke("ModifyUPhoneShareBandwidthRemark", d, **kwargs) - return apis.ModifyUPhoneShareBandwidthRemarkResponseSchema().loads(resp) - - def poweroff_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """PoweroffUPhone - 关闭处于运行状态的云手机实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望关闭的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 任务ID,用来查询当前任务状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.PoweroffUPhoneRequestSchema().dumps(d) - - resp = self.invoke("PoweroffUPhone", d, **kwargs) - return apis.PoweroffUPhoneResponseSchema().loads(resp) - - def poweron_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """PoweronUPhone - 启动处于关闭状态的云手机实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源ID,调用方式举例:UPhoneIds.0=希望开启的云手机实例1的UPhoneId,UPhoneIds.1=云手机实例2的UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 任务ID,用来查询当前任务状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.PoweronUPhoneRequestSchema().dumps(d) - - resp = self.invoke("PoweronUPhone", d, **kwargs) - return apis.PoweronUPhoneResponseSchema().loads(resp) - - def reboot_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RebootUPhone - 重新启动云手机实例 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望重启的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 异步请求成功后返回JobId,用以查询Job状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.RebootUPhoneRequestSchema().dumps(d) - - resp = self.invoke("RebootUPhone", d, **kwargs) - return apis.RebootUPhoneResponseSchema().loads(resp) - - def renew_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RenewUPhone - 修改UPhone的device_id、imei、meid 以及其他相关配置,达到一键新机的效果 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望重启的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **AndroidID** (str) - AOSP唯一标识 - - **BSSID** (str) - Wi-Fi 物理地址 - - **BaseBand** (str) - 基带版本 - - **Board** (str) - 主板名 - - **BootLoader** (str) - bootloader版本号 - - **Brand** (str) - 品牌 - - **BuildHost** (str) - 固件编译主机 - - **BuildID** (str) - build的版本号 - - **BuildTags** (str) - 系统标记 - - **BuildVersionInc** (str) - 版本增加说明 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Customize** (bool) - 自定义设备参数设置的开关,true时会读取用户设置的下列设备参数信息;false时随机读取ucloud内置设备参数。默认false - - **Device** (str) - 设备名 - - **DisplayID** (str) - 显示的版本号 - - **FingerPrint** (str) - 系统指纹 - - **ICCID** (str) - SIM卡唯一标识 - - **IMEI** (str) - 串号 - - **IMEISV** (str) - 移动设备标识码软件 - - **IMSI** (str) - 移动识别码 - - **Manufacture** (str) - 厂商 - - **Model** (str) - 设备型号 - - **PhoneNumber** (str) - 手机号码 - - **ProductName** (str) - 产品名称 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **RadioMac** (str) - 移动网络mac地址 - - **SerialNumber** (str) - 序列号 - - **WiFiName** (str) - 当前连接Wi-Fi名称 - - **Response** - - - **JobId** (str) - 任务ID,用来查询一键新机任务状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.RenewUPhoneRequestSchema().dumps(d) - - resp = self.invoke("RenewUPhone", d, **kwargs) - return apis.RenewUPhoneResponseSchema().loads(resp) - - def reset_u_phone( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """ResetUPhone - 将云手机恢复为创建时的状态。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望重置的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ImageId** (str) - 镜像ID,默认为空。不为空则手机会以填写的镜像进行重置,为空则手机会以重置前的镜像重置 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 异步请求成功后返回JobId,用以查询Job状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.ResetUPhoneRequestSchema().dumps(d) - - resp = self.invoke("ResetUPhone", d, **kwargs) - return apis.ResetUPhoneResponseSchema().loads(resp) - - def run_async_command( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RunAsyncCommand - 在云手机中执行异步shell命令。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Content** (str) - (Required) 待执行的命令。 - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望执行命令的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.RunAsyncCommandRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("RunAsyncCommand", d, **kwargs) - return apis.RunAsyncCommandResponseSchema().loads(resp) - - def run_sync_command( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """RunSyncCommand - 在云手机中执行同步shell命令。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Content** (str) - (Required) 待执行的命令。 - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望执行命令的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **Results** (list) - 见 **UPhoneCommandResult** 模型定义 - - **Response Model** - - **UPhoneCommandResult** - - **ExecuteMsg** (str) - 同步shell命令的执行结果。 - - **UPhoneId** (str) - 云手机实例的资源ID。 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.RunSyncCommandRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("RunSyncCommand", d, **kwargs) - return apis.RunSyncCommandResponseSchema().loads(resp) - - def set_u_phone_callback( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneCallback - 设置云手机异步操作以及状态更新回调,支持云手机重置,安装应用,卸载应用,设备占用状态回调 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneId** (str) - (Required) 云手机ID。 - - **URL** (str) - (Required) 接收POST请求的http接口。Content-Type:application/json; charset=UTF-8,Accept:application/json。 - - **CityId** (str) - 城市ID - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneCallbackRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneCallback", d, **kwargs) - return apis.SetUPhoneCallbackResponseSchema().loads(resp) - - def set_u_phone_config( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneConfig - 设置云手机画面参数(分辨率、DPI、帧率、码率) - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **Async** (str) - 异步请求开关,只有为1的时候才是异步,不填或者其他数值为同步 - - **Bitrate** (str) - 云手机画面传输码率(例,8000)取值范围[100,50000] - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **Dpi** (str) - 云手机dpi,取值范围[100,1000] - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Refresh** (str) - 云手机画面刷新率,即帧率(例,30)取值范围[1,200] - - **Resolution** (str) - 云手机画面分辨率(宽x高) (例,1920x1080,中间是字母x)宽和高的取值范围[100,5000] - - **Response** - - - **JobId** (str) - 异步请求成功后返回JobId,用以查询Job状态 - - **Message** (str) - 失败后返回Message,错误信息 - - **RequestId** (str) - request_uuid,唯一值,用于区分request - - **Results** (list) - 见 **Results** 模型定义 - - **Response Model** - - **Results** - - **ExecuteMsg** (str) - - - **UPhoneId** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneConfigRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneConfig", d, **kwargs) - return apis.SetUPhoneConfigResponseSchema().loads(resp) - - def set_u_phone_gps( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneGPS - 设置云手机GPS信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **UPhoneGPSs** (list) - 见 **SetUPhoneGPSParamUPhoneGPSs** 模型定义 - - **Response** - - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - **Request Model** - - **SetUPhoneGPSParamUPhoneGPSs** - - **Altitude** (float) - 海拔 - - **Enabled** (bool) - GPS开关,true开启,false关闭,默认false - - **Latitude** (float) - 纬度:-90~90 - - **Longitude** (float) - 经度:-180~180 - - **UPhoneId** (str) - 云手机ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneGPSRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneGPS", d, **kwargs) - return apis.SetUPhoneGPSResponseSchema().loads(resp) - - def set_u_phone_manager_mode( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneManagerMode - 管理员模式支持所有按键,普通用户模式禁用返回桌面 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Mode** (str) - (Required) 管理模式:管理员admin,普通用户user - - **UPhoneId** (str) - (Required) 云手机实例的资源ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneManagerModeRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneManagerMode", d, **kwargs) - return apis.SetUPhoneManagerModeResponseSchema().loads(resp) - - def set_u_phone_root_mode( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneRootMode - 设置云手机Root模式 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Root** (bool) - (Required) true则打开Root权限;false则关闭Root权限 - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望重启的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **PkgNames** (list) - 【数组】加入应用白名单的包名 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 异步请求成功后返回JobId,用以查询Job状态 - - **Message** (str) - 返回错误消息,当 RetCode 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneRootModeRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneRootMode", d, **kwargs) - return apis.SetUPhoneRootModeResponseSchema().loads(resp) - - def set_u_phone_splash_screen( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneSplashScreen - - - **Request** - - - **ProjectId** (str) - (Config) - - **CityId** (str) - (Required) - - **UPhoneId** (str) - (Required) - - **URL** (str) - (Required) - - **ProductType** (str) - - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneSplashScreenRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("SetUPhoneSplashScreen", d, **kwargs) - return apis.SetUPhoneSplashScreenResponseSchema().loads(resp) - - def set_u_phone_token( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SetUPhoneToken - 设置云手机RTC连接Token提高安全性 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **UPhoneId** (str) - (Required) 云手机ID - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Token** (str) - RTC连接Token,为空表示清空Token - - **Response** - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SetUPhoneTokenRequestSchema().dumps(d) - - resp = self.invoke("SetUPhoneToken", d, **kwargs) - return apis.SetUPhoneTokenResponseSchema().loads(resp) - - def switch_u_phone_independent_ip( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SwitchUPhoneIndependentIp - 更换云手机独立IP - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **EipId** (str) - (Required) 云手机独立IP地址ID - - **Response** - - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - **NewIp** (str) - 更换后的新IP地址 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SwitchUPhoneIndependentIpRequestSchema().dumps(d) - - resp = self.invoke("SwitchUPhoneIndependentIp", d, **kwargs) - return apis.SwitchUPhoneIndependentIpResponseSchema().loads(resp) - - def switch_u_phone_instance( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SwitchUPhoneInstance - - - **Request** - - - **ProjectId** (str) - (Config) - - **CityId** (str) - (Required) - - **SwitchInfos** (list) - 见 **SwitchUPhoneInstanceParamSwitchInfos** 模型定义 - - **Response** - - - **JobId** (str) - - - **Message** (str) - - - **Request Model** - - **SwitchUPhoneInstanceParamSwitchInfos** - - **ImageId** (str) - - - **UPhoneId** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SwitchUPhoneInstanceRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("SwitchUPhoneInstance", d, **kwargs) - return apis.SwitchUPhoneInstanceResponseSchema().loads(resp) - - def un_install_u_phone_app_version( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UnInstallUPhoneAppVersion - 传入应用版本Id,在云手机中根据应用版本的PackageName卸载相关应用。一次只支持卸载一个应用。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **AppVersionId** (str) - (Required) 应用版本的唯一标识ID - - **UPhoneIds** (list) - (Required) 【数组】云手机实例的资源 ID,调用方式举例:UPhoneIds.0=希望卸载应用的云手机实例 1 的 UPhoneId,UPhoneIds.1=云手机实例 2 的 UPhoneId。 - - **CityId** (str) - 城市Id,通过 `获取城市列表 `_ 获取 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **JobId** (str) - 请求的唯一标识Id,`RetCode`为0时返回,可根据此ID查询请求的执行状态 - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.UnInstallUPhoneAppVersionRequestSchema().dumps(d) - - resp = self.invoke("UnInstallUPhoneAppVersion", d, **kwargs) - return apis.UnInstallUPhoneAppVersionResponseSchema().loads(resp) - - def update_u_phone_image( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateUPhoneImage - 更新云手机镜像信息。 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ImageId** (str) - (Required) 云手机自定义镜像资源ID - - **Description** (str) - 镜像的描述信息。长度为2~256个英文或中文字符 - - **Name** (str) - 镜像名称。长度为2~128个英文或中文字符。 - - **ProductType** (str) - 枚举值。当前操作的产品类型,1、uphone:云手机场景;2、uphone-server:云手机服务器场景。默认云手机服务器场景。 - - **Response** - - - **ImageId** (str) - 云手机自定义镜像资源ID - - **Message** (str) - 返回错误消息,当 `RetCode` 非 0 时提供详细的描述信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.UpdateUPhoneImageRequestSchema().dumps(d) - - resp = self.invoke("UpdateUPhoneImage", d, **kwargs) - return apis.UpdateUPhoneImageResponseSchema().loads(resp) diff --git a/ucloud/services/uphone/schemas/__init__.py b/ucloud/services/uphone/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uphone/schemas/apis.py b/ucloud/services/uphone/schemas/apis.py deleted file mode 100644 index f4ad6549..00000000 --- a/ucloud/services/uphone/schemas/apis.py +++ /dev/null @@ -1,1799 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uphone.schemas import models - -""" UPhone API Schema -""" - - -""" -API: CreateUPhone - -创建云手机 -""" - - -class CreateUPhoneRequestSchema(schema.RequestSchema): - """CreateUPhone - 创建云手机""" - - fields = { - "Bandwidth": fields.Int( - required=False, dump_to="Bandwidth" - ), # Deprecated, will be removed at 1.0 - "BindIp": fields.Bool(required=False, dump_to="BindIp"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=True, dump_to="CityId"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "IpDestRegion": fields.Str(required=False, dump_to="IpDestRegion"), - "IpProportion": fields.Int(required=False, dump_to="IpProportion"), - "MediaBandwidth": fields.Int( - required=False, dump_to="MediaBandwidth" - ), # Deprecated, will be removed at 1.0 - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Str(required=False, dump_to="Quantity"), - "ShareBandwidthId": fields.Str( - required=False, dump_to="ShareBandwidthId" - ), - "ShareBandwidthName": fields.Str( - required=False, dump_to="ShareBandwidthName" - ), - "Tag": fields.Str(required=False, dump_to="Tag"), - "UPhoneBandwidth": fields.Int( - required=False, dump_to="UPhoneBandwidth" - ), - "UPhoneCount": fields.Int(required=True, dump_to="UPhoneCount"), - "UPhoneModelName": fields.Str(required=True, dump_to="UPhoneModelName"), - "UseGlobalBws": fields.Bool(required=False, dump_to="UseGlobalBws"), - "UseKbps": fields.Bool(required=False, dump_to="UseKbps"), - } - - -class CreateUPhoneResponseSchema(schema.ResponseSchema): - """CreateUPhone - 创建云手机""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=False, load_from="Message"), - "UPhoneIds": fields.List( - fields.Str(), required=False, load_from="UPhoneIds" - ), - } - - -""" -API: CreateUPhoneApp - -一个 app 对应多个 app_version。 -""" - - -class CreateUPhoneAppRequestSchema(schema.RequestSchema): - """CreateUPhoneApp - 一个 app 对应多个 app_version。""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class CreateUPhoneAppResponseSchema(schema.ResponseSchema): - """CreateUPhoneApp - 一个 app 对应多个 app_version。""" - - fields = { - "AppId": fields.Str(required=True, load_from="AppId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUPhoneAppVersion - -创建云手机应用版本。 -注:一个 app 对应多个 app_version。 -""" - - -class CreateUPhoneAppVersionRequestSchema(schema.RequestSchema): - """CreateUPhoneAppVersion - 创建云手机应用版本。 - 注:一个 app 对应多个 app_version。 - """ - - fields = { - "AppId": fields.Str(required=True, dump_to="AppId"), - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "URL": fields.Str(required=True, dump_to="URL"), - } - - -class CreateUPhoneAppVersionResponseSchema(schema.ResponseSchema): - """CreateUPhoneAppVersion - 创建云手机应用版本。 - 注:一个 app 对应多个 app_version。 - """ - - fields = { - "AppVersionId": fields.Str(required=True, load_from="AppVersionId"), - } - - -""" -API: CreateUPhoneImage - -创建云手机镜像。 -""" - - -class CreateUPhoneImageRequestSchema(schema.RequestSchema): - """CreateUPhoneImage - 创建云手机镜像。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "Description": fields.Str(required=False, dump_to="Description"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class CreateUPhoneImageResponseSchema(schema.ResponseSchema): - """CreateUPhoneImage - 创建云手机镜像。""" - - fields = { - "ImageId": fields.Str(required=False, load_from="ImageId"), - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateUPhoneServer - -创建云手机服务器 -""" - - -class CreateUPhoneServerParamNetworkInterfaceSchema(schema.RequestSchema): - """CreateUPhoneServerParamNetworkInterface -""" - - fields = {} - - -class CreateUPhoneServerRequestSchema(schema.RequestSchema): - """CreateUPhoneServer - 创建云手机服务器""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=True, dump_to="CityId"), - "CouponId": fields.Str(required=False, dump_to="CouponId"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "IpDestRegion": fields.Str(required=False, dump_to="IpDestRegion"), - "IpProportion": fields.Int(required=False, dump_to="IpProportion"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Str(required=False, dump_to="Quantity"), - "ServerModelName": fields.Str(required=True, dump_to="ServerModelName"), - "ShareBandwidth": fields.Int(required=False, dump_to="ShareBandwidth"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "UPhoneModelName": fields.Str(required=True, dump_to="UPhoneModelName"), - } - - -class CreateUPhoneServerResponseSchema(schema.ResponseSchema): - """CreateUPhoneServer - 创建云手机服务器""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ServerId": fields.Str(required=True, load_from="ServerId"), - } - - -""" -API: DeleteUPhone - -删除云手机 -""" - - -class DeleteUPhoneRequestSchema(schema.RequestSchema): - """DeleteUPhone - 删除云手机""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class DeleteUPhoneResponseSchema(schema.ResponseSchema): - """DeleteUPhone - 删除云手机""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - } - - -""" -API: DeleteUPhoneImage - -删除自制云手机镜像。 -""" - - -class DeleteUPhoneImageRequestSchema(schema.RequestSchema): - """DeleteUPhoneImage - 删除自制云手机镜像。""" - - fields = { - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class DeleteUPhoneImageResponseSchema(schema.ResponseSchema): - """DeleteUPhoneImage - 删除自制云手机镜像。""" - - fields = { - "ImageId": fields.Str(required=True, load_from="ImageId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteUPhoneServer - -删除云手机服务器。 -""" - - -class DeleteUPhoneServerRequestSchema(schema.RequestSchema): - """DeleteUPhoneServer - 删除云手机服务器。""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ReleaseEIP": fields.Bool(required=False, dump_to="ReleaseEIP"), - "ReleaseUDisk": fields.Bool(required=False, dump_to="ReleaseUDisk"), - "ServerId": fields.Str(required=True, dump_to="ServerId"), - } - - -class DeleteUPhoneServerResponseSchema(schema.ResponseSchema): - """DeleteUPhoneServer - 删除云手机服务器。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteUPhoneShareBandwidth - -删除云手机共享带宽 -""" - - -class DeleteUPhoneShareBandwidthRequestSchema(schema.RequestSchema): - """DeleteUPhoneShareBandwidth - 删除云手机共享带宽""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ShareBandwidthId": fields.Str( - required=True, dump_to="ShareBandwidthId" - ), - } - - -class DeleteUPhoneShareBandwidthResponseSchema(schema.ResponseSchema): - """DeleteUPhoneShareBandwidth - 删除云手机共享带宽""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeUPhone - -获取云手机列表信息。 -""" - - -class DescribeUPhoneRequestSchema(schema.RequestSchema): - """DescribeUPhone - 获取云手机列表信息。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "IsAll": fields.Bool(required=False, dump_to="IsAll"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ServerId": fields.Str(required=False, dump_to="ServerId"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class DescribeUPhoneResponseSchema(schema.ResponseSchema): - """DescribeUPhone - 获取云手机列表信息。""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - "UPhones": fields.List( - models.UPhoneInstanceSchema(), required=True, load_from="UPhones" - ), - } - - -""" -API: DescribeUPhoneApp - -获取应用列表。 -""" - - -class DescribeUPhoneAppRequestSchema(schema.RequestSchema): - """DescribeUPhoneApp - 获取应用列表。""" - - fields = { - "AppIds": fields.List(fields.Str()), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class DescribeUPhoneAppResponseSchema(schema.ResponseSchema): - """DescribeUPhoneApp - 获取应用列表。""" - - fields = { - "Apps": fields.List( - models.AppInstanceSchema(), required=False, load_from="Apps" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneAppVersion - -获取应用版本列表。 -""" - - -class DescribeUPhoneAppVersionRequestSchema(schema.RequestSchema): - """DescribeUPhoneAppVersion - 获取应用版本列表。""" - - fields = { - "AppId": fields.Str(required=False, dump_to="AppId"), - "AppVersionIds": fields.List(fields.Str()), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=False, dump_to="UPhoneId"), - } - - -class DescribeUPhoneAppVersionResponseSchema(schema.ResponseSchema): - """DescribeUPhoneAppVersion - 获取应用版本列表。""" - - fields = { - "AppVersions": fields.List( - models.AppVersionInstanceSchema(), - required=True, - load_from="AppVersions", - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneCities - -获取云手机提供服务的城市列表 -""" - - -class DescribeUPhoneCitiesRequestSchema(schema.RequestSchema): - """DescribeUPhoneCities - 获取云手机提供服务的城市列表""" - - fields = { - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class DescribeUPhoneCitiesResponseSchema(schema.ResponseSchema): - """DescribeUPhoneCities - 获取云手机提供服务的城市列表""" - - fields = { - "UPhoneCities": fields.List( - models.CityInstanceSchema(), required=True, load_from="UPhoneCities" - ), - } - - -""" -API: DescribeUPhoneDetailByApp - -根据AppId,查询安装该应用的云手机以及相关的应用版本信息 -""" - - -class DescribeUPhoneDetailByAppRequestSchema(schema.RequestSchema): - """DescribeUPhoneDetailByApp - 根据AppId,查询安装该应用的云手机以及相关的应用版本信息""" - - fields = { - "AppId": fields.Str(required=True, dump_to="AppId"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class DescribeUPhoneDetailByAppResponseSchema(schema.ResponseSchema): - """DescribeUPhoneDetailByApp - 根据AppId,查询安装该应用的云手机以及相关的应用版本信息""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - "UPhoneDetails": fields.List( - models.UPhoneDetailInstanceSchema(), - required=True, - load_from="UPhoneDetails", - ), - } - - -""" -API: DescribeUPhoneEipList - -获取云手机Eip列表 -""" - - -class DescribeUPhoneEipListRequestSchema(schema.RequestSchema): - """DescribeUPhoneEipList - 获取云手机Eip列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Proportion": fields.Str(required=False, dump_to="Proportion"), - "Region": fields.Str(required=False, dump_to="Region"), - } - - -class DescribeUPhoneEipListResponseSchema(schema.ResponseSchema): - """DescribeUPhoneEipList - 获取云手机Eip列表""" - - fields = { - "EipInfos": fields.List( - models.EipInfoSchema(), required=True, load_from="EipInfos" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneImage - -获取云手机镜像信息列表。 -""" - - -class DescribeUPhoneImageRequestSchema(schema.RequestSchema): - """DescribeUPhoneImage - 获取云手机镜像信息列表。""" - - fields = { - "ImageIds": fields.List(fields.Str()), - "Limit": fields.Str(required=False, dump_to="Limit"), - "Offset": fields.Str(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Type": fields.Str(required=False, dump_to="Type"), - } - - -class DescribeUPhoneImageResponseSchema(schema.ResponseSchema): - """DescribeUPhoneImage - 获取云手机镜像信息列表。""" - - fields = { - "Images": fields.List( - models.UPhoneImageInstanceSchema(), - required=True, - load_from="Images", - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneIpRegions - -获取云手机所在城市支持绑定独立IP的地域列表 -""" - - -class DescribeUPhoneIpRegionsRequestSchema(schema.RequestSchema): - """DescribeUPhoneIpRegions - 获取云手机所在城市支持绑定独立IP的地域列表""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class DescribeUPhoneIpRegionsResponseSchema(schema.ResponseSchema): - """DescribeUPhoneIpRegions - 获取云手机所在城市支持绑定独立IP的地域列表""" - - fields = { - "Regions": fields.List( - models.IpRegionSchema(), required=True, load_from="Regions" - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneJob - -查询Job的执行状态。 -""" - - -class DescribeUPhoneJobRequestSchema(schema.RequestSchema): - """DescribeUPhoneJob - 查询Job的执行状态。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "JobIds": fields.List(fields.Str()), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "State": fields.Str(required=False, dump_to="State"), - "Types": fields.List(fields.Str()), - } - - -class DescribeUPhoneJobResponseSchema(schema.ResponseSchema): - """DescribeUPhoneJob - 查询Job的执行状态。""" - - fields = { - "Jobs": fields.List( - models.JobSchema(), required=False, load_from="Jobs" - ), - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneModel - -获取云手机规格列表。两种类型:uphone代表单云手机场景、uphone-server代表云手机服务器场景。 -""" - - -class DescribeUPhoneModelRequestSchema(schema.RequestSchema): - """DescribeUPhoneModel - 获取云手机规格列表。两种类型:uphone代表单云手机场景、uphone-server代表云手机服务器场景。""" - - fields = { - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Scene": fields.Str(required=False, dump_to="Scene"), - "UPhoneModelNames": fields.List(fields.Str()), - } - - -class DescribeUPhoneModelResponseSchema(schema.ResponseSchema): - """DescribeUPhoneModel - 获取云手机规格列表。两种类型:uphone代表单云手机场景、uphone-server代表云手机服务器场景。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - "UPhoneModels": fields.List( - models.UPhoneModelInstanceSchema(), - required=True, - load_from="UPhoneModels", - ), - } - - -""" -API: DescribeUPhoneServer - -获取云手机服务器列表信息。 -""" - - -class DescribeUPhoneServerRequestSchema(schema.RequestSchema): - """DescribeUPhoneServer - 获取云手机服务器列表信息。""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ServerIds": fields.List(fields.Str()), - } - - -class DescribeUPhoneServerResponseSchema(schema.ResponseSchema): - """DescribeUPhoneServer - 获取云手机服务器列表信息。""" - - fields = { - "Message": fields.Str(required=False, load_from="Message"), - "Servers": fields.List( - models.ServerInstanceSchema(), required=True, load_from="Servers" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneServerModel - -获取ServerModel列表。 -""" - - -class DescribeUPhoneServerModelRequestSchema(schema.RequestSchema): - """DescribeUPhoneServerModel - 获取ServerModel列表。""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "Limit": fields.Int(required=False, dump_to="Limit"), - "Offset": fields.Int(required=False, dump_to="Offset"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ServerModelNames": fields.List(fields.Str()), - } - - -class DescribeUPhoneServerModelResponseSchema(schema.ResponseSchema): - """DescribeUPhoneServerModel - 获取ServerModel列表。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ServerModels": fields.List( - models.ServerModelInstanceSchema(), - required=False, - load_from="ServerModels", - ), - "Stock": fields.List( - models.StockInfoSchema(), required=False, load_from="Stock" - ), - "TotalCount": fields.Int(required=True, load_from="TotalCount"), - } - - -""" -API: DescribeUPhoneShareBandwidth - -获取共享带宽列表 -""" - - -class DescribeUPhoneShareBandwidthRequestSchema(schema.RequestSchema): - """DescribeUPhoneShareBandwidth - 获取共享带宽列表""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Region": fields.Str(required=True, dump_to="Region"), - "ShareBandwidthId": fields.Str( - required=False, dump_to="ShareBandwidthId" - ), - } - - -class DescribeUPhoneShareBandwidthResponseSchema(schema.ResponseSchema): - """DescribeUPhoneShareBandwidth - 获取共享带宽列表""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ShareBandwidth": fields.List( - models.ShareBandwidthInfoSchema(), - required=True, - load_from="ShareBandwidth", - ), - "TotalCount": fields.Int(required=False, load_from="TotalCount"), - } - - -""" -API: GetUPhoneAllowance - -获取云手机创建余量 -""" - - -class GetUPhoneAllowanceRequestSchema(schema.RequestSchema): - """GetUPhoneAllowance - 获取云手机创建余量""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class GetUPhoneAllowanceResponseSchema(schema.ResponseSchema): - """GetUPhoneAllowance - 获取云手机创建余量""" - - fields = { - "UPhoneAllowance": fields.List( - models.UPhoneAllowanceSchema(), - required=True, - load_from="UPhoneAllowance", - ), - } - - -""" -API: GetUPhoneBandwidthUpgradePrice - -获取云手机带宽升降级价格 -""" - - -class GetUPhoneBandwidthUpgradePriceRequestSchema(schema.RequestSchema): - """GetUPhoneBandwidthUpgradePrice - 获取云手机带宽升降级价格""" - - fields = { - "Bandwidth": fields.Int(required=True, dump_to="Bandwidth"), - "ProductType": fields.Str(required=True, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class GetUPhoneBandwidthUpgradePriceResponseSchema(schema.ResponseSchema): - """GetUPhoneBandwidthUpgradePrice - 获取云手机带宽升降级价格""" - - fields = { - "ListPrice": fields.Float(required=True, load_from="ListPrice"), - "Message": fields.Str(required=True, load_from="Message"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -""" -API: GetUPhonePrice - -根据云手机规格名称,获取UPhone实例的价格。 -""" - - -class GetUPhonePriceRequestSchema(schema.RequestSchema): - """GetUPhonePrice - 根据云手机规格名称,获取UPhone实例的价格。""" - - fields = { - "BandwidthLine": fields.Int(required=False, dump_to="BandwidthLine"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=True, dump_to="CityId"), - "INetBandwidth": fields.Int(required=False, dump_to="INetBandwidth"), - "IpCount": fields.Int(required=False, dump_to="IpCount"), - "IpDestRegion": fields.Str(required=False, dump_to="IpDestRegion"), - "MediaBandwidth": fields.Int( - required=False, dump_to="MediaBandwidth" - ), # Deprecated, will be removed at 1.0 - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "UPhoneBandwidth": fields.Int( - required=False, dump_to="UPhoneBandwidth" - ), - "UPhoneCount": fields.Int(required=False, dump_to="UPhoneCount"), - "UPhoneModelName": fields.Int( - required=False, dump_to="UPhoneModelName" - ), - "UseGlobalBws": fields.Bool(required=False, dump_to="UseGlobalBws"), - "UseKbps": fields.Bool(required=False, dump_to="UseKbps"), - } - - -class GetUPhonePriceResponseSchema(schema.ResponseSchema): - """GetUPhonePrice - 根据云手机规格名称,获取UPhone实例的价格。""" - - fields = { - "PriceSet": fields.List( - models.UPhonePriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: GetUPhoneRenewPrice - -获取云手机续费价格,不包括独立ip价格。 -""" - - -class GetUPhoneRenewPriceRequestSchema(schema.RequestSchema): - """GetUPhoneRenewPrice - 获取云手机续费价格,不包括独立ip价格。""" - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class GetUPhoneRenewPriceResponseSchema(schema.ResponseSchema): - """GetUPhoneRenewPrice - 获取云手机续费价格,不包括独立ip价格。""" - - fields = { - "PriceSet": fields.List( - models.UPhonePriceSetSchema(), required=True, load_from="PriceSet" - ), - } - - -""" -API: GetUPhoneScreenCapture - -云手机截屏 -""" - - -class GetUPhoneScreenCaptureRequestSchema(schema.RequestSchema): - """GetUPhoneScreenCapture - 云手机截屏""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneID": fields.Str(required=True, dump_to="UPhoneID"), - } - - -class GetUPhoneScreenCaptureResponseSchema(schema.ResponseSchema): - """GetUPhoneScreenCapture - 云手机截屏""" - - fields = { - "URL": fields.Str(required=True, load_from="URL"), - } - - -""" -API: GetUPhoneServerPrice - -根据服务器规格名称,获取UPhoneServer实例的价格。 -""" - - -class GetUPhoneServerPriceRequestSchema(schema.RequestSchema): - """GetUPhoneServerPrice - 根据服务器规格名称,获取UPhoneServer实例的价格。""" - - fields = { - "Bandwidth": fields.Int(required=False, dump_to="Bandwidth"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=True, dump_to="CityId"), - "IpCount": fields.Int(required=False, dump_to="IpCount"), - "IpDestRegion": fields.Str(required=False, dump_to="IpDestRegion"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "ServerModelName": fields.Str(required=True, dump_to="ServerModelName"), - } - - -class GetUPhoneServerPriceResponseSchema(schema.ResponseSchema): - """GetUPhoneServerPrice - 根据服务器规格名称,获取UPhoneServer实例的价格。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "PriceSet": fields.List( - models.UPhoneServerPriceSetSchema(), - required=True, - load_from="PriceSet", - ), - } - - -""" -API: GetUPhoneServerRenewPrice - -获取云手机服务器续费价格 - -提示信息: 须按照控制台服务器模型配置创建服务器。详情请参考控制台。 -""" - - -class GetUPhoneServerRenewPriceRequestSchema(schema.RequestSchema): - """GetUPhoneServerRenewPrice - 获取云手机服务器续费价格 - - 提示信息: 须按照控制台服务器模型配置创建服务器。详情请参考控制台。 - """ - - fields = { - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ServerId": fields.Str(required=True, dump_to="ServerId"), - } - - -class GetUPhoneServerRenewPriceResponseSchema(schema.ResponseSchema): - """GetUPhoneServerRenewPrice - 获取云手机服务器续费价格 - - 提示信息: 须按照控制台服务器模型配置创建服务器。详情请参考控制台。 - """ - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "PriceSet": fields.List( - models.UPhoneServerPriceSetSchema(), - required=True, - load_from="PriceSet", - ), - } - - -""" -API: GetUPhoneShareBandwidthUpgradePrice - -获取云手机共享带宽升降级价格 -""" - - -class GetUPhoneShareBandwidthUpgradePriceRequestSchema(schema.RequestSchema): - """GetUPhoneShareBandwidthUpgradePrice - 获取云手机共享带宽升降级价格""" - - fields = { - "Bandwidth": fields.Int(required=True, dump_to="Bandwidth"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ShareBandwidthId": fields.Str( - required=True, dump_to="ShareBandwidthId" - ), - } - - -class GetUPhoneShareBandwidthUpgradePriceResponseSchema(schema.ResponseSchema): - """GetUPhoneShareBandwidthUpgradePrice - 获取云手机共享带宽升降级价格""" - - fields = { - "ListPrice": fields.Float(required=True, load_from="ListPrice"), - "Message": fields.Str(required=True, load_from="Message"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -""" -API: ImportFile - -上传文件到云手机目录/sdcard/Download/并自动安装APK文件 -""" - - -class ImportFileRequestSchema(schema.RequestSchema): - """ImportFile - 上传文件到云手机目录/sdcard/Download/并自动安装APK文件""" - - fields = { - "ABI": fields.Str(required=False, dump_to="ABI"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "FileName": fields.Str(required=True, dump_to="FileName"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - "URL": fields.Str(required=True, dump_to="URL"), - } - - -class ImportFileResponseSchema(schema.ResponseSchema): - """ImportFile - 上传文件到云手机目录/sdcard/Download/并自动安装APK文件""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - } - - -""" -API: InstallUPhoneAppVersion - -在云手机中安装应用版本相关的Apk文件。系统会根据AppVersionId将对应的Apk文件下载后安装到云手机中。一次只支持安装一个Apk。 -""" - - -class InstallUPhoneAppVersionRequestSchema(schema.RequestSchema): - """InstallUPhoneAppVersion - 在云手机中安装应用版本相关的Apk文件。系统会根据AppVersionId将对应的Apk文件下载后安装到云手机中。一次只支持安装一个Apk。""" - - fields = { - "AppVersionId": fields.Str(required=True, dump_to="AppVersionId"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class InstallUPhoneAppVersionResponseSchema(schema.ResponseSchema): - """InstallUPhoneAppVersion - 在云手机中安装应用版本相关的Apk文件。系统会根据AppVersionId将对应的Apk文件下载后安装到云手机中。一次只支持安装一个Apk。""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUPhoneBandwidth - -修改云手机带宽 -""" - - -class ModifyUPhoneBandwidthRequestSchema(schema.RequestSchema): - """ModifyUPhoneBandwidth - 修改云手机带宽""" - - fields = { - "Bandwidth": fields.Int(required=True, dump_to="Bandwidth"), - "ProductType": fields.Str(required=True, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class ModifyUPhoneBandwidthResponseSchema(schema.ResponseSchema): - """ModifyUPhoneBandwidth - 修改云手机带宽""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUPhoneName - -修改指定云手机实例名称。 -""" - - -class ModifyUPhoneNameRequestSchema(schema.RequestSchema): - """ModifyUPhoneName - 修改指定云手机实例名称。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class ModifyUPhoneNameResponseSchema(schema.ResponseSchema): - """ModifyUPhoneName - 修改指定云手机实例名称。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "UPhoneId": fields.Str(required=True, load_from="UPhoneId"), - } - - -""" -API: ModifyUPhoneRemark - -修改指定云手机实例备注信息。 -""" - - -class ModifyUPhoneRemarkRequestSchema(schema.RequestSchema): - """ModifyUPhoneRemark - 修改指定云手机实例备注信息。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class ModifyUPhoneRemarkResponseSchema(schema.ResponseSchema): - """ModifyUPhoneRemark - 修改指定云手机实例备注信息。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "UPhoneId": fields.Str(required=True, load_from="UPhoneId"), - } - - -""" -API: ModifyUPhoneServerName - -修改指定云手机服务器实例名称。 -""" - - -class ModifyUPhoneServerNameRequestSchema(schema.RequestSchema): - """ModifyUPhoneServerName - 修改指定云手机服务器实例名称。""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ServerId": fields.Str(required=True, dump_to="ServerId"), - } - - -class ModifyUPhoneServerNameResponseSchema(schema.ResponseSchema): - """ModifyUPhoneServerName - 修改指定云手机服务器实例名称。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ServerId": fields.Str(required=True, load_from="ServerId"), - } - - -""" -API: ModifyUPhoneServerRemark - -修改指定云手机实例备注信息。 -""" - - -class ModifyUPhoneServerRemarkRequestSchema(schema.RequestSchema): - """ModifyUPhoneServerRemark - 修改指定云手机实例备注信息。""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "ServerId": fields.Str(required=True, dump_to="ServerId"), - } - - -class ModifyUPhoneServerRemarkResponseSchema(schema.ResponseSchema): - """ModifyUPhoneServerRemark - 修改指定云手机实例备注信息。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ServerId": fields.Str(required=True, load_from="ServerId"), - } - - -""" -API: ModifyUPhoneShareBandwidth - -修改云手机共享带宽 -""" - - -class ModifyUPhoneShareBandwidthRequestSchema(schema.RequestSchema): - """ModifyUPhoneShareBandwidth - 修改云手机共享带宽""" - - fields = { - "Bandwidth": fields.Str(required=True, dump_to="Bandwidth"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ShareBandwidthId": fields.Str( - required=True, dump_to="ShareBandwidthId" - ), - } - - -class ModifyUPhoneShareBandwidthResponseSchema(schema.ResponseSchema): - """ModifyUPhoneShareBandwidth - 修改云手机共享带宽""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUPhoneShareBandwidthName - -修改云手机共享带宽名称 -""" - - -class ModifyUPhoneShareBandwidthNameRequestSchema(schema.RequestSchema): - """ModifyUPhoneShareBandwidthName - 修改云手机共享带宽名称""" - - fields = { - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ShareBandwidthId": fields.Str( - required=True, dump_to="ShareBandwidthId" - ), - } - - -class ModifyUPhoneShareBandwidthNameResponseSchema(schema.ResponseSchema): - """ModifyUPhoneShareBandwidthName - 修改云手机共享带宽名称""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ModifyUPhoneShareBandwidthRemark - -修改云手机共享带宽备注 -""" - - -class ModifyUPhoneShareBandwidthRemarkRequestSchema(schema.RequestSchema): - """ModifyUPhoneShareBandwidthRemark - 修改云手机共享带宽备注""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Remark": fields.Str(required=True, dump_to="Remark"), - "ShareBandwidthId": fields.Str( - required=True, dump_to="ShareBandwidthId" - ), - } - - -class ModifyUPhoneShareBandwidthRemarkResponseSchema(schema.ResponseSchema): - """ModifyUPhoneShareBandwidthRemark - 修改云手机共享带宽备注""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: PoweroffUPhone - -关闭处于运行状态的云手机实例 -""" - - -class PoweroffUPhoneRequestSchema(schema.RequestSchema): - """PoweroffUPhone - 关闭处于运行状态的云手机实例""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class PoweroffUPhoneResponseSchema(schema.ResponseSchema): - """PoweroffUPhone - 关闭处于运行状态的云手机实例""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: PoweronUPhone - -启动处于关闭状态的云手机实例 -""" - - -class PoweronUPhoneRequestSchema(schema.RequestSchema): - """PoweronUPhone - 启动处于关闭状态的云手机实例""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class PoweronUPhoneResponseSchema(schema.ResponseSchema): - """PoweronUPhone - 启动处于关闭状态的云手机实例""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RebootUPhone - -重新启动云手机实例 -""" - - -class RebootUPhoneRequestSchema(schema.RequestSchema): - """RebootUPhone - 重新启动云手机实例""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class RebootUPhoneResponseSchema(schema.ResponseSchema): - """RebootUPhone - 重新启动云手机实例""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RenewUPhone - -修改UPhone的device_id、imei、meid 以及其他相关配置,达到一键新机的效果 -""" - - -class RenewUPhoneRequestSchema(schema.RequestSchema): - """RenewUPhone - 修改UPhone的device_id、imei、meid 以及其他相关配置,达到一键新机的效果""" - - fields = { - "AndroidID": fields.Str(required=False, dump_to="AndroidID"), - "BSSID": fields.Str(required=False, dump_to="BSSID"), - "BaseBand": fields.Str(required=False, dump_to="BaseBand"), - "Board": fields.Str(required=False, dump_to="Board"), - "BootLoader": fields.Str(required=False, dump_to="BootLoader"), - "Brand": fields.Str(required=False, dump_to="Brand"), - "BuildHost": fields.Str(required=False, dump_to="BuildHost"), - "BuildID": fields.Str(required=False, dump_to="BuildID"), - "BuildTags": fields.Str(required=False, dump_to="BuildTags"), - "BuildVersionInc": fields.Str( - required=False, dump_to="BuildVersionInc" - ), - "CityId": fields.Str(required=False, dump_to="CityId"), - "Customize": fields.Bool(required=False, dump_to="Customize"), - "Device": fields.Str(required=False, dump_to="Device"), - "DisplayID": fields.Str(required=False, dump_to="DisplayID"), - "FingerPrint": fields.Str(required=False, dump_to="FingerPrint"), - "ICCID": fields.Str(required=False, dump_to="ICCID"), - "IMEI": fields.Str(required=False, dump_to="IMEI"), - "IMEISV": fields.Str(required=False, dump_to="IMEISV"), - "IMSI": fields.Str(required=False, dump_to="IMSI"), - "Manufacture": fields.Str(required=False, dump_to="Manufacture"), - "Model": fields.Str(required=False, dump_to="Model"), - "PhoneNumber": fields.Str(required=False, dump_to="PhoneNumber"), - "ProductName": fields.Str(required=False, dump_to="ProductName"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "RadioMac": fields.Str(required=False, dump_to="RadioMac"), - "SerialNumber": fields.Str(required=False, dump_to="SerialNumber"), - "UPhoneIds": fields.List(fields.Str()), - "WiFiName": fields.Str(required=False, dump_to="WiFiName"), - } - - -class RenewUPhoneResponseSchema(schema.ResponseSchema): - """RenewUPhone - 修改UPhone的device_id、imei、meid 以及其他相关配置,达到一键新机的效果""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: ResetUPhone - -将云手机恢复为创建时的状态。 -""" - - -class ResetUPhoneRequestSchema(schema.RequestSchema): - """ResetUPhone - 将云手机恢复为创建时的状态。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ImageId": fields.Str(required=False, dump_to="ImageId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - "UPhoneModelName": fields.Str( - required=False, dump_to="UPhoneModelName" - ), # Deprecated, will be removed at 1.0 - } - - -class ResetUPhoneResponseSchema(schema.ResponseSchema): - """ResetUPhone - 将云手机恢复为创建时的状态。""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RunAsyncCommand - -在云手机中执行异步shell命令。 -""" - - -class RunAsyncCommandRequestSchema(schema.RequestSchema): - """RunAsyncCommand - 在云手机中执行异步shell命令。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "Content": fields.Str(required=True, dump_to="Content"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class RunAsyncCommandResponseSchema(schema.ResponseSchema): - """RunAsyncCommand - 在云手机中执行异步shell命令。""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: RunSyncCommand - -在云手机中执行同步shell命令。 -""" - - -class RunSyncCommandRequestSchema(schema.RequestSchema): - """RunSyncCommand - 在云手机中执行同步shell命令。""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "Content": fields.Str(required=True, dump_to="Content"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class RunSyncCommandResponseSchema(schema.ResponseSchema): - """RunSyncCommand - 在云手机中执行同步shell命令。""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "Results": fields.List( - models.UPhoneCommandResultSchema(), - required=True, - load_from="Results", - ), - } - - -""" -API: SetUPhoneCallback - -设置云手机异步操作以及状态更新回调,支持云手机重置,安装应用,卸载应用,设备占用状态回调 -""" - - -class SetUPhoneCallbackRequestSchema(schema.RequestSchema): - """SetUPhoneCallback - 设置云手机异步操作以及状态更新回调,支持云手机重置,安装应用,卸载应用,设备占用状态回调""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - "URL": fields.Str(required=True, dump_to="URL"), - } - - -class SetUPhoneCallbackResponseSchema(schema.ResponseSchema): - """SetUPhoneCallback - 设置云手机异步操作以及状态更新回调,支持云手机重置,安装应用,卸载应用,设备占用状态回调""" - - fields = {} - - -""" -API: SetUPhoneConfig - -设置云手机画面参数(分辨率、DPI、帧率、码率) -""" - - -class SetUPhoneConfigRequestSchema(schema.RequestSchema): - """SetUPhoneConfig - 设置云手机画面参数(分辨率、DPI、帧率、码率)""" - - fields = { - "Async": fields.Str(required=False, dump_to="Async"), - "Bitrate": fields.Str(required=False, dump_to="Bitrate"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "Dpi": fields.Str(required=False, dump_to="Dpi"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Refresh": fields.Str(required=False, dump_to="Refresh"), - "Resolution": fields.Str(required=False, dump_to="Resolution"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class SetUPhoneConfigResponseSchema(schema.ResponseSchema): - """SetUPhoneConfig - 设置云手机画面参数(分辨率、DPI、帧率、码率)""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=False, load_from="Message"), - "RequestId": fields.Str(required=True, load_from="RequestId"), - "Results": fields.List( - models.ResultsSchema(), required=False, load_from="Results" - ), - } - - -""" -API: SetUPhoneGPS - -设置云手机GPS信息 -""" - - -class SetUPhoneGPSParamUPhoneGPSsSchema(schema.RequestSchema): - """SetUPhoneGPSParamUPhoneGPSs -""" - - fields = { - "Altitude": fields.Float(required=False, dump_to="Altitude"), - "Enabled": fields.Bool(required=False, dump_to="Enabled"), - "Latitude": fields.Float(required=False, dump_to="Latitude"), - "Longitude": fields.Float(required=False, dump_to="Longitude"), - "UPhoneId": fields.Str(required=False, dump_to="UPhoneId"), - } - - -class SetUPhoneGPSRequestSchema(schema.RequestSchema): - """SetUPhoneGPS - 设置云手机GPS信息""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneGPSs": fields.List(SetUPhoneGPSParamUPhoneGPSsSchema()), - } - - -class SetUPhoneGPSResponseSchema(schema.ResponseSchema): - """SetUPhoneGPS - 设置云手机GPS信息""" - - fields = { - "JobId": fields.Str(required=False, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: SetUPhoneManagerMode - -管理员模式支持所有按键,普通用户模式禁用返回桌面 -""" - - -class SetUPhoneManagerModeRequestSchema(schema.RequestSchema): - """SetUPhoneManagerMode - 管理员模式支持所有按键,普通用户模式禁用返回桌面""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "Mode": fields.Str(required=True, dump_to="Mode"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class SetUPhoneManagerModeResponseSchema(schema.ResponseSchema): - """SetUPhoneManagerMode - 管理员模式支持所有按键,普通用户模式禁用返回桌面""" - - fields = {} - - -""" -API: SetUPhoneRootMode - -设置云手机Root模式 -""" - - -class SetUPhoneRootModeRequestSchema(schema.RequestSchema): - """SetUPhoneRootMode - 设置云手机Root模式""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "PkgNames": fields.List(fields.Str()), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Root": fields.Bool(required=True, dump_to="Root"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class SetUPhoneRootModeResponseSchema(schema.ResponseSchema): - """SetUPhoneRootMode - 设置云手机Root模式""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: SetUPhoneSplashScreen - - -""" - - -class SetUPhoneSplashScreenRequestSchema(schema.RequestSchema): - """SetUPhoneSplashScreen -""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - "URL": fields.Str(required=True, dump_to="URL"), - } - - -class SetUPhoneSplashScreenResponseSchema(schema.ResponseSchema): - """SetUPhoneSplashScreen -""" - - fields = {} - - -""" -API: SetUPhoneToken - -设置云手机RTC连接Token提高安全性 -""" - - -class SetUPhoneTokenRequestSchema(schema.RequestSchema): - """SetUPhoneToken - 设置云手机RTC连接Token提高安全性""" - - fields = { - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Token": fields.Str(required=False, dump_to="Token"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class SetUPhoneTokenResponseSchema(schema.ResponseSchema): - """SetUPhoneToken - 设置云手机RTC连接Token提高安全性""" - - fields = {} - - -""" -API: SwitchUPhoneIndependentIp - -更换云手机独立IP -""" - - -class SwitchUPhoneIndependentIpRequestSchema(schema.RequestSchema): - """SwitchUPhoneIndependentIp - 更换云手机独立IP""" - - fields = { - "EipId": fields.Str(required=True, dump_to="EipId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class SwitchUPhoneIndependentIpResponseSchema(schema.ResponseSchema): - """SwitchUPhoneIndependentIp - 更换云手机独立IP""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "NewIp": fields.Str(required=True, load_from="NewIp"), - } - - -""" -API: SwitchUPhoneInstance - - -""" - - -class SwitchUPhoneInstanceParamSwitchInfosSchema(schema.RequestSchema): - """SwitchUPhoneInstanceParamSwitchInfos -""" - - fields = { - "ImageId": fields.Str(required=False, dump_to="ImageId"), - "UPhoneId": fields.Str(required=True, dump_to="UPhoneId"), - } - - -class SwitchUPhoneInstanceRequestSchema(schema.RequestSchema): - """SwitchUPhoneInstance -""" - - fields = { - "CityId": fields.Str(required=True, dump_to="CityId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "SwitchInfos": fields.List( - SwitchUPhoneInstanceParamSwitchInfosSchema() - ), - } - - -class SwitchUPhoneInstanceResponseSchema(schema.ResponseSchema): - """SwitchUPhoneInstance -""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UnInstallUPhoneAppVersion - -传入应用版本Id,在云手机中根据应用版本的PackageName卸载相关应用。一次只支持卸载一个应用。 -""" - - -class UnInstallUPhoneAppVersionRequestSchema(schema.RequestSchema): - """UnInstallUPhoneAppVersion - 传入应用版本Id,在云手机中根据应用版本的PackageName卸载相关应用。一次只支持卸载一个应用。""" - - fields = { - "AppVersionId": fields.Str(required=True, dump_to="AppVersionId"), - "CityId": fields.Str(required=False, dump_to="CityId"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class UnInstallUPhoneAppVersionResponseSchema(schema.ResponseSchema): - """UnInstallUPhoneAppVersion - 传入应用版本Id,在云手机中根据应用版本的PackageName卸载相关应用。一次只支持卸载一个应用。""" - - fields = { - "JobId": fields.Str(required=True, load_from="JobId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpdateUPhoneImage - -更新云手机镜像信息。 -""" - - -class UpdateUPhoneImageRequestSchema(schema.RequestSchema): - """UpdateUPhoneImage - 更新云手机镜像信息。""" - - fields = { - "Description": fields.Str(required=False, dump_to="Description"), - "ImageId": fields.Str(required=True, dump_to="ImageId"), - "Name": fields.Str(required=False, dump_to="Name"), - "ProductType": fields.Str(required=False, dump_to="ProductType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - } - - -class UpdateUPhoneImageResponseSchema(schema.ResponseSchema): - """UpdateUPhoneImage - 更新云手机镜像信息。""" - - fields = { - "ImageId": fields.Str(required=True, load_from="ImageId"), - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/uphone/schemas/models.py b/ucloud/services/uphone/schemas/models.py deleted file mode 100644 index 64f7ff51..00000000 --- a/ucloud/services/uphone/schemas/models.py +++ /dev/null @@ -1,357 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class UPhoneInstanceSchema(schema.ResponseSchema): - """UPhoneInstance -""" - - fields = { - "ADB": fields.Str(required=False, load_from="ADB"), - "CPU": fields.Float(required=True, load_from="CPU"), - "Callback": fields.Str(required=True, load_from="Callback"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CityId": fields.Str(required=True, load_from="CityId"), - "CityName": fields.Str(required=True, load_from="CityName"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "DiskSize": fields.Int(required=True, load_from="DiskSize"), - "EipId": fields.Str(required=False, load_from="EipId"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "ImageId": fields.Str(required=True, load_from="ImageId"), - "Ip": fields.Str(required=False, load_from="Ip"), - "IpRegion": fields.Str(required=False, load_from="IpRegion"), - "LockBandwidth": fields.Bool(required=False, load_from="LockBandwidth"), - "Memory": fields.Int(required=True, load_from="Memory"), - "OsType": fields.Str(required=True, load_from="OsType"), - "Refresh": fields.Int(required=True, load_from="Refresh"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Resolution": fields.Str(required=True, load_from="Resolution"), - "ServerId": fields.Str(required=True, load_from="ServerId"), - "ShareBandwidthId": fields.Str( - required=False, load_from="ShareBandwidthId" - ), - "ShareBandwidthName": fields.Str( - required=False, load_from="ShareBandwidthName" - ), - "SplashScreen": fields.Str(required=True, load_from="SplashScreen"), - "State": fields.Str(required=True, load_from="State"), - "Tag": fields.Str(required=True, load_from="Tag"), - "UPhoneBandwidth": fields.Int( - required=False, load_from="UPhoneBandwidth" - ), - "UPhoneId": fields.Str(required=True, load_from="UPhoneId"), - "UPhoneModelName": fields.Str( - required=True, load_from="UPhoneModelName" - ), - "UPhoneName": fields.Str(required=True, load_from="UPhoneName"), - "UPhoneScene": fields.Str(required=False, load_from="UPhoneScene"), - } - - -class AppInstanceSchema(schema.ResponseSchema): - """AppInstance -""" - - fields = { - "AppId": fields.Str(required=True, load_from="AppId"), - "AppName": fields.Str(required=True, load_from="AppName"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Description": fields.Str(required=False, load_from="Description"), - "ModifyTime": fields.Int(required=True, load_from="ModifyTime"), - } - - -class AppVersionInstanceSchema(schema.ResponseSchema): - """AppVersionInstance -""" - - fields = { - "AppId": fields.Str(required=True, load_from="AppId"), - "AppVersionId": fields.Str(required=True, load_from="AppVersionId"), - "AppVersionName": fields.Str(required=True, load_from="AppVersionName"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Description": fields.Str(required=False, load_from="Description"), - "ModifyTime": fields.Int(required=True, load_from="ModifyTime"), - "PackageName": fields.Str(required=True, load_from="PackageName"), - "URL": fields.Str(required=True, load_from="URL"), - } - - -class CityInstanceSchema(schema.ResponseSchema): - """CityInstance -""" - - fields = { - "CityAlias": fields.Str(required=False, load_from="CityAlias"), - "CityId": fields.Str(required=False, load_from="CityId"), - "CityName": fields.Str(required=False, load_from="CityName"), - "CityType": fields.Str(required=False, load_from="CityType"), - "IsSoldOut": fields.Bool(required=False, load_from="IsSoldOut"), - } - - -class UPhoneDetailInstanceSchema(schema.ResponseSchema): - """UPhoneDetailInstance -""" - - fields = { - "AppVersion": AppVersionInstanceSchema(), - "CPU": fields.Int(required=False, load_from="CPU"), - "CityId": fields.Str(required=False, load_from="CityId"), - "CityName": fields.Str(required=False, load_from="CityName"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DiskSize": fields.Int(required=False, load_from="DiskSize"), - "ImageId": fields.Str(required=False, load_from="ImageId"), - "Memory": fields.Int(required=False, load_from="Memory"), - "OsType": fields.Str(required=False, load_from="OsType"), - "Refresh": fields.Int(required=False, load_from="Refresh"), - "Remark": fields.Str(required=False, load_from="Remark"), - "Resolution": fields.Str(required=False, load_from="Resolution"), - "ServerId": fields.Str(required=False, load_from="ServerId"), - "State": fields.Str(required=False, load_from="State"), - "UPhoneId": fields.Str(required=False, load_from="UPhoneId"), - "UPhoneModelName": fields.Str( - required=False, load_from="UPhoneModelName" - ), - "UPhoneName": fields.Str(required=False, load_from="UPhoneName"), - } - - -class EipInfoSchema(schema.ResponseSchema): - """EipInfo - EIP信息""" - - fields = { - "BindCount": fields.Int(required=False, load_from="BindCount"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EipId": fields.Str(required=True, load_from="EipId"), - "EipIp": fields.Str(required=True, load_from="EipIp"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Name": fields.Str(required=False, load_from="Name"), - "Proportion": fields.Int(required=False, load_from="Proportion"), - "Region": fields.Str(required=True, load_from="Region"), - "RemainCount": fields.Int(required=False, load_from="RemainCount"), - "Remark": fields.Str(required=False, load_from="Remark"), - "UPhoneIds": fields.List(fields.Str()), - } - - -class UPhoneImageInstanceSchema(schema.ResponseSchema): - """UPhoneImageInstance -""" - - fields = { - "AppVersions": fields.List(AppVersionInstanceSchema()), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "Description": fields.Str(required=False, load_from="Description"), - "ImageId": fields.Str(required=True, load_from="ImageId"), - "ImageName": fields.Str(required=True, load_from="ImageName"), - "ImageState": fields.Str(required=True, load_from="ImageState"), - "ImageType": fields.Str(required=True, load_from="ImageType"), - "ModifyTime": fields.Int(required=True, load_from="ModifyTime"), - "OsType": fields.Str(required=True, load_from="OsType"), - "UPhoneId": fields.Str(required=False, load_from="UPhoneId"), - } - - -class IpRegionSchema(schema.ResponseSchema): - """IpRegion - 独立IP地域信息""" - - fields = { - "Id": fields.Str(required=True, load_from="Id"), - "StockStatus": fields.Str(required=True, load_from="StockStatus"), - } - - -class TaskSchema(schema.ResponseSchema): - """Task -""" - - fields = { - "AppVersionId": fields.Str(required=False, load_from="AppVersionId"), - "BeginTime": fields.Int(required=True, load_from="BeginTime"), - "EndTime": fields.Int(required=True, load_from="EndTime"), - "ErrorMsg": fields.Str(required=True, load_from="ErrorMsg"), - "ExecuteMsg": fields.Str(required=False, load_from="ExecuteMsg"), - "State": fields.Str(required=True, load_from="State"), - "TaskId": fields.Str(required=True, load_from="TaskId"), - "UPhoneId": fields.Str(required=False, load_from="UPhoneId"), - } - - -class JobSchema(schema.ResponseSchema): - """Job -""" - - fields = { - "AppVersionId": fields.Str(required=False, load_from="AppVersionId"), - "BeginTime": fields.Int(required=False, load_from="BeginTime"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "EndTime": fields.Int(required=False, load_from="EndTime"), - "JobId": fields.Str(required=False, load_from="JobId"), - "JobType": fields.Str(required=False, load_from="JobType"), - "State": fields.Str(required=False, load_from="State"), - "Tasks": fields.List(TaskSchema()), - "UPhoneIds": fields.List(fields.Str()), - } - - -class UPhoneModelInstanceSchema(schema.ResponseSchema): - """UPhoneModelInstance -""" - - fields = { - "CPU": fields.Int(required=True, load_from="CPU"), - "Description": fields.Str(required=False, load_from="Description"), - "DiskSize": fields.Int(required=True, load_from="DiskSize"), - "Dpi": fields.Int(required=False, load_from="Dpi"), - "Memory": fields.Int(required=True, load_from="Memory"), - "Refresh": fields.Int(required=True, load_from="Refresh"), - "Resolution": fields.Str(required=True, load_from="Resolution"), - "UPhoneModelName": fields.Str( - required=True, load_from="UPhoneModelName" - ), - } - - -class ServerDiskSetSchema(schema.ResponseSchema): - """ServerDiskSet -""" - - fields = { - "DiskType": fields.Str(required=True, load_from="DiskType"), - "IsBoot": fields.Bool(required=True, load_from="IsBoot"), - "Size": fields.Int(required=True, load_from="Size"), - } - - -class UPhoneSpecSchema(schema.ResponseSchema): - """UPhoneSpec -""" - - fields = { - "UPhoneCount": fields.Int(required=False, load_from="UPhoneCount"), - "UPhoneModelName": fields.Str( - required=False, load_from="UPhoneModelName" - ), - } - - -class ServerModelInstanceSchema(schema.ResponseSchema): - """ServerModelInstance -""" - - fields = { - "CPU": fields.Int(required=False, load_from="CPU"), - "DiskSet": fields.List(ServerDiskSetSchema()), - "GPU": fields.Int(required=False, load_from="GPU"), - "GPUType": fields.Str(required=False, load_from="GPUType"), - "Memory": fields.Int(required=False, load_from="Memory"), - "ServerModelName": fields.Str( - required=False, load_from="ServerModelName" - ), - "ServerModelState": fields.Str( - required=False, load_from="ServerModelState" - ), - "UPhoneSpecs": fields.List(UPhoneSpecSchema()), - } - - -class IpSetSchema(schema.ResponseSchema): - """IpSet -""" - - fields = { - "Ip": fields.Str(required=False, load_from="Ip"), - "IpMode": fields.Str(required=False, load_from="IpMode"), - "IpType": fields.Str(required=False, load_from="IpType"), - "Isp": fields.Str(required=False, load_from="Isp"), - } - - -class ServerInstanceSchema(schema.ResponseSchema): - """ServerInstance -""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "CityId": fields.Str(required=True, load_from="CityId"), - "CityName": fields.Str(required=True, load_from="CityName"), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ExpireTime": fields.Int(required=True, load_from="ExpireTime"), - "IpSet": fields.List(IpSetSchema()), - "ModifyTime": fields.Int(required=True, load_from="ModifyTime"), - "Remark": fields.Str(required=False, load_from="Remark"), - "ServerId": fields.Str(required=True, load_from="ServerId"), - "ServerModel": ServerModelInstanceSchema(), - "ServerName": fields.Str(required=True, load_from="ServerName"), - "State": fields.Str(required=False, load_from="State"), - "UPhoneCount": fields.Int(required=False, load_from="UPhoneCount"), - "UPhoneModelName": fields.Str( - required=True, load_from="UPhoneModelName" - ), - } - - -class StockInfoSchema(schema.ResponseSchema): - """StockInfo - model的可用量信息""" - - fields = { - "ModelName": fields.Str(required=False, load_from="ModelName"), - "StockCount": fields.Int(required=False, load_from="StockCount"), - } - - -class ShareBandwidthInfoSchema(schema.ResponseSchema): - """ShareBandwidthInfo - 共享带宽信息""" - - fields = { - "Bandwidth": fields.Int(required=True, load_from="Bandwidth"), - "BindCount": fields.Int(required=False, load_from="BindCount"), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "Id": fields.Str(required=True, load_from="Id"), - "IpCount": fields.Int(required=False, load_from="IpCount"), - "IpProportion": fields.Int(required=True, load_from="IpProportion"), - "Name": fields.Str(required=False, load_from="Name"), - "Region": fields.Str(required=True, load_from="Region"), - "RemainCount": fields.Int(required=False, load_from="RemainCount"), - "Remark": fields.Str(required=False, load_from="Remark"), - } - - -class UPhoneAllowanceSchema(schema.ResponseSchema): - """UPhoneAllowance - 云手机余量结构体""" - - fields = { - "Allowance": fields.Int(required=True, load_from="Allowance"), - "ModelName": fields.Str(required=True, load_from="ModelName"), - } - - -class UPhonePriceSetSchema(schema.ResponseSchema): - """UPhonePriceSet - 云手机价格列表""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "ListPrice": fields.Float(required=False, load_from="ListPrice"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -class UPhoneServerPriceSetSchema(schema.ResponseSchema): - """UPhoneServerPriceSet - 价格列表""" - - fields = { - "ChargeType": fields.Str(required=True, load_from="ChargeType"), - "ListPrice": fields.Float(required=False, load_from="ListPrice"), - "OriginalPrice": fields.Float(required=True, load_from="OriginalPrice"), - "Price": fields.Float(required=True, load_from="Price"), - } - - -class UPhoneCommandResultSchema(schema.ResponseSchema): - """UPhoneCommandResult -""" - - fields = { - "ExecuteMsg": fields.Str(required=False, load_from="ExecuteMsg"), - "UPhoneId": fields.Str(required=False, load_from="UPhoneId"), - } - - -class ResultsSchema(schema.ResponseSchema): - """Results -""" - - fields = { - "ExecuteMsg": fields.Str(required=False, load_from="ExecuteMsg"), - "UPhoneId": fields.Str(required=False, load_from="UPhoneId"), - } diff --git a/ucloud/services/uphost/__init__.py b/ucloud/services/uphost/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uphost/schemas/__init__.py b/ucloud/services/uphost/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/urocketmq/__init__.py b/ucloud/services/urocketmq/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/urocketmq/schemas/__init__.py b/ucloud/services/urocketmq/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uslk/__init__.py b/ucloud/services/uslk/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uslk/client.py b/ucloud/services/uslk/client.py deleted file mode 100644 index eff1635b..00000000 --- a/ucloud/services/uslk/client.py +++ /dev/null @@ -1,249 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uslk.schemas import apis - - -class USLKClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(USLKClient, self).__init__(config, transport, middleware, logger) - - def batch_create_uslk_short_link( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """BatchCreateUSLKShortLink - 批量创建短链接【免审】 - - **Request** - - - **EndTime** (int) - (Required) 过期时间戳(秒级),传 3376656000 表示生成永久生效短链接 - - **LongLinks** (list) - (Required) 长链接数组,示例: "LongLinks.0": "http://ucloud.cn/0", "LongLinks.1": "http://ucloud.cn/1" - - **Proto** (str) - (Required) 协议名称:http/https - - **ScenarioID** (int) - (Required) 场景ID - - **ShortLinkDomain** (str) - (Required) 短链接域名 - - **StartTime** (int) - (Required) 开始生效时间戳(秒级), 传 3376656000 表示生成永久生效短链接 - - **Response** - - - **Message** (str) - Message - - **ShortLinks** (list) - 创建成功的短链接,根据传LongLinks顺序排列 - - """ - # build request - d = {} - req and d.update(req) - d = apis.BatchCreateUSLKShortLinkRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("BatchCreateUSLKShortLink", d, **kwargs) - return apis.BatchCreateUSLKShortLinkResponseSchema().loads(resp) - - def create_uslk_long_link( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUSLKLongLink - 报备长链接 - - **Request** - - - **LongLink** (str) - (Required) 要报备的长链接 - - **ScenarioID** (int) - (Required) 场景ID - - **Response** - - - **LongLinkID** (int) - 长链接ID - - **Message** (str) - Message - - **ReqUuid** (str) - ReqUuid - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateUSLKLongLinkRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUSLKLongLink", d, **kwargs) - return apis.CreateUSLKLongLinkResponseSchema().loads(resp) - - def create_uslk_scenario( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUSLKScenario - 长链接报备场景创建 - - **Request** - - - **Scenario** (str) - (Required) 场景名称 - - **ScenarioDesc** (str) - (Required) 场景说明 - - **Response** - - - **Message** (str) - Message - - **ReqUuid** (str) - ReqUuid - - **ScenarioID** (int) - 场景ID - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateUSLKScenarioRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUSLKScenario", d, **kwargs) - return apis.CreateUSLKScenarioResponseSchema().loads(resp) - - def create_uslk_short_link( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateUSLKShortLink - 创建短链接 - - **Request** - - - **EndTime** (int) - (Required) 过期时间戳,传 3376656000 表示生成永久生效短链接 - - **LongLinkID** (int) - (Required) 长链接ID,状态必须为审核通过 - - **Proto** (str) - (Required) 协议名称:http/https - - **StartTime** (int) - (Required) 开始生效时间戳, 传 3376656000 表示生成永久生效短链接 - - **Type** (int) - (Required) 链接类型-预留:普通跳转、随机跳转,当前默认普通跳转 1: 普通跳转 - - **ShortLinkDomain** (str) - 短链接域名,默认:uslk.net - - **Response** - - - **Message** (str) - Message - - **ShortLink** (str) - 生成的短链接内容 - - """ - # build request - d = {} - req and d.update(req) - d = apis.CreateUSLKShortLinkRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateUSLKShortLink", d, **kwargs) - return apis.CreateUSLKShortLinkResponseSchema().loads(resp) - - def describe_uslk_redirect_records( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUSLKRedirectRecords - 查询短链接访问明细列表 - - **Request** - - - **EndTime** (int) - (Required) 查询周期结束时间戳(ms级别) - - **ShortLink** (str) - (Required) 短链接 - - **StartTime** (int) - (Required) 查询周期开始时间戳(ms级别) - - **FuzzySearch** (str) - 模糊查询字段值,支持根据生成短链接进行模糊查询。支持字段(ShortLink,场景名称) - - **NumPerPage** (int) - 每页个数,用于分页查找,默认20 - - **OrderBy** (str) - 根据指定字段排序:默认按短链接访问时间:CreateTime 排序 - - **OrderType** (str) - 排序方式。asc-正序 desc-倒序 - - **Page** (int) - 页码,从0开始,用于分页查找 - - **Response** - - - **Data** (list) - 见 **RedirectRecords** 模型定义 - - **Message** (str) - Message - - **Total** (int) - 数据总量 - - **Response Model** - - **RedirectRecords** - - **AccountID** (int) - 账户ID - - **Browser** (str) - 访问设备 - - **ClientIP** (str) - 访问IP - - **Os** (str) - 访问操作系统 - - **ProvinceCode** (str) - 访问省份信息 - - **RedirectTime** (int) - 重定向时间戳 (ms) - - **RequestTime** (int) - 访问时间戳(ms) - - **Scenario** (str) - 报备场景 - - **ScenarioID** (int) - 场景ID - - **ShortLink** (str) - 短链接 - - **ShortLinkDomain** (str) - 短链接域名 - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeUSLKRedirectRecordsRequestSchema().dumps(d) - - resp = self.invoke("DescribeUSLKRedirectRecords", d, **kwargs) - return apis.DescribeUSLKRedirectRecordsResponseSchema().loads(resp) - - def describe_uslk_short_link_list( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeUSLKShortLinkList - 查询短链接列表 - - **Request** - - - **EndTime** (int) - 查询周期结束时间戳 - - **FuzzySearch** (str) - 模糊查询字段值,支持根据生成短链接进行模糊查询。支持字段(LonkLink,场景名称) - - **LongLinkID** (int) - 长链接ID - - **NumPerPage** (int) - 每页个数,用于分页查找,默认20 - - **OrderBy** (str) - 根据指定字段排序:默认按创建时间:CreateTime 排序,支持值:CreateTime,StartTime,EndTime - - **OrderType** (str) - 排序方式。asc-正序 desc-倒序 - - **Page** (int) - 页码,从0开始,用于分页查找 - - **ScenarioID** (int) - 场景ID - - **ShortLink** (str) - 短链 - - **StartTime** (int) - 查询周期开始时间戳 - - **Status** (int) - 1: 待生效;2:已生效;3:已失效;4:已删除(预留);5:已封禁 - - **Response** - - - **Data** (list) - 见 **ShortLink** 模型定义 - - **Message** (str) - Message - - **Response Model** - - **ShortLink** - - **ClickCount** (int) - 累计访问量 - - **ClickCountToday** (int) - 当日访问量 - - **CreateTime** (int) - 短链接创建时间 - - **DeleteTime** (int) - 删除时间戳 - - **EndTime** (int) - 短链接过期时间戳 - - **ID** (int) - 短链接ID - - **LongLinks** (list) - 关联长链接列表 - - **Operator** (str) - 操作人 - - **Remark** (str) - 操作说明(封禁原因) - - **Scenario** (str) - 报备场景 - - **ScenarioDesc** (str) - 场景描述 - - **ScenarioID** (int) - 场景ID - - **SecondaryLinks** (list) - 见 **SecondaryLinkForQuery** 模型定义 - - **ShortLink** (str) - 短链接 - - **ShortLinkDomain** (str) - 短链接域名 - - **StartTime** (int) - 短链接开始生效时间戳 - - **Status** (int) - 短链接状态:1: 待生效;2:已生效;3:已失效;4:已删除(预留);5:已封禁 - - **Type** (int) - 链接类型-预留:1:普通跳转 3:智能跳转等 - - **UniqueClickCount** (int) - 累计独立访问量 - - **UniqueClickCountToday** (int) - 今日独立访问量 - - **UpdateTime** (int) - 更新时间戳 - - - **SecondaryLinkForQuery** - - **IsSecondary** (bool) - 是否是次链接 - - **LongLink** (str) - 长链接 - - **LongLinkID** (int) - 长链接ID - - **Oses** (str) - 操作系统,例如: Windows,Android,多个以逗号分隔 - - **ProvinceCodes** (str) - 省份codes,例如: Hebei,Shandong,多个以逗号分隔 - - **Scenario** (str) - 场景名称 - - **ScenarioID** (int) - 场景ID - - **ShortLongMapID** (int) - 长短链接映射ID - - - """ - # build request - d = {} - req and d.update(req) - d = apis.DescribeUSLKShortLinkListRequestSchema().dumps(d) - - resp = self.invoke("DescribeUSLKShortLinkList", d, **kwargs) - return apis.DescribeUSLKShortLinkListResponseSchema().loads(resp) diff --git a/ucloud/services/uslk/schemas/__init__.py b/ucloud/services/uslk/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uslk/schemas/apis.py b/ucloud/services/uslk/schemas/apis.py deleted file mode 100644 index d292a7b4..00000000 --- a/ucloud/services/uslk/schemas/apis.py +++ /dev/null @@ -1,191 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uslk.schemas import models - -""" USLK API Schema -""" - - -""" -API: BatchCreateUSLKShortLink - -批量创建短链接【免审】 -""" - - -class BatchCreateUSLKShortLinkRequestSchema(schema.RequestSchema): - """BatchCreateUSLKShortLink - 批量创建短链接【免审】""" - - fields = { - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "LongLinks": fields.List(fields.Str()), - "Proto": fields.Str(required=True, dump_to="Proto"), - "ScenarioID": fields.Int(required=True, dump_to="ScenarioID"), - "ShortLinkDomain": fields.Str(required=True, dump_to="ShortLinkDomain"), - "StartTime": fields.Int(required=True, dump_to="StartTime"), - } - - -class BatchCreateUSLKShortLinkResponseSchema(schema.ResponseSchema): - """BatchCreateUSLKShortLink - 批量创建短链接【免审】""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ShortLinks": fields.List( - fields.Str(), required=True, load_from="ShortLinks" - ), - } - - -""" -API: CreateUSLKLongLink - -报备长链接 -""" - - -class CreateUSLKLongLinkRequestSchema(schema.RequestSchema): - """CreateUSLKLongLink - 报备长链接""" - - fields = { - "LongLink": fields.Str(required=True, dump_to="LongLink"), - "ScenarioID": fields.Int(required=True, dump_to="ScenarioID"), - } - - -class CreateUSLKLongLinkResponseSchema(schema.ResponseSchema): - """CreateUSLKLongLink - 报备长链接""" - - fields = { - "LongLinkID": fields.Int(required=False, load_from="LongLinkID"), - "Message": fields.Str(required=True, load_from="Message"), - "ReqUuid": fields.Str(required=False, load_from="ReqUuid"), - } - - -""" -API: CreateUSLKScenario - -长链接报备场景创建 -""" - - -class CreateUSLKScenarioRequestSchema(schema.RequestSchema): - """CreateUSLKScenario - 长链接报备场景创建""" - - fields = { - "Scenario": fields.Str(required=True, dump_to="Scenario"), - "ScenarioDesc": fields.Str(required=True, dump_to="ScenarioDesc"), - } - - -class CreateUSLKScenarioResponseSchema(schema.ResponseSchema): - """CreateUSLKScenario - 长链接报备场景创建""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ReqUuid": fields.Str(required=False, load_from="ReqUuid"), - "ScenarioID": fields.Int(required=False, load_from="ScenarioID"), - } - - -""" -API: CreateUSLKShortLink - -创建短链接 -""" - - -class CreateUSLKShortLinkRequestSchema(schema.RequestSchema): - """CreateUSLKShortLink - 创建短链接""" - - fields = { - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "LongLinkID": fields.Int(required=True, dump_to="LongLinkID"), - "Proto": fields.Str(required=True, dump_to="Proto"), - "ShortLinkDomain": fields.Str( - required=False, dump_to="ShortLinkDomain" - ), - "StartTime": fields.Int(required=True, dump_to="StartTime"), - "Type": fields.Int(required=True, dump_to="Type"), - } - - -class CreateUSLKShortLinkResponseSchema(schema.ResponseSchema): - """CreateUSLKShortLink - 创建短链接""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ShortLink": fields.Str(required=False, load_from="ShortLink"), - } - - -""" -API: DescribeUSLKRedirectRecords - -查询短链接访问明细列表 -""" - - -class DescribeUSLKRedirectRecordsRequestSchema(schema.RequestSchema): - """DescribeUSLKRedirectRecords - 查询短链接访问明细列表""" - - fields = { - "EndTime": fields.Int(required=True, dump_to="EndTime"), - "FuzzySearch": fields.Str(required=False, dump_to="FuzzySearch"), - "NumPerPage": fields.Int(required=False, dump_to="NumPerPage"), - "OrderBy": fields.Str(required=False, dump_to="OrderBy"), - "OrderType": fields.Str(required=False, dump_to="OrderType"), - "Page": fields.Int(required=False, dump_to="Page"), - "ShortLink": fields.Str(required=True, dump_to="ShortLink"), - "StartTime": fields.Int(required=True, dump_to="StartTime"), - } - - -class DescribeUSLKRedirectRecordsResponseSchema(schema.ResponseSchema): - """DescribeUSLKRedirectRecords - 查询短链接访问明细列表""" - - fields = { - "Data": fields.List( - models.RedirectRecordsSchema(), required=False, load_from="Data" - ), - "Message": fields.Str(required=True, load_from="Message"), - "Total": fields.Int(required=False, load_from="Total"), - } - - -""" -API: DescribeUSLKShortLinkList - -查询短链接列表 -""" - - -class DescribeUSLKShortLinkListRequestSchema(schema.RequestSchema): - """DescribeUSLKShortLinkList - 查询短链接列表""" - - fields = { - "EndTime": fields.Int(required=False, dump_to="EndTime"), - "FuzzySearch": fields.Str(required=False, dump_to="FuzzySearch"), - "LongLinkID": fields.Int(required=False, dump_to="LongLinkID"), - "NumPerPage": fields.Int(required=False, dump_to="NumPerPage"), - "OrderBy": fields.Str(required=False, dump_to="OrderBy"), - "OrderType": fields.Str(required=False, dump_to="OrderType"), - "Page": fields.Int(required=False, dump_to="Page"), - "ScenarioID": fields.Int(required=False, dump_to="ScenarioID"), - "ShortLink": fields.Str(required=False, dump_to="ShortLink"), - "StartTime": fields.Int(required=False, dump_to="StartTime"), - "Status": fields.Int(required=False, dump_to="Status"), - } - - -class DescribeUSLKShortLinkListResponseSchema(schema.ResponseSchema): - """DescribeUSLKShortLinkList - 查询短链接列表""" - - fields = { - "Data": fields.List( - models.ShortLinkSchema(), required=False, load_from="Data" - ), - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/uslk/schemas/models.py b/ucloud/services/uslk/schemas/models.py deleted file mode 100644 index 066d4209..00000000 --- a/ucloud/services/uslk/schemas/models.py +++ /dev/null @@ -1,74 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class RedirectRecordsSchema(schema.ResponseSchema): - """RedirectRecords - 访问明细""" - - fields = { - "AccountID": fields.Int(required=True, load_from="AccountID"), - "Browser": fields.Str(required=True, load_from="Browser"), - "ClientIP": fields.Str(required=True, load_from="ClientIP"), - "Os": fields.Str(required=True, load_from="Os"), - "ProvinceCode": fields.Str(required=True, load_from="ProvinceCode"), - "RedirectTime": fields.Int(required=True, load_from="RedirectTime"), - "RequestTime": fields.Int(required=True, load_from="RequestTime"), - "Scenario": fields.Str(required=True, load_from="Scenario"), - "ScenarioID": fields.Int(required=True, load_from="ScenarioID"), - "ShortLink": fields.Str(required=True, load_from="ShortLink"), - "ShortLinkDomain": fields.Str( - required=True, load_from="ShortLinkDomain" - ), - } - - -class SecondaryLinkForQuerySchema(schema.ResponseSchema): - """SecondaryLinkForQuery - SecondaryLink查询实体""" - - fields = { - "IsSecondary": fields.Bool(required=True, load_from="IsSecondary"), - "LongLink": fields.Str(required=True, load_from="LongLink"), - "LongLinkID": fields.Int(required=True, load_from="LongLinkID"), - "Oses": fields.Str(required=True, load_from="Oses"), - "ProvinceCodes": fields.Str(required=True, load_from="ProvinceCodes"), - "Scenario": fields.Str(required=True, load_from="Scenario"), - "ScenarioID": fields.Int(required=True, load_from="ScenarioID"), - "ShortLongMapID": fields.Int(required=True, load_from="ShortLongMapID"), - } - - -class ShortLinkSchema(schema.ResponseSchema): - """ShortLink - 短链接返回模型""" - - fields = { - "ClickCount": fields.Int(required=True, load_from="ClickCount"), - "ClickCountToday": fields.Int( - required=True, load_from="ClickCountToday" - ), - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "DeleteTime": fields.Int(required=True, load_from="DeleteTime"), - "EndTime": fields.Int(required=True, load_from="EndTime"), - "ID": fields.Int(required=True, load_from="ID"), - "LongLinks": fields.List(fields.Str()), - "Operator": fields.Str(required=True, load_from="Operator"), - "Remark": fields.Str(required=True, load_from="Remark"), - "Scenario": fields.Str(required=True, load_from="Scenario"), - "ScenarioDesc": fields.Str(required=True, load_from="ScenarioDesc"), - "ScenarioID": fields.Int(required=True, load_from="ScenarioID"), - "SecondaryLinks": fields.List(SecondaryLinkForQuerySchema()), - "ShortLink": fields.Str(required=True, load_from="ShortLink"), - "ShortLinkDomain": fields.Str( - required=True, load_from="ShortLinkDomain" - ), - "StartTime": fields.Int(required=True, load_from="StartTime"), - "Status": fields.Int(required=True, load_from="Status"), - "Type": fields.Int(required=True, load_from="Type"), - "UniqueClickCount": fields.Int( - required=True, load_from="UniqueClickCount" - ), - "UniqueClickCountToday": fields.Int( - required=True, load_from="UniqueClickCountToday" - ), - "UpdateTime": fields.Int(required=True, load_from="UpdateTime"), - } diff --git a/ucloud/services/usms/__init__.py b/ucloud/services/usms/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/usms/schemas/__init__.py b/ucloud/services/usms/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/usms/schemas/models.py b/ucloud/services/usms/schemas/models.py deleted file mode 100644 index 66214c44..00000000 --- a/ucloud/services/usms/schemas/models.py +++ /dev/null @@ -1,215 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class ReceiptPerPhoneSchema(schema.ResponseSchema): - """ReceiptPerPhone - 每个目的手机号的发送回执信息""" - - fields = { - "CostCount": fields.Int(required=True, load_from="CostCount"), - "Phone": fields.Str(required=True, load_from="Phone"), - "ReceiptCode": fields.Str(required=True, load_from="ReceiptCode"), - "ReceiptDesc": fields.Str(required=True, load_from="ReceiptDesc"), - "ReceiptResult": fields.Str(required=True, load_from="ReceiptResult"), - "ReceiptTime": fields.Int(required=True, load_from="ReceiptTime"), - "UserId": fields.Str(required=True, load_from="UserId"), - } - - -class ReceiptPerSessionSchema(schema.ResponseSchema): - """ReceiptPerSession - 每个提交的回执结果集合""" - - fields = { - "ReceiptSet": fields.List(ReceiptPerPhoneSchema()), - "SessionNo": fields.Str(required=True, load_from="SessionNo"), - } - - -class StatisticsDataInfoSchema(schema.ResponseSchema): - """StatisticsDataInfo - 统计信息按天聚合""" - - fields = { - "BrevityCode": fields.Str(required=True, load_from="BrevityCode"), - "CostCount": fields.Int(required=True, load_from="CostCount"), - "Count": fields.Int(required=True, load_from="Count"), - "FailedCostCount": fields.Int( - required=True, load_from="FailedCostCount" - ), - "FailedCount": fields.Int(required=True, load_from="FailedCount"), - "SendDate": fields.Str(required=True, load_from="SendDate"), - "SubmitFailedCostCount": fields.Int( - required=True, load_from="SubmitFailedCostCount" - ), - "SubmitFailedCount": fields.Int( - required=True, load_from="SubmitFailedCount" - ), - "SuccessCostCount": fields.Int( - required=True, load_from="SuccessCostCount" - ), - "SuccessCount": fields.Int(required=True, load_from="SuccessCount"), - "SuccessRate": fields.Float(required=True, load_from="SuccessRate"), - "UnknownCostCount": fields.Int( - required=True, load_from="UnknownCostCount" - ), - "UnknownCount": fields.Int(required=True, load_from="UnknownCount"), - "UserId": fields.Str(required=True, load_from="UserId"), - } - - -class StatisticsDataSchema(schema.ResponseSchema): - """StatisticsData - 统计信息""" - - fields = { - "FailCostCount": fields.Int(required=True, load_from="FailCostCount"), - "FailCount": fields.Int(required=True, load_from="FailCount"), - "SendCostCount": fields.Int(required=True, load_from="SendCostCount"), - "SendCount": fields.Int(required=True, load_from="SendCount"), - "SubmitFailCostCount": fields.Int( - required=True, load_from="SubmitFailCostCount" - ), - "SubmitFailCount": fields.Int( - required=True, load_from="SubmitFailCount" - ), - "SuccessCostCount": fields.Int( - required=True, load_from="SuccessCostCount" - ), - "SuccessCount": fields.Int(required=True, load_from="SuccessCount"), - "UnknownCostCount": fields.Int( - required=True, load_from="UnknownCostCount" - ), - "UnknownCount": fields.Int(required=True, load_from="UnknownCount"), - } - - -class OutSignatureQualificationSchema(schema.ResponseSchema): - """OutSignatureQualification -""" - - fields = { - "AccountId": fields.Int(required=False, load_from="AccountId"), - "Attr": fields.Int(required=False, load_from="Attr"), - "CompanyName": fields.Str(required=False, load_from="CompanyName"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ErrCode": fields.Int(required=False, load_from="ErrCode"), - "ErrDesc": fields.Str(required=False, load_from="ErrDesc"), - "HandlerName": fields.Str(required=False, load_from="HandlerName"), - "ManagerName": fields.Str(required=False, load_from="ManagerName"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "Name": fields.Str(required=False, load_from="Name"), - "QualificationId": fields.Str( - required=False, load_from="QualificationId" - ), - "ReviewEndTime": fields.Int(required=False, load_from="ReviewEndTime"), - "ReviewStartTime": fields.Int( - required=False, load_from="ReviewStartTime" - ), - "Status": fields.Int(required=False, load_from="Status"), - } - - -class OutSignatureSchema(schema.ResponseSchema): - """OutSignature - 短信签名""" - - fields = { - "ErrDesc": fields.Str(required=True, load_from="ErrDesc"), - "SigContent": fields.Str(required=True, load_from="SigContent"), - "SigId": fields.Str(required=True, load_from="SigId"), - "Status": fields.Int(required=True, load_from="Status"), - } - - -class OutSignatureQualificationDetailSchema(schema.ResponseSchema): - """OutSignatureQualificationDetail -""" - - fields = { - "Attr": fields.Int(required=False, load_from="Attr"), - "CompanyCertificateFile": fields.Str( - required=False, load_from="CompanyCertificateFile" - ), - "CompanyCreditCode": fields.Str( - required=False, load_from="CompanyCreditCode" - ), - "CompanyName": fields.Str(required=False, load_from="CompanyName"), - "CompanyWorkScenePhotos": fields.Str( - required=False, load_from="CompanyWorkScenePhotos" - ), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ErrCode": fields.Int(required=False, load_from="ErrCode"), - "ErrDesc": fields.Str(required=False, load_from="ErrDesc"), - "HandlerHandHeldImage": fields.Str( - required=False, load_from="HandlerHandHeldImage" - ), - "HandlerIDCardBackImage": fields.Str( - required=False, load_from="HandlerIDCardBackImage" - ), - "HandlerIDCardFrontImage": fields.Str( - required=False, load_from="HandlerIDCardFrontImage" - ), - "HandlerIDNumber": fields.Str( - required=False, load_from="HandlerIDNumber" - ), - "HandlerName": fields.Str(required=False, load_from="HandlerName"), - "ManagerIDNumber": fields.Str( - required=False, load_from="ManagerIDNumber" - ), - "ManagerName": fields.Str(required=False, load_from="ManagerName"), - "ModifyTime": fields.Int(required=False, load_from="ModifyTime"), - "Name": fields.Str(required=False, load_from="Name"), - "PowerOfAttorney": fields.Str( - required=False, load_from="PowerOfAttorney" - ), - "QualificationId": fields.Str( - required=False, load_from="QualificationId" - ), - "ReviewEndTime": fields.Int(required=False, load_from="ReviewEndTime"), - "ReviewStartTime": fields.Int( - required=False, load_from="ReviewStartTime" - ), - "Status": fields.Int(required=False, load_from="Status"), - } - - -class OutTemplateSchema(schema.ResponseSchema): - """OutTemplate - 短信模板""" - - fields = { - "CreateTime": fields.Int(required=True, load_from="CreateTime"), - "ErrDesc": fields.Str(required=True, load_from="ErrDesc"), - "Instruction": fields.Str(required=False, load_from="Instruction"), - "Purpose": fields.Int(required=True, load_from="Purpose"), - "Remark": fields.Str(required=True, load_from="Remark"), - "Status": fields.Int(required=True, load_from="Status"), - "Template": fields.Str(required=True, load_from="Template"), - "TemplateId": fields.Str(required=True, load_from="TemplateId"), - "TemplateName": fields.Str(required=True, load_from="TemplateName"), - "UnsubscribeInfo": fields.Str( - required=True, load_from="UnsubscribeInfo" - ), - } - - -class FailPhoneDetailSchema(schema.ResponseSchema): - """FailPhoneDetail - 批量任务中,未能成功发送的号码及其原因""" - - fields = { - "ExtendCode": fields.Str(required=False, load_from="ExtendCode"), - "FailureDetails": fields.Str( - required=False, load_from="FailureDetails" - ), - "Phone": fields.Str(required=True, load_from="Phone"), - "TemplateParams": fields.List(fields.Str()), - "UserId": fields.Str(required=False, load_from="UserId"), - } - - -class BatchInfoSchema(schema.ResponseSchema): - """BatchInfo - 批量发送任务中未能成功发送的信息详情,“模板+签名”粒度""" - - fields = { - "FailureDetails": fields.Str( - required=False, load_from="FailureDetails" - ), - "SigContent": fields.Str(required=True, load_from="SigContent"), - "Target": fields.List(FailPhoneDetailSchema()), - "TemplateId": fields.Str(required=True, load_from="TemplateId"), - } diff --git a/ucloud/services/utsdb/__init__.py b/ucloud/services/utsdb/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/utsdb/schemas/__init__.py b/ucloud/services/utsdb/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uvms/__init__.py b/ucloud/services/uvms/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uvms/client.py b/ucloud/services/uvms/client.py deleted file mode 100644 index 41392f17..00000000 --- a/ucloud/services/uvms/client.py +++ /dev/null @@ -1,119 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uvms.schemas import apis - - -class UVMSClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UVMSClient, self).__init__(config, transport, middleware, logger) - - def get_uvms_send_record( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """GetUVMSSendRecord - 获取语音发送记录 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **BrevityCode** (str) - 国际码,国内CN - - **CalledCityCode** (str) - 被叫城市编码 - - **CalledOperatorCode** (str) - 被叫运营商 cmcc中国移动,cucc中国联通,ctcc中国电信 - - **CallingCityCode** (str) - 主叫城市编码 - - **EndTime** (float) - 结束时间-拨打时间,时间戳(秒),默认当前 - - **ExcludeBrevityCode** (str) - 排除国际码 - - **FuzzySearch** (str) - 模糊搜索,支持 主叫号码和被叫号码 - - **NumPerPage** (int) - 每页数量,默认10 - - **OrderBy** (str) - call_start_time(拨打时间)/receive_time(回执时间) - - **OrderType** (str) - asc\desc - - **Page** (int) - 页码,默认0 - - **PhoneNumber** (str) - 被叫号码,精确查询 - - **Purpose** (int) - 目标1验证码2通知3营销 - - **StartTime** (float) - 开始时间-拨打时间,时间戳(秒),默认最近7天 - - **TaskNo** (str) - 任务编号 - - **TemplateId** (str) - 目标ID - - **Response** - - - **Data** (list) - 见 **SendRecordItem** 模型定义 - - **Total** (int) - 总数 - - **Response Model** - - **SendRecordItem** - - **BillPeriod** (int) - 计费周期(秒) - - **BillSecond** (int) - 计费时长(秒) - - **BrevityCode** (str) - 国际码 - - **CallEndTime** (float) - 呼叫结束时间(毫秒时间戳) - - **CallStartTime** (float) - 呼叫开始时间(毫秒时间戳) - - **CalledCityCode** (str) - 被叫所属城市码 - - **CalledOperatorCode** (str) - 被叫供应商码 cmcc中国移动,cucc中国联通,ctcc中国电信 - - **CallingCityCode** (str) - 主叫所属城市码 - - **ChannelId** (str) - 通道ID - - **CountryCode** (str) - 国家码 - - **Duration** (int) - 呼叫持续时间 - - **GroupType** (int) - 1随机号码组2专属号码组 - - **Phone** (str) - 被叫号码 - - **PreCost** (int) - 预扣量 - - **Purpose** (int) - 目标1验证码2通知3营销 - - **ReceiptDesc** (str) - 回执描述 - - **ReceiptResult** (int) - 回执结果1成功2失败3未知 - - **ReceiveTime** (float) - 回执时间 - - **ShowNumber** (str) - 主叫号码,如果是随机,可能为空 - - **SubmitTime** (float) - 客户提交时间 - - **TaskNo** (str) - 任务编号 - - **TemplateId** (str) - 模板ID - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.GetUVMSSendRecordRequestSchema().dumps(d) - - resp = self.invoke("GetUVMSSendRecord", d, **kwargs) - return apis.GetUVMSSendRecordResponseSchema().loads(resp) - - def send_uvms_message( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """SendUVMSMessage - 向指定号码拨打电话 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CalledNumber** (str) - (Required) 被叫号码,采用 E.164 标准,格式为+[国家代码][用户号码]。例如:+8613512345678, 其中前面有一个+号 ,86为国家码,13512345678为手机号 - - **TemplateId** (str) - (Required) 模板 ID,在控制台审核通过的模板 ID。 - - **DispatchRule** (int) - 调度规则,0-默认(归属地优先),1-随机。当不指定外显号码(主叫号码为空)时生效。如不填写,默认为归属地优先。 - - **FromNumber** (str) - 主叫号码,号码随机时不填。专属号码时传入已购买的号码,仅支持一个号码,在控制台查看已购买的号码。 - - **GroupType** (int) - 号码组类型,1-随机组,2-专属组。如不填写则根据主叫号码判断,若主叫号码为空,则为随机组,若不为空,则为专属组。 - - **TemplateParams** (list) - 模板可变参数,以数组的方式填写,举例,TemplateParams.0,TemplateParams.1,... 若模板中无可变参数,则该项可不填写;若模板中有可变参数,则该项为必填项,参数个数需与变量个数保持一致,否则无法发送; - - **UserId** (str) - 自定义的业务标识ID,字符串( 长度不能超过32 位),不支持 单引号、表情包符号等特殊字符 - - **Response** - - - **Message** (str) - 状态码的描述 - - **ReqUuid** (str) - 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 ReqUuid。 - - **SessionNo** (str) - 本次提交发送语音的唯一ID,可根据该值查询本次发送详情 - - **UserId** (str) - 本次提交的自定义业务标识ID,仅当发送时传入有效的UserId,才返回该字段。 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.SendUVMSMessageRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("SendUVMSMessage", d, **kwargs) - return apis.SendUVMSMessageResponseSchema().loads(resp) diff --git a/ucloud/services/uvms/schemas/__init__.py b/ucloud/services/uvms/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uvms/schemas/apis.py b/ucloud/services/uvms/schemas/apis.py deleted file mode 100644 index dd9fe877..00000000 --- a/ucloud/services/uvms/schemas/apis.py +++ /dev/null @@ -1,88 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uvms.schemas import models - -""" UVMS API Schema -""" - - -""" -API: GetUVMSSendRecord - -获取语音发送记录 -""" - - -class GetUVMSSendRecordRequestSchema(schema.RequestSchema): - """GetUVMSSendRecord - 获取语音发送记录""" - - fields = { - "BrevityCode": fields.Str(required=False, dump_to="BrevityCode"), - "CalledCityCode": fields.Str(required=False, dump_to="CalledCityCode"), - "CalledOperatorCode": fields.Str( - required=False, dump_to="CalledOperatorCode" - ), - "CallingCityCode": fields.Str( - required=False, dump_to="CallingCityCode" - ), - "EndTime": fields.Float(required=False, dump_to="EndTime"), - "ExcludeBrevityCode": fields.Str( - required=False, dump_to="ExcludeBrevityCode" - ), - "FuzzySearch": fields.Str(required=False, dump_to="FuzzySearch"), - "NumPerPage": fields.Int(required=False, dump_to="NumPerPage"), - "OrderBy": fields.Str(required=False, dump_to="OrderBy"), - "OrderType": fields.Str(required=False, dump_to="OrderType"), - "Page": fields.Int(required=False, dump_to="Page"), - "PhoneNumber": fields.Str(required=False, dump_to="PhoneNumber"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "Purpose": fields.Int(required=False, dump_to="Purpose"), - "StartTime": fields.Float(required=False, dump_to="StartTime"), - "TaskNo": fields.Str(required=False, dump_to="TaskNo"), - "TemplateId": fields.Str(required=False, dump_to="TemplateId"), - } - - -class GetUVMSSendRecordResponseSchema(schema.ResponseSchema): - """GetUVMSSendRecord - 获取语音发送记录""" - - fields = { - "Data": fields.List( - models.SendRecordItemSchema(), required=False, load_from="Data" - ), - "Total": fields.Int(required=False, load_from="Total"), - } - - -""" -API: SendUVMSMessage - -向指定号码拨打电话 -""" - - -class SendUVMSMessageRequestSchema(schema.RequestSchema): - """SendUVMSMessage - 向指定号码拨打电话""" - - fields = { - "CalledNumber": fields.Str(required=True, dump_to="CalledNumber"), - "DispatchRule": fields.Int(required=False, dump_to="DispatchRule"), - "FromNumber": fields.Str(required=False, dump_to="FromNumber"), - "GroupType": fields.Int(required=False, dump_to="GroupType"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "TemplateId": fields.Str(required=True, dump_to="TemplateId"), - "TemplateParams": fields.List(fields.Str()), - "UserId": fields.Str(required=False, dump_to="UserId"), - } - - -class SendUVMSMessageResponseSchema(schema.ResponseSchema): - """SendUVMSMessage - 向指定号码拨打电话""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ReqUuid": fields.Str(required=True, load_from="ReqUuid"), - "SessionNo": fields.Str(required=False, load_from="SessionNo"), - "UserId": fields.Str(required=False, load_from="UserId"), - } diff --git a/ucloud/services/uvms/schemas/models.py b/ucloud/services/uvms/schemas/models.py deleted file mode 100644 index fdecfbd0..00000000 --- a/ucloud/services/uvms/schemas/models.py +++ /dev/null @@ -1,40 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class SendRecordItemSchema(schema.ResponseSchema): - """SendRecordItem - 发送记录条目""" - - fields = { - "BillPeriod": fields.Int(required=False, load_from="BillPeriod"), - "BillSecond": fields.Int(required=False, load_from="BillSecond"), - "BrevityCode": fields.Str(required=False, load_from="BrevityCode"), - "CallEndTime": fields.Float(required=False, load_from="CallEndTime"), - "CallStartTime": fields.Float( - required=False, load_from="CallStartTime" - ), - "CalledCityCode": fields.Str( - required=False, load_from="CalledCityCode" - ), - "CalledOperatorCode": fields.Str( - required=False, load_from="CalledOperatorCode" - ), - "CallingCityCode": fields.Str( - required=False, load_from="CallingCityCode" - ), - "ChannelId": fields.Str(required=False, load_from="ChannelId"), - "CountryCode": fields.Str(required=False, load_from="CountryCode"), - "Duration": fields.Int(required=False, load_from="Duration"), - "GroupType": fields.Int(required=False, load_from="GroupType"), - "Phone": fields.Str(required=False, load_from="Phone"), - "PreCost": fields.Int(required=False, load_from="PreCost"), - "Purpose": fields.Int(required=False, load_from="Purpose"), - "ReceiptDesc": fields.Str(required=False, load_from="ReceiptDesc"), - "ReceiptResult": fields.Int(required=False, load_from="ReceiptResult"), - "ReceiveTime": fields.Float(required=False, load_from="ReceiveTime"), - "ShowNumber": fields.Str(required=False, load_from="ShowNumber"), - "SubmitTime": fields.Float(required=False, load_from="SubmitTime"), - "TaskNo": fields.Str(required=False, load_from="TaskNo"), - "TemplateId": fields.Str(required=False, load_from="TemplateId"), - } diff --git a/ucloud/services/uwsc/__init__.py b/ucloud/services/uwsc/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uwsc/client.py b/ucloud/services/uwsc/client.py deleted file mode 100644 index 27ab64c8..00000000 --- a/ucloud/services/uwsc/client.py +++ /dev/null @@ -1,387 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -import typing - - -from ucloud.core.client import Client -from ucloud.services.uwsc.schemas import apis - - -class UWSCClient(Client): - def __init__( - self, config: dict, transport=None, middleware=None, logger=None - ): - super(UWSCClient, self).__init__(config, transport, middleware, logger) - - def add_export_line_rules( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """AddExportLineRules - 添加加速规则 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ResourceId** (str) - (Required) UReach资源ID - - **RuleTypes** (list) - (Required) 白名单类型:Developer、CrossBorder - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.AddExportLineRulesRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("AddExportLineRules", d, **kwargs) - return apis.AddExportLineRulesResponseSchema().loads(resp) - - def bind_cpe(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """BindCPE - 绑定 CPE - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CPEId** (str) - (Required) cpe id - - **Sn** (str) - (Required) sn id - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.BindCPERequestSchema().dumps(d) - - resp = self.invoke("BindCPE", d, **kwargs) - return apis.BindCPEResponseSchema().loads(resp) - - def create_cpe(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """CreateCPE - 创建 CPE - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **DeviceType** (str) - (Required) 设备型号,枚举值: UCPE3600、UCPE3601 - - **Name** (str) - (Required) cpe 名称 - - **Remark** (str) - (Required) cpe 备注 - - **Count** (int) - 数量,默认为1 - - **Label** (str) - 标签:UReach智能网关:Access - - **UserInfo** (str) - 结构体,详见UserInfo模型 - - **Response** - - - **CPEId** (str) - cpe id - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateCPERequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateCPE", d, **kwargs) - return apis.CreateCPEResponseSchema().loads(resp) - - def create_export_line( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """CreateExportLine - 创建加速线路 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CPEId** (str) - (Required) CPE Id - - **FromRegion** (str) - (Required) 本端地域 - - **IpType** (str) - (Required) IP类型:International、BGP、Native、Resident - - **ToRegion** (str) - (Required) 目标地域 - - **Bandwidth** (int) - 带宽大小 - - **ChargeType** (str) - 计费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限)。默认为月付 - - **CouponId** (int) - 代金券ID。请登录用户中心查看 - - **Name** (str) - 资源名称 - - **PayMode** (str) - 计费类型:fixed-bw,固定带宽;traffic,流量计费 - - **PkgType** (str) - 套餐类型:2M-Entry、5M-Basic、10M-Enterprise - - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 - - **Remark** (str) - 备注 - - **Tag** (str) - 业务组名称, 默认为 "Default" - - **Response** - - - **Message** (str) - 返回信息 - - **ResourceId** (str) - 资源ID - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.CreateExportLineRequestSchema().dumps(d) - - # build options - kwargs["max_retries"] = 0 # ignore retry when api is not idempotent - - resp = self.invoke("CreateExportLine", d, **kwargs) - return apis.CreateExportLineResponseSchema().loads(resp) - - def delete_export_line( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteExportLine - 删除加速线路 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ResourceId** (str) - (Required) UReach资源ID - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteExportLineRequestSchema().dumps(d) - - resp = self.invoke("DeleteExportLine", d, **kwargs) - return apis.DeleteExportLineResponseSchema().loads(resp) - - def delete_export_line_rules( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DeleteExportLineRules - 删除加速规则 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ResourceId** (str) - (Required) UReach资源ID - - **RuleTypes** (list) - (Required) 白名单类型:Developer、CrossBorder - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DeleteExportLineRulesRequestSchema().dumps(d) - - resp = self.invoke("DeleteExportLineRules", d, **kwargs) - return apis.DeleteExportLineRulesResponseSchema().loads(resp) - - def describe_cpe(self, req: typing.Optional[dict] = None, **kwargs) -> dict: - """DescribeCPE - 查询 CPE 信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CPEId** (str) - cpe id - - **Label** (str) - 标签:Access、Network - - **Response** - - - **CPEInfos** (list) - 见 **CPEInfo** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **CPEInfo** - - **CPEId** (str) - 资源ID - - **CPEName** (str) - 资源名称 - - **ConfUpdateTime** (int) - 配置更新时间 - - **CreateTime** (int) - 创建时间 - - **DeviceTypeName** (str) - 设备型号 - - **LineStatus** (str) - 是否与线路绑定 - - **LinkNum** (int) - 链路数量 - - **PopGwId** (list) - 绑定的UWAN资源ID - - **Ports** (list) - 端口 - - **Remark** (str) - 备注 - - **ResourceIds** (list) - 绑定的UReach线路资源ID - - **Sn** (str) - 设备SN - - **Status** (int) - 状态 - - **UseTime** (int) - 有效使用时间(天) - - **Vendor** (str) - 供应商 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeCPERequestSchema().dumps(d) - - resp = self.invoke("DescribeCPE", d, **kwargs) - return apis.DescribeCPEResponseSchema().loads(resp) - - def describe_export_line( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeExportLine - 查询CPE绑定的加速线路信息 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **CPEId** (str) - CPE资源ID - - **ResourceId** (str) - UReach资源ID - - **Response** - - - **LineInfos** (list) - 见 **LineInfo** 模型定义 - - **Message** (str) - 返回信息 - - **Response Model** - - **SocksInfo** - - **Account** (str) - - - **Addr** (str) - - - **Port** (int) - - - - **LineInfo** - - **Bandwidth** (int) - 带宽大小(Mbps) - - **CPEIds** (list) - 线路绑定的CPE资源ID - - **ChargeType** (str) - 付费方式(按月、按年等) - - **CreateTime** (int) - 创建时间 - - **ExpireTime** (int) - 到期时间 - - **FromRegion** (str) - 入口地域 - - **FromRegionName** (str) - 入口地域名称 - - **IP** (list) - - - **InstanceId** (str) - 线路资源ID对应的加速线路ID - - **InstanceStatus** (str) - 是否过期(normal/expire) - - **IpType** (str) - IP类型 - - **Name** (str) - 名称 - - **PayMode** (str) - 计费方式(固定带宽: fixed-bw;流量计费:traffic) - - **PkgType** (str) - 套餐类型 - - **Remark** (str) - 备注 - - **ResourceId** (str) - 线路资源ID - - **Socks** (dict) - 见 **SocksInfo** 模型定义 - - **Source** (list) - 源IP地址 - - **Status** (str) - 线路是否绑定CPE;"1":已绑定;"0"未绑定 - - **ToRegion** (str) - 出口地域 - - **ToRegionName** (str) - 出口地域名称 - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeExportLineRequestSchema().dumps(d) - - resp = self.invoke("DescribeExportLine", d, **kwargs) - return apis.DescribeExportLineResponseSchema().loads(resp) - - def describe_export_line_rules( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """DescribeExportLineRules - 查询白名单 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **ResourceId** (str) - UReach资源ID - - **RuleType** (str) - 白名单类型 - - **Response** - - - **Message** (str) - 返回信息 - - **WhiteListInfos** (list) - 见 **WhiteListInfo** 模型定义 - - **Response Model** - - **WhiteListInfo** - - **Name** (str) - - - **Remark** (str) - - - **RuleType** (str) - - - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.DescribeExportLineRulesRequestSchema().dumps(d) - - resp = self.invoke("DescribeExportLineRules", d, **kwargs) - return apis.DescribeExportLineRulesResponseSchema().loads(resp) - - def update_export_line( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpdateExportLine - 修改加速线路 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **Bandwidth** (str) - (Required) 带宽大小(仅自定义套餐支持修改) - - **ResourceId** (str) - (Required) UReach资源ID - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.UpdateExportLineRequestSchema().dumps(d) - - resp = self.invoke("UpdateExportLine", d, **kwargs) - return apis.UpdateExportLineResponseSchema().loads(resp) - - def upgrade_export_line( - self, req: typing.Optional[dict] = None, **kwargs - ) -> dict: - """UpgradeExportLine - 升级加速线路 - - **Request** - - - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ - - **IpType** (str) - (Required) 原IP类型:International、BGP、Native、Resident - - **PkgType** (str) - (Required) 目标套餐类型:2M-Entry、5M-Basic、10M-Enterprise - - **ResourceId** (str) - (Required) UReach资源ID - - **Bandwidth** (int) - 带宽大小 - - **ChargeType** (str) - 计费模式。枚举值为: Year,按年付费; Month,按月付费; Dynamic,按小时付费(需开启权限)。默认为月付 - - **CouponId** (int) - 代金券ID。请登录用户中心查看 - - **Quantity** (int) - 购买时长。默认: 1。按小时购买(Dynamic)时无需此参数。 月付时,此参数传0,代表了购买至月末。 - - **Response** - - - **Message** (str) - 返回信息 - - """ - # build request - d = { - "ProjectId": self.config.project_id, - } - req and d.update(req) - d = apis.UpgradeExportLineRequestSchema().dumps(d) - - resp = self.invoke("UpgradeExportLine", d, **kwargs) - return apis.UpgradeExportLineResponseSchema().loads(resp) diff --git a/ucloud/services/uwsc/schemas/__init__.py b/ucloud/services/uwsc/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/uwsc/schemas/apis.py b/ucloud/services/uwsc/schemas/apis.py deleted file mode 100644 index e33e9c58..00000000 --- a/ucloud/services/uwsc/schemas/apis.py +++ /dev/null @@ -1,314 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields -from ucloud.services.uwsc.schemas import models - -""" UWSC API Schema -""" - - -""" -API: AddExportLineRules - -添加加速规则 -""" - - -class AddExportLineRulesRequestSchema(schema.RequestSchema): - """AddExportLineRules - 添加加速规则""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleTypes": fields.List(fields.Str()), - } - - -class AddExportLineRulesResponseSchema(schema.ResponseSchema): - """AddExportLineRules - 添加加速规则""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: BindCPE - -绑定 CPE -""" - - -class BindCPERequestSchema(schema.RequestSchema): - """BindCPE - 绑定 CPE""" - - fields = { - "CPEId": fields.Str(required=True, dump_to="CPEId"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Sn": fields.Str(required=True, dump_to="Sn"), - } - - -class BindCPEResponseSchema(schema.ResponseSchema): - """BindCPE - 绑定 CPE""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateCPE - -创建 CPE -""" - - -class CreateCPERequestSchema(schema.RequestSchema): - """CreateCPE - 创建 CPE""" - - fields = { - "Count": fields.Int(required=False, dump_to="Count"), - "DeviceType": fields.Str(required=True, dump_to="DeviceType"), - "Label": fields.Str(required=False, dump_to="Label"), - "Name": fields.Str(required=True, dump_to="Name"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Remark": fields.Str(required=True, dump_to="Remark"), - "UserInfo": fields.Str(required=False, dump_to="UserInfo"), - } - - -class CreateCPEResponseSchema(schema.ResponseSchema): - """CreateCPE - 创建 CPE""" - - fields = { - "CPEId": fields.Str(required=True, load_from="CPEId"), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: CreateExportLine - -创建加速线路 -""" - - -class CreateExportLineRequestSchema(schema.RequestSchema): - """CreateExportLine - 创建加速线路""" - - fields = { - "Bandwidth": fields.Int(required=False, dump_to="Bandwidth"), - "CPEId": fields.Str(required=True, dump_to="CPEId"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Int(required=False, dump_to="CouponId"), - "FromRegion": fields.Str(required=True, dump_to="FromRegion"), - "IpType": fields.Str(required=True, dump_to="IpType"), - "Name": fields.Str(required=False, dump_to="Name"), - "PayMode": fields.Str(required=False, dump_to="PayMode"), - "PkgType": fields.Str(required=False, dump_to="PkgType"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "Remark": fields.Str(required=False, dump_to="Remark"), - "Tag": fields.Str(required=False, dump_to="Tag"), - "ToRegion": fields.Str(required=True, dump_to="ToRegion"), - } - - -class CreateExportLineResponseSchema(schema.ResponseSchema): - """CreateExportLine - 创建加速线路""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "ResourceId": fields.Str(required=True, load_from="ResourceId"), - } - - -""" -API: DeleteExportLine - -删除加速线路 -""" - - -class DeleteExportLineRequestSchema(schema.RequestSchema): - """DeleteExportLine - 删除加速线路""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class DeleteExportLineResponseSchema(schema.ResponseSchema): - """DeleteExportLine - 删除加速线路""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DeleteExportLineRules - -删除加速规则 -""" - - -class DeleteExportLineRulesRequestSchema(schema.RequestSchema): - """DeleteExportLineRules - 删除加速规则""" - - fields = { - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - "RuleTypes": fields.List(fields.Str()), - } - - -class DeleteExportLineRulesResponseSchema(schema.ResponseSchema): - """DeleteExportLineRules - 删除加速规则""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeCPE - -查询 CPE 信息 -""" - - -class DescribeCPERequestSchema(schema.RequestSchema): - """DescribeCPE - 查询 CPE 信息""" - - fields = { - "CPEId": fields.Str(required=False, dump_to="CPEId"), - "Label": fields.Str(required=False, dump_to="Label"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - } - - -class DescribeCPEResponseSchema(schema.ResponseSchema): - """DescribeCPE - 查询 CPE 信息""" - - fields = { - "CPEInfos": fields.List( - models.CPEInfoSchema(), required=False, load_from="CPEInfos" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeExportLine - -查询CPE绑定的加速线路信息 -""" - - -class DescribeExportLineRequestSchema(schema.RequestSchema): - """DescribeExportLine - 查询CPE绑定的加速线路信息""" - - fields = { - "CPEId": fields.Str(required=False, dump_to="CPEId"), - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - } - - -class DescribeExportLineResponseSchema(schema.ResponseSchema): - """DescribeExportLine - 查询CPE绑定的加速线路信息""" - - fields = { - "LineInfos": fields.List( - models.LineInfoSchema(), required=False, load_from="LineInfos" - ), - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: DescribeExportLineRules - -查询白名单 -""" - - -class DescribeExportLineRulesRequestSchema(schema.RequestSchema): - """DescribeExportLineRules - 查询白名单""" - - fields = { - "ProjectId": fields.Str(required=False, dump_to="ProjectId"), - "ResourceId": fields.Str(required=False, dump_to="ResourceId"), - "RuleType": fields.Str(required=False, dump_to="RuleType"), - } - - -class DescribeExportLineRulesResponseSchema(schema.ResponseSchema): - """DescribeExportLineRules - 查询白名单""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - "WhiteListInfos": fields.List( - models.WhiteListInfoSchema(), - required=True, - load_from="WhiteListInfos", - ), - } - - -""" -API: UpdateExportLine - -修改加速线路 -""" - - -class UpdateExportLineRequestSchema(schema.RequestSchema): - """UpdateExportLine - 修改加速线路""" - - fields = { - "Bandwidth": fields.Str(required=True, dump_to="Bandwidth"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class UpdateExportLineResponseSchema(schema.ResponseSchema): - """UpdateExportLine - 修改加速线路""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } - - -""" -API: UpgradeExportLine - -升级加速线路 -""" - - -class UpgradeExportLineRequestSchema(schema.RequestSchema): - """UpgradeExportLine - 升级加速线路""" - - fields = { - "Bandwidth": fields.Int(required=False, dump_to="Bandwidth"), - "ChargeType": fields.Str(required=False, dump_to="ChargeType"), - "CouponId": fields.Int(required=False, dump_to="CouponId"), - "IpType": fields.Str(required=True, dump_to="IpType"), - "PkgType": fields.Str(required=True, dump_to="PkgType"), - "ProjectId": fields.Str(required=True, dump_to="ProjectId"), - "Quantity": fields.Int(required=False, dump_to="Quantity"), - "ResourceId": fields.Str(required=True, dump_to="ResourceId"), - } - - -class UpgradeExportLineResponseSchema(schema.ResponseSchema): - """UpgradeExportLine - 升级加速线路""" - - fields = { - "Message": fields.Str(required=True, load_from="Message"), - } diff --git a/ucloud/services/uwsc/schemas/models.py b/ucloud/services/uwsc/schemas/models.py deleted file mode 100644 index c88f2bd6..00000000 --- a/ucloud/services/uwsc/schemas/models.py +++ /dev/null @@ -1,81 +0,0 @@ -""" Code is generated by ucloud-model, DO NOT EDIT IT. """ - -from ucloud.core.typesystem import schema, fields - - -class CPEInfoSchema(schema.ResponseSchema): - """CPEInfo - CPE信息""" - - fields = { - "CPEId": fields.Str(required=False, load_from="CPEId"), - "CPEName": fields.Str(required=False, load_from="CPEName"), - "ConfUpdateTime": fields.Int( - required=False, load_from="ConfUpdateTime" - ), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "DeviceTypeName": fields.Str( - required=False, load_from="DeviceTypeName" - ), - "LineStatus": fields.Str(required=False, load_from="LineStatus"), - "LinkNum": fields.Int(required=False, load_from="LinkNum"), - "PopGwId": fields.List(fields.Str()), - "Ports": fields.List(fields.Str()), - "Remark": fields.Str(required=False, load_from="Remark"), - "ResourceIds": fields.List(fields.Str()), - "Sn": fields.Str(required=False, load_from="Sn"), - "Status": fields.Int(required=False, load_from="Status"), - "UseTime": fields.Int(required=False, load_from="UseTime"), - "Vendor": fields.Str(required=False, load_from="Vendor"), - } - - -class SocksInfoSchema(schema.ResponseSchema): - """SocksInfo -""" - - fields = { - "Account": fields.Str(required=False, load_from="Account"), - "Addr": fields.Str(required=False, load_from="Addr"), - "Port": fields.Int(required=False, load_from="Port"), - } - - -class LineInfoSchema(schema.ResponseSchema): - """LineInfo - CPE加速线路信息""" - - fields = { - "Bandwidth": fields.Int(required=False, load_from="Bandwidth"), - "CPEIds": fields.List(fields.Str()), - "ChargeType": fields.Str(required=False, load_from="ChargeType"), - "CreateTime": fields.Int(required=False, load_from="CreateTime"), - "ExpireTime": fields.Int(required=False, load_from="ExpireTime"), - "FromRegion": fields.Str(required=False, load_from="FromRegion"), - "FromRegionName": fields.Str( - required=False, load_from="FromRegionName" - ), - "IP": fields.List(fields.Str()), - "InstanceId": fields.Str(required=False, load_from="InstanceId"), - "InstanceStatus": fields.Str( - required=False, load_from="InstanceStatus" - ), - "IpType": fields.Str(required=False, load_from="IpType"), - "Name": fields.Str(required=False, load_from="Name"), - "PayMode": fields.Str(required=False, load_from="PayMode"), - "PkgType": fields.Str(required=False, load_from="PkgType"), - "Remark": fields.Str(required=False, load_from="Remark"), - "ResourceId": fields.Str(required=False, load_from="ResourceId"), - "Socks": SocksInfoSchema(), - "Source": fields.List(fields.Str()), - "Status": fields.Str(required=False, load_from="Status"), - "ToRegion": fields.Str(required=False, load_from="ToRegion"), - "ToRegionName": fields.Str(required=False, load_from="ToRegionName"), - } - - -class WhiteListInfoSchema(schema.ResponseSchema): - """WhiteListInfo -""" - - fields = { - "Name": fields.Str(required=False, load_from="Name"), - "Remark": fields.Str(required=False, load_from="Remark"), - "RuleType": fields.Str(required=False, load_from="RuleType"), - } diff --git a/ucloud/services/vpc/__init__.py b/ucloud/services/vpc/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/services/vpc/schemas/__init__.py b/ucloud/services/vpc/schemas/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/testing/__init__.py b/ucloud/testing/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ucloud/version.py b/ucloud/version.py deleted file mode 100644 index c34a0d96..00000000 --- a/ucloud/version.py +++ /dev/null @@ -1 +0,0 @@ -version = "0.11.101" diff --git a/README.md b/ucloud_sdk_python3.egg-info/PKG-INFO similarity index 52% rename from README.md rename to ucloud_sdk_python3.egg-info/PKG-INFO index da940731..eecbf2f7 100644 --- a/README.md +++ b/ucloud_sdk_python3.egg-info/PKG-INFO @@ -1,3 +1,31 @@ +Metadata-Version: 2.1 +Name: ucloud-sdk-python3 +Version: 0.11.28 +Summary: UCloud Service Development Kit - Python +Home-page: https://github.com/ucloud/ucloud-sdk-python3 +Author: ucloud +Author-email: esl_ipdd@ucloud.cn +License: Apache License 2.0 +Platform: UNKNOWN +Classifier: Development Status :: 3 - Alpha +Classifier: Environment :: Console +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Software Development +Requires-Python: >=3.5 +Description-Content-Type: text/markdown +Provides-Extra: test +Provides-Extra: doc +Provides-Extra: dev +Provides-Extra: ci +License-File: LICENSE +

@@ -18,3 +46,5 @@ This client can run on Linux, macOS and Windows. - Website: https://www.ucloud.cn/ - Free software: Apache 2.0 license - [Documentation](https://docs.ucloud.cn/opensdk-python/) + + diff --git a/ucloud_sdk_python3.egg-info/SOURCES.txt b/ucloud_sdk_python3.egg-info/SOURCES.txt new file mode 100644 index 00000000..7a070efd --- /dev/null +++ b/ucloud_sdk_python3.egg-info/SOURCES.txt @@ -0,0 +1,214 @@ +LICENSE +README.md +setup.py +ucloud/__init__.py +ucloud/client.py +ucloud/version.py +ucloud/core/__init__.py +ucloud/core/auth/__init__.py +ucloud/core/auth/_cfg.py +ucloud/core/client/__init__.py +ucloud/core/client/_cfg.py +ucloud/core/client/_client.py +ucloud/core/exc/__init__.py +ucloud/core/exc/_exc.py +ucloud/core/transport/__init__.py +ucloud/core/transport/_requests.py +ucloud/core/transport/http.py +ucloud/core/transport/utils.py +ucloud/core/typesystem/__init__.py +ucloud/core/typesystem/abstract.py +ucloud/core/typesystem/encoder.py +ucloud/core/typesystem/fields.py +ucloud/core/typesystem/schema.py +ucloud/core/utils/__init__.py +ucloud/core/utils/compat.py +ucloud/core/utils/deco.py +ucloud/core/utils/log.py +ucloud/core/utils/middleware.py +ucloud/helpers/__init__.py +ucloud/helpers/utils.py +ucloud/helpers/wait.py +ucloud/services/__init__.py +ucloud/services/cube/__init__.py +ucloud/services/cube/client.py +ucloud/services/cube/schemas/__init__.py +ucloud/services/cube/schemas/apis.py +ucloud/services/cube/schemas/models.py +ucloud/services/iam/__init__.py +ucloud/services/iam/client.py +ucloud/services/iam/schemas/__init__.py +ucloud/services/iam/schemas/apis.py +ucloud/services/iam/schemas/models.py +ucloud/services/ipsecvpn/__init__.py +ucloud/services/ipsecvpn/client.py +ucloud/services/ipsecvpn/schemas/__init__.py +ucloud/services/ipsecvpn/schemas/apis.py +ucloud/services/ipsecvpn/schemas/models.py +ucloud/services/isms/__init__.py +ucloud/services/isms/client.py +ucloud/services/isms/schemas/__init__.py +ucloud/services/isms/schemas/apis.py +ucloud/services/isms/schemas/models.py +ucloud/services/pathx/__init__.py +ucloud/services/pathx/client.py +ucloud/services/pathx/schemas/__init__.py +ucloud/services/pathx/schemas/apis.py +ucloud/services/pathx/schemas/models.py +ucloud/services/stepflow/__init__.py +ucloud/services/stepflow/client.py +ucloud/services/stepflow/schemas/__init__.py +ucloud/services/stepflow/schemas/apis.py +ucloud/services/stepflow/schemas/models.py +ucloud/services/tidb/__init__.py +ucloud/services/tidb/client.py +ucloud/services/tidb/schemas/__init__.py +ucloud/services/tidb/schemas/apis.py +ucloud/services/tidb/schemas/models.py +ucloud/services/uaccount/__init__.py +ucloud/services/uaccount/client.py +ucloud/services/uaccount/schemas/__init__.py +ucloud/services/uaccount/schemas/apis.py +ucloud/services/uaccount/schemas/models.py +ucloud/services/ubill/__init__.py +ucloud/services/ubill/client.py +ucloud/services/ubill/schemas/__init__.py +ucloud/services/ubill/schemas/apis.py +ucloud/services/ubill/schemas/models.py +ucloud/services/ucdn/__init__.py +ucloud/services/ucdn/client.py +ucloud/services/ucdn/schemas/__init__.py +ucloud/services/ucdn/schemas/apis.py +ucloud/services/ucdn/schemas/models.py +ucloud/services/ucloudstack/__init__.py +ucloud/services/ucloudstack/client.py +ucloud/services/ucloudstack/schemas/__init__.py +ucloud/services/ucloudstack/schemas/apis.py +ucloud/services/ucloudstack/schemas/models.py +ucloud/services/udb/__init__.py +ucloud/services/udb/client.py +ucloud/services/udb/schemas/__init__.py +ucloud/services/udb/schemas/apis.py +ucloud/services/udb/schemas/models.py +ucloud/services/uddb/__init__.py +ucloud/services/uddb/client.py +ucloud/services/uddb/schemas/__init__.py +ucloud/services/uddb/schemas/apis.py +ucloud/services/uddb/schemas/models.py +ucloud/services/udisk/__init__.py +ucloud/services/udisk/client.py +ucloud/services/udisk/schemas/__init__.py +ucloud/services/udisk/schemas/apis.py +ucloud/services/udisk/schemas/models.py +ucloud/services/udpn/__init__.py +ucloud/services/udpn/client.py +ucloud/services/udpn/schemas/__init__.py +ucloud/services/udpn/schemas/apis.py +ucloud/services/udpn/schemas/models.py +ucloud/services/udts/__init__.py +ucloud/services/udts/client.py +ucloud/services/udts/schemas/__init__.py +ucloud/services/udts/schemas/apis.py +ucloud/services/udts/schemas/models.py +ucloud/services/uec/__init__.py +ucloud/services/uec/client.py +ucloud/services/uec/schemas/__init__.py +ucloud/services/uec/schemas/apis.py +ucloud/services/uec/schemas/models.py +ucloud/services/ufile/__init__.py +ucloud/services/ufile/client.py +ucloud/services/ufile/schemas/__init__.py +ucloud/services/ufile/schemas/apis.py +ucloud/services/ufile/schemas/models.py +ucloud/services/ufs/__init__.py +ucloud/services/ufs/client.py +ucloud/services/ufs/schemas/__init__.py +ucloud/services/ufs/schemas/apis.py +ucloud/services/ufs/schemas/models.py +ucloud/services/ugn/__init__.py +ucloud/services/ugn/client.py +ucloud/services/ugn/schemas/__init__.py +ucloud/services/ugn/schemas/apis.py +ucloud/services/ugn/schemas/models.py +ucloud/services/uhost/__init__.py +ucloud/services/uhost/client.py +ucloud/services/uhost/schemas/__init__.py +ucloud/services/uhost/schemas/apis.py +ucloud/services/uhost/schemas/models.py +ucloud/services/uhub/__init__.py +ucloud/services/uhub/client.py +ucloud/services/uhub/schemas/__init__.py +ucloud/services/uhub/schemas/apis.py +ucloud/services/uhub/schemas/models.py +ucloud/services/uk8s/__init__.py +ucloud/services/uk8s/client.py +ucloud/services/uk8s/schemas/__init__.py +ucloud/services/uk8s/schemas/apis.py +ucloud/services/uk8s/schemas/models.py +ucloud/services/ulb/__init__.py +ucloud/services/ulb/client.py +ucloud/services/ulb/schemas/__init__.py +ucloud/services/ulb/schemas/apis.py +ucloud/services/ulb/schemas/models.py +ucloud/services/umem/__init__.py +ucloud/services/umem/client.py +ucloud/services/umem/schemas/__init__.py +ucloud/services/umem/schemas/apis.py +ucloud/services/umem/schemas/models.py +ucloud/services/unet/__init__.py +ucloud/services/unet/client.py +ucloud/services/unet/schemas/__init__.py +ucloud/services/unet/schemas/apis.py +ucloud/services/unet/schemas/models.py +ucloud/services/unvs/__init__.py +ucloud/services/unvs/client.py +ucloud/services/unvs/schemas/__init__.py +ucloud/services/unvs/schemas/apis.py +ucloud/services/unvs/schemas/models.py +ucloud/services/uphost/__init__.py +ucloud/services/uphost/client.py +ucloud/services/uphost/schemas/__init__.py +ucloud/services/uphost/schemas/apis.py +ucloud/services/uphost/schemas/models.py +ucloud/services/urocketmq/__init__.py +ucloud/services/urocketmq/client.py +ucloud/services/urocketmq/schemas/__init__.py +ucloud/services/urocketmq/schemas/apis.py +ucloud/services/urocketmq/schemas/models.py +ucloud/services/usms/__init__.py +ucloud/services/usms/client.py +ucloud/services/usms/schemas/__init__.py +ucloud/services/usms/schemas/apis.py +ucloud/services/usms/schemas/models.py +ucloud/services/utsdb/__init__.py +ucloud/services/utsdb/client.py +ucloud/services/utsdb/schemas/__init__.py +ucloud/services/utsdb/schemas/apis.py +ucloud/services/utsdb/schemas/models.py +ucloud/services/uvms/__init__.py +ucloud/services/uvms/client.py +ucloud/services/uvms/schemas/__init__.py +ucloud/services/uvms/schemas/apis.py +ucloud/services/uvms/schemas/models.py +ucloud/services/vpc/__init__.py +ucloud/services/vpc/client.py +ucloud/services/vpc/schemas/__init__.py +ucloud/services/vpc/schemas/apis.py +ucloud/services/vpc/schemas/models.py +ucloud/testing/__init__.py +ucloud/testing/env.py +ucloud/testing/exc.py +ucloud/testing/funcs.py +ucloud/testing/mock.py +ucloud/testing/op.py +ucloud/testing/utest.py +ucloud/testing/driver/__init__.py +ucloud/testing/driver/_scenario.py +ucloud/testing/driver/_specification.py +ucloud/testing/driver/_step.py +ucloud_sdk_python3.egg-info/PKG-INFO +ucloud_sdk_python3.egg-info/SOURCES.txt +ucloud_sdk_python3.egg-info/dependency_links.txt +ucloud_sdk_python3.egg-info/not-zip-safe +ucloud_sdk_python3.egg-info/requires.txt +ucloud_sdk_python3.egg-info/top_level.txt \ No newline at end of file diff --git a/ucloud_sdk_python3.egg-info/dependency_links.txt b/ucloud_sdk_python3.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ucloud_sdk_python3.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/ucloud_sdk_python3.egg-info/not-zip-safe b/ucloud_sdk_python3.egg-info/not-zip-safe new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ucloud_sdk_python3.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/ucloud_sdk_python3.egg-info/requires.txt b/ucloud_sdk_python3.egg-info/requires.txt new file mode 100644 index 00000000..3c9a2421 --- /dev/null +++ b/ucloud_sdk_python3.egg-info/requires.txt @@ -0,0 +1,29 @@ +requests + +[ci] +requests_mock +pytest-cov +sphinx +pytest>=4.6 +requests +flake8>=3.6.0 + +[dev] +requests_mock +pytest-cov +sphinx +pytest>=4.6 +requests +black +flake8>=3.6.0 + +[doc] +requests +sphinx + +[test] +requests +flake8>=3.6.0 +pytest>=4.6 +pytest-cov +requests_mock diff --git a/ucloud_sdk_python3.egg-info/top_level.txt b/ucloud_sdk_python3.egg-info/top_level.txt new file mode 100644 index 00000000..37261321 --- /dev/null +++ b/ucloud_sdk_python3.egg-info/top_level.txt @@ -0,0 +1 @@ +ucloud diff --git a/usage.html b/usage.html new file mode 100644 index 00000000..483bdada --- /dev/null +++ b/usage.html @@ -0,0 +1,197 @@ + + + + + + + + + Usage — ucloud-sdk-python3 documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Usage

+
+

Type System

+

UCloud Python SDK has type system for runtime checking.

+

For example:

+
client.uhost().create_uhost_instance({
+    'CPU': "i am not a integer",
+})
+
+
+

it will raise ValidationException with invalid integer and some required field is miss matched.

+
+
+

Wait State Changed

+

SDK also provide state waiter helper to improver usage experience.

+

When using it?

+

Waiter can wait for remote state is achieved to target state. such as,

+
    +
  • create and wait for resource state is completed.

  • +
  • invoke/start/stop a resource and wait for it is finished.

  • +
  • custom retry policies and wait for retrying is finished.

  • +
+

For example:

+
def mget_uhost_states(uhost_ids):
+    resp = client.uhost().describe_uhost_instance({'UHostIds': uhost_ids})
+    return [inst.get('State') for inst in resp.get('UHostSet')]
+
+# Stop all instances
+for uhost_id in uhost_ids:
+    client.uhost().stop_uhost_instance({'UHostId': uhost_id})
+
+# Wait all instances is stopped
+wait.wait_for_state(
+    target=['stopped'], pending=['pending'],
+    timeout=300, # wait 5min
+    refresh=lambda: (
+        'stopped' if all([state == 'Stopped' for state in mget_uhost_states(uhost_ids)]) else 'pending'
+    ),
+)
+
+# Remove all instances
+for uhost_id in uhost_ids:
+    client.uhost().terminate_uhost_instance({'UHostId': uhost_id})
+
+
+

By the default, waiter will use exponential back-off delay between twice request. +it will raise WaitTimeoutException when timeout is reached.

+
+
+

Client/Transport Middleware

+

UCloud SDK provide middleware feature to client or transport level request.

+

It allowed to add custom logic into the lifecycle of request/response.

+

For example:

+
@client.middleware.request
+def log_params(req):
+    print('[REQ]', req)
+
+@client.middleware.response
+def log_response(resp):
+    print('[RESP]', resp)
+
+
+

or transport:

+
from ucloud.core.transport import RequestsTransport
+
+transport = RequestsTransport()
+
+@transport.middleware.request
+def log_request(req):
+    print('[REQ]', req)
+
+@transport.middleware.response
+def log_response(resp):
+    print('[RESP]', resp)
+
+Client({'Region': 'cn-bj2'}, transport=transport)
+
+
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file